[gcc-7] 318/354: * Update to SVN 20171014 (r253748) from the gcc-7-branch.
Ximin Luo
infinity0 at debian.org
Thu Nov 23 15:51:32 UTC 2017
This is an automated email from the git hooks/post-receive script.
infinity0 pushed a commit to branch master
in repository gcc-7.
commit 016d5f9f436ee742670ffa600378a3566ad2379b
Author: doko <doko at 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>
Date: Sat Oct 14 05:33:35 2017 +0000
* Update to SVN 20171014 (r253748) from the gcc-7-branch.
git-svn-id: svn+ssh://svn.debian.org/svn/gcccvs/branches/sid/gcc-7@9745 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
---
debian/changelog | 6 +-
debian/patches/pr67165.diff | 30 ++-
debian/patches/svn-updates.diff | 427 +++++++++++++++++++++++++++++++++++++++-
3 files changed, 436 insertions(+), 27 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index bbfb5cf..600d1ce 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,10 @@
gcc-7 (7.2.0-10) UNRELEASED; urgency=medium
- * Set QUILT_PATCH_OPTS='-E' for applying patches.
+ * Update to SVN 20171014 (r253748) from the gcc-7-branch.
+ - Fix PR go/80914, PR target/82274 (x86), PR target/82524 (x86).
+ * Set QUILT_PATCH_OPTS='-E' for applying patches (James Cowgill).
- -- Matthias Klose <doko at debian.org> Wed, 11 Oct 2017 13:42:57 +0200
+ -- Matthias Klose <doko at debian.org> Sat, 14 Oct 2017 07:12:28 +0200
gcc-7 (7.2.0-9) unstable; urgency=medium
diff --git a/debian/patches/pr67165.diff b/debian/patches/pr67165.diff
index a01b5ff..7a0539f 100644
--- a/debian/patches/pr67165.diff
+++ b/debian/patches/pr67165.diff
@@ -233,11 +233,7 @@ Index: b/src/libbacktrace/elf.c
#if !defined(HAVE_DECL_STRNLEN) || !HAVE_DECL_STRNLEN
/* If strnlen is not declared, provide our own version. */
-@@ -135,9 +142,11 @@ dl_iterate_phdr (int (*callback) (struct
- #undef SHT_SYMTAB
- #undef SHT_STRTAB
- #undef SHT_DYNSYM
-+#undef SHF_COMPRESSED
+@@ -139,6 +146,7 @@ dl_iterate_phdr (int (*callback) (struct
#undef STT_OBJECT
#undef STT_FUNC
#undef NT_GNU_BUILD_ID
@@ -245,16 +241,16 @@ Index: b/src/libbacktrace/elf.c
/* Basic types. */
-@@ -228,6 +237,8 @@ typedef struct {
- #define SHT_STRTAB 3
- #define SHT_DYNSYM 11
+@@ -231,6 +239,8 @@ typedef struct {
+
+ #define SHF_COMPRESSED 0x800
+#define SHF_COMPRESSED 0x800
+
#if BACKTRACE_ELF_SIZE == 32
typedef struct
-@@ -267,6 +278,29 @@ typedef struct
+@@ -270,6 +280,29 @@ typedef struct
#define NT_GNU_BUILD_ID 3
@@ -284,7 +280,7 @@ Index: b/src/libbacktrace/elf.c
/* An index of ELF sections we care about. */
enum debug_section
-@@ -276,6 +310,15 @@ enum debug_section
+@@ -279,6 +312,15 @@ enum debug_section
DEBUG_ABBREV,
DEBUG_RANGES,
DEBUG_STR,
@@ -300,7 +296,7 @@ Index: b/src/libbacktrace/elf.c
DEBUG_MAX
};
-@@ -287,7 +330,12 @@ static const char * const debug_section_
+@@ -290,7 +332,12 @@ static const char * const debug_section_
".debug_line",
".debug_abbrev",
".debug_ranges",
@@ -314,7 +310,7 @@ Index: b/src/libbacktrace/elf.c
};
/* Information we gather for the sections we care about. */
-@@ -300,6 +348,8 @@ struct debug_section_info
+@@ -303,6 +350,8 @@ struct debug_section_info
size_t size;
/* Section contents, after read from file. */
const unsigned char *data;
@@ -323,7 +319,7 @@ Index: b/src/libbacktrace/elf.c
};
/* Information we keep for an ELF symbol. */
-@@ -936,6 +986,1493 @@ elf_open_debugfile_by_debuglink (struct
+@@ -939,6 +988,1493 @@ elf_open_debugfile_by_debuglink (struct
return ddescriptor;
}
@@ -1817,7 +1813,7 @@ Index: b/src/libbacktrace/elf.c
/* Add the backtrace data for one ELF file. Returns 1 on success,
0 on failure (in both cases descriptor is closed) or -1 if exe
is non-zero and the ELF file is ET_DYN, which tells the caller that
-@@ -982,6 +2519,8 @@ elf_add (struct backtrace_state *state,
+@@ -985,6 +2521,8 @@ elf_add (struct backtrace_state *state,
off_t max_offset;
struct backtrace_view debug_view;
int debug_view_valid;
@@ -1826,7 +1822,7 @@ Index: b/src/libbacktrace/elf.c
*found_sym = 0;
*found_dwarf = 0;
-@@ -1145,6 +2684,7 @@ elf_add (struct backtrace_state *state,
+@@ -1149,6 +2687,7 @@ elf_add (struct backtrace_state *state,
{
sections[j].offset = shdr->sh_offset;
sections[j].size = shdr->sh_size;
@@ -1834,7 +1830,7 @@ Index: b/src/libbacktrace/elf.c
break;
}
}
-@@ -1256,8 +2796,6 @@ elf_add (struct backtrace_state *state,
+@@ -1260,8 +2799,6 @@ elf_add (struct backtrace_state *state,
elf_add_syminfo_data (state, sdata);
}
@@ -1843,7 +1839,7 @@ Index: b/src/libbacktrace/elf.c
backtrace_release_view (state, &shdrs_view, error_callback, data);
shdrs_view_valid = 0;
backtrace_release_view (state, &names_view, error_callback, data);
-@@ -1345,13 +2883,94 @@ elf_add (struct backtrace_state *state,
+@@ -1349,13 +2886,94 @@ elf_add (struct backtrace_state *state,
goto fail;
descriptor = -1;
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index a0fc1c2..b260ae6 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 7 branch upto 20171010 (r253580).
+# DP: updates from the 7 branch upto 20171014 (r253748).
last_update()
{
cat > ${dir}LAST_UPDATED <EOF
-Tue Oct 10 12:18:42 CEST 2017
-Tue Oct 10 10:18:42 UTC 2017 (revision 253580)
+Sat Oct 14 07:09:31 CEST 2017
+Sat Oct 14 05:09:31 UTC 2017 (revision 253748)
EOF
}
@@ -6284,6 +6284,55 @@ Index: contrib/gcc_update
# Top level
Makefile.in: Makefile.tpl Makefile.def
configure: configure.ac config/acx.m4
+Index: libbacktrace/elf.c
+===================================================================
+--- a/src/libbacktrace/elf.c (.../tags/gcc_7_2_0_release)
++++ b/src/libbacktrace/elf.c (.../branches/gcc-7-branch)
+@@ -103,6 +103,7 @@
+ #undef SHT_SYMTAB
+ #undef SHT_STRTAB
+ #undef SHT_DYNSYM
++#undef SHF_COMPRESSED
+ #undef STT_OBJECT
+ #undef STT_FUNC
+
+@@ -195,6 +196,8 @@
+ #define SHT_STRTAB 3
+ #define SHT_DYNSYM 11
+
++#define SHF_COMPRESSED 0x800
++
+ #if BACKTRACE_ELF_SIZE == 32
+
+ typedef struct
+@@ -700,7 +703,8 @@
+
+ for (j = 0; j < (int) DEBUG_MAX; ++j)
+ {
+- if (strcmp (name, debug_section_names[j]) == 0)
++ if (strcmp (name, debug_section_names[j]) == 0
++ && (shdr->sh_flags & SHF_COMPRESSED) == 0)
+ {
+ sections[j].offset = shdr->sh_offset;
+ sections[j].size = shdr->sh_size;
+Index: libbacktrace/ChangeLog
+===================================================================
+--- a/src/libbacktrace/ChangeLog (.../tags/gcc_7_2_0_release)
++++ b/src/libbacktrace/ChangeLog (.../branches/gcc-7-branch)
+@@ -1,3 +1,13 @@
++2017-10-10 Paolo Carlini <paolo.carlini at oracle.com>
++
++ * elf.c: Fix typo in the last commit, SFH_COMPRESSED vs SHF_COMPRESSED.
++
++2017-10-10 Ian Lance Taylor <iant at golang.org>
++
++ PR go/80914
++ * elf.c (SHF_COMPRESSED): Define.
++ (elf_add): Ignore debug sections with SHF_COMPRESSED set.
++
+ 2017-08-14 Release Manager
+
+ * GCC 7.2.0 released.
Index: libgcc/config.host
===================================================================
--- a/src/libgcc/config.host (.../tags/gcc_7_2_0_release)
@@ -6300,7 +6349,14 @@ Index: libgcc/ChangeLog
===================================================================
--- a/src/libgcc/ChangeLog (.../tags/gcc_7_2_0_release)
+++ b/src/libgcc/ChangeLog (.../branches/gcc-7-branch)
-@@ -1,3 +1,11 @@
+@@ -1,3 +1,18 @@
++2017-10-13 Jakub Jelinek <jakub at redhat.com>
++
++ PR target/82274
++ * libgcc2.c (__mulvDI3): If both operands have
++ the same highpart of -1 and the topmost bit of lowpart is 0,
++ multiplication overflows even if both lowparts are 0.
++
+2017-09-28 Krister Walfridsson <krister.walfridsson at gmail.com>
+
+ Backport from mainline
@@ -6312,6 +6368,20 @@ Index: libgcc/ChangeLog
2017-08-14 Release Manager
* GCC 7.2.0 released.
+Index: libgcc/libgcc2.c
+===================================================================
+--- a/src/libgcc/libgcc2.c (.../tags/gcc_7_2_0_release)
++++ b/src/libgcc/libgcc2.c (.../branches/gcc-7-branch)
+@@ -375,7 +375,8 @@
+ }
+ else
+ {
+- if (uu.s.high == (Wtype) -1 && vv.s.high == (Wtype) - 1)
++ if ((uu.s.high & vv.s.high) == (Wtype) -1
++ && (uu.s.low | vv.s.low) != 0)
+ {
+ DWunion ww = {.ll = (UDWtype) (UWtype) uu.s.low
+ * (UDWtype) (UWtype) vv.s.low};
Index: gcc/is-a.h
===================================================================
--- a/src/gcc/is-a.h (.../tags/gcc_7_2_0_release)
@@ -6716,7 +6786,7 @@ Index: gcc/DATESTAMP
+++ b/src/gcc/DATESTAMP (.../branches/gcc-7-branch)
@@ -1 +1 @@
-20170814
-+20171010
++20171014
Index: gcc/tree.c
===================================================================
--- a/src/gcc/tree.c (.../tags/gcc_7_2_0_release)
@@ -6861,6 +6931,30 @@ Index: gcc/tree.h
/* Return a tree representing the offset, in bytes, of the field referenced
by EXP. This does not include any offset in DECL_FIELD_BIT_OFFSET. */
+Index: gcc/internal-fn.c
+===================================================================
+--- a/src/gcc/internal-fn.c (.../tags/gcc_7_2_0_release)
++++ b/src/gcc/internal-fn.c (.../branches/gcc-7-branch)
+@@ -1754,8 +1754,8 @@
+ }
+
+ /* At this point hipart{0,1} are both in [-1, 0]. If they are
+- the same, overflow happened if res is negative, if they are
+- different, overflow happened if res is positive. */
++ the same, overflow happened if res is non-positive, if they
++ are different, overflow happened if res is positive. */
+ if (op0_sign != 1 && op1_sign != 1 && op0_sign != op1_sign)
+ emit_jump (hipart_different);
+ else if (op0_sign == 1 || op1_sign == 1)
+@@ -1763,7 +1763,7 @@
+ NULL_RTX, NULL, hipart_different,
+ PROB_EVEN);
+
+- do_compare_rtx_and_jump (res, const0_rtx, LT, false, mode,
++ do_compare_rtx_and_jump (res, const0_rtx, LE, false, mode,
+ NULL_RTX, NULL, do_error,
+ PROB_VERY_UNLIKELY);
+ emit_jump (done_label);
Index: gcc/gcc.c
===================================================================
--- a/src/gcc/gcc.c (.../tags/gcc_7_2_0_release)
@@ -7166,7 +7260,31 @@ Index: gcc/ChangeLog
===================================================================
--- a/src/gcc/ChangeLog (.../tags/gcc_7_2_0_release)
+++ b/src/gcc/ChangeLog (.../branches/gcc-7-branch)
-@@ -1,3 +1,619 @@
+@@ -1,3 +1,647 @@
++2017-10-13 Jakub Jelinek <jakub at redhat.com>
++
++ PR target/82274
++ * internal-fn.c (expand_mul_overflow): If both operands have
++ the same highpart of -1 or 0 and the topmost bit of lowpart
++ is different, overflow is if res <= 0 rather than res < 0.
++
++ PR target/82524
++ * config/i386/i386.md (addqi_ext_1, andqi_ext_1,
++ *andqi_ext_1_cc, *<code>qi_ext_1, *xorqi_ext_1_cc): Change
++ =Q constraints to +Q and into insn condition add check
++ that operands[0] and operands[1] are equal.
++ (*addqi_ext_2, *andqi_ext_2, *<code>qi_ext_2): Change
++ =Q constraints to +Q and into insn condition add check
++ that operands[0] is equal to either operands[1] or operands[2].
++
++2017-10-10 Andreas Tobler <andreast at gcc.gnu.org>
++
++ Backported from mainline r253602
++ 2017-10-10 Andreas Tobler <andreast at gcc.gnu.org>
++
++ * config.gcc: (armv7*-*-freebsd*): New target.
++ (armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define.
++
+2017-10-06 Christophe Lyon <christophe.lyon at linaro.org>
+
+ Backport from mainline r253242.
@@ -7783,6 +7901,10 @@ Index: gcc/ChangeLog
+ * config/sh/sh-mem.cc (sh_expand_cmpnstr): Only unroll for
+ constant count if that count is less than 32.
+
++2017-08-14 Richard Biener <rguenther at suse.de>
++
++ * BASE-VER: Set to 7.2.1.
++
2017-08-14 Release Manager
* GCC 7.2.0 released.
@@ -9140,6 +9262,48 @@ Index: gcc/testsuite/gcc.c-torture/execute/pr81503.c
+ return -1;
+ return 0;
+}
+Index: gcc/testsuite/gcc.c-torture/execute/pr82524.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/execute/pr82524.c (.../tags/gcc_7_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr82524.c (.../branches/gcc-7-branch)
+@@ -0,0 +1,37 @@
++/* PR target/82524 */
++
++struct S { unsigned char b, g, r, a; };
++union U { struct S c; unsigned v; };
++
++static inline unsigned char
++foo (unsigned char a, unsigned char b)
++{
++ return ((a + 1) * b) >> 8;
++}
++
++__attribute__((noinline, noclone)) unsigned
++bar (union U *x, union U *y)
++{
++ union U z;
++ unsigned char v = x->c.a;
++ unsigned char w = foo (y->c.a, 255 - v);
++ z.c.r = foo (x->c.r, v) + foo (y->c.r, w);
++ z.c.g = foo (x->c.g, v) + foo (y->c.g, w);
++ z.c.b = foo (x->c.b, v) + foo (y->c.b, w);
++ z.c.a = 0;
++ return z.v;
++}
++
++int
++main ()
++{
++ union U a, b, c;
++ if ((unsigned char) ~0 != 255 || sizeof (unsigned) != 4)
++ return 0;
++ a.c = (struct S) { 255, 255, 255, 0 };
++ b.c = (struct S) { 255, 255, 255, 255 };
++ c.v = bar (&a, &b);
++ if (c.c.b != 255 || c.c.g != 255 || c.c.r != 255 || c.c.a != 0)
++ __builtin_abort ();
++ return 0;
++}
Index: gcc/testsuite/gcc.c-torture/compile/string-large-1.c
===================================================================
--- a/src/gcc/testsuite/gcc.c-torture/compile/string-large-1.c (.../tags/gcc_7_2_0_release)
@@ -9782,6 +9946,37 @@ Index: gcc/testsuite/gcc.dg/gomp/pr81768-1.c
+ for (float *k = &b[0][0][10]; k > &b[0][0][0]; --k)
+ b[i - &b[0][0][0]][(j - &b[0][0][0]) / 10 - 1][(k - &b[0][0][0]) - 1] -= 3.5;
+}
+Index: gcc/testsuite/gcc.dg/pr82274-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr82274-2.c (.../tags/gcc_7_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr82274-2.c (.../branches/gcc-7-branch)
+@@ -0,0 +1,26 @@
++/* PR target/82274 */
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++
++int
++main ()
++{
++#ifdef __SIZEOF_INT128__
++ __int128 m = -(((__int128) 1) << (__CHAR_BIT__ * __SIZEOF_INT128__ / 2));
++ volatile __int128 mv = m;
++ __int128 r;
++#else
++ long long m = -(1LL << (__CHAR_BIT__ * __SIZEOF_LONG_LONG__ / 2));
++ volatile long long mv = m;
++ long long r;
++#endif
++ if (!__builtin_mul_overflow (mv, mv, &r))
++ __builtin_abort ();
++ if (!__builtin_mul_overflow_p (mv, mv, r))
++ __builtin_abort ();
++ if (!__builtin_mul_overflow (m, m, &r))
++ __builtin_abort ();
++ if (!__builtin_mul_overflow_p (m, m, r))
++ __builtin_abort ();
++ return 0;
++}
Index: gcc/testsuite/gcc.dg/asan/pr81923.c
===================================================================
--- a/src/gcc/testsuite/gcc.dg/asan/pr81923.c (.../tags/gcc_7_2_0_release)
@@ -10194,11 +10389,41 @@ Index: gcc/testsuite/gcc.dg/vect/pr82108.c
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+Index: gcc/testsuite/gcc.dg/pr82274-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr82274-1.c (.../tags/gcc_7_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr82274-1.c (.../branches/gcc-7-branch)
+@@ -0,0 +1,16 @@
++/* PR target/82274 */
++/* { dg-do run } */
++/* { dg-shouldfail "trapv" } */
++/* { dg-options "-ftrapv" } */
++
++int
++main ()
++{
++#ifdef __SIZEOF_INT128__
++ volatile __int128 m = -(((__int128) 1) << (__CHAR_BIT__ * __SIZEOF_INT128__ / 2));
++#else
++ volatile long long m = -(1LL << (__CHAR_BIT__ * __SIZEOF_LONG_LONG__ / 2));
++#endif
++ m = m * m;
++ return 0;
++}
Index: gcc/testsuite/ChangeLog
===================================================================
--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_7_2_0_release)
+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-7-branch)
-@@ -1,3 +1,459 @@
+@@ -1,3 +1,468 @@
++2017-10-13 Jakub Jelinek <jakub at redhat.com>
++
++ PR target/82274
++ * gcc.dg/pr82274-1.c: New test.
++ * gcc.dg/pr82274-2.c: New test.
++
++ PR target/82524
++ * gcc.c-torture/execute/pr82524.c: New test.
++
+2017-10-09 James Cowgill <James.Cowgill at imgtec.com>
+
+ * go.test/go-test.exp (go-set-goarch): Update MIPS architecture names.
@@ -13640,6 +13865,13 @@ Index: gcc/fortran/trans-io.c
if (ts->type == BT_CLASS)
derived = ts->u.derived->components->ts.u.derived;
+Index: gcc/BASE-VER
+===================================================================
+--- a/src/gcc/BASE-VER (.../tags/gcc_7_2_0_release)
++++ b/src/gcc/BASE-VER (.../branches/gcc-7-branch)
+@@ -1 +1 @@
+-7.2.0
++7.2.1
Index: gcc/langhooks.h
===================================================================
--- a/src/gcc/langhooks.h (.../tags/gcc_7_2_0_release)
@@ -316158,7 +316390,23 @@ Index: gcc/config.gcc
gas=yes
gnu_ld=yes
use_gcc_stdint=wrap
-@@ -2416,7 +2418,7 @@
+@@ -1075,11 +1077,14 @@
+ case $target in
+ armv6*-*-freebsd*)
+ target_cpu_cname="arm1176jzfs"
+- tm_defines="${tm_defines} TARGET_FREEBSD_ARMv6=1"
+ if test $fbsd_major -ge 11; then
+ tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
+ fi
+ ;;
++ armv7*-*-freebsd*)
++ target_cpu_cname="genericv7a"
++ tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
++ ;;
+ *)
+ target_cpu_cname="arm9"
+ ;;
+@@ -2416,7 +2421,7 @@
;;
powerpc-*-rtems*)
tm_file="rs6000/biarch64.h ${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/e500.h rs6000/rtems.h rtems.h"
@@ -316318,6 +316566,169 @@ Index: gcc/config/sparc/sparc.md
(define_expand "muldi3"
[(set (match_operand:DI 0 "register_operand" "")
(mult:DI (match_operand:DI 1 "arith_operand" "")
+Index: gcc/config/i386/i386.md
+===================================================================
+--- a/src/gcc/config/i386/i386.md (.../tags/gcc_7_2_0_release)
++++ b/src/gcc/config/i386/i386.md (.../branches/gcc-7-branch)
+@@ -6152,7 +6152,7 @@
+ (set_attr "mode" "<MODE>")])
+
+ (define_insn "addqi_ext_1"
+- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q,Q")
++ [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q,Q")
+ (const_int 8)
+ (const_int 8))
+ (subreg:SI
+@@ -6163,7 +6163,8 @@
+ (const_int 8)) 0)
+ (match_operand:QI 2 "general_operand" "QnBc,m")) 0))
+ (clobber (reg:CC FLAGS_REG))]
+- ""
++ "/* FIXME: without this LRA can't reload this pattern, see PR82524. */
++ rtx_equal_p (operands[0], operands[1])"
+ {
+ switch (get_attr_type (insn))
+ {
+@@ -6188,7 +6189,7 @@
+ (set_attr "mode" "QI")])
+
+ (define_insn "*addqi_ext_2"
+- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q")
++ [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q")
+ (const_int 8)
+ (const_int 8))
+ (subreg:SI
+@@ -6202,7 +6203,9 @@
+ (const_int 8)
+ (const_int 8)) 0)) 0))
+ (clobber (reg:CC FLAGS_REG))]
+- ""
++ "/* FIXME: without this LRA can't reload this pattern, see PR82524. */
++ rtx_equal_p (operands[0], operands[1])
++ || rtx_equal_p (operands[0], operands[2])"
+ "add{b}\t{%h2, %h0|%h0, %h2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "QI")])
+@@ -8458,7 +8461,7 @@
+ (set_attr "mode" "QI")])
+
+ (define_insn "andqi_ext_1"
+- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q,Q")
++ [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q,Q")
+ (const_int 8)
+ (const_int 8))
+ (subreg:SI
+@@ -8469,7 +8472,8 @@
+ (const_int 8)) 0)
+ (match_operand:QI 2 "general_operand" "QnBc,m")) 0))
+ (clobber (reg:CC FLAGS_REG))]
+- ""
++ "/* FIXME: without this LRA can't reload this pattern, see PR82524. */
++ rtx_equal_p (operands[0], operands[1])"
+ "and{b}\t{%2, %h0|%h0, %2}"
+ [(set_attr "isa" "*,nox64")
+ (set_attr "type" "alu")
+@@ -8487,7 +8491,7 @@
+ (const_int 8)) 0)
+ (match_operand:QI 2 "general_operand" "QnBc,m"))
+ (const_int 0)))
+- (set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q,Q")
++ (set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q,Q")
+ (const_int 8)
+ (const_int 8))
+ (subreg:SI
+@@ -8497,7 +8501,9 @@
+ (const_int 8)
+ (const_int 8)) 0)
+ (match_dup 2)) 0))]
+- "ix86_match_ccmode (insn, CCNOmode)"
++ "ix86_match_ccmode (insn, CCNOmode)
++ /* FIXME: without this LRA can't reload this pattern, see PR82524. */
++ && rtx_equal_p (operands[0], operands[1])"
+ "and{b}\t{%2, %h0|%h0, %2}"
+ [(set_attr "isa" "*,nox64")
+ (set_attr "type" "alu")
+@@ -8504,7 +8510,7 @@
+ (set_attr "mode" "QI")])
+
+ (define_insn "*andqi_ext_2"
+- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q")
++ [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q")
+ (const_int 8)
+ (const_int 8))
+ (subreg:SI
+@@ -8518,7 +8524,9 @@
+ (const_int 8)
+ (const_int 8)) 0)) 0))
+ (clobber (reg:CC FLAGS_REG))]
+- ""
++ "/* FIXME: without this LRA can't reload this pattern, see PR82524. */
++ rtx_equal_p (operands[0], operands[1])
++ || rtx_equal_p (operands[0], operands[2])"
+ "and{b}\t{%h2, %h0|%h0, %h2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "QI")])
+@@ -8845,7 +8853,7 @@
+ (set_attr "mode" "<MODE>")])
+
+ (define_insn "*<code>qi_ext_1"
+- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q,Q")
++ [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q,Q")
+ (const_int 8)
+ (const_int 8))
+ (subreg:SI
+@@ -8856,7 +8864,9 @@
+ (const_int 8)) 0)
+ (match_operand:QI 2 "general_operand" "QnBc,m")) 0))
+ (clobber (reg:CC FLAGS_REG))]
+- "!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun)"
++ "(!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
++ /* FIXME: without this LRA can't reload this pattern, see PR82524. */
++ && rtx_equal_p (operands[0], operands[1])"
+ "<logic>{b}\t{%2, %h0|%h0, %2}"
+ [(set_attr "isa" "*,nox64")
+ (set_attr "type" "alu")
+@@ -8863,7 +8873,7 @@
+ (set_attr "mode" "QI")])
+
+ (define_insn "*<code>qi_ext_2"
+- [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q")
++ [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q")
+ (const_int 8)
+ (const_int 8))
+ (subreg:SI
+@@ -8877,7 +8887,10 @@
+ (const_int 8)
+ (const_int 8)) 0)) 0))
+ (clobber (reg:CC FLAGS_REG))]
+- "!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun)"
++ "(!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
++ /* FIXME: without this LRA can't reload this pattern, see PR82524. */
++ && (rtx_equal_p (operands[0], operands[1])
++ || rtx_equal_p (operands[0], operands[2]))"
+ "<logic>{b}\t{%h2, %h0|%h0, %h2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "QI")])
+@@ -8966,7 +8979,7 @@
+ (const_int 8)) 0)
+ (match_operand:QI 2 "general_operand" "QnBc,m"))
+ (const_int 0)))
+- (set (zero_extract:SI (match_operand 0 "ext_register_operand" "=Q,Q")
++ (set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q,Q")
+ (const_int 8)
+ (const_int 8))
+ (subreg:SI
+@@ -8976,7 +8989,9 @@
+ (const_int 8)
+ (const_int 8)) 0)
+ (match_dup 2)) 0))]
+- "ix86_match_ccmode (insn, CCNOmode)"
++ "ix86_match_ccmode (insn, CCNOmode)
++ /* FIXME: without this LRA can't reload this pattern, see PR82524. */
++ && rtx_equal_p (operands[0], operands[1])"
+ "xor{b}\t{%2, %h0|%h0, %2}"
+ [(set_attr "isa" "*,nox64")
+ (set_attr "type" "alu")
Index: gcc/config/i386/i386.c
===================================================================
--- a/src/gcc/config/i386/i386.c (.../tags/gcc_7_2_0_release)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/gcc-7.git
More information about the Reproducible-commits
mailing list