[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