[gcc-7] 238/354: * Update to SVN 20170629 (r249793) from the gcc-7-branch.

Ximin Luo infinity0 at debian.org
Thu Nov 23 15:51:00 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 d9528f09fe917b4ad7c902adc59e370c07bf4350
Author: doko <doko at 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>
Date:   Thu Jun 29 15:38:27 2017 +0000

      * Update to SVN 20170629 (r249793) from the gcc-7-branch.
    
    
    git-svn-id: svn+ssh://svn.debian.org/svn/gcccvs/branches/sid/gcc-7@9560 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
---
 debian/changelog                    |   6 +-
 debian/patches/libgo-testsuite.diff |  16 -
 debian/patches/svn-updates.diff     | 701 ++++++++++++++++++++++++++++++++++--
 3 files changed, 673 insertions(+), 50 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index e7d189e..5a67d58 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,6 @@
-gcc-7 (7.1.0-7ubuntu1) UNRELEASED; urgency=medium
+gcc-7 (7.1.0-8) UNRELEASED; urgency=medium
 
-  * Update to SVN 20170628 (r249732) from the gcc-7-branch.
+  * Update to SVN 20170629 (r249793) from the gcc-7-branch.
 
   [ Matthias Klose ]
   * Move the liblto_plugin from the cpp to the gcc package.
@@ -16,7 +16,7 @@ gcc-7 (7.1.0-7ubuntu1) UNRELEASED; urgency=medium
   * Stop symlinking gcc-7-7 -> gcc-7. See #856274 and #814977.
   * gnatmake: compile once even with SOURCE_DATE_EPOCH. Closes: #866029.
 
- -- Matthias Klose <doko at debian.org>  Tue, 27 Jun 2017 13:19:14 +0200
+ -- Matthias Klose <doko at debian.org>  Thu, 29 Jun 2017 17:36:03 +0200
 
 gcc-7 (7.1.0-7) unstable; urgency=medium
 
diff --git a/debian/patches/libgo-testsuite.diff b/debian/patches/libgo-testsuite.diff
index 6d960d9..7f5584d 100644
--- a/debian/patches/libgo-testsuite.diff
+++ b/debian/patches/libgo-testsuite.diff
@@ -18,14 +18,6 @@ Index: b/src/libgo/Makefile.am
  	  $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \
  	elif test "$(GOBENCH)" != ""; then \
  	  $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --bench="$(GOBENCH)" $(GOTESTFLAGS); \
-@@ -963,6 +968,7 @@ CHECK = \
- 	    echo "FAIL: $(@D)" > $@-testsum; \
- 	    exit 1; \
- 	  fi; \
-+	fi; \
- 	fi
- 
- # Build all packages before checking any.
 Index: b/src/libgo/Makefile.in
 ===================================================================
 --- a/src/libgo/Makefile.in
@@ -44,11 +36,3 @@ Index: b/src/libgo/Makefile.in
  	  $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \
  	elif test "$(GOBENCH)" != ""; then \
  	  $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --bench="$(GOBENCH)" $(GOTESTFLAGS); \
-@@ -1119,6 +1124,7 @@ CHECK = \
- 	    echo "FAIL: $(@D)" > $@-testsum; \
- 	    exit 1; \
- 	  fi; \
-+	fi; \
- 	fi
- 
- 
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index 16c7405..70cb880 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 7 branch upto 20170628 (r249732).
+# DP: updates from the 7 branch upto 20170629 (r249793).
 
 last_update()
 {
 	cat > ${dir}LAST_UPDATED <EOF
-Wed Jun 28 12:26:11 CEST 2017
-Wed Jun 28 10:26:11 UTC 2017 (revision 249732)
+Thu Jun 29 17:13:49 CEST 2017
+Thu Jun 29 15:13:49 UTC 2017 (revision 249793)
 EOF
 }
 
@@ -2496,11 +2496,62 @@ Index: libgcc/config.host
  	tm_file="${tm_file} arm/bpabi-lib.h"
  	unwind_header=config/arm/unwind-arm.h
  	tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
+Index: libgcc/configure.ac
+===================================================================
+--- a/src/libgcc/configure.ac	(.../tags/gcc_7_1_0_release)
++++ b/src/libgcc/configure.ac	(.../branches/gcc-7-branch)
+@@ -191,6 +191,8 @@
+ AC_PROG_CC
+ AC_PROG_CPP_WERROR
+ 
++AC_SYS_LARGEFILE
++
+ AC_CHECK_SIZEOF([double])
+ AC_CHECK_SIZEOF([long double])
+ AS_VAR_ARITH([double_type_size], [$ac_cv_sizeof_double \* 8])
+Index: libgcc/config.in
+===================================================================
+--- a/src/libgcc/config.in	(.../tags/gcc_7_1_0_release)
++++ b/src/libgcc/config.in	(.../branches/gcc-7-branch)
+@@ -71,3 +71,9 @@
+ 
+ /* Define to 1 if the target use emutls for thread-local storage. */
+ #undef USE_EMUTLS
++
++/* Number of bits in a file offset, on hosts where this is settable. */
++#undef _FILE_OFFSET_BITS
++
++/* Define for large files, on AIX-style hosts. */
++#undef _LARGE_FILES
+Index: libgcc/libgcov.h
+===================================================================
+--- a/src/libgcc/libgcov.h	(.../tags/gcc_7_1_0_release)
++++ b/src/libgcc/libgcov.h	(.../branches/gcc-7-branch)
+@@ -38,6 +38,7 @@
+ /* This path will be used by libgcov runtime.  */
+ 
+ #include "tconfig.h"
++#include "auto-target.h"
+ #include "tsystem.h"
+ #include "coretypes.h"
+ #include "tm.h"
 Index: libgcc/ChangeLog
 ===================================================================
 --- a/src/libgcc/ChangeLog	(.../tags/gcc_7_1_0_release)
 +++ b/src/libgcc/ChangeLog	(.../branches/gcc-7-branch)
-@@ -1,3 +1,30 @@
+@@ -1,3 +1,42 @@
++2017-06-28  Richard Biener  <rguenther at suse.de>
++
++	Backport from mainline
++	2017-06-21  Richard Biener  <rguenther at suse.de>
++
++	PR gcov-profile/81080
++	* configure.ac: Add AC_SYS_LARGEFILE.
++	* libgcov.h: Include auto-target.h before tsystem.h to pick
++	up _FILE_OFFSET_BITS which might differ for multilibs.
++	* config.in: Regenerate.
++	* configure: Likewise.
++
 +2017-05-26  Richard Henderson  <rth at redhat.com>
 +
 +	PR libgcc/80037
@@ -2614,6 +2665,233 @@ Index: libgcc/config/arm/unwind-arm.h
  
  #ifdef __cplusplus
  }   /* extern "C" */
+Index: libgcc/configure
+===================================================================
+--- a/src/libgcc/configure	(.../tags/gcc_7_1_0_release)
++++ b/src/libgcc/configure	(.../branches/gcc-7-branch)
+@@ -672,6 +672,7 @@
+ with_slibdir
+ enable_maintainer_mode
+ with_build_libsubdir
++enable_largefile
+ enable_decimal_float
+ with_system_libunwind
+ enable_explicit_exception_frame_registration
+@@ -1308,6 +1309,7 @@
+   --enable-maintainer-mode
+                           enable make rules and dependencies not useful (and
+                           sometimes confusing) to the casual installer
++  --disable-largefile     omit support for large files
+   --enable-decimal-float={no,yes,bid,dpd}
+ 			enable decimal float extension to C.  Selecting 'bid'
+ 			or 'dpd' choses which decimal floating point format
+@@ -4061,7 +4063,206 @@
+ ac_c_preproc_warn_flag=yes
+ 
+ 
++# Check whether --enable-largefile was given.
++if test "${enable_largefile+set}" = set; then :
++  enableval=$enable_largefile;
++fi
+ 
++if test "$enable_largefile" != no; then
++
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
++$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
++if test "${ac_cv_sys_largefile_CC+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  ac_cv_sys_largefile_CC=no
++     if test "$GCC" != yes; then
++       ac_save_CC=$CC
++       while :; do
++	 # IRIX 6.2 and later do not support large files by default,
++	 # so use the C compiler's -n32 option if that helps.
++	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++#include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++    We can't simply define LARGE_OFF_T to be 9223372036854775807,
++    since some C++ compilers masquerading as C compilers
++    incorrectly reject 9223372036854775807.  */
++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++		       && LARGE_OFF_T % 2147483647 == 1)
++		      ? 1 : -1];
++int
++main ()
++{
++
++  ;
++  return 0;
++}
++_ACEOF
++	 if ac_fn_c_try_compile "$LINENO"; then :
++  break
++fi
++rm -f core conftest.err conftest.$ac_objext
++	 CC="$CC -n32"
++	 if ac_fn_c_try_compile "$LINENO"; then :
++  ac_cv_sys_largefile_CC=' -n32'; break
++fi
++rm -f core conftest.err conftest.$ac_objext
++	 break
++       done
++       CC=$ac_save_CC
++       rm -f conftest.$ac_ext
++    fi
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
++$as_echo "$ac_cv_sys_largefile_CC" >&6; }
++  if test "$ac_cv_sys_largefile_CC" != no; then
++    CC=$CC$ac_cv_sys_largefile_CC
++  fi
++
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
++$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
++if test "${ac_cv_sys_file_offset_bits+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  while :; do
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++#include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++    We can't simply define LARGE_OFF_T to be 9223372036854775807,
++    since some C++ compilers masquerading as C compilers
++    incorrectly reject 9223372036854775807.  */
++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++		       && LARGE_OFF_T % 2147483647 == 1)
++		      ? 1 : -1];
++int
++main ()
++{
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  ac_cv_sys_file_offset_bits=no; break
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++#define _FILE_OFFSET_BITS 64
++#include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++    We can't simply define LARGE_OFF_T to be 9223372036854775807,
++    since some C++ compilers masquerading as C compilers
++    incorrectly reject 9223372036854775807.  */
++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++		       && LARGE_OFF_T % 2147483647 == 1)
++		      ? 1 : -1];
++int
++main ()
++{
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  ac_cv_sys_file_offset_bits=64; break
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++  ac_cv_sys_file_offset_bits=unknown
++  break
++done
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
++$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
++case $ac_cv_sys_file_offset_bits in #(
++  no | unknown) ;;
++  *)
++cat >>confdefs.h <<_ACEOF
++#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
++_ACEOF
++;;
++esac
++rm -rf conftest*
++  if test $ac_cv_sys_file_offset_bits = unknown; then
++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
++$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
++if test "${ac_cv_sys_large_files+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  while :; do
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++#include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++    We can't simply define LARGE_OFF_T to be 9223372036854775807,
++    since some C++ compilers masquerading as C compilers
++    incorrectly reject 9223372036854775807.  */
++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++		       && LARGE_OFF_T % 2147483647 == 1)
++		      ? 1 : -1];
++int
++main ()
++{
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  ac_cv_sys_large_files=no; break
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++#define _LARGE_FILES 1
++#include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++    We can't simply define LARGE_OFF_T to be 9223372036854775807,
++    since some C++ compilers masquerading as C compilers
++    incorrectly reject 9223372036854775807.  */
++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++		       && LARGE_OFF_T % 2147483647 == 1)
++		      ? 1 : -1];
++int
++main ()
++{
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  ac_cv_sys_large_files=1; break
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++  ac_cv_sys_large_files=unknown
++  break
++done
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
++$as_echo "$ac_cv_sys_large_files" >&6; }
++case $ac_cv_sys_large_files in #(
++  no | unknown) ;;
++  *)
++cat >>confdefs.h <<_ACEOF
++#define _LARGE_FILES $ac_cv_sys_large_files
++_ACEOF
++;;
++esac
++rm -rf conftest*
++  fi
++fi
++
++
++
+ # The cast to long int works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
 Index: gcc/graphite-isl-ast-to-gimple.c
 ===================================================================
 --- a/src/gcc/graphite-isl-ast-to-gimple.c	(.../tags/gcc_7_1_0_release)
@@ -2776,6 +3054,20 @@ Index: gcc/c-family/c-format.c
    spec_type = TYPE_CANONICAL (spec_type);
    arg_type = TYPE_CANONICAL (arg_type);
  
+Index: gcc/ipa-polymorphic-call.c
+===================================================================
+--- a/src/gcc/ipa-polymorphic-call.c	(.../tags/gcc_7_1_0_release)
++++ b/src/gcc/ipa-polymorphic-call.c	(.../branches/gcc-7-branch)
+@@ -267,7 +267,8 @@
+ 	{
+ 	  for (fld = TYPE_FIELDS (type); fld; fld = DECL_CHAIN (fld))
+ 	    {
+-	      if (TREE_CODE (fld) != FIELD_DECL)
++	      if (TREE_CODE (fld) != FIELD_DECL
++		  || TREE_TYPE (fld) == error_mark_node)
+ 		continue;
+ 
+ 	      pos = int_bit_position (fld);
 Index: gcc/c/ChangeLog
 ===================================================================
 --- a/src/gcc/c/ChangeLog	(.../tags/gcc_7_1_0_release)
@@ -2869,7 +3161,7 @@ Index: gcc/DATESTAMP
 +++ b/src/gcc/DATESTAMP	(.../branches/gcc-7-branch)
 @@ -1 +1 @@
 -20170502
-+20170628
++20170629
 Index: gcc/builtins.c
 ===================================================================
 --- a/src/gcc/builtins.c	(.../tags/gcc_7_1_0_release)
@@ -3135,7 +3427,18 @@ Index: gcc/tree-ssa-sccvn.c
 ===================================================================
 --- a/src/gcc/tree-ssa-sccvn.c	(.../tags/gcc_7_1_0_release)
 +++ b/src/gcc/tree-ssa-sccvn.c	(.../branches/gcc-7-branch)
-@@ -2916,14 +2916,11 @@
+@@ -2035,7 +2035,9 @@
+ 	  ops[1] = bitsize_int (ref->size);
+ 	  ops[2] = bitsize_int (offset - offset2);
+ 	  tree val = vn_nary_build_or_lookup (rcode, vr->type, ops);
+-	  if (val)
++	  if (val
++	      && (TREE_CODE (val) != SSA_NAME
++		  || ! SSA_NAME_OCCURS_IN_ABNORMAL_PHI (val)))
+ 	    {
+ 	      vn_reference_t res = vn_reference_lookup_or_insert_for_pieces
+ 		  (vuse, vr->set, vr->type, vr->operands, val);
+@@ -2916,14 +2918,11 @@
     the other.  */
  
  static bool
@@ -3152,7 +3455,7 @@ Index: gcc/tree-ssa-sccvn.c
  
    *inverted_p = false;
    if (code1 == code2)
-@@ -2941,10 +2938,6 @@
+@@ -2941,10 +2940,6 @@
    else
      return false;
  
@@ -3163,7 +3466,7 @@ Index: gcc/tree-ssa-sccvn.c
    return ((expressions_equal_p (lhs1, lhs2)
  	   && expressions_equal_p (rhs1, rhs2))
  	  || (commutative_tree_code (code1)
-@@ -3002,7 +2995,10 @@
+@@ -3002,7 +2997,10 @@
  	      return false;
  	    bool inverted_p;
  	    if (! cond_stmts_equal_p (as_a <gcond *> (last1),
@@ -3175,7 +3478,7 @@ Index: gcc/tree-ssa-sccvn.c
  	      return false;
  
  	    /* Get at true/false controlled edges into the PHI.  */
-@@ -3081,6 +3077,16 @@
+@@ -3081,6 +3079,16 @@
    vp1.type = TREE_TYPE (gimple_phi_result (phi));
    vp1.phiargs = shared_lookup_phiargs;
    vp1.block = gimple_bb (phi);
@@ -3192,7 +3495,7 @@ Index: gcc/tree-ssa-sccvn.c
    vp1.hashcode = vn_phi_compute_hash (&vp1);
    slot = current_info->phis->find_slot_with_hash (&vp1, vp1.hashcode,
  						  NO_INSERT);
-@@ -3117,6 +3123,16 @@
+@@ -3117,6 +3125,16 @@
    vp1->type = TREE_TYPE (gimple_phi_result (phi));
    vp1->phiargs = args;
    vp1->block = gimple_bb (phi);
@@ -3227,7 +3530,34 @@ Index: gcc/ChangeLog
 ===================================================================
 --- a/src/gcc/ChangeLog	(.../tags/gcc_7_1_0_release)
 +++ b/src/gcc/ChangeLog	(.../branches/gcc-7-branch)
-@@ -1,3 +1,690 @@
+@@ -1,3 +1,717 @@
++2017-06-29  Richard Biener  <rguenther at suse.de>
++
++	Backport from mainline
++	2017-06-19  Richard Biener  <rguenther at suse.de>
++
++	PR ipa/81112
++	* ipa-prop.c (find_constructor_constant_at_offset): Handle
++	RANGE_EXPR conservatively.
++
++2017-06-28  Richard Biener  <rguenther at suse.de>
++
++	Backport from mainline
++	2017-06-09  Richard Biener  <rguenther at suse.de>
++
++	PR middle-end/81007
++	* ipa-polymorphic-call.c
++	(ipa_polymorphic_call_context::restrict_to_inner_class):
++	Skip FIELD_DECLs with error_mark_node type.
++	* passes.def (all_lowering_passes): Run pass_build_cgraph_edges
++	last again.
++
++	2017-06-14  Richard Biener  <rguenther at suse.de>
++
++	PR tree-optimization/81083
++	* tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
++	as values.
++
 +2017-06-27  Segher Boessenkool  <segher at kernel.crashing.org>
 +
 +	Backports from trunk:
@@ -3918,7 +4248,7 @@ Index: gcc/ChangeLog
  2017-05-02  Release Manager
  
  	* GCC 7.1.0 released.
-@@ -110,9 +801,9 @@
+@@ -110,9 +828,9 @@
  	Backport from mainline
  	2017-04-25  Andreas Krebbel  <krebbel at linux.vnet.ibm.com>
  
@@ -3931,7 +4261,7 @@ Index: gcc/ChangeLog
  
  2017-04-25  Andreas Krebbel  <krebbel at linux.vnet.ibm.com>
  
-@@ -119,11 +810,11 @@
+@@ -119,11 +837,11 @@
  	Backport from mainline
  	2017-04-25  Andreas Krebbel  <krebbel at linux.vnet.ibm.com>
  
@@ -3948,7 +4278,7 @@ Index: gcc/ChangeLog
  
  2017-04-25  Dominik Vogt  <vogt at linux.vnet.ibm.com>
  
-@@ -130,30 +821,30 @@
+@@ -130,30 +848,30 @@
  	Backport from maineline
  	2017-04-25  Dominik Vogt  <vogt at linux.vnet.ibm.com>
  
@@ -4003,7 +4333,7 @@ Index: gcc/ChangeLog
  
  2017-04-25  Dominik Vogt  <vogt at linux.vnet.ibm.com>
  
-@@ -160,8 +851,8 @@
+@@ -160,8 +878,8 @@
  	Backport from mainline
  	2017-04-25  Dominik Vogt  <vogt at linux.vnet.ibm.com>
  
@@ -4014,7 +4344,7 @@ Index: gcc/ChangeLog
  
  
  2017-04-25  Dominik Vogt  <vogt at linux.vnet.ibm.com>
-@@ -169,8 +860,8 @@
+@@ -169,8 +887,8 @@
  	Backport from mainline
  	2017-04-25  Dominik Vogt  <vogt at linux.vnet.ibm.com>
  
@@ -4025,7 +4355,7 @@ Index: gcc/ChangeLog
  
  2017-04-25  Jakub Jelinek  <jakub at redhat.com>
  
-@@ -229,7 +920,7 @@
+@@ -229,7 +947,7 @@
  	(build_array_type): Likewise.  Add typeless_storage argument.
  
  2017-04-19  Eric Botcazou  <ebotcazou at adacore.com>
@@ -4034,7 +4364,7 @@ Index: gcc/ChangeLog
  
  	PR tree-optimization/80426
  	* tree-vrp.c (extract_range_from_binary_expr_1): For an additive
-@@ -271,7 +962,7 @@
+@@ -271,7 +989,7 @@
  	are only used in debug insns.
  
  2017-04-19  Eric Botcazou  <ebotcazou at adacore.com>
@@ -6419,6 +6749,26 @@ Index: gcc/testsuite/gcc.dg/torture/pr80612.c
 +}
 +void fn2(int) __attribute__((__alloc_size__(1)));
 +void fn3() { fn1(fn2); }
+Index: gcc/testsuite/gcc.dg/torture/pr81083.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr81083.c	(.../tags/gcc_7_1_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr81083.c	(.../branches/gcc-7-branch)
+@@ -0,0 +1,15 @@
++/* { dg-do compile } */
++
++void setjmp();
++void func();
++void a(int arg)
++{
++  extern struct { int x; } obj;
++  setjmp();
++  obj.x = arg;
++  arg = arg;
++  if (obj.x)
++    func();
++  if (obj.x)
++    func();
++}
 Index: gcc/testsuite/gcc.dg/torture/pr80539.c
 ===================================================================
 --- a/src/gcc/testsuite/gcc.dg/torture/pr80539.c	(.../tags/gcc_7_1_0_release)
@@ -6600,7 +6950,28 @@ Index: gcc/testsuite/ChangeLog
 ===================================================================
 --- a/src/gcc/testsuite/ChangeLog	(.../tags/gcc_7_1_0_release)
 +++ b/src/gcc/testsuite/ChangeLog	(.../branches/gcc-7-branch)
-@@ -1,3 +1,419 @@
+@@ -1,3 +1,440 @@
++2017-06-29  Richard Biener  <rguenther at suse.de>
++
++	Backport from mainline
++	2017-06-19  Richard Biener  <rguenther at suse.de>
++
++	PR ipa/81112
++	* g++.dg/torture/pr81112.C: New testcase.
++
++2017-06-28  Richard Biener  <rguenther at suse.de>
++
++	Backport from mainline
++	2017-06-09  Richard Biener  <rguenther at suse.de>
++
++	PR middle-end/81007
++	* g++.dg/pr81007.C: New testcase.
++
++	2017-06-14  Richard Biener  <rguenther at suse.de>
++
++	PR tree-optimization/81083
++	* gcc.dg/torture/pr81083.c: New testcase.
++
 +2017-06-28  Eric Botcazou  <ebotcazou at adacore.com>
 +
 +	* gcc.dg/tree-prof/val-profiler-threads-1.c (main): Fix 2nd argument
@@ -7020,7 +7391,7 @@ Index: gcc/testsuite/ChangeLog
  2017-05-02  Release Manager
  
  	* GCC 7.1.0 released.
-@@ -52,8 +468,8 @@
+@@ -52,8 +489,8 @@
  	Backport from mainline
  	2017-04-25  Andreas Krebbel  <krebbel at linux.vnet.ibm.com>
  
@@ -7031,7 +7402,7 @@ Index: gcc/testsuite/ChangeLog
  
  2017-04-25  Andreas Krebbel  <krebbel at linux.vnet.ibm.com>
  
-@@ -60,8 +476,8 @@
+@@ -60,8 +497,8 @@
  	Backport from mainline
  	2017-04-25  Andreas Krebbel  <krebbel at linux.vnet.ibm.com>
  
@@ -7042,7 +7413,7 @@ Index: gcc/testsuite/ChangeLog
  
  2017-04-25  Dominik Vogt  <vogt at linux.vnet.ibm.com>
  
-@@ -68,10 +484,10 @@
+@@ -68,10 +505,10 @@
  	Backport from maineline
  	2017-04-25  Dominik Vogt  <vogt at linux.vnet.ibm.com>
  
@@ -7057,7 +7428,7 @@ Index: gcc/testsuite/ChangeLog
  
  2017-04-25  Jakub Jelinek  <jakub at redhat.com>
  
-@@ -132,7 +548,7 @@
+@@ -132,7 +569,7 @@
  	* gcc.dg/torture/pr80341.c: Require int32plus.
  
  2017-04-19  Eric Botcazou  <ebotcazou at adacore.com>
@@ -7083,6 +7454,26 @@ Index: gcc/testsuite/g++.dg/opt/nrv18.C
 +a:
 +  return a;
 +}
+Index: gcc/testsuite/g++.dg/pr81007.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/pr81007.C	(.../tags/gcc_7_1_0_release)
++++ b/src/gcc/testsuite/g++.dg/pr81007.C	(.../branches/gcc-7-branch)
+@@ -0,0 +1,15 @@
++// { dg-do compile }
++// { dg-options "-O2" }
++
++struct A
++{
++  A p; // { dg-error "incomplete" }
++  virtual void foo();
++};
++
++struct B : A {};
++
++void bar(B& b)
++{
++  b.foo();
++}
 Index: gcc/testsuite/g++.dg/ubsan/pr81111.C
 ===================================================================
 --- a/src/gcc/testsuite/g++.dg/ubsan/pr81111.C	(.../tags/gcc_7_1_0_release)
@@ -7242,6 +7633,38 @@ Index: gcc/testsuite/g++.dg/cpp0x/constexpr-diag3.C
  
  // --------------------
  
+Index: gcc/testsuite/g++.dg/cpp0x/variadic-ttp8.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp0x/variadic-ttp8.C	(.../tags/gcc_7_1_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic-ttp8.C	(.../branches/gcc-7-branch)
+@@ -0,0 +1,27 @@
++// PR c++/69111
++// { dg-do compile { target c++11 } }
++
++template <template <typename> class ...>
++struct template_list {};
++
++template <typename T>
++struct A
++{};
++
++template <typename>
++struct B
++{
++ template <typename T>
++ using type = A<T>;
++};
++
++template <typename ... Types>
++struct C
++{
++ using type = template_list<B<Types>::template type...>;
++};
++
++int main()
++{
++ return 0;
++}
 Index: gcc/testsuite/g++.dg/cpp0x/constexpr-data1.C
 ===================================================================
 --- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-data1.C	(.../tags/gcc_7_1_0_release)
@@ -7288,6 +7711,33 @@ Index: gcc/testsuite/g++.dg/cpp0x/constexpr-neg1.C
  private:
    bool flag;
  };
+Index: gcc/testsuite/g++.dg/cpp0x/variadic-partial1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp0x/variadic-partial1.C	(.../tags/gcc_7_1_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic-partial1.C	(.../branches/gcc-7-branch)
+@@ -0,0 +1,22 @@
++// PR c++/72801
++// { dg-do compile { target c++11 } }
++
++template < typename, typename > struct A {};
++
++template < typename ... T > struct B
++{ 
++  template < typename > struct C
++  { 
++    static const int a = 0;
++  };
++
++  template < typename R, typename ... S >
++  struct C < R (A < T, S > ...) >
++  { 
++    static const int a = 1;
++  };
++};
++
++#define SA(X) static_assert ((X), #X)
++SA(B <>::C<int()>::a == 1);
++
 Index: gcc/testsuite/g++.dg/cpp0x/variadic-ttp7.C
 ===================================================================
 --- a/src/gcc/testsuite/g++.dg/cpp0x/variadic-ttp7.C	(.../tags/gcc_7_1_0_release)
@@ -7361,6 +7811,79 @@ Index: gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C
  
  template <class T>
  constexpr int f (T t) { return 42; } // { dg-error "parameter" }
+Index: gcc/testsuite/g++.dg/torture/pr81112.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/torture/pr81112.C	(.../tags/gcc_7_1_0_release)
++++ b/src/gcc/testsuite/g++.dg/torture/pr81112.C	(.../branches/gcc-7-branch)
+@@ -0,0 +1,68 @@
++// { dg-do compile }
++// { dg-additional-options "-Wno-psabi" }
++
++class AssertionResult {
++    bool success_;
++};
++
++AssertionResult AssertionSuccess();
++
++template <typename T1>
++AssertionResult EXPECT_EQ(const T1& expected, const T1& actual) {
++    if (expected == actual) {
++	return AssertionSuccess();
++    }
++    return AssertionSuccess();
++}
++
++struct uuid
++{
++  unsigned char data[16];
++};
++
++bool operator== (uuid const& lhs, uuid const& rhs);
++
++typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
++typedef int __v4si __attribute__ ((__vector_size__ (16)));
++typedef char __v16qi __attribute__ ((__vector_size__ (16)));
++typedef long long __m128i_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1)));
++
++int foo (__v16qi);
++
++extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++     _mm_loadu_si128 (__m128i_u const *__P)
++{
++    return *__P;
++}
++extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++     _mm_cmpeq_epi32 (__m128i __A, __m128i __B)
++{
++    return (__m128i) ((__v4si)__A == (__v4si)__B);
++}
++extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++     _mm_movemask_epi8 (__m128i __A)
++{
++    return foo ((__v16qi)__A);
++}
++
++
++__m128i load_unaligned_si128(const unsigned char* p)
++{
++  return _mm_loadu_si128(reinterpret_cast< const __m128i* >(p));
++}
++
++inline bool operator== (uuid const& lhs, uuid const& rhs)
++{
++  __m128i mm_left = load_unaligned_si128(lhs.data);
++  __m128i mm_right = load_unaligned_si128(rhs.data);
++
++  __m128i mm_cmp = _mm_cmpeq_epi32(mm_left, mm_right);
++
++  return _mm_movemask_epi8(mm_cmp) == 0xFFFF;
++}
++
++void crash_gcc7()
++{
++  static const uuid u = uuid();
++  EXPECT_EQ(u, u);
++}
 Index: gcc/testsuite/g++.dg/ipa/pr80212.C
 ===================================================================
 --- a/src/gcc/testsuite/g++.dg/ipa/pr80212.C	(.../tags/gcc_7_1_0_release)
@@ -8031,6 +8554,23 @@ Index: gcc/testsuite/g++.dg/template/nontype-array1.C
 +  char const s8[] = "hi";
 +  Message<s8> m8;  // { dg-error "" }
 +}
+Index: gcc/testsuite/g++.dg/template/lookup10.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/template/lookup10.C	(.../tags/gcc_7_1_0_release)
++++ b/src/gcc/testsuite/g++.dg/template/lookup10.C	(.../branches/gcc-7-branch)
+@@ -0,0 +1,12 @@
++// PR c++/81204
++
++namespace std {
++  template<typename, typename> struct set { };
++}
++using namespace std;
++
++template <int I, typename Result>
++inline void set(Result & res)
++{
++    res.template set<I>();
++}
 Index: gcc/testsuite/g++.dg/template/partial5.C
 ===================================================================
 --- a/src/gcc/testsuite/g++.dg/template/partial5.C	(.../tags/gcc_7_1_0_release)
@@ -8350,7 +8890,19 @@ Index: gcc/cp/ChangeLog
 ===================================================================
 --- a/src/gcc/cp/ChangeLog	(.../tags/gcc_7_1_0_release)
 +++ b/src/gcc/cp/ChangeLog	(.../branches/gcc-7-branch)
-@@ -1,3 +1,148 @@
+@@ -1,3 +1,160 @@
++2017-06-28  Jason Merrill  <jason at redhat.com>
++
++	PR c++/61022 - error with variadic template template parm
++	* pt.c (convert_template_argument): Keep the TYPE_PACK_EXPANSION.
++
++	PR c++/72801 - ICE with variadic partial specialization
++	* pt.c (unify_pack_expansion): Use PACK_EXPANSION_EXTRA_ARGS.
++
++	PR c++/81204 - parse error with dependent template-name
++	* parser.c (cp_parser_lookup_name): Disqualify function templates
++	after lookup.
++
 +2017-06-26  Jason Merrill  <jason at redhat.com>
 +
 +	PR c++/81215
@@ -8713,7 +9265,26 @@ Index: gcc/cp/pt.c
    return 0;
  }
  
-@@ -20563,18 +20645,6 @@
+@@ -7552,7 +7634,7 @@
+ 	  else if (TREE_CODE (TREE_TYPE (arg)) == UNBOUND_CLASS_TEMPLATE)
+ 	    /* The number of argument required is not known yet.
+ 	       Just accept it for now.  */
+-	    val = TREE_TYPE (arg);
++	    val = orig_arg;
+ 	  else
+ 	    {
+ 	      tree parmparm = DECL_INNERMOST_TEMPLATE_PARMS (parm);
+@@ -19954,6 +20036,9 @@
+   tree pack, packs = NULL_TREE;
+   int i, start = TREE_VEC_LENGTH (packed_parms) - 1;
+ 
++  /* Add in any args remembered from an earlier partial instantiation.  */
++  targs = add_to_template_args (PACK_EXPANSION_EXTRA_ARGS (parm), targs);
++
+   packed_args = expand_template_argument_pack (packed_args);
+ 
+   int len = TREE_VEC_LENGTH (packed_args);
+@@ -20563,18 +20648,6 @@
  	  return x;
  	}
  
@@ -8732,7 +9303,7 @@ Index: gcc/cp/pt.c
        /* [temp.deduct.type] If, in the declaration of a function template
  	 with a non-type template-parameter, the non-type
  	 template-parameter is used in an expression in the function
-@@ -20595,7 +20665,8 @@
+@@ -20595,7 +20668,8 @@
  	/* Template-parameter dependent expression.  Just accept it for now.
  	   It will later be processed in convert_template_argument.  */
  	;
@@ -8742,7 +9313,7 @@ Index: gcc/cp/pt.c
  	/* OK */;
        else if ((strict & UNIFY_ALLOW_INTEGER)
  	       && CP_INTEGRAL_TYPE_P (tparm))
-@@ -20604,9 +20675,22 @@
+@@ -20604,9 +20678,22 @@
  	   corresponding parameter.  */
  	arg = fold (build_nop (tparm, arg));
        else if (uses_template_parms (tparm))
@@ -8768,7 +9339,7 @@ Index: gcc/cp/pt.c
        else
  	return unify_type_mismatch (explain_p, tparm, TREE_TYPE (arg));
  
-@@ -21598,10 +21682,12 @@
+@@ -21598,10 +21685,12 @@
       `T' is `A' but unify () does not check whether `typename T::X'
       is `int'.  */
    spec_args = tsubst (spec_args, deduced_args, tf_none, NULL_TREE);
@@ -8784,7 +9355,7 @@ Index: gcc/cp/pt.c
    pop_tinst_level ();
  
    if (spec_args == error_mark_node
-@@ -23372,6 +23458,14 @@
+@@ -23372,6 +23461,14 @@
  	   arg_type = TREE_CHAIN (arg_type))
  	if (dependent_type_p (TREE_VALUE (arg_type)))
  	  return true;
@@ -8799,7 +9370,7 @@ Index: gcc/cp/pt.c
        return false;
      }
    /* -- an array type constructed from any dependent type or whose
-@@ -23920,18 +24014,35 @@
+@@ -23920,18 +24017,35 @@
     return true;
  
    /* A function or variable template-id is type-dependent if it has any
@@ -8844,7 +9415,7 @@ Index: gcc/cp/pt.c
    /* Always dependent, on the number of arguments if nothing else.  */
    if (TREE_CODE (expression) == EXPR_PACK_EXPANSION)
      return true;
-@@ -24697,6 +24808,14 @@
+@@ -24697,6 +24811,14 @@
    return t;
  }
  
@@ -9091,6 +9662,34 @@ Index: gcc/cp/parser.c
  	      duplicate_access_error_issued_p = true;
  	    }
  
+@@ -25655,11 +25661,22 @@
+ 	decl = NULL_TREE;
+ 
+       if (!decl)
+-	/* Look it up in the enclosing context.  DR 141: When looking for a
+-	   template-name after -> or ., only consider class templates.  */
+-	decl = lookup_name_real (name, prefer_type_arg (tag_type, is_template),
+-				 /*nonclass=*/0,
+-				 /*block_p=*/true, is_namespace, 0);
++	{
++	  /* Look it up in the enclosing context.  */
++	  decl = lookup_name_real (name, prefer_type_arg (tag_type),
++				   /*nonclass=*/0,
++				   /*block_p=*/true, is_namespace, 0);
++	  /* DR 141 says when looking for a template-name after -> or ., only
++	     consider class templates.  */
++	  if (decl && is_template && !DECL_TYPE_TEMPLATE_P (decl))
++	    {
++	      tree d = decl;
++	      if (is_overloaded_fn (d))
++		d = get_first_fn (d);
++	      if (DECL_P (d) && !DECL_CLASS_SCOPE_P (d))
++		decl = NULL_TREE;
++	    }
++	}
+       if (object_type == unknown_type_node)
+ 	/* The object is type-dependent, so we can't look anything up; we used
+ 	   this to get the DR 141 behavior.  */
 Index: gcc/cp/call.c
 ===================================================================
 --- a/src/gcc/cp/call.c	(.../tags/gcc_7_1_0_release)
@@ -9210,6 +9809,21 @@ Index: gcc/tree-ssa-ccp.c
      ccp_lattice_meet (new_val, old_val);
  
    gcc_checking_assert (valid_lattice_transition (*old_val, *new_val));
+Index: gcc/passes.def
+===================================================================
+--- a/src/gcc/passes.def	(.../tags/gcc_7_1_0_release)
++++ b/src/gcc/passes.def	(.../branches/gcc-7-branch)
+@@ -42,9 +42,9 @@
+   NEXT_PASS (pass_build_cfg);
+   NEXT_PASS (pass_warn_function_return);
+   NEXT_PASS (pass_expand_omp);
+-  NEXT_PASS (pass_build_cgraph_edges);
+   NEXT_PASS (pass_sprintf_length, false);
+   NEXT_PASS (pass_walloca, /*strict_mode_p=*/true);
++  NEXT_PASS (pass_build_cgraph_edges);
+   TERMINATE_PASS_LIST (all_lowering_passes)
+ 
+   /* Interprocedural optimization passes.  */
 Index: gcc/dwarf2out.c
 ===================================================================
 --- a/src/gcc/dwarf2out.c	(.../tags/gcc_7_1_0_release)
@@ -12623,6 +13237,31 @@ Index: gcc/ubsan.h
  extern bool is_ubsan_builtin_p (tree);
  extern tree ubsan_build_overflow_builtin (tree_code, location_t, tree, tree,
  					  tree, tree *);
+Index: gcc/ipa-prop.c
+===================================================================
+--- a/src/gcc/ipa-prop.c	(.../tags/gcc_7_1_0_release)
++++ b/src/gcc/ipa-prop.c	(.../branches/gcc-7-branch)
+@@ -3030,7 +3030,10 @@
+ 
+          if (index)
+            {
+-             off = wi::to_offset (index);
++	     if (TREE_CODE (index) == RANGE_EXPR)
++	       off = wi::to_offset (TREE_OPERAND (index, 0));
++	     else
++	       off = wi::to_offset (index);
+              if (TYPE_DOMAIN (type) && TYPE_MIN_VALUE (TYPE_DOMAIN (type)))
+                {
+                  tree low_bound = TYPE_MIN_VALUE (TYPE_DOMAIN (type));
+@@ -3039,6 +3042,8 @@
+                                  TYPE_PRECISION (TREE_TYPE (index)));
+                }
+              off *= wi::to_offset (unit_size);
++	     /* ???  Handle more than just the first index of a
++	        RANGE_EXPR.  */
+            }
+          else
+            off = wi::to_offset (unit_size) * ix;
 Index: gcc/po/es.po
 ===================================================================
 --- a/src/gcc/po/es.po	(.../tags/gcc_7_1_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