[gcc-6] 392/401: * Update to SVN 20170316 (r246188) from the gcc-6-branch.

Ximin Luo infinity0 at debian.org
Wed Apr 5 15:50:43 UTC 2017


This is an automated email from the git hooks/post-receive script.

infinity0 pushed a commit to branch pu/reproducible_builds
in repository gcc-6.

commit 10bd39e6fa4aaf1ab030870d849e584242501ee9
Author: doko <doko at 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>
Date:   Thu Mar 16 10:16:20 2017 +0000

      * Update to SVN 20170316 (r246188) from the gcc-6-branch.
    
    
    git-svn-id: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-6@9370 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
---
 debian/changelog                      |   11 +-
 debian/patches/install-gcov-dump.diff |   34 -
 debian/patches/svn-updates.diff       | 1332 ++++++++++++++++++++++++++++++++-
 debian/rules.patch                    |    1 -
 4 files changed, 1307 insertions(+), 71 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index d862a3b..4a53a4e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,11 +1,16 @@
 gcc-6 (6.3.0-9) UNRELEASED; urgency=medium
 
-  * Update to SVN 20170313 (r246084) from the gcc-6-branch.
+  * Update to SVN 20170316 (r246188) from the gcc-6-branch.
     - Fix PR target/79261 (PPC), PR fortran/78474, PR libstdc++/79789,
       PR target/79514 (x86), PR target/79544 (PPC), PR lto/79579,
       PR target/79749 (sparc), PR target/79261 (PPC), PR fortran/78474,
       PR fortran/78331, PR target/77850 (PA), PR target/79439 (PPC),
-      PR c++/79796, PR ada/79903, PR ada/79945.
+      PR c++/79796, PR ada/79903, PR ada/79945, PR libstdc++/80034,
+      PR c++/79962, PR c++/79984, PR c/79756, PR tree-optimization/79732,
+      PR target/80019 (x86), PR target/79752 (PPC), PR middle-end/80004,
+      PR target/49244 (x86), PR tree-optimization/79977, PR middle-end/79971,
+      PR tree-optimization/79666, PR middle-end/79576, PR c++/72775,
+      PR c++/79900, PR c++/79687, PR c++/79264, PR c++/61636, PR fortran/79894.
   * gcj-6: Fix ecj1 symlink on i386. Closes: #856903.
   * Fix libcc1.so symlink for cross compilers. Addresses: #856875.
   * dpkg-buildflags stopped fiddling around with spec files; remove
@@ -17,7 +22,7 @@ gcc-6 (6.3.0-9) UNRELEASED; urgency=medium
   * Install the gcov-dump utility.
   * Allow to use lld with -fuse-ld=ld.lld.
 
- -- Matthias Klose <doko at debian.org>  Mon, 13 Mar 2017 12:57:04 +0100
+ -- Matthias Klose <doko at debian.org>  Thu, 16 Mar 2017 11:01:17 +0100
 
 gcc-6 (6.3.0-8) unstable; urgency=medium
 
diff --git a/debian/patches/install-gcov-dump.diff b/debian/patches/install-gcov-dump.diff
deleted file mode 100644
index 451cdb8..0000000
--- a/debian/patches/install-gcov-dump.diff
+++ /dev/null
@@ -1,34 +0,0 @@
-# DP: Install gcov-dump.
-
-gcc/ChangeLog:
-
-2017-03-14  Martin Liska  <mliska at suse.cz>
-
-	* Makefile.in: Install gcov-dump.
-
---- a/src/gcc/Makefile.in
-+++ b/src/gcc/Makefile.in
-@@ -806,6 +806,7 @@ GCC_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gcc|sed '$(progra
- CPP_INSTALL_NAME := $(shell echo cpp|sed '$(program_transform_name)')
- GCOV_INSTALL_NAME := $(shell echo gcov|sed '$(program_transform_name)')
- GCOV_TOOL_INSTALL_NAME := $(shell echo gcov-tool|sed '$(program_transform_name)')
-+GCOV_DUMP_INSTALL_NAME := $(shell echo gcov-dump|sed '$(program_transform_name)')
- 
- # Setup the testing framework, if you have one
- EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \
-@@ -3519,6 +3520,15 @@ install-common: native lang.install-common installdirs
- 	    gcov-tool$(exeext) $(DESTDIR)$(bindir)/$(GCOV_TOOL_INSTALL_NAME)$(exeext); \
- 	  fi; \
- 	fi
-+# Install gcov-dump if it was compiled.
-+	-if test "$(enable_as_accelerator)" != "yes" ; then \
-+	  if [ -f gcov-dump$(exeext) ]; \
-+	  then \
-+	    rm -f $(DESTDIR)$(bindir)/$(GCOV_DUMP_INSTALL_NAME)$(exeext); \
-+	    $(INSTALL_PROGRAM) \
-+	    gcov-dump$(exeext) $(DESTDIR)$(bindir)/$(GCOV_DUMP_INSTALL_NAME)$(exeext); \
-+	  fi; \
-+	fi
- 
- # Install the driver program as $(target_noncanonical)-gcc,
- # $(target_noncanonical)-gcc-$(version), and also as gcc if native.
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index ec28113..c131751 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 6 branch upto 20170313 (r246084).
+# DP: updates from the 6 branch upto 20170316 (r246188).
 
 last_update()
 {
 	cat > ${dir}LAST_UPDATED <EOF
-Mon Mar 13 12:55:26 CET 2017
-Mon Mar 13 11:55:26 UTC 2017 (revision 246084)
+Thu Mar 16 10:56:04 CET 2017
+Thu Mar 16 09:56:04 UTC 2017 (revision 246188)
 EOF
 }
 
@@ -1433,7 +1433,7 @@ Index: libstdc++-v3/include/bits/list.tcc
 -	      ++__first1;
 -	  if (__first2 != __last2)
 -	    _M_transfer(__last1, __first2, __last2);
-+	  size_t __orig_size = __x.size();
++	  const size_t __orig_size = __x.size();
 +	  __try {
 +	    while (__first1 != __last1 && __first2 != __last2)
 +	      if (*__first2 < *__first1)
@@ -1454,7 +1454,7 @@ Index: libstdc++-v3/include/bits/list.tcc
 +	  }
 +	  __catch(...)
 +	    {
-+	      size_t __dist = distance(__first2, __last2);
++	      const size_t __dist = std::distance(__first2, __last2);
 +	      this->_M_inc_size(__orig_size - __dist);
 +	      __x._M_set_size(__dist);
 +	      __throw_exception_again;
@@ -1477,7 +1477,7 @@ Index: libstdc++-v3/include/bits/list.tcc
 -		++__first1;
 -	    if (__first2 != __last2)
 -	      _M_transfer(__last1, __first2, __last2);
-+	    size_t __orig_size = __x.size();
++	    const size_t __orig_size = __x.size();
 +	    __try
 +	      {
 +		while (__first1 != __last1 && __first2 != __last2)
@@ -1499,7 +1499,7 @@ Index: libstdc++-v3/include/bits/list.tcc
 +	      }
 +	    __catch(...)
 +	      {
-+		size_t __dist = distance(__first2, __last2);
++		const size_t __dist = std::distance(__first2, __last2);
 +		this->_M_inc_size(__orig_size - __dist);
 +		__x._M_set_size(__dist);
 +		__throw_exception_again;
@@ -1687,7 +1687,20 @@ Index: libstdc++-v3/ChangeLog
 ===================================================================
 --- a/src/libstdc++-v3/ChangeLog	(.../tags/gcc_6_3_0_release)
 +++ b/src/libstdc++-v3/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,264 @@
+@@ -1,3 +1,277 @@
++2017-03-14  Jonathan Wakely  <jwakely at redhat.com>
++
++	* testsuite/17_intro/names.cc: Undefine macros that clash with
++	identifiers in AIX system headers.
++
++2017-03-13  Ville Voutilainen  <ville.voutilainen at gmail.com>
++
++	PR libstdc++/80034
++	* include/bits/list.tcc (merge(list&&)): Use const for the size_t
++	in the function and in the catch-block, qualify uses of std::distance.
++	(merge(list&&, _StrictWeakOrdering)): Likewise.
++	* testsuite/23_containers/list/operations/80034.cc: New.
++
 +2017-03-10  George Lander  <george.lander at arm.com>
 +
 +	* acinclude.m4 (glibcxx_cv_obsolete_isnan): Define
@@ -2703,6 +2716,43 @@ Index: libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc
  }
  
  
+Index: libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/80034.cc	(.../tags/gcc_6_3_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/80034.cc	(.../branches/gcc-6-branch)
+@@ -0,0 +1,32 @@
++// { dg-do compile }
++// Copyright (C) 2017 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 3, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <list>
++
++namespace X {
++  struct Y { };
++  bool operator<(Y, Y) { return false; }
++  template<typename T>
++    void distance(T, T) { }
++}
++
++int main()
++{
++  std::list<X::Y> l;
++  l.sort();
++}
 Index: libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
 ===================================================================
 --- a/src/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc	(.../tags/gcc_6_3_0_release)
@@ -3080,7 +3130,7 @@ Index: libstdc++-v3/testsuite/17_intro/names.cc
 ===================================================================
 --- a/src/libstdc++-v3/testsuite/17_intro/names.cc	(.../tags/gcc_6_3_0_release)
 +++ b/src/libstdc++-v3/testsuite/17_intro/names.cc	(.../branches/gcc-6-branch)
-@@ -0,0 +1,101 @@
+@@ -0,0 +1,110 @@
 +// Copyright (C) 2017 Free Software Foundation, Inc.
 +//
 +// This file is part of the GNU ISO C++ Library.  This library is free
@@ -3181,6 +3231,15 @@ Index: libstdc++-v3/testsuite/17_intro/names.cc
 +#define x (
 +#define y (
 +#define z (
++
++#ifdef _AIX
++// See https://gcc.gnu.org/ml/libstdc++/2017-03/msg00015.html
++#undef f
++#undef r
++#undef x
++#undef y
++#endif
++
 +#include <bits/stdc++.h>
 Index: libstdc++-v3/testsuite/libstdc++-xmethods/shared_ptr.cc
 ===================================================================
@@ -3795,7 +3854,47 @@ Index: gcc/tree-vrp.c
 ===================================================================
 --- a/src/gcc/tree-vrp.c	(.../tags/gcc_6_3_0_release)
 +++ b/src/gcc/tree-vrp.c	(.../branches/gcc-6-branch)
-@@ -7057,8 +7057,7 @@
+@@ -2651,8 +2651,17 @@
+ 	    min = build_symbolic_expr (expr_type, sym_min_op0,
+ 				       neg_min_op0, min);
+ 	  else if (sym_min_op1)
+-	    min = build_symbolic_expr (expr_type, sym_min_op1,
+-				       neg_min_op1 ^ minus_p, min);
++	    {
++	      /* We may not negate if that might introduce
++		 undefined overflow.  */
++	      if (! minus_p
++		  || neg_min_op1
++		  || TYPE_OVERFLOW_WRAPS (expr_type))
++		min = build_symbolic_expr (expr_type, sym_min_op1,
++					   neg_min_op1 ^ minus_p, min);
++	      else
++		min = NULL_TREE;
++	    }
+ 
+ 	  /* Likewise for the upper bound.  */
+ 	  if (sym_max_op0 == sym_max_op1)
+@@ -2661,8 +2670,17 @@
+ 	    max = build_symbolic_expr (expr_type, sym_max_op0,
+ 				       neg_max_op0, max);
+ 	  else if (sym_max_op1)
+-	    max = build_symbolic_expr (expr_type, sym_max_op1,
+-				       neg_max_op1 ^ minus_p, max);
++	    {
++	      /* We may not negate if that might introduce
++		 undefined overflow.  */
++	      if (! minus_p
++		  || neg_max_op1
++		  || TYPE_OVERFLOW_WRAPS (expr_type))
++		max = build_symbolic_expr (expr_type, sym_max_op1,
++					   neg_max_op1 ^ minus_p, max);
++	      else
++		max = NULL_TREE;
++	    }
+ 	}
+       else
+ 	{
+@@ -7057,8 +7075,7 @@
  static enum ssa_prop_result
  vrp_visit_assignment_or_call (gimple *stmt, tree *output_p)
  {
@@ -3805,7 +3904,7 @@ Index: gcc/tree-vrp.c
    enum gimple_code code = gimple_code (stmt);
    lhs = gimple_get_lhs (stmt);
  
-@@ -7175,8 +7174,7 @@
+@@ -7175,8 +7192,7 @@
        }
  
    /* Every other statement produces no useful ranges.  */
@@ -3838,7 +3937,23 @@ Index: gcc/c-family/ChangeLog
 ===================================================================
 --- a/src/gcc/c-family/ChangeLog	(.../tags/gcc_6_3_0_release)
 +++ b/src/gcc/c-family/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,12 @@
+@@ -1,3 +1,28 @@
++2017-03-14  Marek Polacek  <polacek at redhat.com>
++
++	PR c++/79962
++	PR c++/79984
++	* c-common.c (handle_nonnull_attribute): Save the result of default
++	conversion to the attribute list.
++
++2017-03-14  Richard Biener  <rguenther at suse.de>
++
++	Backport from mainline
++	2017-03-02  Richard Biener  <rguenther at suse.de>
++
++	PR c/79756
++	* c-common.c (c_common_mark_addressable_vec): Look through
++	C_MAYBE_CONST_EXPR.
++
 +2017-01-10  Martin Liska  <mliska at suse.cz>
 +
 +	Backport from mainline
@@ -3851,6 +3966,28 @@ Index: gcc/c-family/ChangeLog
  2016-12-21  Release Manager
  
  	* GCC 6.3.0 released.
+Index: gcc/c-family/c-common.c
+===================================================================
+--- a/src/gcc/c-family/c-common.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/c-family/c-common.c	(.../branches/gcc-6-branch)
+@@ -9061,7 +9061,7 @@
+       tree arg = TREE_VALUE (args);
+       if (arg && TREE_CODE (arg) != IDENTIFIER_NODE
+ 	  && TREE_CODE (arg) != FUNCTION_DECL)
+-	arg = default_conversion (arg);
++	TREE_VALUE (args) = arg = default_conversion (arg);
+ 
+       if (!get_nonnull_operand (arg, &arg_num))
+ 	{
+@@ -10677,6 +10677,8 @@
+ void 
+ c_common_mark_addressable_vec (tree t)
+ {   
++  if (TREE_CODE (t) == C_MAYBE_CONST_EXPR)
++    t = C_MAYBE_CONST_EXPR_EXPR (t);
+   while (handled_component_p (t))
+     t = TREE_OPERAND (t, 0);
+   if (!VAR_P (t)
 Index: gcc/ipa-polymorphic-call.c
 ===================================================================
 --- a/src/gcc/ipa-polymorphic-call.c	(.../tags/gcc_6_3_0_release)
@@ -3958,7 +4095,7 @@ Index: gcc/DATESTAMP
 +++ b/src/gcc/DATESTAMP	(.../branches/gcc-6-branch)
 @@ -1 +1 @@
 -20161221
-+20170313
++20170316
 Index: gcc/postreload.c
 ===================================================================
 --- a/src/gcc/postreload.c	(.../tags/gcc_6_3_0_release)
@@ -4403,7 +4540,73 @@ Index: gcc/ChangeLog
 ===================================================================
 --- a/src/gcc/ChangeLog	(.../tags/gcc_6_3_0_release)
 +++ b/src/gcc/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,796 @@
+@@ -1,3 +1,862 @@
++2017-03-16  Richard Biener  <rguenther at suse.de>
++
++	Backport from mainline
++	2017-02-28  Richard Biener  <rguenther at suse.de>
++
++	PR tree-optimization/79732
++	* tree-inline.c (expand_call_inline): Handle anonymous
++	SSA lhs properly when inlining a function without return
++	value.
++
++2017-03-15  Matthias Klose  <doko at ubuntu.com>
++
++	Backport from mainline
++	2017-03-14  Martin Liska  <mliska at suse.cz>
++
++	* Makefile.in: Install gcov-dump.
++
++2017-03-15  Uros Bizjak  <ubizjak at gmail.com>
++
++	PR target/80019
++	* config/i386/i386.c (ix86_vector_duplicate_value): Create
++	subreg of inner mode for values already in registers.
++
++2017-03-14  Aaron Sawdey  <acsawdey at linux.vnet.ibm.com>
++
++	Backport from mainline
++	2017-02-28  Aaron Sawdey  <acsawdey at linux.vnet.ibm.com>
++
++	PR target/79752
++        * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
++        udiv rather than div since input pattern is unsigned.
++
++2017-03-14  Richard Biener  <rguenther at suse.de>
++
++	Backport from mainline
++	2016-05-02  Jakub Jelinek  <jakub at redhat.com>
++
++	PR middle-end/80004
++	PR target/49244
++	* gimple.c (gimple_builtin_call_types_compatible_p): Allow
++	char/short arguments promoted to int because of promote_prototypes.
++
++	2017-03-09  Richard Biener  <rguenther at suse.de>
++
++	PR tree-optimization/79977
++	* graphite-scop-detection.c (scop_detection::merge_sese):
++	Handle the case of extra exits to blocks dominating the entry.
++
++	2017-03-09  Richard Biener  <rguenther at suse.de>
++
++	PR middle-end/79971
++	* gimple-expr.c (useless_type_conversion_p): Preserve
++	TYPE_SATURATING for fixed-point types.
++
++	2017-02-22  Richard Biener  <rguenther at suse.de>
++
++	PR tree-optimization/79666
++	* tree-vrp.c (extract_range_from_binary_expr_1): Make sure
++	to not symbolically negate if that may introduce undefined
++	overflow.
++
++	2017-02-17  Richard Biener  <rguenther at suse.de>
++
++	PR middle-end/79576
++	* params.def (max-ssa-name-query-depth): Limit to 10.
++
 +2017-03-07  Uros Bizjak  <ubizjak at gmail.com>
 +
 +	Backport from mainline
@@ -5200,7 +5403,7 @@ Index: gcc/ChangeLog
  2016-12-21  Release Manager
  
  	* GCC 6.3.0 released.
-@@ -68,11 +865,11 @@
+@@ -68,11 +931,11 @@
  	Backport from mainline
  	2016-11-07  Bernd Schmidt  <bschmidt at redhat.com>
  
@@ -6640,6 +6843,24 @@ Index: gcc/testsuite/gcc.target/i386/pr79514.c
 +{
 +  bar (x);
 +}
+Index: gcc/testsuite/gcc.target/i386/pr80019.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr80019.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr80019.c	(.../branches/gcc-6-branch)
+@@ -0,0 +1,13 @@
++/* PR target/80019 */
++/* { dg-do compile } */
++/* { dg-options "-O2 -mxop -mavx2" } */
++
++typedef char v16qi __attribute__ ((vector_size (16)));
++
++extern v16qi b, c;
++
++void
++foo (int e)
++{
++  b = c << e;
++}
 Index: gcc/testsuite/gcc.target/i386/pr79495.c
 ===================================================================
 --- a/src/gcc/testsuite/gcc.target/i386/pr79495.c	(.../tags/gcc_6_3_0_release)
@@ -7256,6 +7477,19 @@ Index: gcc/testsuite/gnat.dg/array28_pkg.ads
 +  function F return Inner_Type;
 +
 +end Array28_Pkg;
+Index: gcc/testsuite/gcc.dg/vector-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vector-1.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/gcc.dg/vector-1.c	(.../branches/gcc-6-branch)
+@@ -0,0 +1,8 @@
++/* { dg-do compile } */
++/* { dg-options "-std=gnu90" } */
++
++typedef int V __attribute__ ((vector_size(4)));
++void fn1 ()
++{
++  (V){(1,0)}[0] = 0;
++}
 Index: gcc/testsuite/gcc.dg/goacc/loop-processing-1.c
 ===================================================================
 --- a/src/gcc/testsuite/gcc.dg/goacc/loop-processing-1.c	(.../tags/gcc_6_3_0_release)
@@ -7289,6 +7523,25 @@ Index: gcc/testsuite/gcc.dg/spellcheck-options-13.c
 +/* { dg-do compile } */
 +/* { dg-options "-fsanitize" } */
 +/* { dg-error "unrecognized command line option .-fsanitize..$" "" { target *-*-* } 0 } */
+Index: gcc/testsuite/gcc.dg/fixed-point/pr79971.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/fixed-point/pr79971.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/gcc.dg/fixed-point/pr79971.c	(.../branches/gcc-6-branch)
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-options "-O3" } */
++
++void
++a ()
++{
++  unsigned _Accum b;
++  for (b = 0.1; b; b += 0.1uk)
++    {
++      _Sat unsigned _Accum b;
++      for (b = 0; b <= 0.8; b = 0.1)
++	;
++    }
++}
 Index: gcc/testsuite/gcc.dg/graphite/pr71824-2.c
 ===================================================================
 --- a/src/gcc/testsuite/gcc.dg/graphite/pr71824-2.c	(.../tags/gcc_6_3_0_release)
@@ -7374,6 +7627,38 @@ Index: gcc/testsuite/gcc.dg/graphite/pr71824.c
 +	  d = 0;
 +      }
 +}
+Index: gcc/testsuite/gcc.dg/graphite/pr79977.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/graphite/pr79977.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/gcc.dg/graphite/pr79977.c	(.../branches/gcc-6-branch)
+@@ -0,0 +1,27 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -floop-nest-optimize" } */
++
++int uo[3];
++int di;
++
++void
++i7 (int mp)
++{
++  int l4;
++
++wh:
++  while (l4 > 1)
++    {
++      for (di = 0; di < 2; ++di)
++	uo[di] = 0;
++
++      for (di = 0; di < 3; ++di)
++	{
++	  uo[di] = 0;
++	  if (mp != 0)
++	    goto wh;
++	}
++
++      --l4;
++    }
++}
 Index: gcc/testsuite/gcc.dg/comp-goto-4.c
 ===================================================================
 --- a/src/gcc/testsuite/gcc.dg/comp-goto-4.c	(.../tags/gcc_6_3_0_release)
@@ -7488,6 +7773,41 @@ Index: gcc/testsuite/gcc.dg/torture/pr71055.c
 +  foo (&u);
 +  return 0;
 +}
+Index: gcc/testsuite/gcc.dg/torture/pr79666.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr79666.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr79666.c	(.../branches/gcc-6-branch)
+@@ -0,0 +1,30 @@
++/* { dg-do run } */
++
++struct
++{
++  unsigned a:6;
++} b;
++
++int c, e, g = 7;
++signed char d, f = 6, h = -10;
++
++void fn1 ()
++{
++  for (; c < 9; c++)
++    {
++      if (f)
++	g = ~(~0 / (g ^ e));
++      b.a = ~0;
++      d = ~((h ^ b.a) & 132 & (~(f && g) | (d && 1)));
++      e = ~0;
++      if (d < 127 || f < 1)
++	continue;
++      g = 0;
++    }
++}
++
++int main ()
++{
++  fn1 ();
++  return 0; 
++}
 Index: gcc/testsuite/gcc.dg/torture/pr78742.c
 ===================================================================
 --- a/src/gcc/testsuite/gcc.dg/torture/pr78742.c	(.../tags/gcc_6_3_0_release)
@@ -7513,6 +7833,16 @@ Index: gcc/testsuite/gcc.dg/torture/pr78742.c
 +
 +  foo();
 +}
+Index: gcc/testsuite/gcc.dg/torture/pr79732.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr79732.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr79732.c	(.../branches/gcc-6-branch)
+@@ -0,0 +1,5 @@
++/* { dg-do link } */
++
++int bar () __attribute__ ((alias ("foo")));
++void foo () { }
++int main () { return bar(); }
 Index: gcc/testsuite/gcc.dg/tree-ssa/pr78886.c
 ===================================================================
 --- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr78886.c	(.../tags/gcc_6_3_0_release)
@@ -7564,7 +7894,86 @@ Index: gcc/testsuite/ChangeLog
 ===================================================================
 --- a/src/gcc/testsuite/ChangeLog	(.../tags/gcc_6_3_0_release)
 +++ b/src/gcc/testsuite/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,464 @@
+@@ -1,3 +1,543 @@
++2017-03-16  Richard Biener  <rguenther at suse.de>
++
++	Backport from mainline
++	2017-02-28  Richard Biener  <rguenther at suse.de>
++
++	PR tree-optimization/79732
++	* gcc.dg/torture/pr79732.c: New testcase.
++
++2017-03-15  Uros Bizjak  <ubizjak at gmail.com>
++
++	PR target/80019
++	* gcc.target/i386/pr80019.c: New test.
++
++2017-03-15  Marek Polacek  <polacek at redhat.com>
++
++	Backported from mainline
++	2016-12-14  Marek Polacek  <polacek at redhat.com>
++
++	PR c++/72775
++	* g++.dg/ext/flexary12.C: Adjust dg-error.
++	* g++.dg/ext/flexary20.C: New.
++	* g++.dg/ext/flexary21.C: New.
++
++2017-03-14  Marek Polacek  <polacek at redhat.com>
++
++	Backported from mainline
++	2017-03-09  Marek Polacek  <polacek at redhat.com>
++
++	PR c++/79900 - ICE in strip_typedefs
++	* g++.dg/warn/Wpadded-1.C: New test.
++
++	PR c++/79687
++	* g++.dg/expr/ptrmem8.C: New test.
++	* g++.dg/expr/ptrmem9.C: New test.
++
++	Backported from mainline
++	2017-01-31  Nathan Sidwell  <nathan at acm.org>
++
++	PR c++/79264
++	* g++.dg/cpp1y/pr61636-1.C: Augment.
++
++	Backported from mainline
++	2017-01-17  Nathan Sidwell  <nathan at acm.org>
++
++	PR c++/61636
++	* g++.dg/cpp1y/pr61636-1.C: New.
++	* g++.dg/cpp1y/pr61636-2.C: New.
++	* g++.dg/cpp1y/pr61636-3.C: New.
++
++2017-03-14  Marek Polacek  <polacek at redhat.com>
++
++	PR c++/79962
++	PR c++/79984
++	* c-c++-common/nonnull-3.c: New test.
++	* g++.dg/warn/Wnonnull3.C: New test.
++
++2017-03-14  Richard Biener  <rguenther at suse.de>
++
++	Backport from mainline
++	2017-03-09  Richard Biener  <rguenther at suse.de>
++
++	PR tree-optimization/79977
++	* gcc.dg/graphite/pr79977.c: New testcase.
++
++	2017-03-09  Richard Biener  <rguenther at suse.de>
++
++	PR middle-end/79971
++	* gcc.dg/fixed-point/pr79971.c: New testcase.
++
++	2017-03-02  Richard Biener  <rguenther at suse.de>
++
++	PR c/79756
++	* gcc.dg/vector-1.c: New testcase.
++
++	2017-02-22  Richard Biener  <rguenther at suse.de>
++
++	PR tree-optimization/79666
++	* gcc.dg/torture/pr79666.c: New testcase.
++
 +2017-03-07  Marek Polacek  <polacek at redhat.com>
 +
 +	Backported from mainline
@@ -8029,7 +8438,7 @@ Index: gcc/testsuite/ChangeLog
  2016-12-21  Release Manager
  
  	* GCC 6.3.0 released.
-@@ -46,8 +507,8 @@
+@@ -46,8 +586,8 @@
  	Backport from mainline
  	2016-11-07  Bernd Schmidt  <bschmidt at redhat.com>
  
@@ -8040,7 +8449,7 @@ Index: gcc/testsuite/ChangeLog
  
  2016-12-12 Thomas Preud'homme <thomas.preudhomme at arm.com>
  
-@@ -456,7 +917,7 @@
+@@ -456,7 +996,7 @@
  	* g++.dg/torture/pr77822.C: New test.
  
  2016-11-20  Harald Anlauf  <anlauf at gmx.de>
@@ -8517,6 +8926,47 @@ Index: gcc/testsuite/g++.dg/ipa/pr71207.C
 +
 +  return 0;
 +}
+Index: gcc/testsuite/g++.dg/cpp1y/pr61636-1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/pr61636-1.C	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/pr61636-1.C	(.../branches/gcc-6-branch)
+@@ -0,0 +1,36 @@
++// PR c++/61636
++// PR c++/79264
++// { dg-do compile { target c++14 } }
++
++// ICE because we figure this capture too late.
++
++struct Base
++{
++  void Bar (int);
++};
++
++struct A : Base {
++  void b ();
++  void Foo (int);
++  using Base::Bar;
++  template <typename T> void Baz (T);
++};
++
++void A::b() {
++
++  auto lam = [&](auto asdf) { Foo (asdf); };
++
++  lam (0);
++
++  auto lam1 = [&](auto asdf) { Bar (asdf); };
++
++  lam1 (0);
++
++  auto lam2 = [&](auto asdf) { Baz (asdf); };
++
++  lam2 (0);
++
++  auto lam3 = [&](auto asdf) { Baz<int> (asdf); };
++
++  lam3 (0);
++}
 Index: gcc/testsuite/g++.dg/cpp1y/constexpr-union1.C
 ===================================================================
 --- a/src/gcc/testsuite/g++.dg/cpp1y/constexpr-union1.C	(.../tags/gcc_6_3_0_release)
@@ -8533,6 +8983,200 @@ Index: gcc/testsuite/g++.dg/cpp1y/constexpr-union1.C
 +  };
 +};
 +Optional opt{};
+Index: gcc/testsuite/g++.dg/cpp1y/pr61636-2.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/pr61636-2.C	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/pr61636-2.C	(.../branches/gcc-6-branch)
+@@ -0,0 +1,72 @@
++// PR c++/61636
++// { dg-do run { target c++14 } }
++
++// Check we don't capture this (too) unnecessarily
++
++struct A {
++  int b ();
++  void f (int) {}
++  static void f (double) {}
++
++  static void g (int) {}
++  static void g (double) {}
++};
++
++struct O {
++  void x (int) {}
++  static void x (double) {}
++};
++
++namespace N {
++  void y (double) {}
++}
++
++int Check (bool expect, unsigned size)
++{
++  return (expect ? sizeof (void *) : 1) != size;
++}
++
++int A::b() {
++  int r = 0;
++
++  // one of the functions is non-static
++  auto l0 = [&](auto z) { f (z); };
++  r += Check (true, sizeof l0);
++  l0(0.0); // doesn't need this capture for A::f(double), but too late
++  l0 (0); // Needs this capture for A::f(int)
++
++  // no fn is non-static.
++  auto l00 = [&](auto z) { g (z); };
++  r += Check (false, sizeof l00);
++  l00(0.0); 
++  l00 (0);
++
++  // sizeof isn't an evaluation context, so no this capture
++  auto l1 = [&](auto z) { sizeof (f (z), 1); };
++  r += Check (false, sizeof l1);
++  l1(0.0); l1 (0); 
++
++  auto l2 = [&](auto) { f (2.4); };
++  auto l3 = [&](auto) { f (0); };
++  l2(0); l3(0); l2(0.0); l3 (0.0);
++  r += Check (false, sizeof l2);
++  r += Check (true, sizeof l3);
++
++  auto l4 = [&](auto) { O::x (2.4); };
++  auto l5 = [&](auto) { N::y (2.4); };
++  auto l6 = [&](auto) { };
++  l4(0); l5(0); l6(0);
++  l4(0.0); l5(0.0); l6(0.0);
++  r += Check (false, sizeof l4);
++  r += Check (false, sizeof l5);
++  r += Check (false, sizeof l6);
++
++  return r;
++}
++
++int main ()
++{
++  A a;
++
++  return a.b () ? 1 : 0;
++}
+Index: gcc/testsuite/g++.dg/cpp1y/pr61636-3.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/pr61636-3.C	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/pr61636-3.C	(.../branches/gcc-6-branch)
+@@ -0,0 +1,25 @@
++// PR c++/61636
++// { dg-do compile { target c++14 } }
++// permissiveness doesn't make this permitted
++// { dg-additional-options "-fpermissive" }
++
++// ICE because we attempt to use dependent Foo during error recovery
++// and die with an unexpected this capture need.
++
++template <typename T> struct Base
++{
++  void Foo (int);
++};
++
++template <typename T> struct A : Base<T> {
++  void b ();
++};
++
++template <typename T> void A<T>::b() {
++
++  auto lam = [&](auto asdf) { Foo (asdf); }; // { dg-error "not declared" }
++
++  lam (T(0));
++}
++
++template void A<int>::b ();
+Index: gcc/testsuite/g++.dg/ext/flexary21.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/ext/flexary21.C	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/g++.dg/ext/flexary21.C	(.../branches/gcc-6-branch)
+@@ -0,0 +1,15 @@
++// PR c++/72775
++// { dg-do compile { target c++11 } }
++// { dg-options -Wno-pedantic }
++
++struct S {
++  int i;
++  char a[];
++  S () : a("bob") {} // { dg-error "member initializer for flexible array member" }
++};
++
++struct T {
++  int i;
++  char a[] = "bob";
++  T () : a("bob") {} // { dg-error "member initializer for flexible array member" }
++};
+Index: gcc/testsuite/g++.dg/ext/flexary20.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/ext/flexary20.C	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/g++.dg/ext/flexary20.C	(.../branches/gcc-6-branch)
+@@ -0,0 +1,49 @@
++// PR c++/72775
++// { dg-do compile { target c++11 } }
++// { dg-options -Wno-pedantic }
++
++struct S {
++  int i;
++  char a[] = "foo";
++  S () {} // { dg-error "member initializer for flexible array member" }
++};
++
++struct T { // { dg-error "member initializer for flexible array member" }
++  int i;
++  char a[] = "foo";
++};
++
++struct U {
++  int i;
++  char a[] = "foo";
++  U ();
++};
++
++U::U() {} // { dg-error "member initializer for flexible array member" }
++
++int
++main ()
++{
++  struct T t;
++}
++
++struct V {
++  int i;
++  struct W { // { dg-error "member initializer for flexible array member" }
++    int j;
++    char a[] = "foo";
++  } w;
++  V () {}
++};
++
++template <class T>
++struct X { // { dg-error "member initializer for flexible array member" }
++  int i;
++  T a[] = "foo";
++};
++
++void
++fn ()
++{
++  struct X<char> x;
++}
+Index: gcc/testsuite/g++.dg/ext/flexary12.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/ext/flexary12.C	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/g++.dg/ext/flexary12.C	(.../branches/gcc-6-branch)
+@@ -44,7 +44,7 @@
+   D ();
+ };
+ 
+-D::D ():
++D::D ():    // { dg-error "member initializer for flexible array member" }
+   a ("c")   // { dg-error "incompatible types in assignment of .const char \\\[2\\\]. to .int \\\[\\\]." }
+ { }
+ 
 Index: gcc/testsuite/g++.dg/vect/pr36648.cc
 ===================================================================
 --- a/src/gcc/testsuite/g++.dg/vect/pr36648.cc	(.../tags/gcc_6_3_0_release)
@@ -8593,6 +9237,50 @@ Index: gcc/testsuite/g++.dg/lookup/pr79377.C
 +  foo<int> (a);
 +  if (A::c != 4 || a.a != 4) __builtin_abort ();
 +}
+Index: gcc/testsuite/g++.dg/expr/ptrmem9.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/expr/ptrmem9.C	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/g++.dg/expr/ptrmem9.C	(.../branches/gcc-6-branch)
+@@ -0,0 +1,19 @@
++// PR c++/79687
++// { dg-do run }
++
++struct A
++{
++  char c;
++};
++
++int main()
++{
++  static char A::* p1 = &A::c;
++  char A::* const q1 = p1;
++
++  char A::* p2 = &A::c;
++  static char A::* const q2 = p2;
++
++  A a;
++  return (&(a.*q1) - &a.c) || (&(a.*q2) - &a.c);
++}
+Index: gcc/testsuite/g++.dg/expr/ptrmem8.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/expr/ptrmem8.C	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/g++.dg/expr/ptrmem8.C	(.../branches/gcc-6-branch)
+@@ -0,0 +1,15 @@
++// PR c++/79687
++// { dg-do run }
++
++struct A
++{
++  char c;
++};
++
++int main()
++{
++  char A::* p = &A::c;
++  static char A::* const q = p;
++  A a;
++  return &(a.*q) - &a.c;
++}
 Index: gcc/testsuite/g++.dg/gomp/pr79429.C
 ===================================================================
 --- a/src/gcc/testsuite/g++.dg/gomp/pr79429.C	(.../tags/gcc_6_3_0_release)
@@ -8601,6 +9289,53 @@ Index: gcc/testsuite/g++.dg/gomp/pr79429.C
 +// PR c++/79429
 +
 +#pragma omp ordered // { dg-error "expected declaration specifiers" }
+Index: gcc/testsuite/g++.dg/warn/Wnonnull3.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/warn/Wnonnull3.C	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/g++.dg/warn/Wnonnull3.C	(.../branches/gcc-6-branch)
+@@ -0,0 +1,15 @@
++// PR c++/79962
++// { dg-options "-Wnonnull" }
++
++template <class T>
++__attribute__ ((__nonnull__ (T::i))) void f (typename T::U) { }
++
++struct S1 { enum { i = 1 }; typedef void* U; };
++struct S2 { static const int i = 1; typedef void* U; };
++
++void
++g ()
++{
++  f<S1>(0); // { dg-warning "null argument where non-null required" }
++  f<S2>(0); // { dg-warning "null argument where non-null required" }
++}
+Index: gcc/testsuite/g++.dg/warn/Wpadded-1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/warn/Wpadded-1.C	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/g++.dg/warn/Wpadded-1.C	(.../branches/gcc-6-branch)
+@@ -0,0 +1,22 @@
++// PR c++/79900 - ICE in strip_typedefs
++// { dg-do compile }
++// { dg-options "-Wpadded" }
++
++template <class> struct A;
++template <typename> struct B { // { dg-warning "padding struct size to alignment boundary" }
++  long long _M_off;
++  char _M_state;
++};
++template <> struct A<char> { typedef B<int> pos_type; };
++enum _Ios_Openmode {};
++struct C {
++  typedef _Ios_Openmode openmode;
++};
++template <typename, typename _Traits> struct D {
++  typedef typename _Traits::pos_type pos_type;
++  pos_type m_fn1(pos_type, C::openmode);
++};
++template class D<char, A<char> >;
++template <typename _CharT, typename _Traits>
++typename D<_CharT, _Traits>::pos_type D<_CharT, _Traits>::m_fn1(pos_type x,
++                                                                C::openmode) { return x; }
 Index: gcc/testsuite/g++.dg/template/bitfield3.C
 ===================================================================
 --- a/src/gcc/testsuite/g++.dg/template/bitfield3.C	(.../tags/gcc_6_3_0_release)
@@ -8680,6 +9415,22 @@ Index: gcc/testsuite/c-c++-common/Wunused-var-16.c
 +  y &= ~x;
 +  v = y;
 +}
+Index: gcc/testsuite/c-c++-common/nonnull-3.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/nonnull-3.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/c-c++-common/nonnull-3.c	(.../branches/gcc-6-branch)
+@@ -0,0 +1,11 @@
++/* PR c++/79984 */
++/* { dg-do compile } */
++/* { dg-options "-Wnonnull-compare" } */
++
++enum { r = 1 };
++
++__attribute__ ((nonnull (r))) int
++f (int *p)
++{
++  return p == 0; /* { dg-warning "nonnull argument 'p' compared to NULL" } */
++}
 Index: gcc/testsuite/c-c++-common/pr79428-3.c
 ===================================================================
 --- a/src/gcc/testsuite/c-c++-common/pr79428-3.c	(.../tags/gcc_6_3_0_release)
@@ -8750,6 +9501,39 @@ Index: gcc/cp/typeck.c
        break;
  
      case ABS_EXPR:
+Index: gcc/cp/init.c
+===================================================================
+--- a/src/gcc/cp/init.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/cp/init.c	(.../branches/gcc-6-branch)
+@@ -796,6 +796,14 @@
+ 	   in that case.  */
+ 	init = build_x_compound_expr_from_list (init, ELK_MEM_INIT,
+ 						tf_warning_or_error);
++      if (TREE_CODE (type) == ARRAY_TYPE
++	  && TYPE_DOMAIN (type) == NULL_TREE
++	  && init != NULL_TREE)
++	{
++	  error_at (DECL_SOURCE_LOCATION (current_function_decl),
++		    "member initializer for flexible array member");
++	  inform (DECL_SOURCE_LOCATION (member), "%q#D initialized", member);
++	}
+ 
+       if (init)
+ 	finish_expr_stmt (cp_build_modify_expr (decl, INIT_EXPR, init,
+@@ -2110,6 +2118,13 @@
+       if (TREE_CODE (init) == CONSTRUCTOR
+ 	  && !DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl))
+ 	break;
++      /* If the variable has a dynamic initializer, don't use its
++	 DECL_INITIAL which doesn't reflect the real value.  */
++      if (VAR_P (decl)
++	  && TREE_STATIC (decl)
++	  && !DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl)
++	  && DECL_NONTRIVIALLY_INITIALIZED_P (decl))
++	break;
+       decl = unshare_expr (init);
+     }
+   return decl;
 Index: gcc/cp/constexpr.c
 ===================================================================
 --- a/src/gcc/cp/constexpr.c	(.../tags/gcc_6_3_0_release)
@@ -8778,7 +9562,66 @@ Index: gcc/cp/tree.c
 ===================================================================
 --- a/src/gcc/cp/tree.c	(.../tags/gcc_6_3_0_release)
 +++ b/src/gcc/cp/tree.c	(.../branches/gcc-6-branch)
-@@ -2775,7 +2775,7 @@
+@@ -1463,29 +1463,40 @@
+ 	result = TYPE_MAIN_VARIANT (t);
+     }
+   gcc_assert (!typedef_variant_p (result));
+-  if (TYPE_USER_ALIGN (t) != TYPE_USER_ALIGN (result)
+-      || TYPE_ALIGN (t) != TYPE_ALIGN (result))
++
++  if (COMPLETE_TYPE_P (result) && !COMPLETE_TYPE_P (t))
++  /* If RESULT is complete and T isn't, it's likely the case that T
++     is a variant of RESULT which hasn't been updated yet.  Skip the
++     attribute handling.  */;
++  else
+     {
+-      gcc_assert (TYPE_USER_ALIGN (t));
+-      if (remove_attributes)
+-	*remove_attributes = true;
+-      else
++      if (TYPE_USER_ALIGN (t) != TYPE_USER_ALIGN (result)
++	  || TYPE_ALIGN (t) != TYPE_ALIGN (result))
+ 	{
+-	  if (TYPE_ALIGN (t) == TYPE_ALIGN (result))
+-	    result = build_variant_type_copy (result);
++	  gcc_assert (TYPE_USER_ALIGN (t));
++	  if (remove_attributes)
++	    *remove_attributes = true;
+ 	  else
+-	    result = build_aligned_type (result, TYPE_ALIGN (t));
+-	  TYPE_USER_ALIGN (result) = true;
++	    {
++	      if (TYPE_ALIGN (t) == TYPE_ALIGN (result))
++		result = build_variant_type_copy (result);
++	      else
++		result = build_aligned_type (result, TYPE_ALIGN (t));
++	      TYPE_USER_ALIGN (result) = true;
++	    }
+ 	}
++
++      if (TYPE_ATTRIBUTES (t))
++	{
++	  if (remove_attributes)
++	    result = apply_identity_attributes (result, TYPE_ATTRIBUTES (t),
++						remove_attributes);
++	  else
++	    result = cp_build_type_attribute_variant (result,
++						      TYPE_ATTRIBUTES (t));
++	}
+     }
+-  if (TYPE_ATTRIBUTES (t))
+-    {
+-      if (remove_attributes)
+-	result = apply_identity_attributes (result, TYPE_ATTRIBUTES (t),
+-					    remove_attributes);
+-      else
+-	result = cp_build_type_attribute_variant (result, TYPE_ATTRIBUTES (t));
+-    }
++
+   return cp_build_qualified_type (result, cp_type_quals (t));
+ }
+ 
+@@ -2775,7 +2786,7 @@
  
    t = make_node (code);
    length = TREE_CODE_LENGTH (code);
@@ -8787,7 +9630,7 @@ Index: gcc/cp/tree.c
    TREE_SIDE_EFFECTS (t) = TREE_SIDE_EFFECTS (non_dep);
  
    for (i = 0; i < length; i++)
-@@ -2830,8 +2830,10 @@
+@@ -2830,8 +2841,10 @@
    nargs = call_expr_nargs (non_dep);
  
    expected_nargs = cp_tree_code_length (op);
@@ -8800,7 +9643,7 @@ Index: gcc/cp/tree.c
      expected_nargs += 1;
    gcc_assert (nargs == expected_nargs);
  
-@@ -4146,6 +4148,14 @@
+@@ -4146,6 +4159,14 @@
    if (TREE_PUBLIC (decl))
      return lk_external;
  
@@ -8819,7 +9662,50 @@ Index: gcc/cp/ChangeLog
 ===================================================================
 --- a/src/gcc/cp/ChangeLog	(.../tags/gcc_6_3_0_release)
 +++ b/src/gcc/cp/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,97 @@
+@@ -1,3 +1,140 @@
++2017-03-15  Marek Polacek  <polacek at redhat.com>
++
++	Backported from mainline
++	2016-12-14  Marek Polacek  <polacek at redhat.com>
++
++	PR c++/72775
++	* init.c (perform_member_init): Diagnose member initializer for
++	flexible array member. 
++
++2017-03-14  Marek Polacek  <polacek at redhat.com>
++
++	Backported from mainline
++	2017-03-09  Marek Polacek  <polacek at redhat.com>
++
++	PR c++/79900 - ICE in strip_typedefs
++	* tree.c (strip_typedefs): Skip the attribute handling if T is
++	a variant type which hasn't been updated yet.
++
++	PR c++/79687
++	* init.c (constant_value_1): Break if the variable has a dynamic
++	initializer.
++
++	Backported from mainline
++	2017-01-31  Nathan Sidwell  <nathan at acm.org>
++
++	PR c++/79264
++	* lambda.c (maybe_generic_this_capture): Deal with template-id-exprs.
++	* semantics.c (finish_member_declaration): Assert class is being
++	defined.
++
++	Backported from mainline
++	2017-01-17  Nathan Sidwell  <nathan at acm.org>
++
++	PR c++/61636
++	* cp-tree.h (maybe_generic_this_capture): Declare.
++	* lambda.c (resolvable_dummy_lambda): New, broken out of ...
++	(maybe_resolve_dummy): ... here.  Call it.
++	(maybe_generic_this_capture): New.
++	* parser.c (cp_parser_postfix_expression): Speculatively capture
++	this in generic lambda in unresolved member function call.
++	* pt.c (tsubst_copy_and_build): Force hard error from failed
++	member function lookup in generic lambda.
++
 +2017-03-07  Marek Polacek  <polacek at redhat.com>
 +
 +	Backported from mainline
@@ -8917,6 +9803,88 @@ Index: gcc/cp/ChangeLog
  2016-12-21  Release Manager
  
  	* GCC 6.3.0 released.
+Index: gcc/cp/pt.c
+===================================================================
+--- a/src/gcc/cp/pt.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/cp/pt.c	(.../branches/gcc-6-branch)
+@@ -16613,19 +16613,34 @@
+ 
+ 		if (unq != function)
+ 		  {
+-		    tree fn = unq;
+-		    if (INDIRECT_REF_P (fn))
+-		      fn = TREE_OPERAND (fn, 0);
+-		    if (TREE_CODE (fn) == COMPONENT_REF)
+-		      fn = TREE_OPERAND (fn, 1);
+-		    if (is_overloaded_fn (fn))
+-		      fn = get_first_fn (fn);
+-		    if (permerror (EXPR_LOC_OR_LOC (t, input_location),
+-				   "%qD was not declared in this scope, "
+-				   "and no declarations were found by "
+-				   "argument-dependent lookup at the point "
+-				   "of instantiation", function))
++		    /* In a lambda fn, we have to be careful to not
++		       introduce new this captures.  Legacy code can't
++		       be using lambdas anyway, so it's ok to be
++		       stricter.  */
++		    bool in_lambda = (current_class_type
++				      && LAMBDA_TYPE_P (current_class_type));
++		    char const *msg = "%qD was not declared in this scope, "
++		      "and no declarations were found by "
++		      "argument-dependent lookup at the point "
++		      "of instantiation";
++
++		    bool diag = true;
++		    if (in_lambda)
++		      error_at (EXPR_LOC_OR_LOC (t, input_location),
++				msg, function);
++		    else
++		      diag = permerror (EXPR_LOC_OR_LOC (t, input_location),
++					msg, function);
++		    if (diag)
+ 		      {
++			tree fn = unq;
++			if (INDIRECT_REF_P (fn))
++			  fn = TREE_OPERAND (fn, 0);
++			if (TREE_CODE (fn) == COMPONENT_REF)
++			  fn = TREE_OPERAND (fn, 1);
++			if (is_overloaded_fn (fn))
++			  fn = get_first_fn (fn);
++
+ 			if (!DECL_P (fn))
+ 			  /* Can't say anything more.  */;
+ 			else if (DECL_CLASS_SCOPE_P (fn))
+@@ -16648,7 +16663,13 @@
+ 			  inform (DECL_SOURCE_LOCATION (fn),
+ 				  "%qD declared here, later in the "
+ 				  "translation unit", fn);
++			if (in_lambda)
++			  {
++			    release_tree_vector (call_args);
++			    RETURN (error_mark_node);
++			  }
+ 		      }
++
+ 		    function = unq;
+ 		  }
+ 	      }
+Index: gcc/cp/semantics.c
+===================================================================
+--- a/src/gcc/cp/semantics.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/cp/semantics.c	(.../branches/gcc-6-branch)
+@@ -2965,6 +2965,12 @@
+   /* We should see only one DECL at a time.  */
+   gcc_assert (DECL_CHAIN (decl) == NULL_TREE);
+ 
++  /* Don't add decls after definition.  */
++  gcc_assert (TYPE_BEING_DEFINED (current_class_type)
++	      /* We can add lambda types when late parsing default
++		 arguments.  */
++	      || LAMBDA_TYPE_P (TREE_TYPE (decl)));
++
+   /* Set up access control for DECL.  */
+   TREE_PRIVATE (decl)
+     = (current_access_specifier == access_private_node);
 Index: gcc/cp/decl2.c
 ===================================================================
 --- a/src/gcc/cp/decl2.c	(.../tags/gcc_6_3_0_release)
@@ -9037,7 +10005,15 @@ Index: gcc/cp/parser.c
        tp--;
      }
  
-@@ -12406,9 +12406,11 @@
+@@ -6867,6 +6867,7 @@
+ 			|| type_dependent_expression_p (fn)
+ 			|| any_type_dependent_arguments_p (args)))
+ 		  {
++		    maybe_generic_this_capture (instance, fn);
+ 		    postfix_expression
+ 		      = build_nt_call_vec (postfix_expression, args);
+ 		    release_tree_vector (args);
+@@ -12406,9 +12407,11 @@
        if (cp_parser_error_occurred (parser))
  	goto done;
  
@@ -9051,7 +10027,7 @@ Index: gcc/cp/parser.c
  	      && !same_type_p (auto_result, last_type))
  	    {
  	      /* If the list of declarators contains more than one declarator,
-@@ -24140,11 +24142,7 @@
+@@ -24140,11 +24143,7 @@
  
        if (!cp_parser_parse_definitely (parser))
  	{
@@ -9064,7 +10040,7 @@ Index: gcc/cp/parser.c
  	  if (alignas_expr == error_mark_node)
  	    cp_parser_skip_to_end_of_statement (parser);
  	  if (alignas_expr == NULL_TREE
-@@ -34060,13 +34058,6 @@
+@@ -34060,13 +34059,6 @@
  {
    location_t loc = pragma_tok->location;
  
@@ -9078,7 +10054,7 @@ Index: gcc/cp/parser.c
    if (cp_lexer_next_token_is (parser->lexer, CPP_NAME))
      {
        tree id = cp_lexer_peek_token (parser->lexer)->u.value;
-@@ -34959,13 +34950,6 @@
+@@ -34959,13 +34951,6 @@
  {
    tree *pc = NULL, stmt;
  
@@ -9092,7 +10068,7 @@ Index: gcc/cp/parser.c
    if (cp_lexer_next_token_is (parser->lexer, CPP_NAME))
      {
        tree id = cp_lexer_peek_token (parser->lexer)->u.value;
-@@ -35347,7 +35331,7 @@
+@@ -35347,7 +35332,7 @@
  	    id = get_identifier ("omp declare target");
  
  	  DECL_ATTRIBUTES (decl)
@@ -9101,7 +10077,7 @@ Index: gcc/cp/parser.c
  	  if (global_bindings_p ())
  	    {
  	      symtab_node *node = symtab_node::get (decl);
-@@ -35887,8 +35871,11 @@
+@@ -35887,8 +35872,11 @@
  	}
        if (!at1)
  	{
@@ -9114,7 +10090,7 @@ Index: gcc/cp/parser.c
  	  if (node != NULL)
  	    {
  	      node->offloadable = 1;
-@@ -37404,6 +37391,8 @@
+@@ -37404,6 +37392,8 @@
        return true;
  
      case PRAGMA_OMP_ORDERED:
@@ -9123,7 +10099,7 @@ Index: gcc/cp/parser.c
        stmt = push_omp_privatization_clauses (false);
        ret = cp_parser_omp_ordered (parser, pragma_tok, context, if_p);
        pop_omp_privatization_clauses (stmt);
-@@ -37410,6 +37399,8 @@
+@@ -37410,6 +37400,8 @@
        return ret;
  
      case PRAGMA_OMP_TARGET:
@@ -9146,6 +10122,114 @@ Index: gcc/cp/call.c
  	}
        else
  	{
+Index: gcc/cp/lambda.c
+===================================================================
+--- a/src/gcc/cp/lambda.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/cp/lambda.c	(.../branches/gcc-6-branch)
+@@ -746,16 +746,14 @@
+   return result;
+ }
+ 
+-/* We don't want to capture 'this' until we know we need it, i.e. after
+-   overload resolution has chosen a non-static member function.  At that
+-   point we call this function to turn a dummy object into a use of the
+-   'this' capture.  */
++/* Return the current LAMBDA_EXPR, if this is a resolvable dummy
++   object.  NULL otherwise..  */
+ 
+-tree
+-maybe_resolve_dummy (tree object, bool add_capture_p)
++static tree
++resolvable_dummy_lambda (tree object)
+ {
+   if (!is_dummy_object (object))
+-    return object;
++    return NULL_TREE;
+ 
+   tree type = TYPE_MAIN_VARIANT (TREE_TYPE (object));
+   gcc_assert (!TYPE_PTR_P (type));
+@@ -765,18 +763,63 @@
+       && LAMBDA_TYPE_P (current_class_type)
+       && lambda_function (current_class_type)
+       && DERIVED_FROM_P (type, current_nonlambda_class_type ()))
+-    {
+-      /* In a lambda, need to go through 'this' capture.  */
+-      tree lam = CLASSTYPE_LAMBDA_EXPR (current_class_type);
+-      tree cap = lambda_expr_this_capture (lam, add_capture_p);
+-      if (cap && cap != error_mark_node)
++    return CLASSTYPE_LAMBDA_EXPR (current_class_type);
++
++  return NULL_TREE;
++}
++
++/* We don't want to capture 'this' until we know we need it, i.e. after
++   overload resolution has chosen a non-static member function.  At that
++   point we call this function to turn a dummy object into a use of the
++   'this' capture.  */
++
++tree
++maybe_resolve_dummy (tree object, bool add_capture_p)
++{
++  if (tree lam = resolvable_dummy_lambda (object))
++    if (tree cap = lambda_expr_this_capture (lam, add_capture_p))
++      if (cap != error_mark_node)
+ 	object = build_x_indirect_ref (EXPR_LOCATION (object), cap,
+ 				       RO_NULL, tf_warning_or_error);
+-    }
+ 
+   return object;
+ }
+ 
++/* When parsing a generic lambda containing an argument-dependent
++   member function call we defer overload resolution to instantiation
++   time.  But we have to know now whether to capture this or not.
++   Do that if FNS contains any non-static fns.
++   The std doesn't anticipate this case, but I expect this to be the
++   outcome of discussion.  */
++
++void
++maybe_generic_this_capture (tree object, tree fns)
++{
++  if (tree lam = resolvable_dummy_lambda (object))
++    if (!LAMBDA_EXPR_THIS_CAPTURE (lam))
++      {
++	/* We've not yet captured, so look at the function set of
++	   interest.  */
++	if (BASELINK_P (fns))
++	  fns = BASELINK_FUNCTIONS (fns);
++	bool id_expr = TREE_CODE (fns) == TEMPLATE_ID_EXPR;
++	if (id_expr)
++	  fns = TREE_OPERAND (fns, 0);
++	for (; fns; fns = OVL_NEXT (fns))
++	  {
++	    tree fn = OVL_CURRENT (fns);
++
++	    if ((!id_expr || TREE_CODE (fn) == TEMPLATE_DECL)
++		&& DECL_NONSTATIC_MEMBER_FUNCTION_P (fn))
++	      {
++		/* Found a non-static member.  Capture this.  */
++		lambda_expr_this_capture (lam, true);
++		break;
++	      }
++	  }
++      }
++}
++
+ /* Returns the innermost non-lambda function.  */
+ 
+ tree
+Index: gcc/cp/cp-tree.h
+===================================================================
+--- a/src/gcc/cp/cp-tree.h	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/cp/cp-tree.h	(.../branches/gcc-6-branch)
+@@ -6447,6 +6447,7 @@
+ extern bool is_normal_capture_proxy             (tree);
+ extern void register_capture_members		(tree);
+ extern tree lambda_expr_this_capture            (tree, bool);
++extern void maybe_generic_this_capture		(tree, tree);
+ extern tree maybe_resolve_dummy			(tree, bool);
+ extern tree current_nonlambda_function		(void);
+ extern tree nonlambda_method_basetype		(void);
 Index: gcc/cp/name-lookup.c
 ===================================================================
 --- a/src/gcc/cp/name-lookup.c	(.../tags/gcc_6_3_0_release)
@@ -10443,7 +11527,15 @@ Index: gcc/fortran/ChangeLog
 ===================================================================
 --- a/src/gcc/fortran/ChangeLog	(.../tags/gcc_6_3_0_release)
 +++ b/src/gcc/fortran/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,59 @@
+@@ -1,3 +1,67 @@
++2017-03-14  Richard Biener  <rguenther at suse.de>
++
++	Backport from mainline
++	2017-03-06  Richard Biener  <rguenther at suse.de>
++
++	PR fortran/79894
++	* trans.c (gfc_add_modify_loc): Weaken assert.
++
 +2017-02-25  Paul Thomas  <pault at gcc.gnu.org>
 +
 +	PR fortran/78474
@@ -10557,6 +11649,24 @@ Index: gcc/fortran/module.c
  
    /* Check that we haven't already USEd an intrinsic module with the
       same name.  */
+Index: gcc/fortran/trans.c
+===================================================================
+--- a/src/gcc/fortran/trans.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/fortran/trans.c	(.../branches/gcc-6-branch)
+@@ -151,11 +151,11 @@
+   tree t1, t2;
+   t1 = TREE_TYPE (rhs);
+   t2 = TREE_TYPE (lhs);
+-  /* Make sure that the types of the rhs and the lhs are the same
++  /* Make sure that the types of the rhs and the lhs are compatible
+      for scalar assignments.  We should probably have something
+      similar for aggregates, but right now removing that check just
+      breaks everything.  */
+-  gcc_checking_assert (t1 == t2
++  gcc_checking_assert (TYPE_MAIN_VARIANT (t1) == TYPE_MAIN_VARIANT (t2)
+ 		       || AGGREGATE_TYPE_P (TREE_TYPE (lhs)));
+ 
+   tmp = fold_build2_loc (loc, MODIFY_EXPR, void_type_node, lhs,
 Index: gcc/fortran/trans-types.c
 ===================================================================
 --- a/src/gcc/fortran/trans-types.c	(.../tags/gcc_6_3_0_release)
@@ -10724,7 +11834,33 @@ Index: gcc/graphite-scop-detection.c
 ===================================================================
 --- a/src/gcc/graphite-scop-detection.c	(.../tags/gcc_6_3_0_release)
 +++ b/src/gcc/graphite-scop-detection.c	(.../branches/gcc-6-branch)
-@@ -905,7 +905,19 @@
+@@ -817,6 +817,25 @@
+ 	 != loop_depth (exit->dest->loop_father))
+     return invalid_sese;
+ 
++  /* For now we just bail out when there is a loop exit in the region
++     that is not also the exit of the region.  We could enlarge the
++     region to cover the loop that region exits to.  See PR79977.  */
++  if (loop_outer (entry->src->loop_father))
++    {
++      vec<edge> exits = get_loop_exit_edges (entry->src->loop_father);
++      for (unsigned i = 0; i < exits.length (); ++i)
++	{
++	  if (exits[i] != exit
++	      && bb_in_region (exits[i]->src, entry->dest, exit->src))
++	    {
++	      DEBUG_PRINT (dp << "[scop-detection-fail] cannot merge seses.\n");
++	      exits.release ();
++	      return invalid_sese;
++	    }
++	}
++      exits.release ();
++    }
++
+   /* For now we just want to bail out when exit does not post-dominate entry.
+      TODO: We might just add a basic_block at the exit to make exit
+      post-dominate entry (the entire region).  */
+@@ -905,7 +924,19 @@
  
    sese_l combined = merge_sese (s1, s2);
  
@@ -10744,7 +11880,7 @@ Index: gcc/graphite-scop-detection.c
      s1 = combined;
    else
      add_scop (s2);
-@@ -931,6 +943,8 @@
+@@ -931,6 +962,8 @@
      && niter_desc.control.no_overflow
      && (niter = number_of_latch_executions (loop))
      && !chrec_contains_undetermined (niter)
@@ -52281,6 +53417,31 @@ Index: gcc/ira-costs.c
  
  /* Return pointer to structure containing costs of allocno or pseudo
     with given NUM in array ARR.  */
+Index: gcc/tree-inline.c
+===================================================================
+--- a/src/gcc/tree-inline.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/tree-inline.c	(.../branches/gcc-6-branch)
+@@ -4719,7 +4719,7 @@
+ 	{
+ 	  tree name = gimple_call_lhs (stmt);
+ 	  tree var = SSA_NAME_VAR (name);
+-	  tree def = ssa_default_def (cfun, var);
++	  tree def = var ? ssa_default_def (cfun, var) : NULL;
+ 
+ 	  if (def)
+ 	    {
+@@ -4730,6 +4730,11 @@
+ 	    }
+ 	  else
+ 	    {
++	      if (!var)
++		{
++		  var = create_tmp_reg_fn (cfun, TREE_TYPE (name), NULL);
++		  SET_SSA_NAME_VAR_OR_IDENTIFIER (name, var);
++		}
+ 	      /* Otherwise make this variable undefined.  */
+ 	      gsi_remove (&stmt_gsi, true);
+ 	      set_ssa_default_def (cfun, var, name);
 Index: gcc/graphite-sese-to-poly.c
 ===================================================================
 --- a/src/gcc/graphite-sese-to-poly.c	(.../tags/gcc_6_3_0_release)
@@ -52371,6 +53532,69 @@ Index: gcc/config.host
      case ${target} in
        aarch64*-*-*)
  	host_extra_gcc_objs="driver-aarch64.o"
+Index: gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/Makefile.in	(.../branches/gcc-6-branch)
+@@ -787,6 +787,7 @@
+ CPP_INSTALL_NAME := $(shell echo cpp|sed '$(program_transform_name)')
+ GCOV_INSTALL_NAME := $(shell echo gcov|sed '$(program_transform_name)')
+ GCOV_TOOL_INSTALL_NAME := $(shell echo gcov-tool|sed '$(program_transform_name)')
++GCOV_DUMP_INSTALL_NAME := $(shell echo gcov-dump|sed '$(program_transform_name)')
+ 
+ # Setup the testing framework, if you have one
+ EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \
+@@ -3408,6 +3409,15 @@
+ 	    gcov-tool$(exeext) $(DESTDIR)$(bindir)/$(GCOV_TOOL_INSTALL_NAME)$(exeext); \
+ 	  fi; \
+ 	fi
++# Install gcov-dump if it was compiled.
++	-if test "$(enable_as_accelerator)" != "yes" ; then \
++	  if [ -f gcov-dump$(exeext) ]; \
++	  then \
++	    rm -f $(DESTDIR)$(bindir)/$(GCOV_DUMP_INSTALL_NAME)$(exeext); \
++	    $(INSTALL_PROGRAM) \
++	    gcov-dump$(exeext) $(DESTDIR)$(bindir)/$(GCOV_DUMP_INSTALL_NAME)$(exeext); \
++	  fi; \
++	fi
+ 
+ # Install the driver program as $(target_noncanonical)-gcc,
+ # $(target_noncanonical)-gcc-$(version), and also as gcc if native.
+Index: gcc/gimple.c
+===================================================================
+--- a/src/gcc/gimple.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/gimple.c	(.../branches/gcc-6-branch)
+@@ -2487,7 +2487,16 @@
+       if (!targs)
+ 	return true;
+       tree arg = gimple_call_arg (stmt, i);
+-      if (!useless_type_conversion_p (TREE_VALUE (targs), TREE_TYPE (arg)))
++      tree type = TREE_VALUE (targs);
++      if (!useless_type_conversion_p (type, TREE_TYPE (arg))
++	  /* char/short integral arguments are promoted to int
++	     by several frontends if targetm.calls.promote_prototypes
++	     is true.  Allow such promotion too.  */
++	  && !(INTEGRAL_TYPE_P (type)
++	       && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)
++	       && targetm.calls.promote_prototypes (TREE_TYPE (fndecl))
++	       && useless_type_conversion_p (integer_type_node,
++					     TREE_TYPE (arg))))
+ 	return false;
+       targs = TREE_CHAIN (targs);
+     }
+Index: gcc/gimple-expr.c
+===================================================================
+--- a/src/gcc/gimple-expr.c	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/gimple-expr.c	(.../branches/gcc-6-branch)
+@@ -123,7 +123,7 @@
+   /* Fixed point types with the same mode are compatible.  */
+   else if (FIXED_POINT_TYPE_P (inner_type)
+ 	   && FIXED_POINT_TYPE_P (outer_type))
+-    return true;
++    return TYPE_SATURATING (inner_type) == TYPE_SATURATING (outer_type);
+ 
+   /* We need to take special care recursing to pointed-to types.  */
+   else if (POINTER_TYPE_P (inner_type)
 Index: gcc/tree-ssa-reassoc.c
 ===================================================================
 --- a/src/gcc/tree-ssa-reassoc.c	(.../tags/gcc_6_3_0_release)
@@ -54495,6 +55719,24 @@ Index: gcc/config/i386/i386.c
  	       IX86_BUILTIN_SCATTERPFQPS);
  
    /* SHA */
+@@ -45938,10 +45938,16 @@
+   if (recog_memoized (insn) < 0)
+     {
+       rtx_insn *seq;
++      machine_mode innermode = GET_MODE_INNER (mode);
++      rtx reg;
++
+       /* If that fails, force VAL into a register.  */
+ 
+       start_sequence ();
+-      XEXP (dup, 0) = force_reg (GET_MODE_INNER (mode), val);
++      reg = force_reg (innermode, val);
++      if (GET_MODE (reg) != innermode)
++	reg = gen_lowpart (innermode, reg);
++      XEXP (dup, 0) = reg;
+       seq = get_insns ();
+       end_sequence ();
+       if (seq)
 Index: gcc/config/tilegx/tilegx.c
 ===================================================================
 --- a/src/gcc/config/tilegx/tilegx.c	(.../tags/gcc_6_3_0_release)
@@ -55219,6 +56461,17 @@ Index: gcc/config/rs6000/rs6000.md
  ; SF/DF suffix for traditional floating instructions
  (define_mode_attr Ftrad		[(SF "s") (DF "")])
  
+@@ -3066,8 +3063,8 @@
+    && ! reg_mentioned_p (operands[3], operands[1])
+    && ! reg_mentioned_p (operands[3], operands[2])"
+   [(set (match_dup 0)
+-	(div:GPR (match_dup 1)
+-		 (match_dup 2)))
++	(udiv:GPR (match_dup 1)
++		  (match_dup 2)))
+    (set (match_dup 3)
+ 	(mult:GPR (match_dup 0)
+ 		  (match_dup 2)))
 @@ -4616,7 +4613,7 @@
  (define_insn_and_split "signbit<mode>2_dm"
    [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r")
@@ -55486,6 +56739,19 @@ Index: gcc/config/pa/pa-64.h
  
  /* In the PA architecture, it is not possible to directly move data
     between GENERAL_REGS and FP_REGS.  On the 32-bit port, we use the
+Index: gcc/params.def
+===================================================================
+--- a/src/gcc/params.def	(.../tags/gcc_6_3_0_release)
++++ b/src/gcc/params.def	(.../branches/gcc-6-branch)
+@@ -1191,7 +1191,7 @@
+ 	  "max-ssa-name-query-depth",
+ 	  "Maximum recursion depth allowed when querying a property of an"
+ 	  " SSA name.",
+-	  3, 1, 0)
++	  3, 1, 10)
+ 
+ DEFPARAM (PARAM_MAX_RTL_IF_CONVERSION_INSNS,
+ 	  "max-rtl-if-conversion-insns",
 Index: gcc/lto-streamer.h
 ===================================================================
 --- a/src/gcc/lto-streamer.h	(.../tags/gcc_6_3_0_release)
diff --git a/debian/rules.patch b/debian/rules.patch
index 5135ca4..f9b5e53 100644
--- a/debian/rules.patch
+++ b/debian/rules.patch
@@ -110,7 +110,6 @@ debian_patches += \
 	mips-pr78176-add-mlxc1-sxc1 \
 	mips-loongson3a-use-fused-madd.d \
 	mips-madd4 \
-	install-gcov-dump \
 	gcc-fuse-ld-lld \
 
 ifeq ($(libstdcxx_abi),new)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/gcc-6.git



More information about the Reproducible-commits mailing list