[gcc-6] 216/401: * Update to SVN 20160927 (r240553, 6.2.1) from the gcc-6-branch.
Ximin Luo
infinity0 at debian.org
Wed Apr 5 15:49:34 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 c70f9dd8128f97b8491a6189e37b5d72d20c4460
Author: doko <doko at 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>
Date: Tue Sep 27 19:38:57 2016 +0000
* Update to SVN 20160927 (r240553, 6.2.1) from the gcc-6-branch.
git-svn-id: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-6@8985 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
---
debian/changelog | 9 +-
debian/patches/svn-updates.diff | 1347 ++++++++++++++++++++++++++++++++++++++-
2 files changed, 1330 insertions(+), 26 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 75cd176..a92d1a8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,13 +1,16 @@
gcc-6 (6.2.0-5) UNRELEASED; urgency=medium
- * Update to SVN 20160922 (r240342, 6.2.1) from the gcc-6-branch.
+ * Update to SVN 20160927 (r240553, 6.2.1) from the gcc-6-branch.
- Fix PR sanitizer/77396, PR libstdc++/77645, PR libstdc++/77645,
PR target/77326 (AVR), PR target/77349 (PPC), PR middle-end/77594,
PR sanitizer/68260, PR fortran/77516, PR target/69255 (x86),
- PR c++/77553, PR c++/77539, PR fortran/77500.
+ PR c++/77553, PR c++/77539, PR fortran/77500, PR c/77450,
+ PR middle-end/77436, PR tree-optimization/77514, PR middle-end/77544,
+ PR tree-optimization/77514, PR middle-end/77605, PR middle-end/77679,
+ PR tree-optimization/77621, PR target/77621 (x86), PR c++/71979.
* Fix gij installation on hppa. Closes: #838111.
- -- Matthias Klose <doko at debian.org> Thu, 22 Sep 2016 10:21:49 +0200
+ -- Matthias Klose <doko at debian.org> Tue, 27 Sep 2016 21:34:59 +0200
gcc-6 (6.2.0-4) unstable; urgency=medium
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index 32ba079..83b57a7 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 6 branch upto 20160922 (r240342).
+# DP: updates from the 6 branch upto 20160922 (r240553).
last_update()
{
cat > ${dir}LAST_UPDATED <EOF
-Thu Sep 22 10:23:00 CEST 2016
-Thu Sep 22 08:23:00 UTC 2016 (revision 240342)
+Tue Sep 27 20:06:22 CEST 2016
+Tue Sep 27 18:06:22 UTC 2016 (revision 240553)
EOF
}
@@ -96,6 +96,53 @@ Index: libsanitizer/ChangeLog
2016-08-22 Release Manager
* GCC 6.2.0 released.
+Index: libstdc++-v3/configure
+===================================================================
+--- a/src/libstdc++-v3/configure (.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/configure (.../branches/gcc-6-branch)
+@@ -15538,10 +15538,12 @@
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+- # Set atomicity_dir to builtins if all but the long long test above passes.
+- if test "$glibcxx_cv_atomic_bool" = yes \
++ # Set atomicity_dir to builtins if all but the long long test above passes,
++ # or if the builtins were already chosen (e.g. by configure.host).
++ if { test "$glibcxx_cv_atomic_bool" = yes \
+ && test "$glibcxx_cv_atomic_short" = yes \
+- && test "$glibcxx_cv_atomic_int" = yes; then
++ && test "$glibcxx_cv_atomic_int" = yes; } \
++ || test "$atomicity_dir" = "cpu/generic/atomicity_builtins"; then
+
+ $as_echo "#define _GLIBCXX_ATOMIC_BUILTINS 1" >>confdefs.h
+
+@@ -15573,7 +15575,7 @@
+ # unnecessary for this test.
+
+ cat > conftest.$ac_ext << EOF
+-#line 15576 "configure"
++#line 15578 "configure"
+ int main()
+ {
+ _Decimal32 d1;
+@@ -15615,7 +15617,7 @@
+ # unnecessary for this test.
+
+ cat > conftest.$ac_ext << EOF
+-#line 15618 "configure"
++#line 15620 "configure"
+ template<typename T1, typename T2>
+ struct same
+ { typedef T2 type; };
+@@ -15649,7 +15651,7 @@
+ rm -f conftest*
+
+ cat > conftest.$ac_ext << EOF
+-#line 15652 "configure"
++#line 15654 "configure"
+ template<typename T1, typename T2>
+ struct same
+ { typedef T2 type; };
Index: libstdc++-v3/python/libstdcxx/v6/xmethods.py
===================================================================
--- a/src/libstdc++-v3/python/libstdcxx/v6/xmethods.py (.../tags/gcc_6_2_0_release)
@@ -179,6 +226,21 @@ Index: libstdc++-v3/scripts/testsuite_flags.in
CXXFLAGS_config="@SECTION_FLAGS@ @EXTRA_CXX_FLAGS@"
echo ${CXXFLAGS_default} ${CXXFLAGS_config}
;;
+Index: libstdc++-v3/configure.host
+===================================================================
+--- a/src/libstdc++-v3/configure.host (.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/configure.host (.../branches/gcc-6-branch)
+@@ -300,6 +300,10 @@
+ os_include_dir="os/qnx/qnx6.1"
+ c_model=c
+ ;;
++ rtems*)
++ # Use libatomic if necessary and avoid libstdc++ specific atomicity support
++ atomicity_dir="cpu/generic/atomicity_builtins"
++ ;;
+ solaris2)
+ # This too-vague configuration does not provide enough information
+ # to select a ctype include, and thus os_include_dir is a crap shoot.
Index: libstdc++-v3/doc/xml/api.xml
===================================================================
--- a/src/libstdc++-v3/doc/xml/api.xml (.../tags/gcc_6_2_0_release)
@@ -325,11 +387,38 @@ Index: libstdc++-v3/doc/html/api.html
The rendered HTML, as above, is also available for download on the
gcc.gnu.org site in a directory located at
<code class="literal"><URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/></code>.
+Index: libstdc++-v3/include/debug/safe_iterator.h
+===================================================================
+--- a/src/libstdc++-v3/include/debug/safe_iterator.h (.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/include/debug/safe_iterator.h (.../branches/gcc-6-branch)
+@@ -296,7 +296,7 @@
+ _GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(),
+ _M_message(__msg_bad_inc)
+ ._M_iterator(*this, "this"));
+- __gnu_cxx::__scoped_lock(this->_M_get_mutex());
++ __gnu_cxx::__scoped_lock __l(this->_M_get_mutex());
+ ++base();
+ return *this;
+ }
Index: libstdc++-v3/include/std/type_traits
===================================================================
--- a/src/libstdc++-v3/include/std/type_traits (.../tags/gcc_6_2_0_release)
+++ b/src/libstdc++-v3/include/std/type_traits (.../branches/gcc-6-branch)
-@@ -994,6 +994,9 @@
+@@ -154,6 +154,13 @@
+ : public integral_constant<bool, !_Pp::value>
+ { };
+
++ struct __nonesuch {
++ __nonesuch() = delete;
++ ~__nonesuch() = delete;
++ __nonesuch(__nonesuch const&) = delete;
++ void operator=(__nonesuch const&) = delete;
++ };
++
+ #if __cplusplus > 201402L
+
+ #define __cpp_lib_logical_traits 201510
+@@ -994,6 +1001,9 @@
is_function<_From>>>::value>
struct __is_base_to_derived_ref;
@@ -339,7 +428,7 @@ Index: libstdc++-v3/include/std/type_traits
// Detect whether we have a downcast situation during
// reference binding.
template<typename _From, typename _To>
-@@ -1004,7 +1007,8 @@
+@@ -1004,7 +1014,8 @@
typedef typename remove_cv<typename remove_reference<_To
>::type>::type __dst_t;
typedef __and_<__not_<is_same<__src_t, __dst_t>>,
@@ -349,6 +438,362 @@ Index: libstdc++-v3/include/std/type_traits
static constexpr bool value = type::value;
};
+Index: libstdc++-v3/include/bits/stl_pair.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/stl_pair.h (.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/include/bits/stl_pair.h (.../branches/gcc-6-branch)
+@@ -88,53 +88,96 @@
+ // Concept utility functions, reused in conditionally-explicit
+ // constructors.
+ // See PR 70437, don't look at is_constructible or
+- // is_convertible if the decayed types are the same to
++ // is_convertible if the types are the same to
+ // avoid querying those properties for incomplete types.
+- template <typename _T1, typename _T2, typename _U1, typename _U2>
+- constexpr bool _ConstructiblePair()
+- {
+- return __and_<__or_<is_same<typename decay<_T1>::type,
+- typename decay<_U1>::type>,
+- is_constructible<_T1, const _U1&>>,
+- __or_<is_same<typename decay<_T2>::type,
+- typename decay<_U2>::type>,
+- is_constructible<_T2, const _U2&>>>::value;
+- }
++ template <bool, typename _T1, typename _T2>
++ struct _PCC
++ {
++ template <typename _U1, typename _U2>
++ static constexpr bool _ConstructiblePair()
++ {
++ return __and_<is_constructible<_T1, const _U1&>,
++ is_constructible<_T2, const _U2&>>::value;
++ }
+
+- template <typename _T1, typename _T2, typename _U1, typename _U2>
+- constexpr bool _ImplicitlyConvertiblePair()
+- {
+- return __and_<__or_<is_same<typename decay<_T1>::type,
+- typename decay<_U1>::type>,
+- is_convertible<const _U1&, _T1>>,
+- __or_<is_same<typename decay<_T2>::type,
+- typename decay<_U2>::type>,
+- is_convertible<const _U2&, _T2>>>::value;
+- }
++ template <typename _U1, typename _U2>
++ static constexpr bool _ImplicitlyConvertiblePair()
++ {
++ return __and_<is_convertible<const _U1&, _T1>,
++ is_convertible<const _U2&, _T2>>::value;
++ }
+
+- template <typename _T1, typename _T2, typename _U1, typename _U2>
+- constexpr bool _MoveConstructiblePair()
+- {
+- return __and_<__or_<is_same<typename decay<_T1>::type,
+- typename decay<_U1>::type>,
+- is_constructible<_T1, _U1&&>>,
+- __or_<is_same<typename decay<_T2>::type,
+- typename decay<_U2>::type>,
+- is_constructible<_T2, _U2&&>>>::value;
+- }
++ template <typename _U1, typename _U2>
++ static constexpr bool _MoveConstructiblePair()
++ {
++ return __and_<is_constructible<_T1, _U1&&>,
++ is_constructible<_T2, _U2&&>>::value;
++ }
+
+- template <typename _T1, typename _T2, typename _U1, typename _U2>
+- constexpr bool _ImplicitlyMoveConvertiblePair()
+- {
+- return __and_<__or_<is_same<typename decay<_T1>::type,
+- typename decay<_U1>::type>,
+- is_convertible<_U1&&, _T1>>,
+- __or_<is_same<typename decay<_T2>::type,
+- typename decay<_U2>::type>,
+- is_convertible<_U2&&, _T2>>>::value;
+- }
++ template <typename _U1, typename _U2>
++ static constexpr bool _ImplicitlyMoveConvertiblePair()
++ {
++ return __and_<is_convertible<_U1&&, _T1>,
++ is_convertible<_U2&&, _T2>>::value;
++ }
+
++ template <bool __implicit, typename _U1, typename _U2>
++ static constexpr bool _CopyMovePair()
++ {
++ using __do_converts = __and_<is_convertible<const _U1&, _T1>,
++ is_convertible<_U2&&, _T2>>;
++ using __converts = typename conditional<__implicit,
++ __do_converts,
++ __not_<__do_converts>>::type;
++ return __and_<is_constructible<_T1, const _U1&>,
++ is_constructible<_T2, _U2&&>,
++ __converts
++ >::value;
++ }
+
++ template <bool __implicit, typename _U1, typename _U2>
++ static constexpr bool _MoveCopyPair()
++ {
++ using __do_converts = __and_<is_convertible<_U1&&, _T1>,
++ is_convertible<const _U2&, _T2>>;
++ using __converts = typename conditional<__implicit,
++ __do_converts,
++ __not_<__do_converts>>::type;
++ return __and_<is_constructible<_T1, _U1&&>,
++ is_constructible<_T2, const _U2&&>,
++ __converts
++ >::value;
++ }
++ };
++
++ template <typename _T1, typename _T2>
++ struct _PCC<false, _T1, _T2>
++ {
++ template <typename _U1, typename _U2>
++ static constexpr bool _ConstructiblePair()
++ {
++ return false;
++ }
++
++ template <typename _U1, typename _U2>
++ static constexpr bool _ImplicitlyConvertiblePair()
++ {
++ return false;
++ }
++
++ template <typename _U1, typename _U2>
++ static constexpr bool _MoveConstructiblePair()
++ {
++ return false;
++ }
++
++ template <typename _U1, typename _U2>
++ static constexpr bool _ImplicitlyMoveConvertiblePair()
++ {
++ return false;
++ }
++ };
++
+ #endif
+
+ /**
+@@ -186,16 +229,23 @@
+ pair(const _T1& __a, const _T2& __b)
+ : first(__a), second(__b) { }
+ #else
++ // Shortcut for constraining the templates that don't take pairs.
++ using _PCCP = _PCC<true, _T1, _T2>;
++
+ template<typename _U1 = _T1, typename _U2=_T2, typename
+- enable_if<_ConstructiblePair<_T1, _T2, _U1, _U2>()
+- && _ImplicitlyConvertiblePair<_T1, _T2, _U1, _U2>(),
++ enable_if<_PCCP::template
++ _ConstructiblePair<_U1, _U2>()
++ && _PCCP::template
++ _ImplicitlyConvertiblePair<_U1, _U2>(),
+ bool>::type=true>
+ constexpr pair(const _T1& __a, const _T2& __b)
+ : first(__a), second(__b) { }
+
+ template<typename _U1 = _T1, typename _U2=_T2, typename
+- enable_if<_ConstructiblePair<_T1, _T2, _U1, _U2>()
+- && !_ImplicitlyConvertiblePair<_T1, _T2, _U1, _U2>(),
++ enable_if<_PCCP::template
++ _ConstructiblePair<_U1, _U2>()
++ && !_PCCP::template
++ _ImplicitlyConvertiblePair<_U1, _U2>(),
+ bool>::type=false>
+ explicit constexpr pair(const _T1& __a, const _T2& __b)
+ : first(__a), second(__b) { }
+@@ -207,16 +257,26 @@
+ pair(const pair<_U1, _U2>& __p)
+ : first(__p.first), second(__p.second) { }
+ #else
++ // Shortcut for constraining the templates that take pairs.
++ template <typename _U1, typename _U2>
++ using _PCCFP = _PCC<!is_same<_T1, _U1>::value
++ || !is_same<_T2, _U2>::value,
++ _T1, _T2>;
++
+ template<typename _U1, typename _U2, typename
+- enable_if<_ConstructiblePair<_T1, _T2, _U1, _U2>()
+- && _ImplicitlyConvertiblePair<_T1, _T2, _U1, _U2>(),
+- bool>::type=true>
++ enable_if<_PCCFP<_U1, _U2>::template
++ _ConstructiblePair<_U1, _U2>()
++ && _PCCFP<_U1, _U2>::template
++ _ImplicitlyConvertiblePair<_U1, _U2>(),
++ bool>::type=true>
+ constexpr pair(const pair<_U1, _U2>& __p)
+ : first(__p.first), second(__p.second) { }
+
+ template<typename _U1, typename _U2, typename
+- enable_if<_ConstructiblePair<_T1, _T2, _U1, _U2>()
+- && !_ImplicitlyConvertiblePair<_T1, _T2, _U1, _U2>(),
++ enable_if<_PCCFP<_U1, _U2>::template
++ _ConstructiblePair<_U1, _U2>()
++ && !_PCCFP<_U1, _U2>::template
++ _ImplicitlyConvertiblePair<_U1, _U2>(),
+ bool>::type=false>
+ explicit constexpr pair(const pair<_U1, _U2>& __p)
+ : first(__p.first), second(__p.second) { }
+@@ -226,57 +286,47 @@
+
+ // DR 811.
+ template<typename _U1, typename
+- enable_if<_ConstructiblePair<_T2, _T2, _T2, _T2>()
+- && _MoveConstructiblePair<_T1, _T2, _U1, _T2>()
+- && _ImplicitlyConvertiblePair<_T2, _T2, _T2, _T2>()
+- && _ImplicitlyMoveConvertiblePair<_T1, _T2,
+- _U1, _T2>(),
++ enable_if<_PCCP::template
++ _MoveCopyPair<true, _U1, _T2>(),
+ bool>::type=true>
+ constexpr pair(_U1&& __x, const _T2& __y)
+ : first(std::forward<_U1>(__x)), second(__y) { }
+
+ template<typename _U1, typename
+- enable_if<_ConstructiblePair<_T2, _T2, _T2, _T2>()
+- && _MoveConstructiblePair<_T1, _T2, _U1, _T2>()
+- && (!_ImplicitlyConvertiblePair<_T2, _T2, _T2, _T2>()
+- || !_ImplicitlyMoveConvertiblePair<_T1, _T2,
+- _U1, _T2>()),
++ enable_if<_PCCP::template
++ _MoveCopyPair<false, _U1, _T2>(),
+ bool>::type=false>
+ explicit constexpr pair(_U1&& __x, const _T2& __y)
+ : first(std::forward<_U1>(__x)), second(__y) { }
+
+ template<typename _U2, typename
+- enable_if<_ConstructiblePair<_T1, _T1, _T1, _T1>()
+- && _MoveConstructiblePair<_T1, _T2, _T1, _U2>()
+- && _ImplicitlyConvertiblePair<_T1, _T1, _T1, _T1>()
+- && _ImplicitlyMoveConvertiblePair<_T1, _T2,
+- _T1, _U2>(),
++ enable_if<_PCCP::template
++ _CopyMovePair<true, _T1, _U2>(),
+ bool>::type=true>
+ constexpr pair(const _T1& __x, _U2&& __y)
+ : first(__x), second(std::forward<_U2>(__y)) { }
+
+ template<typename _U2, typename
+- enable_if<_ConstructiblePair<_T1, _T1, _T1, _T1>()
+- && _MoveConstructiblePair<_T1, _T2, _T1, _U2>()
+- && (!_ImplicitlyConvertiblePair<_T1, _T1, _T1, _T1>()
+- || !_ImplicitlyMoveConvertiblePair<_T1, _T2,
+- _T1, _U2>()),
++ enable_if<_PCCP::template
++ _CopyMovePair<false, _T1, _U2>(),
+ bool>::type=false>
+ explicit pair(const _T1& __x, _U2&& __y)
+ : first(__x), second(std::forward<_U2>(__y)) { }
+
+ template<typename _U1, typename _U2, typename
+- enable_if<_MoveConstructiblePair<_T1, _T2, _U1, _U2>()
+- && _ImplicitlyMoveConvertiblePair<_T1, _T2,
+- _U1, _U2>(),
++ enable_if<_PCCP::template
++ _MoveConstructiblePair<_U1, _U2>()
++ && _PCCP::template
++ _ImplicitlyMoveConvertiblePair<_U1, _U2>(),
+ bool>::type=true>
+ constexpr pair(_U1&& __x, _U2&& __y)
+ : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
+
+ template<typename _U1, typename _U2, typename
+- enable_if<_MoveConstructiblePair<_T1, _T2, _U1, _U2>()
+- && !_ImplicitlyMoveConvertiblePair<_T1, _T2,
+- _U1, _U2>(),
++ enable_if<_PCCP::template
++ _MoveConstructiblePair<_U1, _U2>()
++ && !_PCCP::template
++ _ImplicitlyMoveConvertiblePair<_U1, _U2>(),
+ bool>::type=false>
+ explicit constexpr pair(_U1&& __x, _U2&& __y)
+ : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
+@@ -283,9 +333,10 @@
+
+
+ template<typename _U1, typename _U2, typename
+- enable_if<_MoveConstructiblePair<_T1, _T2, _U1, _U2>()
+- && _ImplicitlyMoveConvertiblePair<_T1, _T2,
+- _U1, _U2>(),
++ enable_if<_PCCFP<_U1, _U2>::template
++ _MoveConstructiblePair<_U1, _U2>()
++ && _PCCFP<_U1, _U2>::template
++ _ImplicitlyMoveConvertiblePair<_U1, _U2>(),
+ bool>::type=true>
+ constexpr pair(pair<_U1, _U2>&& __p)
+ : first(std::forward<_U1>(__p.first)),
+@@ -292,9 +343,10 @@
+ second(std::forward<_U2>(__p.second)) { }
+
+ template<typename _U1, typename _U2, typename
+- enable_if<_MoveConstructiblePair<_T1, _T2, _U1, _U2>()
+- && !_ImplicitlyMoveConvertiblePair<_T1, _T2,
+- _U1, _U2>(),
++ enable_if<_PCCFP<_U1, _U2>::template
++ _MoveConstructiblePair<_U1, _U2>()
++ && !_PCCFP<_U1, _U2>::template
++ _ImplicitlyMoveConvertiblePair<_U1, _U2>(),
+ bool>::type=false>
+ explicit constexpr pair(pair<_U1, _U2>&& __p)
+ : first(std::forward<_U1>(__p.first)),
+@@ -304,7 +356,10 @@
+ pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>);
+
+ pair&
+- operator=(const pair& __p)
++ operator=(typename conditional<
++ __and_<is_copy_assignable<_T1>,
++ is_copy_assignable<_T2>>::value,
++ const pair&, const __nonesuch&>::type __p)
+ {
+ first = __p.first;
+ second = __p.second;
+@@ -312,7 +367,16 @@
+ }
+
+ pair&
+- operator=(pair&& __p)
++ operator=(typename conditional<
++ __not_<__and_<is_copy_assignable<_T1>,
++ is_copy_assignable<_T2>>>::value,
++ const pair&, const __nonesuch&>::type __p) = delete;
++
++ pair&
++ operator=(typename conditional<
++ __and_<is_move_assignable<_T1>,
++ is_move_assignable<_T2>>::value,
++ pair&&, __nonesuch&&>::type __p)
+ noexcept(__and_<is_nothrow_move_assignable<_T1>,
+ is_nothrow_move_assignable<_T2>>::value)
+ {
+@@ -322,7 +386,9 @@
+ }
+
+ template<typename _U1, typename _U2>
+- pair&
++ typename enable_if<__and_<is_assignable<_T1&, const _U1&>,
++ is_assignable<_T2&, const _U2&>>::value,
++ pair&>::type
+ operator=(const pair<_U1, _U2>& __p)
+ {
+ first = __p.first;
+@@ -331,7 +397,9 @@
+ }
+
+ template<typename _U1, typename _U2>
+- pair&
++ typename enable_if<__and_<is_assignable<_T1&, _U1&&>,
++ is_assignable<_T2&, _U2&&>>::value,
++ pair&>::type
+ operator=(pair<_U1, _U2>&& __p)
+ {
+ first = std::forward<_U1>(__p.first);
Index: libstdc++-v3/include/bits/stl_iterator.h
===================================================================
--- a/src/libstdc++-v3/include/bits/stl_iterator.h (.../tags/gcc_6_2_0_release)
@@ -459,7 +904,48 @@ 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,65 @@
+@@ -1,3 +1,106 @@
++2016-09-27 Jonathan Wakely <jwakely at redhat.com>
++
++ * include/debug/safe_iterator.h (_Safe_iterator::operator++()): Fix
++ lifetime of lock.
++
++2015-09-27 Sebastian Huber <sebastian.huber at embedded-brains.de>
++
++ Backport from mainline
++ 2015-09-23 Sebastian Huber <sebastian.huber at embedded-brains.de>
++
++ * config/cpu/m68k/atomicity.h: Adjust comment.
++ * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Honor
++ explicit atomicity_dir setup via configure.host.
++ * configure.host (rtems-*): Set atomicity_dir.
++ * configure: Regenerate.
++
++2016-09-26 Ville Voutilainen <ville.voutilainen at gmail.com>
++
++ Backport from mainline
++ 2016-09-21 Ville Voutilainen <ville.voutilainen at gmail.com>
++
++ Implement LWG 2729 for pair.
++ * include/bits/stl_pair.h (_PCC): New.
++ (_ConstructiblePair, _ImplicitlyConvertiblePair):
++ Turn into static member functions of _PCC.
++ (_MoveConstructiblePair, _ImplicitlyMoveConvertiblePair): Likewise.
++ (_PCCP): New.
++ (pair(const _T1&, const _T2&)): Adjust.
++ (_PCCFP): New.
++ (pair(const pair<_U1, _U2>&)): Adjust.
++ (pair(_U1&&, const _T2&)): Likewise.
++ (pair(const _T1&, _U2&&)): Likewise.
++ (pair(_U1&&, _U2&&)): Likewise.
++ (pair(pair<_U1, _U2>&&)): Likewise.
++ (operator=(const pair&)): Make conditionally deleted.
++ (operator=(pair&&)): Make conditionally suppressed.
++ (operator=(const pair<_U1, _U2>&)): Constrain.
++ (operator=(pair<_U1, _U2>&&): Likewise.
++ * include/std/type_traits (__nonesuch): New.
++ * testsuite/20_util/pair/traits.cc: New.
++
+2016-09-20 Jonathan Wakely <jwakely at redhat.com>
+
+ * python/libstdcxx/v6/xmethods.py (DequeWorkerBase.__init__)
@@ -607,6 +1093,88 @@ Index: libstdc++-v3/testsuite/23_containers/map/77334.cc
+ std::map<int, A> m1, m2;
+ m2 = std::move(m1);
+}
+Index: libstdc++-v3/testsuite/20_util/pair/traits.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/pair/traits.cc (.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/pair/traits.cc (.../branches/gcc-6-branch)
+@@ -0,0 +1,77 @@
++// { dg-do compile }
++// { dg-options "-std=gnu++11" }
++
++// 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/>.
++
++#include <utility>
++
++#include <type_traits>
++#include <memory>
++
++using namespace std;
++
++struct Poison
++{
++ Poison(Poison&&) = delete;
++};
++
++struct ThrowingCopy
++{
++ ThrowingCopy(const ThrowingCopy&) {}
++ ThrowingCopy& operator=(const ThrowingCopy&) {}
++};
++
++int main()
++{
++ static_assert(!is_copy_constructible<Poison>::value, "");
++ static_assert(!is_move_constructible<Poison>::value, "");
++ static_assert(!is_copy_assignable<Poison>::value, "");
++ static_assert(!is_move_assignable<Poison>::value, "");
++ static_assert(!is_copy_constructible<std::pair<int, Poison>>::value,
++ "");
++ static_assert(!is_move_constructible<std::pair<int, Poison>>::value,
++ "");
++ static_assert(!is_copy_assignable<std::pair<int, Poison>>::value, "");
++ static_assert(!is_move_assignable<std::pair<int, Poison>>::value, "");
++ static_assert(!is_constructible<std::pair<int, Poison>&,
++ std::pair<char, Poison>&>::value, "");
++ static_assert(!is_assignable<std::pair<int, Poison>&,
++ std::pair<char, Poison>&>::value, "");
++ static_assert(!is_constructible<std::pair<int, Poison>&,
++ std::pair<char, Poison>>::value, "");
++ static_assert(!is_assignable<std::pair<int, Poison>&,
++ std::pair<char, Poison>>::value, "");
++ static_assert(!is_copy_constructible<std::pair<ThrowingCopy,
++ std::unique_ptr<int>>>::value,
++ "");
++ static_assert(is_move_constructible<std::pair<ThrowingCopy,
++ std::unique_ptr<int>>>::value,
++ "");
++ static_assert(!is_nothrow_move_constructible<std::pair<ThrowingCopy,
++ std::unique_ptr<int>>>::value,
++ "");
++ static_assert(!is_copy_assignable<std::pair<ThrowingCopy,
++ std::unique_ptr<int>>>::value,
++ "");
++ static_assert(is_move_assignable<std::pair<ThrowingCopy,
++ std::unique_ptr<int>>>::value,
++ "");
++ static_assert(!is_nothrow_move_assignable<std::pair<ThrowingCopy,
++ std::unique_ptr<int>>>::value,
++ "");
++}
Index: libstdc++-v3/testsuite/20_util/tuple/77395.cc
===================================================================
--- a/src/libstdc++-v3/testsuite/20_util/tuple/77395.cc (.../tags/gcc_6_2_0_release)
@@ -668,7 +1236,7 @@ Index: libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
// { dg-error "required from here" "" { target *-*-* } 42 }
-// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1924 }
-+// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1928 }
++// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1935 }
Index: libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
===================================================================
--- a/src/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc (.../tags/gcc_6_2_0_release)
@@ -679,8 +1247,8 @@ Index: libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
-// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1820 }
-// { dg-error "declaration of" "" { target *-*-* } 1777 }
-+// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1824 }
-+// { dg-error "declaration of" "" { target *-*-* } 1781 }
++// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1831 }
++// { dg-error "declaration of" "" { target *-*-* } 1788 }
Index: libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
===================================================================
--- a/src/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc (.../tags/gcc_6_2_0_release)
@@ -690,7 +1258,7 @@ Index: libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
// <http://www.gnu.org/licenses/>.
-// { dg-error "static assertion failed" "" { target *-*-* } 2259 }
-+// { dg-error "static assertion failed" "" { target *-*-* } 2263 }
++// { dg-error "static assertion failed" "" { target *-*-* } 2270 }
#include <utility>
@@ -769,6 +1337,40 @@ Index: libstdc++-v3/testsuite/20_util/is_constructible/77395.cc
+ derived&& d2(std::move(b));
+ static_assert(std::is_constructible<derived&&, base&&>::value, "");
+}
+Index: libstdc++-v3/config/cpu/m68k/atomicity.h
+===================================================================
+--- a/src/libstdc++-v3/config/cpu/m68k/atomicity.h (.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/config/cpu/m68k/atomicity.h (.../branches/gcc-6-branch)
+@@ -48,6 +48,9 @@
+ }
+
+ #elif defined(__rtems__)
++ // This code is only provided for reference. RTEMS uses now the atomic
++ // builtins and libatomic. See configure.host.
++ //
+ // TAS/JBNE is unsafe on systems with strict priority-based scheduling.
+ // Disable interrupts, which we can do only from supervisor mode.
+ _Atomic_word
+Index: libstdc++-v3/acinclude.m4
+===================================================================
+--- a/src/libstdc++-v3/acinclude.m4 (.../tags/gcc_6_2_0_release)
++++ b/src/libstdc++-v3/acinclude.m4 (.../branches/gcc-6-branch)
+@@ -3489,10 +3489,12 @@
+ CXXFLAGS="$old_CXXFLAGS"
+ AC_LANG_RESTORE
+
+- # Set atomicity_dir to builtins if all but the long long test above passes.
+- if test "$glibcxx_cv_atomic_bool" = yes \
++ # Set atomicity_dir to builtins if all but the long long test above passes,
++ # or if the builtins were already chosen (e.g. by configure.host).
++ if { test "$glibcxx_cv_atomic_bool" = yes \
+ && test "$glibcxx_cv_atomic_short" = yes \
+- && test "$glibcxx_cv_atomic_int" = yes; then
++ && test "$glibcxx_cv_atomic_int" = yes; } \
++ || test "$atomicity_dir" = "cpu/generic/atomicity_builtins"; then
+ AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS, 1,
+ [Define if the compiler supports C++11 atomics.])
+ atomicity_dir=cpu/generic/atomicity_builtins
Index: ChangeLog
===================================================================
--- a/src/ChangeLog (.../tags/gcc_6_2_0_release)
@@ -895,7 +1497,16 @@ Index: gcc/c-family/ChangeLog
===================================================================
--- a/src/gcc/c-family/ChangeLog (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/c-family/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,12 @@
+@@ -1,3 +1,21 @@
++2016-09-27 Richard Biener <rguenther at suse.de>
++
++ Backport from mainline
++ 2016-09-06 Richard Biener <rguenther at suse.de>
++
++ PR c/77450
++ * c-common.c (c_common_mark_addressable_vec): Handle
++ COMPOUND_LITERAL_EXPR.
++
+2016-09-13 Tom de Vries <tom at codesourcery.com>
+
+ backport from trunk:
@@ -912,7 +1523,18 @@ Index: gcc/c-family/c-common.c
===================================================================
--- a/src/gcc/c-family/c-common.c (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/c-family/c-common.c (.../branches/gcc-6-branch)
-@@ -12011,7 +12011,7 @@
+@@ -10679,7 +10679,9 @@
+ {
+ while (handled_component_p (t))
+ t = TREE_OPERAND (t, 0);
+- if (!VAR_P (t) && TREE_CODE (t) != PARM_DECL)
++ if (!VAR_P (t)
++ && TREE_CODE (t) != PARM_DECL
++ && TREE_CODE (t) != COMPOUND_LITERAL_EXPR)
+ return;
+ TREE_ADDRESSABLE (t) = 1;
+ }
+@@ -12011,7 +12013,7 @@
{
if (x == error_mark_node)
return;
@@ -921,13 +1543,83 @@ Index: gcc/c-family/c-common.c
{
if (TYPE_NAME (TREE_TYPE (x)) == 0)
TYPE_NAME (TREE_TYPE (x)) = x;
+Index: gcc/java/class.c
+===================================================================
+--- a/src/gcc/java/class.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/java/class.c (.../branches/gcc-6-branch)
+@@ -2365,6 +2365,7 @@
+ base_decl = build_decl (input_location,
+ FIELD_DECL, NULL_TREE, super_class);
+ DECL_IGNORED_P (base_decl) = 1;
++ DECL_CONTEXT (base_decl) = this_class;
+ DECL_CHAIN (base_decl) = TYPE_FIELDS (this_class);
+ TYPE_FIELDS (this_class) = base_decl;
+ DECL_SIZE (base_decl) = TYPE_SIZE (super_class);
+Index: gcc/java/mangle.c
+===================================================================
+--- a/src/gcc/java/mangle.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/java/mangle.c (.../branches/gcc-6-branch)
+@@ -74,15 +74,23 @@
+ void
+ java_mangle_decl (tree decl)
+ {
+- /* A copy of the check from the beginning of lhd_set_decl_assembler_name.
+- Only FUNCTION_DECLs and VAR_DECLs for variables with static storage
+- duration need a real DECL_ASSEMBLER_NAME. */
++ /* A copy of the check from the beginning of lhd_set_decl_assembler_name. */
++
++ /* set_decl_assembler_name may be called on TYPE_DECL to record ODR
++ name for C++ types. By default types have no ODR names. */
++ if (TREE_CODE (decl) == TYPE_DECL)
++ return;
++
++ /* The language-independent code should never use the
++ DECL_ASSEMBLER_NAME for lots of DECLs. Only FUNCTION_DECLs and
++ VAR_DECLs for variables with static storage duration need a real
++ DECL_ASSEMBLER_NAME. */
+ gcc_assert (TREE_CODE (decl) == FUNCTION_DECL
+ || (TREE_CODE (decl) == VAR_DECL
+ && (TREE_STATIC (decl)
+ || DECL_EXTERNAL (decl)
+ || TREE_PUBLIC (decl))));
+-
++
+ /* Mangling only applies to class members. */
+ if (DECL_CONTEXT (decl) && TYPE_P (DECL_CONTEXT (decl)))
+ {
+Index: gcc/java/ChangeLog
+===================================================================
+--- a/src/gcc/java/ChangeLog (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/java/ChangeLog (.../branches/gcc-6-branch)
+@@ -1,3 +1,8 @@
++2016-09-22 Richard Biener <rguenther at suse.de>
++
++ * class.c (push_super_field): Set DECL_CONTEXT.
++ * mangle.c (java_mangle_decl): Re-sync with lhd_set_decl_assembler_name.
++
+ 2016-08-22 Release Manager
+
+ * GCC 6.2.0 released.
Index: gcc/DATESTAMP
===================================================================
--- a/src/gcc/DATESTAMP (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/DATESTAMP (.../branches/gcc-6-branch)
@@ -1 +1 @@
-20160822
-+20160922
++20160927
+Index: gcc/configure
+===================================================================
+--- a/src/gcc/configure (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/configure (.../branches/gcc-6-branch)
+@@ -26743,7 +26743,7 @@
+ elif test x$gcc_cv_as != x; then
+ $as_echo ' .dwsect 0xA0000
+ Lframe..0:
+- .vbyte 4,Lframe..0:
++ .vbyte 4,Lframe..0
+ ' > conftest.s
+ if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
Index: gcc/internal-fn.c
===================================================================
--- a/src/gcc/internal-fn.c (.../tags/gcc_6_2_0_release)
@@ -948,7 +1640,27 @@ Index: gcc/fold-const.c
===================================================================
--- a/src/gcc/fold-const.c (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/fold-const.c (.../branches/gcc-6-branch)
-@@ -14093,7 +14093,6 @@
+@@ -837,15 +837,16 @@
+ var = negate_expr (var);
+ }
+ }
++ else if (TREE_CONSTANT (in))
++ *conp = in;
+ else if (TREE_CODE (in) == BIT_NOT_EXPR
+ && code == PLUS_EXPR)
+ {
+- /* -X - 1 is folded to ~X, undo that here. */
++ /* -X - 1 is folded to ~X, undo that here. Do _not_ do this
++ when IN is constant. */
+ *minus_litp = build_one_cst (TREE_TYPE (in));
+ var = negate_expr (TREE_OPERAND (in, 0));
+ }
+- else if (TREE_CONSTANT (in))
+- *conp = in;
+ else
+ var = in;
+
+@@ -14093,7 +14094,6 @@
if (!VECTOR_TYPE_P (type))
{
/* Have vector comparison with scalar boolean result. */
@@ -956,7 +1668,7 @@ Index: gcc/fold-const.c
gcc_assert ((code == EQ_EXPR || code == NE_EXPR)
&& VECTOR_CST_NELTS (op0) == VECTOR_CST_NELTS (op1));
for (unsigned i = 0; i < VECTOR_CST_NELTS (op0); i++)
-@@ -14101,11 +14100,12 @@
+@@ -14101,11 +14101,12 @@
tree elem0 = VECTOR_CST_ELT (op0, i);
tree elem1 = VECTOR_CST_ELT (op1, i);
tree tmp = fold_relational_const (code, type, elem0, elem1);
@@ -988,11 +1700,139 @@ Index: gcc/omp-low.c
max_vf = 1;
else if (c && compare_tree_int (OMP_CLAUSE_SAFELEN_EXPR (c),
max_vf) == -1)
+Index: gcc/tree-chrec.c
+===================================================================
+--- a/src/gcc/tree-chrec.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/tree-chrec.c (.../branches/gcc-6-branch)
+@@ -484,7 +484,6 @@
+ {
+ bool overflow;
+ unsigned int i;
+- tree res;
+
+ /* Handle the most frequent cases. */
+ if (k == 0)
+@@ -492,18 +491,20 @@
+ if (k == 1)
+ return fold_convert (type, n);
+
++ widest_int num = wi::to_widest (n);
++
+ /* Check that k <= n. */
+- if (wi::ltu_p (n, k))
++ if (wi::ltu_p (num, k))
+ return NULL_TREE;
+
+ /* Denominator = 2. */
+- wide_int denom = wi::two (TYPE_PRECISION (TREE_TYPE (n)));
++ widest_int denom = 2;
+
+ /* Index = Numerator-1. */
+- wide_int idx = wi::sub (n, 1);
++ widest_int idx = num - 1;
+
+ /* Numerator = Numerator*Index = n*(n-1). */
+- wide_int num = wi::smul (n, idx, &overflow);
++ num = wi::smul (num, idx, &overflow);
+ if (overflow)
+ return NULL_TREE;
+
+@@ -522,9 +523,10 @@
+ }
+
+ /* Result = Numerator / Denominator. */
+- wide_int di_res = wi::udiv_trunc (num, denom);
+- res = wide_int_to_tree (type, di_res);
+- return int_fits_type_p (res, type) ? res : NULL_TREE;
++ num = wi::udiv_trunc (num, denom);
++ if (! wi::fits_to_tree_p (num, type))
++ return NULL_TREE;
++ return wide_int_to_tree (type, num);
+ }
+
+ /* Helper function. Use the Newton's interpolating formula for
Index: gcc/ChangeLog
===================================================================
--- a/src/gcc/ChangeLog (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,303 @@
+@@ -1,3 +1,380 @@
++2016-09-27 David Edelsohn <dje.gcc at gmail.com>
++
++ Backport from mainline
++ 2016-09-27 David Edelsohn <dje.gcc at gmail.com>
++
++ * config/rs6000/rs6000.c (rs6000_output_symbol): Don't modify
++ VAR_DECL string.
++
++ 2016-09-24 David Edelsohn <dje.gcc at gmail.com>
++
++ * configure.ac (gcc_cv_as_aix_dwloc): Fix typo in assembly fragment.
++ * configure: Regenerate.
++
++2016-09-27 Richard Biener <rguenther at suse.de>
++
++ Backport from mainline
++ 2016-09-01 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/77436
++ * tree-chrec.c (tree_fold_binomial): Use widest_int, properly
++ check whether the result fits the desired result type.
++
++ 2016-09-19 Richard Biener <rguenther at suse.de>
++
++ PR tree-optimization/77514
++ * tree-ssa-pre.c (create_expression_by_pieces): Optimize
++ search for folded stmt.
++
++ 2016-09-15 Richard Biener <rguenther at suse.de>
++
++ PR tree-optimization/77514
++ * tree-ssa-pre.c (create_expression_by_pieces): Handle garbage
++ only forced_stmts sequence.
++
++ 2016-09-15 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/77544
++ * fold-const.c (split_tree): Do not split constant ~X.
++
++ 2016-09-19 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/77605
++ * tree-data-ref.c (analyze_subscript_affine_affine): Use the
++ proper niter to bound the loops.
++
++ 2016-09-22 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/77679
++ * gimple-fold.c (fold_array_ctor_reference): Turn asserts into
++ fold fails.
++
++2016-09-25 Uros Bizjak <ubizjak at gmail.com>
++
++ Backport from mainline
++ 2016-09-21 Richard Biener <rguenther at suse.de>
++ Jakub Jelinek <jakub at redhat.com>
++
++ PR tree-optimization/77621
++ * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Split
++ group at non-vectorizable stmts.
++
++ Backport from mainline
++ 2016-09-20 Uros Bizjak <ubizjak at gmail.com>
++
++ PR target/77621
++ * config/i386/i386.c (ix86_preferred_simd_mode) <case DFmode>:
++ Don't return word_mode for !TARGET_VECTORIZE_DOUBLE.
++ (ix86_add_stmt_cost): Penalize DFmode vector operations
++ for !TARGET_VECTORIZE_DOUBLE.
++
++2016-09-22 Senthil Kumar Selvaraj <senthil_kumar.selvaraj at atmel.com>
++
++ Backport from 2016-09-22 trunk r240388.
++
++ * config/avr/avr.c (avr_rtx_costs_1): Handle DImode MULT.
++ (avr_address_cost): Replace 61 with MAX_LD_OFFSET(mode).
++
+2016-09-21 Segher Boessenkool <segher at kernel.crashing.org>
+
+ * doc/rtl.texi (JUMP_LABEL): Document RETURN and SIMPLE_RETURN values.
@@ -1296,7 +2136,7 @@ Index: gcc/ChangeLog
2016-08-22 Release Manager
* GCC 6.2.0 released.
-@@ -205,9 +509,9 @@
+@@ -205,9 +586,9 @@
2016-08-09 Martin Jambor <mjambor at suse.cz>
@@ -1372,6 +2212,16 @@ Index: gcc/testsuite/gcc.target/avr/torture/pr77326.c
+ __builtin_exit (0);
+ return 0;
+}
+Index: gcc/testsuite/gcc.target/i386/vect-double-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/vect-double-2.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/vect-double-2.c (.../branches/gcc-6-branch)
+@@ -31,4 +31,4 @@
+ }
+ }
+
+-/* { dg-final { scan-tree-dump-not "vectorized 1 loops" "vect" } } */
++/* { dg-final { scan-tree-dump-times "Vectorized loops: 1" 1 "vect" } } */
Index: gcc/testsuite/gcc.target/i386/pr71077.c
===================================================================
--- a/src/gcc/testsuite/gcc.target/i386/pr71077.c (.../tags/gcc_6_2_0_release)
@@ -1551,6 +2401,23 @@ Index: gcc/testsuite/gcc.target/i386/pr77403.c
+{
+ v ^= (V){1};
+}
+Index: gcc/testsuite/gcc.target/i386/pr77621.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr77621.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr77621.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,12 @@
++/* { dg-do compile } */
++/* { dg-options "-O3 -mtune=atom -msse2 -mno-avx -fdump-tree-vect-stats" } */
++
++void
++foo (double *x, int *y)
++{
++ int i;
++ for (i = 0; i < 8; i++)
++ x[i] -= y[i] * x[i + 1];
++}
++
++/* { dg-final { scan-tree-dump-not "Vectorized loops: 1" "vect" } } */
Index: gcc/testsuite/gcc.target/i386/pr77594.c
===================================================================
--- a/src/gcc/testsuite/gcc.target/i386/pr77594.c (.../tags/gcc_6_2_0_release)
@@ -1863,6 +2730,37 @@ Index: gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
-verbose result
+dump_compare $src $options
return 1
+Index: gcc/testsuite/gcc.dg/pr77450.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr77450.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr77450.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-std=gnu90" } */
++
++typedef int V __attribute__((vector_size(4)));
++
++void
++foo(void)
++{
++ (V){ 0 }[0] = 0;
++}
+Index: gcc/testsuite/gcc.dg/pr77621.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr77621.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr77621.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-options "-O3" } */
++/* { dg-additional-options "-mtune=atom -msse2" { target i?86-*-* x86_64-*-* } } */
++
++void
++foo (double *x, int *y)
++{
++ int i;
++ for (i = 0; i < 8; i++)
++ x[i] -= y[i] * x[i + 1];
++}
Index: gcc/testsuite/gcc.dg/pr76783.c
===================================================================
--- a/src/gcc/testsuite/gcc.dg/pr76783.c (.../tags/gcc_6_2_0_release)
@@ -1989,6 +2887,33 @@ Index: gcc/testsuite/gcc.dg/lto/pr70955_1.c
+ __builtin_ms_va_end (ap);
+ return sum;
+}
+Index: gcc/testsuite/gcc.dg/torture/pr77478.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr77478.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr77478.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,22 @@
++/* { dg-do run } */
++/* { dg-additional-options "-ffast-math" } */
++
++static const float A[10] = {1};
++
++float
++foo(float *f, int n)
++{
++ int i, j;
++ float a = 0, b = 0;
++ for (i = n/2; i < n; i++)
++ a += f[i]*.1f;
++ for (i = n/2, j = 0; i < n; i++, j++)
++ b += f[i]*A[j]+a*A[j];
++ return b;
++}
++
++int main()
++{
++ float a[21] = {0};
++ return foo(a+1, 20) + foo(a, 20);
++}
Index: gcc/testsuite/gcc.dg/torture/pr72851.c
===================================================================
--- a/src/gcc/testsuite/gcc.dg/torture/pr72851.c (.../tags/gcc_6_2_0_release)
@@ -2024,6 +2949,68 @@ Index: gcc/testsuite/gcc.dg/torture/pr72851.c
+ for (i = 0; i < 16; i++)
+ K[i] = shuffle(CDn, PC2_shuffle, sizeof(PC2_shuffle));
+}
+Index: gcc/testsuite/gcc.dg/torture/pr77514.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr77514.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr77514.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,21 @@
++/* { dg-do compile } */
++
++void
++m1 (char l0, char e8, int hw)
++{
++ char *rs = &l0;
++
++yu:
++ l0 = 1;
++ while (l0 != 0)
++ {
++ l0 = -l0;
++ l0 += (*rs ^ (l0 &= 1));
++ }
++ for (;;)
++ {
++ if (hw != 0)
++ goto yu;
++ rs = &e8;
++ }
++}
+Index: gcc/testsuite/gcc.dg/torture/pr77605.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr77605.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr77605.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,15 @@
++/* { dg-do run } */
++
++int a, b, c[2][8];
++
++int main ()
++{
++ for (a = 0; a < 8; a++)
++ for (b = 0; b < 2; b++)
++ c[b][a] = c[b][b + 6] ^ 1;
++
++ if (c[0][7] != 0)
++ __builtin_abort ();
++
++ return 0;
++}
+Index: gcc/testsuite/gcc.dg/torture/pr77436.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr77436.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr77436.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,11 @@
++/* { dg-do run } */
++
++int main()
++{
++ unsigned short sum = 0;
++ for (short x = -(__SHRT_MAX__ -1); x <= (__SHRT_MAX__ -1); x++)
++ sum += x;
++ if (sum != 0)
++ __builtin_abort ();
++ return 0;
++}
Index: gcc/testsuite/gcc.dg/tree-ssa/update-unroll-1.c
===================================================================
--- a/src/gcc/testsuite/gcc.dg/tree-ssa/update-unroll-1.c (.../tags/gcc_6_2_0_release)
@@ -2241,7 +3228,71 @@ 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,235 @@
+@@ -1,3 +1,299 @@
++2016-09-27 Richard Biener <rguenther at suse.de>
++
++ PR tree-optimization/77478
++ * gcc.dg/torture/pr77478.c: New testcase.
++
++2016-09-27 Richard Biener <rguenther at suse.de>
++
++ Backport from mainline
++ 2016-09-01 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/77436
++ * gcc.dg/torture/pr77436.c: New testcase.
++
++ 2016-09-06 Richard Biener <rguenther at suse.de>
++
++ PR c/77450
++ * gcc.dg/pr77450.c: New testcase.
++
++ 2016-09-15 Richard Biener <rguenther at suse.de>
++
++ PR tree-optimization/77514
++ * gcc.dg/torture/pr77514.c: New testcase.
++
++ 2016-09-15 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/77544
++ * c-c++-common/torture/pr77544.c: New testcase.
++
++ 2016-09-19 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/77605
++ * gcc.dg/torture/pr77605.c: New testcase.
++
++2016-09-25 Uros Bizjak <ubizjak at gmail.com>
++
++ Backport from mainline
++ 2016-09-21 Richard Biener <rguenther at suse.de>
++ Jakub Jelinek <jakub at redhat.com>
++
++ PR tree-optimization/77621
++ * gcc.dg/pr77621.c: New testcase.
++
++ Backport from mainline
++ 2016-09-20 Uros Bizjak <ubizjak at gmail.com>
++
++ PR target/77621
++ * gcc.target/i386/pr77621.c: New test.
++ * gcc.target/i386/vect-double-2.c: Update scan-tree-dump-times
++ pattern, loop should vectorize with -mtune=atom.
++
++2016-09-25 Bernd Edlinger <bernd.edlinger at hotmail.de>
++
++ backport from mainline
++ 2016-09-23 Bernd Edlinger <bernd.edlinger at hotmail.de>
++ Tom de Vries <tom at codesourcery.com>
++
++ PR testsuite/77411
++ * c-c++-common/ubsan/object-size-9.c: Call __builtin_exit in C++.
++
++2016-09-22 Paolo Carlini <paolo.carlini at oracle.com>
++
++ PR c++/71979
++ * g++.dg/cpp0x/pr71979.C: New.
++
+2016-09-21 Uros Bizjak <ubizjak at gmail.com>
+
+ * gcc.c-torture/unsorted/dump-noaddr.x: Remove debug statements.
@@ -2477,7 +3528,7 @@ Index: gcc/testsuite/ChangeLog
2016-08-22 Release Manager
* GCC 6.2.0 released.
-@@ -150,8 +382,8 @@
+@@ -150,8 +446,8 @@
2016-08-09 Martin Jambor <mjambor at suse.cz>
@@ -2488,7 +3539,7 @@ Index: gcc/testsuite/ChangeLog
2016-08-09 Richard Biener <rguenther at suse.de>
-@@ -276,8 +508,8 @@
+@@ -276,8 +572,8 @@
2016-07-20 Martin Jambor <mjambor at suse.cz>
@@ -2499,7 +3550,7 @@ Index: gcc/testsuite/ChangeLog
2016-07-19 Jakub Jelinek <jakub at redhat.com>
-@@ -418,7 +650,7 @@
+@@ -418,7 +714,7 @@
2016-07-06 Yuri Rumyantsev <ysrumyan at gmail.com>
PR tree-optimization/71518
@@ -2613,6 +3664,26 @@ Index: gcc/testsuite/g++.dg/cpp0x/constexpr-recursion3.C
+static int e = Foo (4);
+static int g = Foo (6);
+static int f = Foo (5);
+Index: gcc/testsuite/g++.dg/cpp0x/pr71979.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp0x/pr71979.C (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/pr71979.C (.../branches/gcc-6-branch)
+@@ -0,0 +1,15 @@
++// PR c++/71979
++// { dg-do compile { target c++11 } }
++
++struct A
++{
++ A & operator= (A &);
++};
++
++struct B : A {}; // { dg-error "invalid initialization" }
++
++void foo ()
++{
++ B b;
++ b = B (); // { dg-error "use of deleted" }
++}
Index: gcc/testsuite/g++.dg/ipa/devirt-52.C
===================================================================
--- a/src/gcc/testsuite/g++.dg/ipa/devirt-52.C (.../tags/gcc_6_2_0_release)
@@ -2834,6 +3905,52 @@ Index: gcc/testsuite/c-c++-common/tsan/pr68260.c
+ pthread_join (thr, 0);
+ return 0;
+}
+Index: gcc/testsuite/c-c++-common/ubsan/object-size-9.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/ubsan/object-size-9.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/ubsan/object-size-9.c (.../branches/gcc-6-branch)
+@@ -93,5 +93,9 @@
+ #endif
+ f4 (12);
+ f5 (12);
++#ifdef __cplusplus
++ /* Stack may be smashed by f2/f3 above. */
++ __builtin_exit (0);
++#endif
+ return 0;
+ }
+Index: gcc/testsuite/c-c++-common/torture/pr77544.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/torture/pr77544.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/torture/pr77544.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,7 @@
++/* { dg-do compile } */
++
++struct {
++ long a : 17;
++} b;
++int c, d;
++void e() { b.a = d + c + ~(long)(302806U >> 0); }
+Index: gcc/cp/class.c
+===================================================================
+--- a/src/gcc/cp/class.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/cp/class.c (.../branches/gcc-6-branch)
+@@ -296,12 +296,13 @@
+ /* This can happen when adjust_result_of_qualified_name_lookup can't
+ find a unique base binfo in a call to a member function. We
+ couldn't give the diagnostic then since we might have been calling
+- a static member function, so we do it now. */
++ a static member function, so we do it now. In other cases, eg.
++ during error recovery (c++/71979), we may not have a base at all. */
+ if (complain & tf_error)
+ {
+ tree base = lookup_base (probe, BINFO_TYPE (d_binfo),
+ ba_unique, NULL, complain);
+- gcc_assert (base == error_mark_node);
++ gcc_assert (base == error_mark_node || !base);
+ }
+ return error_mark_node;
+ }
Index: gcc/cp/constexpr.c
===================================================================
--- a/src/gcc/cp/constexpr.c (.../tags/gcc_6_2_0_release)
@@ -3052,7 +4169,13 @@ Index: gcc/cp/ChangeLog
===================================================================
--- a/src/gcc/cp/ChangeLog (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/cp/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,22 @@
+@@ -1,3 +1,28 @@
++2016-09-22 Paolo Carlini <paolo.carlini at oracle.com>
++
++ PR c++/71979
++ * class.c (build_base_path): Allow for lookup_base returning
++ NULL_TREE.
++
+2016-09-16 Jakub Jelinek <jakub at redhat.com>
+
+ Backported from mainline
@@ -3977,6 +5100,62 @@ Index: gcc/fortran/parse.c
count = 1 + ((cp->ext.omp_atomic & GFC_OMP_ATOMIC_MASK)
== GFC_OMP_ATOMIC_CAPTURE);
+Index: gcc/configure.ac
+===================================================================
+--- a/src/gcc/configure.ac (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/configure.ac (.../branches/gcc-6-branch)
+@@ -4437,7 +4437,7 @@
+ gcc_cv_as_aix_dwloc, [2,21,0],,
+ [ .dwsect 0xA0000
+ Lframe..0:
+- .vbyte 4,Lframe..0:
++ .vbyte 4,Lframe..0
+ ],,
+ [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
+ [Define if your assembler supports AIX debug frame section label reference.])])
+Index: gcc/tree-data-ref.c
+===================================================================
+--- a/src/gcc/tree-data-ref.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/tree-data-ref.c (.../branches/gcc-6-branch)
+@@ -2680,13 +2680,13 @@
+
+ if (niter > 0)
+ {
+- HOST_WIDE_INT tau2 = MIN (FLOOR_DIV (niter - i0, i1),
+- FLOOR_DIV (niter - j0, j1));
++ HOST_WIDE_INT tau2 = MIN (FLOOR_DIV (niter_a - i0, i1),
++ FLOOR_DIV (niter_b - j0, j1));
+ HOST_WIDE_INT last_conflict = tau2 - (x1 - i0)/i1;
+
+ /* If the overlap occurs outside of the bounds of the
+ loop, there is no dependence. */
+- if (x1 >= niter || y1 >= niter)
++ if (x1 >= niter_a || y1 >= niter_b)
+ {
+ *overlaps_a = conflict_fn_no_dependence ();
+ *overlaps_b = conflict_fn_no_dependence ();
+Index: gcc/tree-vect-data-refs.c
+===================================================================
+--- a/src/gcc/tree-vect-data-refs.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/tree-vect-data-refs.c (.../branches/gcc-6-branch)
+@@ -2703,10 +2703,17 @@
+ data_reference_p dra = datarefs_copy[i];
+ stmt_vec_info stmtinfo_a = vinfo_for_stmt (DR_STMT (dra));
+ stmt_vec_info lastinfo = NULL;
++ if (! STMT_VINFO_VECTORIZABLE (stmtinfo_a))
++ {
++ ++i;
++ continue;
++ }
+ for (i = i + 1; i < datarefs_copy.length (); ++i)
+ {
+ data_reference_p drb = datarefs_copy[i];
+ stmt_vec_info stmtinfo_b = vinfo_for_stmt (DR_STMT (drb));
++ if (! STMT_VINFO_VECTORIZABLE (stmtinfo_b))
++ break;
+
+ /* ??? Imperfect sorting (non-compatible types, non-modulo
+ accesses, same accesses) can lead to a group to be artificially
Index: gcc/lra-constraints.c
===================================================================
--- a/src/gcc/lra-constraints.c (.../tags/gcc_6_2_0_release)
@@ -4108,6 +5287,29 @@ Index: gcc/lra-constraints.c
if (optional_p)
{
lra_assert (REG_P (op));
+Index: gcc/gimple-fold.c
+===================================================================
+--- a/src/gcc/gimple-fold.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/gimple-fold.c (.../branches/gcc-6-branch)
+@@ -5381,14 +5381,15 @@
+ if (domain_type && TYPE_MIN_VALUE (domain_type))
+ {
+ /* Static constructors for variably sized objects makes no sense. */
+- gcc_assert (TREE_CODE (TYPE_MIN_VALUE (domain_type)) == INTEGER_CST);
++ if (TREE_CODE (TYPE_MIN_VALUE (domain_type)) != INTEGER_CST)
++ return NULL_TREE;
+ low_bound = wi::to_offset (TYPE_MIN_VALUE (domain_type));
+ }
+ else
+ low_bound = 0;
+ /* Static constructors for variably sized objects makes no sense. */
+- gcc_assert (TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ctor))))
+- == INTEGER_CST);
++ if (TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ctor)))) != INTEGER_CST)
++ return NULL_TREE;
+ elt_size = wi::to_offset (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ctor))));
+
+ /* We can handle only constantly sized accesses that are known to not
Index: gcc/tree-cfgcleanup.c
===================================================================
--- a/src/gcc/tree-cfgcleanup.c (.../tags/gcc_6_2_0_release)
@@ -4158,7 +5360,33 @@ Index: gcc/tree-ssa-pre.c
===================================================================
--- a/src/gcc/tree-ssa-pre.c (.../tags/gcc_6_2_0_release)
+++ b/src/gcc/tree-ssa-pre.c (.../branches/gcc-6-branch)
-@@ -4335,6 +4335,15 @@
+@@ -2896,7 +2896,24 @@
+ gimple_seq_discard (forced_stmts);
+ return folded;
+ }
+-
++ /* Likewise if we simplified to sth not queued for insertion. */
++ bool found = false;
++ gsi = gsi_last (forced_stmts);
++ for (; !gsi_end_p (gsi); gsi_prev (&gsi))
++ {
++ gimple *stmt = gsi_stmt (gsi);
++ tree forcedname = gimple_get_lhs (stmt);
++ if (forcedname == folded)
++ {
++ found = true;
++ break;
++ }
++ }
++ if (! found)
++ {
++ gimple_seq_discard (forced_stmts);
++ return folded;
++ }
+ gcc_assert (TREE_CODE (folded) == SSA_NAME);
+
+ /* If we have any intermediate expressions to the value sets, add them
+@@ -4335,6 +4352,15 @@
lang_hooks.decl_printable_name (fn, 2));
}
gimple_call_set_fndecl (call_stmt, fn);
@@ -570338,6 +571566,33 @@ Index: gcc/config/i386/i386.c
return std_canonical_va_list_type (type);
}
+@@ -53662,9 +53642,7 @@
+ return V4SFmode;
+
+ case DFmode:
+- if (!TARGET_VECTORIZE_DOUBLE)
+- return word_mode;
+- else if (TARGET_AVX512F)
++ if (TARGET_AVX512F)
+ return V8DFmode;
+ else if (TARGET_AVX && !TARGET_PREFER_AVX128)
+ return V4DFmode;
+@@ -53749,9 +53727,14 @@
+ tree vectype = stmt_info ? stmt_vectype (stmt_info) : NULL_TREE;
+ int stmt_cost = ix86_builtin_vectorization_cost (kind, vectype, misalign);
+
++ /* Penalize DFmode vector operations for !TARGET_VECTORIZE_DOUBLE. */
++ if (kind == vector_stmt && !TARGET_VECTORIZE_DOUBLE
++ && vectype && GET_MODE_INNER (TYPE_MODE (vectype)) == DFmode)
++ stmt_cost *= 5; /* FIXME: The value here is arbitrary. */
++
+ /* Statements in an inner loop relative to the loop being
+ vectorized are weighted more heavily. The value here is
+- arbitrary and could potentially be improved with analysis. */
++ arbitrary and could potentially be improved with analysis. */
+ if (where == vect_body && stmt_info && stmt_in_inner_loop_p (stmt_info))
+ count *= 50; /* FIXME. */
+
Index: gcc/config/avr/avr.c
===================================================================
--- a/src/gcc/config/avr/avr.c (.../tags/gcc_6_2_0_release)
@@ -570390,6 +571645,36 @@ Index: gcc/config/avr/avr.c
case CC_SET_N:
CC_STATUS_INIT;
break;
+@@ -10120,6 +10156,7 @@
+ break;
+
+ case SImode:
++ case DImode:
+ if (AVR_HAVE_MUL)
+ {
+ if (!speed)
+@@ -10145,8 +10182,11 @@
+ *total = COSTS_N_INSNS (AVR_HAVE_JMP_CALL ? 5 : 4);
+ }
+
+- return true;
++ if (mode == DImode)
++ *total *= 2;
+
++ return true;
++
+ default:
+ return false;
+ }
+@@ -10726,7 +10766,7 @@
+ && (REG_P (XEXP (x, 0))
+ || GET_CODE (XEXP (x, 0)) == SUBREG))
+ {
+- if (INTVAL (XEXP (x, 1)) >= 61)
++ if (INTVAL (XEXP (x, 1)) > MAX_LD_OFFSET(mode))
+ cost = 18;
+ }
+ else if (CONSTANT_ADDRESS_P (x))
Index: gcc/config/rs6000/xcoff.h
===================================================================
--- a/src/gcc/config/rs6000/xcoff.h (.../tags/gcc_6_2_0_release)
@@ -570404,6 +571689,22 @@ Index: gcc/config/rs6000/xcoff.h
#define ASM_OUTPUT_DWARF_PCREL(FILE,SIZE,LABEL) \
rs6000_asm_output_dwarf_pcrel ((FILE), (SIZE), (LABEL));
+Index: gcc/config/rs6000/rs6000.c
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.c (.../tags/gcc_6_2_0_release)
++++ b/src/gcc/config/rs6000/rs6000.c (.../branches/gcc-6-branch)
+@@ -29217,7 +29217,10 @@
+ (TREE_CODE (decl) == FUNCTION_DECL
+ ? "[DS]" : "[UA]"),
+ NULL);
+- XSTR (x, 0) = name;
++
++ /* Don't modify name in extern VAR_DECL to include mapping class. */
++ if (TREE_CODE (decl) == FUNCTION_DECL)
++ XSTR (x, 0) = name;
+ }
+
+ if (VTABLE_NAME_P (name))
Index: gcc/config/rs6000/vsx.md
===================================================================
--- a/src/gcc/config/rs6000/vsx.md (.../tags/gcc_6_2_0_release)
--
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