[gcc-6] 224/401: * Update to SVN 20161010 (r240906, 6.2.1) from the gcc-6-branch.

Ximin Luo infinity0 at debian.org
Wed Apr 5 15:49:39 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 a137b815a26cd50537bd65a104be3943396f4fe5
Author: doko <doko at 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>
Date:   Mon Oct 10 04:11:08 2016 +0000

      * Update to SVN 20161010 (r240906, 6.2.1) from the gcc-6-branch.
    
    
    git-svn-id: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-6@8995 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
---
 debian/changelog                |   11 +-
 debian/patches/svn-updates.diff | 1125 ++++++++++++++++++++++++++++++++++++++-
 debian/rules.defs               |    2 +-
 3 files changed, 1106 insertions(+), 32 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index d4374f0..f3d6539 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,6 @@
-gcc-6 (6.2.0-6) UNRELEASED; urgency=medium
+gcc-6 (6.2.0-6) unstable; urgency=medium
 
-  * Update to SVN 20161005 (r240765, 6.2.1) from the gcc-6-branch.
+  * Update to SVN 20161010 (r240906, 6.2.1) from the gcc-6-branch.
     - Fix PR libstdc++/68323, PR libstdc++/77794, PR libstdc++/77795,
       PR libstdc++/77801, PR libgcc/77519, PR target/77756 (x86),
       PR target/77670 (PPC), PR rtl-optimization/71709, PR c++/77804,
@@ -10,11 +10,14 @@ gcc-6 (6.2.0-6) UNRELEASED; urgency=medium
       PR fortran/71862, PR fortran/77260, PR fortran/77351, PR fortran/77372,
       PR fortran/77380, PR fortran/77391, PR fortran/77420, PR fortran/77429,
       PR fortran/77460, PR fortran/77506, PR fortran/77507, PR fortran/77612,
-      PR fortran/77694, PR libgfortran/77707.
+      PR fortran/77694, PR libgfortran/77707, PR libstdc++/70101,
+      PR libstdc++/77864, PR libstdc++/70564, PR target/77874 (x86),
+      PR target/77759 (sparc), PR fortran/77406, PR fortran/58991,
+      PR fortran/58992.
   * Really fix gij installation on hppa. Closes: #838111.
   * Install alternatives for go and gofmt. Closes: #840190.
 
- -- Matthias Klose <doko at debian.org>  Wed, 05 Oct 2016 04:20:00 +0200
+ -- Matthias Klose <doko at debian.org>  Mon, 10 Oct 2016 05:20:07 +0200
 
 gcc-6 (6.2.0-5) unstable; urgency=medium
 
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index ef7e9cc..1b4cf6b 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 6 branch upto 20161005 (r240765).
+# DP: updates from the 6 branch upto 20161010 (r240907).
 
 last_update()
 {
 	cat > ${dir}LAST_UPDATED <EOF
-Wed Oct  5 03:59:55 CEST 2016
-Wed Oct  5 01:59:55 UTC 2016 (revision 240765)
+Mon Oct 10 05:12:04 CEST 2016
+Mon Oct 10 03:12:04 UTC 2016 (revision 240907)
 EOF
 }
 
@@ -900,6 +900,24 @@ Index: libstdc++-v3/include/experimental/functional
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
+@@ -386,7 +387,7 @@
+     public:
+       template<typename _Fn2>
+ 	explicit
+-	_Not_fn(_Fn2&& __fn) : _M_fn(std::forward<_Fn2>(__fn)) { }
++	_Not_fn(_Fn2&& __fn, int) : _M_fn(std::forward<_Fn2>(__fn)) { }
+ 
+       _Not_fn(const _Not_fn& __fn) = default;
+       _Not_fn(_Not_fn&& __fn) = default;
+@@ -430,7 +431,7 @@
+     noexcept(std::is_nothrow_constructible<std::decay_t<_Fn>, _Fn&&>::value)
+     {
+       using __maybe_type = _Maybe_wrap_member_pointer<std::decay_t<_Fn>>;
+-      return _Not_fn<typename __maybe_type::type>{std::forward<_Fn>(__fn)};
++      return _Not_fn<typename __maybe_type::type>{std::forward<_Fn>(__fn), 0};
+     }
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
 Index: libstdc++-v3/include/experimental/utility
 ===================================================================
 --- a/src/libstdc++-v3/include/experimental/utility	(.../tags/gcc_6_2_0_release)
@@ -948,6 +966,62 @@ Index: libstdc++-v3/include/experimental/ratio
  // See C++14 §20.11.5, ratio comparison
  template <typename _R1, typename _R2>
    constexpr bool ratio_equal_v = ratio_equal<_R1, _R2>::value;
+Index: libstdc++-v3/include/bits/stl_map.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/stl_map.h	(.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/include/bits/stl_map.h	(.../branches/gcc-6-branch)
+@@ -160,9 +160,9 @@
+        *  @brief  Default constructor creates no elements.
+        */
+       map()
+-#if __cplusplus >= 201103L
+-      noexcept(is_nothrow_default_constructible<allocator_type>::value)
+-#endif
++      _GLIBCXX_NOEXCEPT_IF(
++	  is_nothrow_default_constructible<allocator_type>::value
++	  && is_nothrow_default_constructible<key_compare>::value)
+       : _M_t() { }
+ 
+       /**
+Index: libstdc++-v3/include/bits/stl_queue.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/stl_queue.h	(.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/include/bits/stl_queue.h	(.../branches/gcc-6-branch)
+@@ -449,28 +449,28 @@
+       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	explicit
+ 	priority_queue(const _Alloc& __a)
+-	: c(__a) { }
++	: c(__a), comp() { }
+ 
+       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	priority_queue(const _Compare& __x, const _Alloc& __a)
+-	: c(__x, __a) { }
++	: c(__a), comp(__x) { }
+ 
+       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	priority_queue(const _Compare& __x, const _Sequence& __c,
+ 		       const _Alloc& __a)
+-	: c(__x, __c, __a) { }
++	: c(__c, __a), comp(__x) { }
+ 
+       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	priority_queue(const _Compare& __x, _Sequence&& __c, const _Alloc& __a)
+-	: c(__x, std::move(__c), __a) { }
++	: c(std::move(__c), __a), comp(__x) { }
+ 
+       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	priority_queue(const priority_queue& __q, const _Alloc& __a)
+-	: c(__q.c, __a) { }
++	: c(__q.c, __a), comp(__q.comp) { }
+ 
+       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	priority_queue(priority_queue&& __q, const _Alloc& __a)
+-	: c(std::move(__q.c), __a) { }
++	: c(std::move(__q.c), __a), comp(std::move(__q.comp)) { }
+ #endif
+ 
+       /**
 Index: libstdc++-v3/include/bits/uniform_int_dist.h
 ===================================================================
 --- a/src/libstdc++-v3/include/bits/uniform_int_dist.h	(.../tags/gcc_6_2_0_release)
@@ -976,6 +1050,23 @@ Index: libstdc++-v3/include/bits/uniform_int_dist.h
    /**
     * @brief Uniform discrete distribution for random numbers.
     * A discrete random distribution on the range @f$[min, max]@f$ with equal
+Index: libstdc++-v3/include/bits/stl_set.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/stl_set.h	(.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/include/bits/stl_set.h	(.../branches/gcc-6-branch)
+@@ -140,9 +140,9 @@
+        *  @brief  Default constructor creates no elements.
+        */
+       set()
+-#if __cplusplus >= 201103L
+-      noexcept(is_nothrow_default_constructible<allocator_type>::value)
+-#endif
++      _GLIBCXX_NOEXCEPT_IF(
++	  is_nothrow_default_constructible<allocator_type>::value
++	  && is_nothrow_default_constructible<key_compare>::value)
+       : _M_t() { }
+ 
+       /**
 Index: libstdc++-v3/include/bits/basic_string.h
 ===================================================================
 --- a/src/libstdc++-v3/include/bits/basic_string.h	(.../tags/gcc_6_2_0_release)
@@ -1011,6 +1102,23 @@ Index: libstdc++-v3/include/bits/basic_string.h
  } // namespace std
  
  #endif // C++11
+Index: libstdc++-v3/include/bits/stl_multimap.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/stl_multimap.h	(.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/include/bits/stl_multimap.h	(.../branches/gcc-6-branch)
+@@ -158,9 +158,9 @@
+        *  @brief  Default constructor creates no elements.
+        */
+       multimap()
+-#if __cplusplus >= 201103L
+-      noexcept(is_nothrow_default_constructible<allocator_type>::value)
+-#endif
++      _GLIBCXX_NOEXCEPT_IF(
++	  is_nothrow_default_constructible<allocator_type>::value
++	  && is_nothrow_default_constructible<key_compare>::value)
+       : _M_t() { }
+ 
+       /**
 Index: libstdc++-v3/include/bits/stl_pair.h
 ===================================================================
 --- a/src/libstdc++-v3/include/bits/stl_pair.h	(.../tags/gcc_6_2_0_release)
@@ -1367,6 +1475,23 @@ Index: libstdc++-v3/include/bits/stl_pair.h
  	operator=(pair<_U1, _U2>&& __p)
  	{
  	  first = std::forward<_U1>(__p.first);
+Index: libstdc++-v3/include/bits/stl_multiset.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/stl_multiset.h	(.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/include/bits/stl_multiset.h	(.../branches/gcc-6-branch)
+@@ -138,9 +138,9 @@
+        *  @brief  Default constructor creates no elements.
+        */
+       multiset()
+-#if __cplusplus >= 201103L
+-      noexcept(is_nothrow_default_constructible<allocator_type>::value)
+-#endif
++      _GLIBCXX_NOEXCEPT_IF(
++	  is_nothrow_default_constructible<allocator_type>::value
++	  && is_nothrow_default_constructible<key_compare>::value)
+       : _M_t() { }
+ 
+       /**
 Index: libstdc++-v3/include/bits/c++config
 ===================================================================
 --- a/src/libstdc++-v3/include/bits/c++config	(.../tags/gcc_6_2_0_release)
@@ -1573,7 +1698,39 @@ Index: libstdc++-v3/ChangeLog
 ===================================================================
 --- a/src/libstdc++-v3/ChangeLog	(.../tags/gcc_6_2_0_release)
 +++ b/src/libstdc++-v3/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,180 @@
+@@ -1,3 +1,212 @@
++2016-10-05  Jonathan Wakely  <jwakely at redhat.com>
++
++	PR libstdc++/70101
++	* include/bits/stl_queue.h (priority_queue): Fix allocator-extended
++	constructors.
++	* testsuite/23_containers/priority_queue/allocator.cc: New test.
++
++	PR libstdc++/77864
++	* include/bits/stl_map.h (map::map()): Use nothrow constructibility
++	of comparison function in conditional noexcept.
++	* include/bits/stl_multimap.h (multimap::multimap()): Likewise.
++	* include/bits/stl_multiset.h (multiset::multiset()): Likewise.
++	* include/bits/stl_set.h (set::set()): Likewise.
++	* testsuite/23_containers/map/cons/noexcept_default_construct.cc:
++	New test.
++	* testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
++	Likewise.
++	* testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
++	Likewise.
++	* testsuite/23_containers/set/cons/noexcept_default_construct.cc:
++	Likewise.
++
++	* include/bits/node_handle.h (_Node_handle): Remove invalid and unused
++	alias declaration.
++
++	PR libstdc++/70564
++	* include/experimental/functional (_Not_fn): Add second parameter to
++	disambiguate copying from initialization by not_fn.
++	(not_fn): Add second argument to initialization.
++	* testsuite/experimental/functional/not_fn.cc: Copy call wrapper using
++	direct-initialization. Test abstract class.
++
 +2016-10-03  Jonathan Wakely  <jwakely at redhat.com>
 +
 +	PR libstdc++/68323
@@ -1815,6 +1972,225 @@ Index: libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
  
  // "template argument 1 is invalid"
  // { dg-prune-output "tuple:993" }
+Index: libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc	(.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc	(.../branches/gcc-6-branch)
+@@ -0,0 +1,62 @@
++// Copyright (C) 2016 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/>.
++
++// { dg-options "-std=gnu++11" }
++
++#include <queue>
++#include <testsuite_hooks.h>
++
++// PR libstdc++/70101
++
++struct comp
++{
++  int init_check[64];
++  bool operator()(int l, int r) const { return l < r; }
++};
++
++struct check_init : std::priority_queue<int, std::vector<int>, comp>
++{
++  template<typename... Args>
++    check_init(Args... args) : priority_queue(args...)
++    {
++      push(0);
++
++      for (int i : comp.init_check)
++        VERIFY( i == 0 );  // Will not fail if *this was value-initialized.
++    }
++};
++
++void
++test01()
++{
++  std::vector<int> vec;
++  comp cmp{};
++  std::allocator<int> alloc;
++  std::priority_queue<int, std::vector<int>, comp> pq;
++  check_init c1( pq, alloc );
++  check_init c2( std::move(pq), alloc );
++  check_init c3( alloc );
++  check_init c4( cmp, alloc );
++  check_init c5( cmp, vec, alloc );
++  check_init c6( cmp, std::move(vec), alloc );
++}
++
++int
++main()
++{
++  test01();
++}
+Index: libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc	(.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc	(.../branches/gcc-6-branch)
+@@ -0,0 +1,33 @@
++// Copyright (C) 2016 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/>.
++
++// { dg-options "-std=gnu++11" }
++// { dg-do compile }
++
++#include <map>
++
++using mtype1 = std::multimap<int, int>;
++static_assert(std::is_nothrow_default_constructible<mtype1>::value, "Error");
++
++struct cmp
++{
++  cmp() { }
++  bool operator()(int, int) const;
++};
++
++using mtype2 = std::multimap<int, int, cmp>;
++static_assert( !std::is_nothrow_default_constructible<mtype2>::value, "Error");
+Index: libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc	(.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc	(.../branches/gcc-6-branch)
+@@ -0,0 +1,33 @@
++// Copyright (C) 2016 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/>.
++
++// { dg-options "-std=gnu++11" }
++// { dg-do compile }
++
++#include <set>
++
++using stype1 = std::set<int>;
++static_assert(std::is_nothrow_default_constructible<stype1>::value, "Error");
++
++struct cmp
++{
++  cmp() { }
++  bool operator()(int, int) const;
++};
++
++using stype2 = std::set<int, cmp>;
++static_assert( !std::is_nothrow_default_constructible<stype2>::value, "Error");
+Index: libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc	(.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc	(.../branches/gcc-6-branch)
+@@ -0,0 +1,33 @@
++// Copyright (C) 2016 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/>.
++
++// { dg-options "-std=gnu++11" }
++// { dg-do compile }
++
++#include <set>
++
++using stype1 = std::multiset<int>;
++static_assert(std::is_nothrow_default_constructible<stype1>::value, "Error");
++
++struct cmp
++{
++  cmp() { }
++  bool operator()(int, int) const;
++};
++
++using stype2 = std::multiset<int, cmp>;
++static_assert( !std::is_nothrow_default_constructible<stype2>::value, "Error");
+Index: libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc	(.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc	(.../branches/gcc-6-branch)
+@@ -0,0 +1,33 @@
++// Copyright (C) 2016 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/>.
++
++// { dg-options "-std=gnu++11" }
++// { dg-do compile }
++
++#include <map>
++
++using mtype1 = std::map<int, int>;
++static_assert(std::is_nothrow_default_constructible<mtype1>::value, "Error");
++
++struct cmp
++{
++  cmp() { }
++  bool operator()(int, int) const;
++};
++
++using mtype2 = std::map<int, int, cmp>;
++static_assert( !std::is_nothrow_default_constructible<mtype2>::value, "Error");
 Index: libstdc++-v3/testsuite/23_containers/map/77334.cc
 ===================================================================
 --- a/src/libstdc++-v3/testsuite/23_containers/map/77334.cc	(.../tags/gcc_6_2_0_release)
@@ -2030,6 +2406,42 @@ Index: libstdc++-v3/testsuite/experimental/numeric/77801.cc
 +#include <cstdlib>
 +#include <experimental/numeric>
 +constexpr int i = std::experimental::gcd(4L, 5L); // PR libstdc++/77801
+Index: libstdc++-v3/testsuite/experimental/functional/not_fn.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/experimental/functional/not_fn.cc	(.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/testsuite/experimental/functional/not_fn.cc	(.../branches/gcc-6-branch)
+@@ -76,6 +76,24 @@
+   VERIFY( not_fn(&X::b)(x) );
+ }
+ 
++void
++test04()
++{
++  struct abstract { virtual void f() = 0; };
++  struct derived : abstract { void f() { } };
++  struct F { bool operator()(abstract&) { return false; } };
++  F f;
++  derived d;
++  VERIFY( not_fn(f)(d) );
++}
++
++void
++test05()
++{
++  auto nf = std::experimental::not_fn([] { return false; });
++  auto copy(nf); // PR libstdc++/70564
++}
++
+ int
+ main()
+ {
+@@ -82,4 +100,6 @@
+   test01();
+   test02();
+   test03();
++  test04();
++  test05();
+ }
 Index: libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
 ===================================================================
 --- a/src/libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc	(.../tags/gcc_6_2_0_release)
@@ -2726,7 +3138,7 @@ Index: gcc/DATESTAMP
 +++ b/src/gcc/DATESTAMP	(.../branches/gcc-6-branch)
 @@ -1 +1 @@
 -20160822
-+20161005
++20161010
 Index: gcc/configure
 ===================================================================
 --- a/src/gcc/configure	(.../tags/gcc_6_2_0_release)
@@ -2875,7 +3287,23 @@ Index: gcc/ChangeLog
 ===================================================================
 --- a/src/gcc/ChangeLog	(.../tags/gcc_6_2_0_release)
 +++ b/src/gcc/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,419 @@
+@@ -1,3 +1,435 @@
++2016-10-06  Uros Bizjak  <ubizjak at gmail.com>
++
++	PR target/77874
++	* config/i386/sse.md (<mask_codefor><code><mode>3<mask_name>):
++	Remove wrong assert.
++	(<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>:
++	Use <round_constraint> as operand 1 constraint.
++
++2016-10-06  James Clarke  <jrtc27 at jrtc27.com>
++            Eric Botcazou  <ebotcazou at adacore.com>
++
++	PR target/77759
++	* config/sparc/sparc.c (classify_data_t): Remove int_regs field.
++	(classify_registers): Don't set it
++	(function_arg_slotno): Don't initialize and test it.  Tidy up.
++
 +2016-10-04  Uros Bizjak  <ubizjak at gmail.com>
 +
 +	Backport from mainline
@@ -3295,7 +3723,7 @@ Index: gcc/ChangeLog
  2016-08-22  Release Manager
  
  	* GCC 6.2.0 released.
-@@ -205,9 +625,9 @@
+@@ -205,9 +641,9 @@
  
  2016-08-09  Martin Jambor  <mjambor at suse.cz>
  
@@ -3861,6 +4289,30 @@ Index: gcc/testsuite/gfortran.dg/gomp/pr69281.f90
 +    integer, dimension(:,:), intent(in) :: a
 +  end subroutine
 +end program
+Index: gcc/testsuite/gfortran.dg/gomp/udr5.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/gomp/udr5.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/gomp/udr5.f90	(.../branches/gcc-6-branch)
+@@ -55,5 +55,5 @@
+ end subroutine f1
+ subroutine f2
+   use udr5m3	! { dg-error "Previous !.OMP DECLARE REDUCTION|Ambiguous interfaces" }
+-  use udr5m2	! { dg-error "Ambiguous !.OMP DECLARE REDUCTION" }
++  use udr5m2	! { dg-error "Ambiguous !.OMP DECLARE REDUCTION|Ambiguous interfaces" }
+ end subroutine f2
+Index: gcc/testsuite/gfortran.dg/gomp/udr7.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/gomp/udr7.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/gomp/udr7.f90	(.../branches/gcc-6-branch)
+@@ -78,7 +78,7 @@
+ end subroutine f1
+ subroutine f2
+   use udr7m3	! { dg-error "Previous !.OMP DECLARE REDUCTION|Ambiguous interfaces" }
+-  use udr7m2	! { dg-error "Ambiguous !.OMP DECLARE REDUCTION" }
++  use udr7m2	! { dg-error "Ambiguous !.OMP DECLARE REDUCTION|Ambiguous interfaces" }
+ end subroutine f2
+ subroutine f3
+   use udr7m4
 Index: gcc/testsuite/gfortran.dg/warnings_are_errors_1.f90
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/warnings_are_errors_1.f90	(.../tags/gcc_6_2_0_release)
@@ -3917,6 +4369,39 @@ Index: gcc/testsuite/gfortran.dg/c_assoc_4.f90
 +  PRINT *, C_ASSOCIATED([x,y])  ! { dg-error "'c_ptr_1' argument of 'c_associated' intrinsic at .1. must be a scalar" }
  
  END PROGRAM test
+Index: gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f90	(.../branches/gcc-6-branch)
+@@ -7,11 +7,11 @@
+ implicit none
+ 
+ interface func
+-  procedure f1,f2 ! { dg-error "Ambiguous interfaces" }
++  procedure f1,f2
+ end interface
+ 
+ interface operator(.op.)
+-  procedure f1,f2 ! { dg-error "Ambiguous interfaces" }
++  procedure f1,f2
+ end interface
+ 
+ type :: t1
+@@ -35,12 +35,12 @@
+ 
+ contains
+ 
+-  real function f1(a,b)
++  real function f1(a,b)    ! { dg-error "Ambiguous interfaces" }
+     real,intent(in) :: a,b
+     f1 = a + b
+   end function
+ 
+-  integer function f2(a,b)
++  integer function f2(a,b) ! { dg-error "Ambiguous interfaces" }
+     real,intent(in) :: a,b
+     f2 = a - b
+   end function
 Index: gcc/testsuite/gfortran.dg/pr71730.f90
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/pr71730.f90	(.../tags/gcc_6_2_0_release)
@@ -3927,6 +4412,108 @@ Index: gcc/testsuite/gfortran.dg/pr71730.f90
 +  implicit none
 +  character(len=bar) :: a ! { dg-error "Scalar INTEGER expression" }
 +end subroutine foo
+Index: gcc/testsuite/gfortran.dg/interface_37.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/interface_37.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/interface_37.f90	(.../branches/gcc-6-branch)
+@@ -4,13 +4,13 @@
+ ! Subroutine/function ambiguity in generics.
+ !
+      interface q
+-       subroutine qr(f)
++       subroutine qr(f)  ! { dg-error "Ambiguous interfaces" }
+          implicit real(f)
+          external f
+        end subroutine
+-       subroutine qc(f)
++       subroutine qc(f)  ! { dg-error "Ambiguous interfaces" }
+          implicit complex(f)
+          external f
+-       end subroutine ! { dg-error "Ambiguous interfaces" }
++       end subroutine
+      end interface q
+    end
+Index: gcc/testsuite/gfortran.dg/pr77406.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr77406.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr77406.f90	(.../branches/gcc-6-branch)
+@@ -0,0 +1,34 @@
++! { dg-do compile }
++! { dg-options "-w" }
++module m
++   interface s
++      subroutine s1(*)  ! { dg-error "Ambiguous interfaces" }
++      end
++      subroutine s2(*)  ! { dg-error "Ambiguous interfaces" }
++      end
++   end interface 
++   interface t
++      subroutine t1(*)
++      end
++      subroutine t2(*,*)
++      end
++   end interface
++   interface u
++      subroutine u1(*,x)
++      end
++      subroutine u2(*,i)
++      end
++   end interface
++   interface v
++      subroutine v1(*,*)  ! { dg-error "Ambiguous interfaces" }
++      end
++      subroutine v2(*,*)  ! { dg-error "Ambiguous interfaces" }
++      end
++   end interface
++   interface w
++      subroutine w1(*,i)  ! { dg-error "Ambiguous interfaces" }
++      end
++      subroutine w2(*,j)  ! { dg-error "Ambiguous interfaces" }
++      end
++   end interface
++end
+Index: gcc/testsuite/gfortran.dg/associate_22.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/associate_22.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/associate_22.f90	(.../branches/gcc-6-branch)
+@@ -0,0 +1,37 @@
++! { dg-do run }
++program foo
++
++   implicit none
++
++   character(len=4) :: s
++   character(len=10) :: a
++
++   ! This works.
++   s = 'abc'
++   associate(t => s)
++      if (trim(t) /= 'abc') call abort
++   end associate
++
++   ! This failed.
++   associate(u => 'abc')
++      if (trim(u) /= 'abc') call abort
++   end associate
++
++   ! This failed.
++   a = s // 'abc'
++   associate(v => s // 'abc')
++      if (trim(v) /= trim(a)) call abort
++   end associate
++
++   ! This failed.
++   a = trim(s) // 'abc'
++   associate(w => trim(s) // 'abc')
++      if (trim(w) /= trim(a)) call abort
++   end associate
++
++   ! This failed.
++   associate(x => trim('abc'))
++      if (trim(x) /= 'abc') call abort
++   end associate
++
++end program foo
 Index: gcc/testsuite/gfortran.dg/array_constructor_27.f03
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/array_constructor_27.f03	(.../tags/gcc_6_2_0_release)
@@ -3971,6 +4558,30 @@ Index: gcc/testsuite/gfortran.dg/pr77460.f90
 +  print*, sum((/x,-x,1d0/))
 +  print*, sum((/1d0,x,-x/))
 +end
+Index: gcc/testsuite/gfortran.dg/interface_6.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/interface_6.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/interface_6.f90	(.../branches/gcc-6-branch)
+@@ -7,16 +7,16 @@
+ ! procedures below are invalid, even though actually unambiguous.
+ !
+ INTERFACE BAD8
+-  SUBROUTINE S8A(X,Y,Z)
++  SUBROUTINE S8A(X,Y,Z)     ! { dg-error "Ambiguous interfaces" }
+     REAL,OPTIONAL :: X
+     INTEGER :: Y
+     REAL :: Z
+   END SUBROUTINE S8A
+-  SUBROUTINE S8B(X,Z,Y)
++  SUBROUTINE S8B(X,Z,Y)     ! { dg-error "Ambiguous interfaces" }
+     INTEGER,OPTIONAL :: X
+     INTEGER :: Z
+     REAL :: Y
+-  END SUBROUTINE S8B ! { dg-error "Ambiguous interfaces" }
++  END SUBROUTINE S8B
+ END INTERFACE BAD8
+ real :: a, b
+ integer :: i, j
 Index: gcc/testsuite/gfortran.dg/inquire_17.f90
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/inquire_17.f90	(.../tags/gcc_6_2_0_release)
@@ -3999,6 +4610,40 @@ Index: gcc/testsuite/gfortran.dg/intrinsic_numeric_arg.f
 +       R = ABS(Z) !  { dg-error " must have a numeric type" }
 +       R = ABS(A) !  { dg-error " must have a numeric type" }
         END
+Index: gcc/testsuite/gfortran.dg/defined_operators_1.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/defined_operators_1.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/defined_operators_1.f90	(.../branches/gcc-6-branch)
+@@ -11,7 +11,7 @@
+      module procedure foo_1
+      module procedure foo_2
+      module procedure foo_3
+-     module procedure foo_1_OK  ! { dg-error "Ambiguous interfaces" }
++     module procedure foo_1_OK
+      module procedure foo_2_OK
+      function foo_chr (chr) ! { dg-error "cannot be assumed character length" }
+        character(*) :: foo_chr
+@@ -37,12 +37,12 @@
+     integer :: foo_1
+     foo_0 = 1
+   end function foo_0
+-  function foo_1 (a) ! { dg-error "must be INTENT" }
++  function foo_1 (a) ! { dg-error "Ambiguous interfaces" }
+     integer :: foo_1
+-    integer :: a
++    integer, intent(in) :: a
+     foo_1 = 1
+   end function foo_1
+-  function foo_1_OK (a)
++  function foo_1_OK (a) ! { dg-error "Ambiguous interfaces" }
+     integer :: foo_1_OK
+     integer, intent (in) :: a
+     foo_1_OK = 1
+@@ -65,3 +65,4 @@
+     foo_3 = a + 3 * b - c
+   end function foo_3
+ end module mymod
++
 Index: gcc/testsuite/gfortran.dg/pr77420_4.f90
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/pr77420_4.f90	(.../tags/gcc_6_2_0_release)
@@ -4057,6 +4702,29 @@ Index: gcc/testsuite/gfortran.dg/pr71067_2.f90
 +   data b /2*o1'  ! { dg-error "must be a PARAMETER in DATA" }
 +   data c /2*z1   ! { dg-error "must be a PARAMETER in DATA" }
 +end
+Index: gcc/testsuite/gfortran.dg/interface_1.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/interface_1.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/interface_1.f90	(.../branches/gcc-6-branch)
+@@ -24,15 +24,15 @@
+ 
+ module z
+ 
+-  use y
++  use y    ! { dg-warning "in generic interface" }
+ 
+   interface ambiguous
+-    module procedure f    ! { dg-warning "in generic interface" "" }
++    module procedure f 
+   end interface
+ 
+   contains
+ 
+-    real function f(a)
++    real function f(a)   ! { dg-warning "in generic interface" "" }
+       real a
+       f = a
+     end function
 Index: gcc/testsuite/gfortran.dg/pr71862.f90
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/pr71862.f90	(.../tags/gcc_6_2_0_release)
@@ -4091,6 +4759,21 @@ Index: gcc/testsuite/gfortran.dg/array_constructor_26.f03
 +    CHARACTER (MAX_FLD_HED, 1) :: DWFdHd(MAXFLD) = [(" ", i = 1, MAXFLD)] ! { dg-error "Scalar INTEGER expression" }
    END TYPE TWindowData
  END MODULE WinData
+Index: gcc/testsuite/gfortran.dg/interface_5.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/interface_5.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/interface_5.f90	(.../branches/gcc-6-branch)
+@@ -46,8 +46,8 @@
+ end subroutine i_am_ok
+ 
+ program main
+-  USE f77_blas_extra ! { dg-error "Ambiguous interfaces" }
+-  USE f77_blas_generic
++  USE f77_blas_extra   ! { dg-error "Ambiguous interfaces" }
++  USE f77_blas_generic ! { dg-error "Ambiguous interfaces" }
+   character(6) :: chr
+   chr = ""
+   call bl_copy(1.0, chr)
 Index: gcc/testsuite/gfortran.dg/equiv_constraint_7.f90
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/equiv_constraint_7.f90	(.../tags/gcc_6_2_0_release)
@@ -4266,6 +4949,40 @@ Index: gcc/testsuite/gfortran.dg/pr41922.f90
 +      data istore/0/
 +      EQUIVALENCE (CSTORE(1),XSTORE,ISTORE) ! { dg-error "Overlapping unequal" }
 +      end
+Index: gcc/testsuite/gfortran.dg/no_arg_check_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/no_arg_check_3.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/no_arg_check_3.f90	(.../branches/gcc-6-branch)
+@@ -55,23 +55,23 @@
+     end subroutine okay
+   end interface
+   interface two
+-    subroutine ambig1(x)
++    subroutine ambig1(x)  ! { dg-error "Ambiguous interfaces" }
+ !GCC$ attributes NO_ARG_CHECK :: x
+       integer :: x
+     end subroutine ambig1
+-    subroutine ambig2(x)
++    subroutine ambig2(x)  ! { dg-error "Ambiguous interfaces" }
+ !GCC$ attributes NO_ARG_CHECK :: x
+       integer :: x(*)
+-    end subroutine ambig2 ! { dg-error "Ambiguous interfaces 'ambig2' and 'ambig1' in generic interface 'two'" }
++    end subroutine ambig2
+   end interface
+   interface three
+-    subroutine ambig3(x)
++    subroutine ambig3(x)   ! { dg-error "Ambiguous interfaces" }
+ !GCC$ attributes NO_ARG_CHECK :: x
+       integer :: x
+     end subroutine ambig3
+-    subroutine ambig4(x)
++    subroutine ambig4(x)   ! { dg-error "Ambiguous interfaces" }
+       integer :: x
+-    end subroutine ambig4 ! { dg-error "Ambiguous interfaces 'ambig4' and 'ambig3' in generic interface 'three'" }
++    end subroutine ambig4
+   end interface
+ end subroutine nine
+ 
 Index: gcc/testsuite/gfortran.dg/pr71799.f90
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/pr71799.f90	(.../tags/gcc_6_2_0_release)
@@ -4349,6 +5066,26 @@ Index: gcc/testsuite/gfortran.dg/empty_label.f
 -end function ! ... but an error
 -C { dg-excess-errors "warnings being treated as errors" }
 +
+Index: gcc/testsuite/gfortran.dg/assumed_type_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/assumed_type_3.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/assumed_type_3.f90	(.../branches/gcc-6-branch)
+@@ -66,12 +66,12 @@
+     end subroutine okok2
+   end interface
+   interface three
+-    subroutine ambig1(x)
++    subroutine ambig1(x) ! { dg-error "Ambiguous interfaces" }
+       type(*) :: x
+     end subroutine ambig1
+-    subroutine ambig2(x)
++    subroutine ambig2(x) ! { dg-error "Ambiguous interfaces" }
+       integer :: x
+-    end subroutine ambig2 ! { dg-error "Ambiguous interfaces 'ambig2' and 'ambig1' in generic interface 'three'" }
++    end subroutine ambig2
+   end interface
+ end subroutine nine
+ 
 Index: gcc/testsuite/gfortran.dg/pr77351.f90
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/pr77351.f90	(.../tags/gcc_6_2_0_release)
@@ -4360,6 +5097,31 @@ Index: gcc/testsuite/gfortran.dg/pr77351.f90
 +   print *, any(shape(z) /= [4,1])  ! { dg-error "shape for elemental binary" }
 +end
 +! { dg-excess-errors "operands are incommensurate" }
+Index: gcc/testsuite/gfortran.dg/generic_26.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/generic_26.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/generic_26.f90	(.../branches/gcc-6-branch)
+@@ -9,17 +9,17 @@
+ 
+   interface test
+     procedure testAlloc
+-    procedure testPtr   ! { dg-error "Ambiguous interfaces" }
++    procedure testPtr
+   end interface
+ 
+ contains
+ 
+-  logical function testAlloc(obj)
++  logical function testAlloc(obj)    ! { dg-error "Ambiguous interfaces" }
+     integer, allocatable :: obj
+     testAlloc = .true.
+   end function
+   
+-  logical function testPtr(obj)
++  logical function testPtr(obj)      ! { dg-error "Ambiguous interfaces" }
+     integer, pointer :: obj
+     testPtr = .false.
+   end function
 Index: gcc/testsuite/gfortran.dg/submodule_17.f08
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/submodule_17.f08	(.../tags/gcc_6_2_0_release)
@@ -4441,6 +5203,66 @@ Index: gcc/testsuite/gfortran.dg/pr77380.f90
 +   integer :: z(2)[*] = 1
 +   z(:)[1] = z(:)[*]       ! { dg-error "must be a scalar at" }
 +end
+Index: gcc/testsuite/gfortran.dg/generic_7.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/generic_7.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/generic_7.f90	(.../branches/gcc-6-branch)
+@@ -7,15 +7,15 @@
+ MODULE global
+ INTERFACE iface
+   MODULE PROCEDURE sub_a
+-  MODULE PROCEDURE sub_b ! { dg-error "Ambiguous interfaces" }
++  MODULE PROCEDURE sub_b
+   MODULE PROCEDURE sub_c
+ END INTERFACE
+ CONTAINS
+-  SUBROUTINE sub_a(x)
++  SUBROUTINE sub_a(x) ! { dg-error "Ambiguous interfaces" }
+     INTEGER, INTENT(in) :: x
+     WRITE (*,*) 'A: ', x
+   END SUBROUTINE
+-  SUBROUTINE sub_b(y)
++  SUBROUTINE sub_b(y) ! { dg-error "Ambiguous interfaces" }
+     INTEGER, INTENT(in) :: y
+     WRITE (*,*) 'B: ', y
+   END SUBROUTINE
+Index: gcc/testsuite/gfortran.dg/operator_5.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/operator_5.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/operator_5.f90	(.../branches/gcc-6-branch)
+@@ -16,7 +16,7 @@
+   END INTERFACE
+ 
+   INTERFACE OPERATOR(.FOO.)
+-    MODULE PROCEDURE t_bar                  ! { dg-error "Ambiguous interfaces" }
++    MODULE PROCEDURE t_bar
+   END INTERFACE
+ 
+   ! intrinsic operator
+@@ -29,7 +29,7 @@
+   END INTERFACE
+ 
+   INTERFACE OPERATOR(==)
+-    MODULE PROCEDURE t_bar                  ! { dg-error "Ambiguous interfaces" }
++    MODULE PROCEDURE t_bar
+   END INTERFACE
+ 
+   INTERFACE OPERATOR(.eq.)
+@@ -37,12 +37,12 @@
+   END INTERFACE
+ 
+ CONTAINS
+-  LOGICAL FUNCTION t_foo(this, other)
++  LOGICAL FUNCTION t_foo(this, other)  ! { dg-error "Ambiguous interfaces" }
+     TYPE(t), INTENT(in) :: this, other
+     t_foo = .FALSE.
+   END FUNCTION
+ 
+-  LOGICAL FUNCTION t_bar(this, other)
++  LOGICAL FUNCTION t_bar(this, other)  ! { dg-error "Ambiguous interfaces" }
+     TYPE(t), INTENT(in) :: this, other
+     t_bar = .FALSE.
+   END FUNCTION
 Index: gcc/testsuite/gfortran.dg/pr77694.f90
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/pr77694.f90	(.../tags/gcc_6_2_0_release)
@@ -4517,6 +5339,36 @@ Index: gcc/testsuite/gfortran.dg/label_3.f90
 -1 ! { dg-warning "Ignoring statement label in empty statement" }
 +1 ! { dg-error "Statement label without statement" }
  end
+Index: gcc/testsuite/gfortran.dg/interface_7.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/interface_7.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/interface_7.f90	(.../branches/gcc-6-branch)
+@@ -11,7 +11,7 @@
+     SUBROUTINE S9A(X)
+       REAL :: X
+     END SUBROUTINE S9A
+-    SUBROUTINE S9B(X)
++    SUBROUTINE S9B(X)     ! { dg-error "Ambiguous interfaces" }
+       INTERFACE
+         FUNCTION X(A)
+           REAL :: X,A
+@@ -18,7 +18,7 @@
+         END FUNCTION X
+       END INTERFACE
+     END SUBROUTINE S9B
+-    SUBROUTINE S9C(X)
++    SUBROUTINE S9C(X)     ! { dg-error "Ambiguous interfaces" }
+       INTERFACE
+         FUNCTION X(A)
+           REAL :: X
+@@ -25,6 +25,6 @@
+           INTEGER :: A
+         END FUNCTION X
+       END INTERFACE
+-    END SUBROUTINE S9C  ! { dg-error "Ambiguous interfaces" }
++    END SUBROUTINE S9C
+   END INTERFACE BAD9
+ end module xx
 Index: gcc/testsuite/gfortran.dg/empty_label.f90
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/empty_label.f90	(.../tags/gcc_6_2_0_release)
@@ -5155,7 +6007,37 @@ Index: gcc/testsuite/ChangeLog
 ===================================================================
 --- a/src/gcc/testsuite/ChangeLog	(.../tags/gcc_6_2_0_release)
 +++ b/src/gcc/testsuite/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,420 @@
+@@ -1,3 +1,450 @@
++2016-10-07  Steven G. Kargl  <kargl at gcc.gnu.org>
++
++	PR fortran/77406
++	* gfortran.dg/pr77406.f90: New test.
++	* gfortran.dg/assumed_type_3.f90: Update error messages.
++	* gfortran.dg/defined_operators_1.f90: Ditto.
++	* gfortran.dg/generic_26.f90: Ditto.
++	* gfortran.dg/generic_7.f90: Ditto.
++	* gfortran.dg/gomp/udr5.f90: Ditto.
++	* gfortran.dg/gomp/udr7.f90: Ditto.
++	* gfortran.dg/interface_1.f90: Ditto.
++	* gfortran.dg/interface_37.f90: Ditto.
++	* gfortran.dg/interface_5.f90: Ditto.
++	* gfortran.dg/interface_6.f90: Ditto.
++	* gfortran.dg/interface_7.f90
++	* gfortran.dg/no_arg_check_3.f90
++	* gfortran.dg/operator_5.f90
++	* gfortran.dg/proc_ptr_comp_20.f90: Ditto.
++
++2016-10-06  James Clarke  <jrtc27 at jrtc27.com>
++            Eric Botcazou  <ebotcazou at adacore.com>
++
++	* g++.dg/other/pr77759.C: New test.
++
++2016-10-05  Steven G. Kargl  <kargls at gcc.gnu.org>
++
++	PR fortran/58991
++	PR fortran/58992
++	* gfortran.dg/associate_22.f90: New test.
++
 +2016-10-04  Martin Sebor  <msebor at redhat.com>
 +
 +	* g++.dg/warn/Wplacement-new-size-4.C: Use relative line number
@@ -5576,7 +6458,7 @@ Index: gcc/testsuite/ChangeLog
  2016-08-22  Release Manager
  
  	* GCC 6.2.0 released.
-@@ -150,8 +567,8 @@
+@@ -150,8 +597,8 @@
  
  2016-08-09  Martin Jambor  <mjambor at suse.cz>
  
@@ -5587,7 +6469,7 @@ Index: gcc/testsuite/ChangeLog
  
  2016-08-09  Richard Biener  <rguenther at suse.de>
  
-@@ -276,8 +693,8 @@
+@@ -276,8 +723,8 @@
  
  2016-07-20  Martin Jambor  <mjambor at suse.cz>
  
@@ -5598,7 +6480,7 @@ Index: gcc/testsuite/ChangeLog
  
  2016-07-19  Jakub Jelinek  <jakub at redhat.com>
  
-@@ -418,7 +835,7 @@
+@@ -418,7 +865,7 @@
  	2016-07-06  Yuri Rumyantsev  <ysrumyan at gmail.com>
  
  	PR tree-optimization/71518
@@ -5864,6 +6746,32 @@ Index: gcc/testsuite/g++.dg/gomp/pr71910.C
 +#pragma omp parallel
 +  __builtin_exit (0);
 +}
+Index: gcc/testsuite/g++.dg/other/pr77759.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/other/pr77759.C	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/other/pr77759.C	(.../branches/gcc-6-branch)
+@@ -0,0 +1,21 @@
++// PR target/77759
++// This ICEd in the 64-bit SPARC back-end because of the nested empty struct.
++
++// { dg-do compile }
++
++struct empty {};
++
++struct pair_empty
++{
++   struct empty a;
++   struct empty b;
++};
++
++extern void foo (int slot0, int slot1, int slot2, int slot3, int slot4,
++		 int slot5, struct pair_empty pair);
++
++void bar (void)
++{
++  struct pair_empty pair;
++  foo (0, 0, 0, 0, 0, 0, pair);
++}
 Index: gcc/testsuite/g++.dg/warn/Wplacement-new-size-4.C
 ===================================================================
 --- a/src/gcc/testsuite/g++.dg/warn/Wplacement-new-size-4.C	(.../tags/gcc_6_2_0_release)
@@ -6974,7 +7882,55 @@ Index: gcc/fortran/interface.c
 ===================================================================
 --- a/src/gcc/fortran/interface.c	(.../tags/gcc_6_2_0_release)
 +++ b/src/gcc/fortran/interface.c	(.../branches/gcc-6-branch)
-@@ -2146,7 +2146,7 @@
+@@ -1604,8 +1604,9 @@
+   f1 = gfc_sym_get_dummy_args (s1);
+   f2 = gfc_sym_get_dummy_args (s2);
+ 
++  /* Special case: No arguments.  */
+   if (f1 == NULL && f2 == NULL)
+-    return 1;			/* Special case: No arguments.  */
++    return 1;
+ 
+   if (generic_flag)
+     {
+@@ -1612,6 +1613,14 @@
+       if (count_types_test (f1, f2, p1, p2)
+ 	  || count_types_test (f2, f1, p2, p1))
+ 	return 0;
++
++      /* Special case: alternate returns.  If both f1->sym and f2->sym are
++	 NULL, then the leading formal arguments are alternate returns.  
++	 The previous conditional should catch argument lists with 
++	 different number of argument.  */
++      if (f1 && f1->sym == NULL && f2 && f2->sym == NULL)
++	return 1;
++
+       if (generic_correspondence (f1, f2, p1, p2)
+ 	  || generic_correspondence (f2, f1, p2, p1))
+ 	return 0;
+@@ -1779,13 +1788,15 @@
+ 				       generic_flag, 0, NULL, 0, NULL, NULL))
+ 	  {
+ 	    if (referenced)
+-	      gfc_error ("Ambiguous interfaces %qs and %qs in %s at %L",
+-			 p->sym->name, q->sym->name, interface_name,
+-			 &p->where);
++	      gfc_error ("Ambiguous interfaces in %s for %qs at %L "
++			 "and %qs at %L", interface_name,
++			 q->sym->name, &q->sym->declared_at,
++			 p->sym->name, &p->sym->declared_at);
+ 	    else if (!p->sym->attr.use_assoc && q->sym->attr.use_assoc)
+-	      gfc_warning (0, "Ambiguous interfaces %qs and %qs in %s at %L",
+-			   p->sym->name, q->sym->name, interface_name,
+-			   &p->where);
++	      gfc_warning (0, "Ambiguous interfaces in %s for %qs at %L "
++			 "and %qs at %L", interface_name,
++			 q->sym->name, &q->sym->declared_at,
++			 p->sym->name, &p->sym->declared_at);
+ 	    else
+ 	      gfc_warning (0, "Although not referenced, %qs has ambiguous "
+ 			   "interfaces at %L", interface_name, &p->where);
+@@ -2146,7 +2157,7 @@
      {
        if (where)
  	gfc_error ("Type mismatch in argument %qs at %L; passed %s to %s",
@@ -7298,7 +8254,22 @@ Index: gcc/fortran/ChangeLog
 ===================================================================
 --- a/src/gcc/fortran/ChangeLog	(.../tags/gcc_6_2_0_release)
 +++ b/src/gcc/fortran/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,149 @@
+@@ -1,3 +1,164 @@
++2016-10-07  Steven G. Kargl  <kargl at gcc.gnu.org>
++
++	PR fortran/77406
++	* interface.c (gfc_compare_interfaces): Fix detection of ambiguous
++	interface involving alternate return.
++	(check_interface1): Improve error message and loci.
++
++2016-10-05  Steven G. Kargl  <kargls at gcc.gnu.org>
++
++	PR fortran/58991
++	PR fortran/58992
++	* resolve.c (resolve_assoc_var):  Fix CHARACTER type-spec for a
++	selector in ASSOCIATE.
++	(resolve_fl_variable): Skip checks for an ASSOCIATE variable.
++
 +2016-09-28  Steven G. Kargl  <kargl at gcc.gnu.org>
 +
 +	Backport from trunk
@@ -7517,7 +8488,26 @@ Index: gcc/fortran/resolve.c
  
    if (iter->start->expr_type == EXPR_CONSTANT
        && iter->end->expr_type == EXPR_CONSTANT
-@@ -8936,7 +8936,7 @@
+@@ -8244,6 +8244,18 @@
+   /* Mark this as an associate variable.  */
+   sym->attr.associate_var = 1;
+ 
++  /* Fix up the type-spec for CHARACTER types.  */
++  if (sym->ts.type == BT_CHARACTER && !sym->attr.select_type_temporary)
++    {
++      if (!sym->ts.u.cl)
++	sym->ts.u.cl = target->ts.u.cl;
++
++      if (!sym->ts.u.cl->length)
++	sym->ts.u.cl->length
++	  = gfc_get_int_expr (gfc_default_integer_kind,
++			      NULL, target->value.character.length);
++    }
++
+   /* If the target is a good class object, so is the associate variable.  */
+   if (sym->ts.type == BT_CLASS && gfc_expr_attr (target).class_ok)
+     sym->attr.class_ok = 1;
+@@ -8936,7 +8948,7 @@
    if (label->defined == ST_LABEL_UNKNOWN)
      {
        gfc_error ("Label %d referenced at %L is never defined", label->value,
@@ -7526,7 +8516,7 @@ Index: gcc/fortran/resolve.c
        return;
      }
  
-@@ -9431,6 +9431,24 @@
+@@ -9431,6 +9443,24 @@
  	case EXEC_WAIT:
  	  break;
  
@@ -7551,7 +8541,7 @@ Index: gcc/fortran/resolve.c
  	case EXEC_OACC_PARALLEL_LOOP:
  	case EXEC_OACC_PARALLEL:
  	case EXEC_OACC_KERNELS_LOOP:
-@@ -9443,9 +9461,7 @@
+@@ -9443,9 +9473,7 @@
  	case EXEC_OACC_CACHE:
  	case EXEC_OACC_ENTER_DATA:
  	case EXEC_OACC_EXIT_DATA:
@@ -7561,7 +8551,7 @@ Index: gcc/fortran/resolve.c
  	case EXEC_OMP_CRITICAL:
  	case EXEC_OMP_DISTRIBUTE:
  	case EXEC_OMP_DISTRIBUTE_PARALLEL_DO:
-@@ -11479,6 +11495,27 @@
+@@ -11479,6 +11507,27 @@
  }
  
  
@@ -7589,7 +8579,7 @@ Index: gcc/fortran/resolve.c
  /* Resolve symbols with flavor variable.  */
  
  static bool
-@@ -11518,17 +11555,8 @@
+@@ -11518,19 +11567,10 @@
      }
  
    /* Constraints on deferred type parameter.  */
@@ -7607,9 +8597,12 @@ Index: gcc/fortran/resolve.c
 +  if (!deferred_requirements (sym))
 +    return false;
  
-   if (sym->ts.type == BT_CHARACTER)
+-  if (sym->ts.type == BT_CHARACTER)
++  if (sym->ts.type == BT_CHARACTER && !sym->attr.associate_var)
      {
-@@ -11961,6 +11989,13 @@
+       /* Make sure that character string variables with assumed length are
+ 	 dummy arguments.  */
+@@ -11961,6 +12001,13 @@
        iface = sym->ts.interface;
        sym->ts.interface = NULL;
  
@@ -7623,7 +8616,7 @@ Index: gcc/fortran/resolve.c
        if (iface == NULL)
  	goto check_formal;
  
-@@ -13640,6 +13675,10 @@
+@@ -13640,6 +13687,10 @@
        return false;
      }
  
@@ -7634,7 +8627,7 @@ Index: gcc/fortran/resolve.c
    /* Make sure a parameter that has been implicitly typed still
       matches the implicit type, since PARAMETER statements can precede
       IMPLICIT statements.  */
-@@ -15660,7 +15699,8 @@
+@@ -15660,7 +15711,8 @@
    /* As gfc_resolve can be called during resolution of an OpenMP construct
       body, we should clear any state associated to it, so that say NS's
       DO loops are not interpreted as OpenMP loops.  */
@@ -7644,7 +8637,7 @@ Index: gcc/fortran/resolve.c
  
    resolve_types (ns);
    component_assignment_level = 0;
-@@ -15672,5 +15712,6 @@
+@@ -15672,5 +15724,6 @@
  
    gfc_run_passes (ns);
  
@@ -573733,6 +574726,67 @@ Index: gcc/config/phoenix.h
 +/* This will prevent selecting 'unsigned long int' instead of 'unsigned int' as 'uint32_t' in stdint-newlib.h. */
 +#undef STDINT_LONG32
 +#define STDINT_LONG32		0
+Index: gcc/config/sparc/sparc.c
+===================================================================
+--- a/src/gcc/config/sparc/sparc.c	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/config/sparc/sparc.c	(.../branches/gcc-6-branch)
+@@ -6284,7 +6284,6 @@
+ 
+ typedef struct
+ {
+-  bool int_regs;	/* true if field eligible to int registers.  */
+   bool fp_regs;		/* true if field eligible to FP registers.  */
+   bool fp_regs_in_first_word;	/* true if such field in first word.  */
+ } classify_data_t;
+@@ -6301,8 +6300,6 @@
+       if (bitpos < BITS_PER_WORD)
+ 	data->fp_regs_in_first_word = true;
+     }
+-  else
+-    data->int_regs = true;
+ }
+ 
+ /* Compute the slot number to pass an argument in.
+@@ -6429,23 +6426,25 @@
+ 
+ 	  if (TREE_CODE (type) == RECORD_TYPE)
+ 	    {
+-	      classify_data_t data = { false, false, false };
++	      classify_data_t data = { false, false };
+ 	      traverse_record_type<classify_data_t, classify_registers>
+ 		(type, named, &data);
+ 
+-	      /* If all slots are filled except for the last one, but there
+-		 is no FP field in the first word, then must pass on stack.  */
+-	      if (data.fp_regs
+-		  && !data.fp_regs_in_first_word
+-		  && slotno >= SPARC_FP_ARG_MAX - 1)
+-		return -1;
+-
+-	      /* If there are only int args and all int slots are filled,
+-		 then must pass on stack.  */
+-	      if (!data.fp_regs
+-		  && data.int_regs
+-		  && slotno >= SPARC_INT_ARG_MAX)
+-		return -1;
++	      if (data.fp_regs)
++		{
++		  /* If all FP slots are filled except for the last one and
++		     there is no FP field in the first word, then must pass
++		     on stack.  */
++		  if (slotno >= SPARC_FP_ARG_MAX - 1
++		      && !data.fp_regs_in_first_word)
++		    return -1;
++		}
++	      else
++		{
++		  /* If all int slots are filled, then must pass on stack.  */
++		  if (slotno >= SPARC_INT_ARG_MAX)
++		    return -1;
++		}
+ 	    }
+ 
+ 	  /* PREGNO isn't set since both int and FP regs can be used.  */
 Index: gcc/config/i386/i386.md
 ===================================================================
 --- a/src/gcc/config/i386/i386.md	(.../tags/gcc_6_2_0_release)
@@ -574078,7 +575132,24 @@ Index: gcc/config/i386/sse.md
  (define_insn "avx_addsubv4df3"
    [(set (match_operand:V4DF 0 "register_operand" "=x")
  	(vec_merge:V4DF
-@@ -12454,7 +12433,7 @@
+@@ -4910,7 +4889,7 @@
+ (define_insn "<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>"
+   [(set (match_operand:VF2_AVX512VL 0 "register_operand" "=v")
+ 	(any_float:VF2_AVX512VL
+-	  (match_operand:<sseintvecmode> 1 "nonimmediate_operand" "vm")))]
++	  (match_operand:<sseintvecmode> 1 "nonimmediate_operand" "<round_constraint>")))]
+   "TARGET_AVX512DQ"
+   "vcvt<floatsuffix>qq2pd\t{<round_mask_op2>%1, %0<mask_operand2>|%0<mask_operand2>, %1<round_mask_op2>}"
+   [(set_attr "type" "ssecvt")
+@@ -11550,7 +11529,6 @@
+       gcc_assert (TARGET_AVX);
+    case MODE_V4SF:
+       gcc_assert (TARGET_SSE);
+-      gcc_assert (!<mask_applied>);
+       tmp = "<logic>ps";
+       break;
+ 
+@@ -12454,7 +12432,7 @@
  		       (const_int 12) (const_int 13)
  		       (const_int 14) (const_int 15)]))))]
    "TARGET_AVX512DQ"
@@ -574087,7 +575158,7 @@ Index: gcc/config/i386/sse.md
    [(set_attr "type" "sselog")
     (set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
-@@ -12471,7 +12450,7 @@
+@@ -12471,7 +12449,7 @@
  		       (const_int 6) (const_int 7)]))
  	  (match_operand:<ssehalfvecmode> 2 "nonimmediate_operand" "vm")))]
    "TARGET_AVX512DQ"
@@ -574096,7 +575167,7 @@ Index: gcc/config/i386/sse.md
    [(set_attr "type" "sselog")
     (set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
-@@ -12486,7 +12465,7 @@
+@@ -12486,7 +12464,7 @@
  	    (parallel [(const_int 4) (const_int 5)
  		       (const_int 6) (const_int 7)]))))]
    "TARGET_AVX512F"
@@ -574105,7 +575176,7 @@ Index: gcc/config/i386/sse.md
    [(set_attr "type" "sselog")
     (set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
-@@ -12501,7 +12480,7 @@
+@@ -12501,7 +12479,7 @@
  		       (const_int 2) (const_int 3)]))
  	  (match_operand:<ssehalfvecmode> 2 "nonimmediate_operand" "vm")))]
    "TARGET_AVX512F"
diff --git a/debian/rules.defs b/debian/rules.defs
index 46d1407..e857ac1 100644
--- a/debian/rules.defs
+++ b/debian/rules.defs
@@ -429,7 +429,7 @@ endif
 # basic config
 
 # allows to wrote backtraces for ICEs
-unstripped_exe = yes
+#unstripped_exe = yes
 
 # common things ---------------
 # build common packages, where package names don't differ in different

-- 
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