summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>2013-10-20 22:41:10 +0000
committerdoko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>2013-10-20 22:41:10 +0000
commitc083cb4b48d50ca7247ac56c459f51f9ffb608b7 (patch)
tree58bc63173f9fa89cc442b4267f7ee7320f06219d
parent3b9da3ee7a83bf8ff748cad92ab4cb2205006281 (diff)
downloadgcc-47-c083cb4b48d50ca7247ac56c459f51f9ffb608b7.tar.gz
* Update to SVN 20131020 (r203880) from the gcc-4_7-branch.
git-svn-id: svn://svn.debian.org/svn/gcccvs/branches/sid/gcc-4.7@6986 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
-rw-r--r--debian/changelog4
-rw-r--r--debian/patches/svn-updates.diff701
2 files changed, 680 insertions, 25 deletions
diff --git a/debian/changelog b/debian/changelog
index de79136..b444176 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,9 @@
gcc-4.7 (4.7.3-7ubuntu1) UNRELEASED; urgency=low
- * Update to SVN 20130920 (r202771) from the gcc-4_7-branch.
+ * Update to SVN 20131020 (r203880) from the gcc-4_7-branch.
* Fix bootstrap of native aarch64 build.
- -- Matthias Klose <doko@debian.org> Fri, 20 Sep 2013 11:23:55 +0200
+ -- Matthias Klose <doko@debian.org> Sun, 20 Oct 2013 23:08:56 +0200
gcc-4.7 (4.7.3-7) unstable; urgency=low
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index d5e0ba9..6afa483 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 4.7 branch upto 20130920 (r202771).
+# DP: updates from the 4.7 branch upto 20131020 (r203880).
last_updated()
{
cat > ${dir}LAST_UPDATED <<EOF
-Fri Sep 20 11:18:33 CEST 2013
-Fri Sep 20 09:18:33 UTC 2013 (revision 202771)
+Sun Oct 20 22:56:37 CEST 2013
+Sun Oct 20 20:56:37 UTC 2013 (revision 203880)
EOF
}
@@ -72,6 +72,27 @@ Index: libstdc++-v3/src/c++11/future.cc
return __fec;
}
}
+Index: libstdc++-v3/include/std/future
+===================================================================
+--- a/src/libstdc++-v3/include/std/future (.../tags/gcc_4_7_3_release)
++++ b/src/libstdc++-v3/include/std/future (.../branches/gcc-4_7-branch)
+@@ -1,6 +1,6 @@
+ // <future> -*- C++ -*-
+
+-// Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
++// Copyright (C) 2009, 2010, 2011, 2012, 2013 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
+@@ -456,7 +456,7 @@
+ __setter(promise<void>* __prom);
+
+ template<typename _Tp>
+- static bool
++ static void
+ _S_check(const shared_ptr<_Tp>& __p)
+ {
+ if (!static_cast<bool>(__p))
Index: libstdc++-v3/include/bits/basic_string.h
===================================================================
--- a/src/libstdc++-v3/include/bits/basic_string.h (.../tags/gcc_4_7_3_release)
@@ -104,6 +125,102 @@ Index: libstdc++-v3/include/bits/basic_string.h
*/
template<typename _CharT, typename _Traits, typename _Alloc>
inline basic_istream<_CharT, _Traits>&
+Index: libstdc++-v3/include/bits/stl_algo.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/stl_algo.h (.../tags/gcc_4_7_3_release)
++++ b/src/libstdc++-v3/include/bits/stl_algo.h (.../branches/gcc-4_7-branch)
+@@ -74,10 +74,11 @@
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+- /// Swaps the median value of *__a, *__b and *__c to *__a
++ /// Swaps the median value of *__a, *__b and *__c to *__result
+ template<typename _Iterator>
+ void
+- __move_median_first(_Iterator __a, _Iterator __b, _Iterator __c)
++ __move_median_to_first(_Iterator __result, _Iterator __a,
++ _Iterator __b, _Iterator __c)
+ {
+ // concept requirements
+ __glibcxx_function_requires(_LessThanComparableConcept<
+@@ -86,23 +87,26 @@
+ if (*__a < *__b)
+ {
+ if (*__b < *__c)
+- std::iter_swap(__a, __b);
++ std::iter_swap(__result, __b);
+ else if (*__a < *__c)
+- std::iter_swap(__a, __c);
++ std::iter_swap(__result, __c);
++ else
++ std::iter_swap(__result, __a);
+ }
+ else if (*__a < *__c)
+- return;
++ std::iter_swap(__result, __a);
+ else if (*__b < *__c)
+- std::iter_swap(__a, __c);
++ std::iter_swap(__result, __c);
+ else
+- std::iter_swap(__a, __b);
++ std::iter_swap(__result, __b);
+ }
+
+- /// Swaps the median value of *__a, *__b and *__c under __comp to *__a
++ /// Swaps the median value of *__a, *__b and *__c under __comp to *__result
+ template<typename _Iterator, typename _Compare>
+ void
+- __move_median_first(_Iterator __a, _Iterator __b, _Iterator __c,
+- _Compare __comp)
++ __move_median_to_first(_Iterator __result, _Iterator __a,
++ _Iterator __b, _Iterator __c,
++ _Compare __comp)
+ {
+ // concept requirements
+ __glibcxx_function_requires(_BinaryFunctionConcept<_Compare, bool,
+@@ -112,16 +116,18 @@
+ if (__comp(*__a, *__b))
+ {
+ if (__comp(*__b, *__c))
+- std::iter_swap(__a, __b);
++ std::iter_swap(__result, __b);
+ else if (__comp(*__a, *__c))
+- std::iter_swap(__a, __c);
++ std::iter_swap(__result, __c);
++ else
++ std::iter_swap(__result, __a);
+ }
+ else if (__comp(*__a, *__c))
+- return;
++ std::iter_swap(__result, __a);
+ else if (__comp(*__b, *__c))
+- std::iter_swap(__a, __c);
++ std::iter_swap(__result, __c);
+ else
+- std::iter_swap(__a, __b);
++ std::iter_swap(__result, __b);
+ }
+
+ // for_each
+@@ -2305,7 +2311,7 @@
+ _RandomAccessIterator __last)
+ {
+ _RandomAccessIterator __mid = __first + (__last - __first) / 2;
+- std::__move_median_first(__first, __mid, (__last - 1));
++ std::__move_median_to_first(__first, __first + 1, __mid, __last - 1);
+ return std::__unguarded_partition(__first + 1, __last, *__first);
+ }
+
+@@ -2317,7 +2323,8 @@
+ _RandomAccessIterator __last, _Compare __comp)
+ {
+ _RandomAccessIterator __mid = __first + (__last - __first) / 2;
+- std::__move_median_first(__first, __mid, (__last - 1), __comp);
++ std::__move_median_to_first(__first, __first + 1, __mid, __last - 1,
++ __comp);
+ return std::__unguarded_partition(__first + 1, __last, *__first, __comp);
+ }
+
Index: libstdc++-v3/include/bits/random.tcc
===================================================================
--- a/src/libstdc++-v3/include/bits/random.tcc (.../tags/gcc_4_7_3_release)
@@ -121,7 +238,35 @@ Index: libstdc++-v3/ChangeLog
===================================================================
--- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_4_7_3_release)
+++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-4_7-branch)
-@@ -1,3 +1,47 @@
+@@ -1,3 +1,75 @@
++2013-10-20 Chris Jefferson <chris@bubblescope.net>
++ Paolo Carlini <paolo.carlini@oracle.com>
++
++ PR libstdc++/58800
++ * include/bits/stl_algo.h (__unguarded_partition_pivot): Change
++ __last - 2 to __last - 1.
++ * testsuite/25_algorithms/nth_element/58800.cc: New
++
++2013-09-30 Chris Jefferson <chris@bubblescope.net>
++
++ PR libstdc++/58437
++ * include/bits/stl_algo.h (__move_median_first): Rename to
++ __move_median_to_first, change to take an addition argument.
++ (__unguarded_partition_pivot): Adjust.
++ * testsuite/performance/25_algorithms/sort.cc: New.
++ * testsuite/performance/25_algorithms/sort_heap.cc: Likewise.
++ * testsuite/performance/25_algorithms/stable_sort.cc: Likewise.
++
++2013-09-26 Jonathan Wakely <jwakely.gcc@gmail.com>
++
++ Backport from mainline
++
++ 2013-01-19 Jonathan Wakely <jwakely.gcc@gmail.com>
++
++ PR libstdc++/55861
++ * include/std/future (_State_base::_S_check(const shared_ptr<T>&)):
++ Fix return type.
++
+2013-09-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/58302
@@ -169,6 +314,63 @@ Index: libstdc++-v3/ChangeLog
2013-04-11 Release Manager
* GCC 4.7.3 released.
+Index: libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc (.../tags/gcc_4_7_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc (.../branches/gcc-4_7-branch)
+@@ -0,0 +1,52 @@
++// Copyright (C) 2013 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/>.
++
++// 25.3.2 [lib.alg.nth.element]
++
++// { dg-options "-std=gnu++11" }
++
++#include <algorithm>
++#include <testsuite_hooks.h>
++#include <testsuite_iterators.h>
++
++using __gnu_test::test_container;
++using __gnu_test::random_access_iterator_wrapper;
++
++typedef test_container<int, random_access_iterator_wrapper> Container;
++
++void test01()
++{
++ std::vector<int> v = {
++ 207089,
++ 202585,
++ 180067,
++ 157549,
++ 211592,
++ 216096,
++ 207089
++ };
++
++ Container con(v.data(), v.data() + 7);
++
++ std::nth_element(con.begin(), con.begin() + 3, con.end());
++}
++
++int main()
++{
++ test01();
++ return 0;
++}
Index: libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc
===================================================================
--- a/src/libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc (.../tags/gcc_4_7_3_release)
@@ -219,6 +421,224 @@ Index: libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc
// { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } }
// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } }
// { dg-require-cstdint "" }
+Index: libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc (.../tags/gcc_4_7_3_release)
++++ b/src/libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc (.../branches/gcc-4_7-branch)
+@@ -0,0 +1,65 @@
++// Copyright (C) 2013 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 <vector>
++#include <algorithm>
++#include <testsuite_performance.h>
++
++int main()
++{
++ using namespace __gnu_test;
++
++ time_counter time;
++ resource_counter resource;
++
++ const int max_size = 10000000;
++
++ std::vector<int> v(max_size);
++
++ for (int i = 0; i < max_size; ++i)
++ v[i] = -i;
++
++ start_counters(time, resource);
++ std::stable_sort(v.begin(), v.end());
++ stop_counters(time, resource);
++
++ report_performance(__FILE__, "reverse", time, resource);
++ clear_counters(time, resource);
++
++ for (int i = 0; i < max_size; ++i)
++ v[i] = i;
++
++ start_counters(time, resource);
++ std::stable_sort(v.begin(), v.end());
++ stop_counters(time, resource);
++
++ report_performance(__FILE__, "forwards", time, resource);
++ clear_counters(time, resource);
++
++ // a simple psuedo-random series which does not rely on rand() and friends
++ v[0] = 0;
++ for (int i = 1; i < max_size; ++i)
++ v[i] = (v[i-1] + 110211473) * 745988807;
++
++ start_counters(time, resource);
++ std::stable_sort(v.begin(), v.end());
++ stop_counters(time, resource);
++
++ report_performance(__FILE__, "random", time, resource);
++
++ return 0;
++}
+Index: libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc (.../tags/gcc_4_7_3_release)
++++ b/src/libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc (.../branches/gcc-4_7-branch)
+@@ -0,0 +1,73 @@
++// Copyright (C) 2013 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 <vector>
++#include <algorithm>
++#include <testsuite_performance.h>
++
++int main()
++{
++ using namespace __gnu_test;
++
++ time_counter time;
++ resource_counter resource;
++
++ const int max_size = 10000000;
++
++ std::vector<int> v(max_size);
++
++ for (int i = 0; i < max_size; ++i)
++ v[i] = -i;
++
++ start_counters(time, resource);
++ std::make_heap(v.begin(), v.end());
++ stop_counters(time, resource);
++
++ report_performance(__FILE__, "make_heap_reverse", time, resource);
++ clear_counters(time, resource);
++
++ for (int i = 0; i < max_size; ++i)
++ v[i] = i;
++
++ start_counters(time, resource);
++ std::make_heap(v.begin(), v.end());
++ stop_counters(time, resource);
++
++ report_performance(__FILE__, "make_heap_forwards", time, resource);
++ clear_counters(time, resource);
++
++ // a simple psuedo-random series which does not rely on rand() and friends
++ v[0] = 0;
++ for (int i = 1; i < max_size; ++i)
++ v[i] = (v[i-1] + 110211473) * 745988807;
++
++ start_counters(time, resource);
++ std::make_heap(v.begin(), v.end());
++ stop_counters(time, resource);
++
++ report_performance(__FILE__, "make_heap_random", time, resource);
++
++
++ start_counters(time, resource);
++ std::sort_heap(v.begin(), v.end());
++ stop_counters(time, resource);
++
++ report_performance(__FILE__, "sort_heap", time, resource);
++ clear_counters(time, resource);
++
++ return 0;
++}
+Index: libstdc++-v3/testsuite/performance/25_algorithms/sort.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/performance/25_algorithms/sort.cc (.../tags/gcc_4_7_3_release)
++++ b/src/libstdc++-v3/testsuite/performance/25_algorithms/sort.cc (.../branches/gcc-4_7-branch)
+@@ -0,0 +1,65 @@
++// Copyright (C) 2013 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 <vector>
++#include <algorithm>
++#include <testsuite_performance.h>
++
++int main()
++{
++ using namespace __gnu_test;
++
++ time_counter time;
++ resource_counter resource;
++
++ const int max_size = 10000000;
++
++ std::vector<int> v(max_size);
++
++ for (int i = 0; i < max_size; ++i)
++ v[i] = -i;
++
++ start_counters(time, resource);
++ std::sort(v.begin(), v.end());
++ stop_counters(time, resource);
++
++ report_performance(__FILE__, "reverse", time, resource);
++ clear_counters(time, resource);
++
++ for (int i = 0; i < max_size; ++i)
++ v[i] = i;
++
++ start_counters(time, resource);
++ std::sort(v.begin(), v.end());
++ stop_counters(time, resource);
++
++ report_performance(__FILE__, "forwards", time, resource);
++ clear_counters(time, resource);
++
++ // a simple psuedo-random series which does not rely on rand() and friends
++ v[0] = 0;
++ for (int i = 1; i < max_size; ++i)
++ v[i] = (v[i-1] + 110211473) * 745988807;
++
++ start_counters(time, resource);
++ std::sort(v.begin(), v.end());
++ stop_counters(time, resource);
++
++ report_performance(__FILE__, "random", time, resource);
++
++ return 0;
++}
Index: libstdc++-v3/config/os/bsd/darwin/os_defines.h
===================================================================
--- a/src/libstdc++-v3/config/os/bsd/darwin/os_defines.h (.../tags/gcc_4_7_3_release)
@@ -698,7 +1118,7 @@ Index: gcc/DATESTAMP
+++ b/src/gcc/DATESTAMP (.../branches/gcc-4_7-branch)
@@ -1 +1 @@
-20130411
-+20130920
++20131020
Index: gcc/tree-tailcall.c
===================================================================
--- a/src/gcc/tree-tailcall.c (.../tags/gcc_4_7_3_release)
@@ -899,7 +1319,21 @@ Index: gcc/ChangeLog
===================================================================
--- a/src/gcc/ChangeLog (.../tags/gcc_4_7_3_release)
+++ b/src/gcc/ChangeLog (.../branches/gcc-4_7-branch)
-@@ -1,3 +1,442 @@
+@@ -1,3 +1,456 @@
++2013-10-02 John David Anglin <danglin@gcc.gnu.org>
++
++ * config.gcc (hppa*64*-*-linux*): Don't add pa/t-linux to tmake_file.
++
++2013-09-23 Eric Botcazou <ebotcazou@adacore.com>
++
++ * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Recurse on copy
++ assignment statements.
++
++2013-09-20 John David Anglin <danglin@gcc.gnu.org>
++
++ * config/pa/pa.md: In "scc" insn patterns, change output template to
++ handle const0_rtx in reg_or_0_operand operands.
++
+2013-09-18 Daniel Morris <danielm@ecoscentric.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
@@ -2066,6 +2500,55 @@ Index: gcc/testsuite/gcc.c-torture/execute/pr56866.c
+#endif
+ return 0;
+}
+Index: gcc/testsuite/gnat.dg/opt28.adb
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/opt28.adb (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/testsuite/gnat.dg/opt28.adb (.../branches/gcc-4_7-branch)
+@@ -0,0 +1,31 @@
++with Opt28_Pkg; use Opt28_Pkg;
++
++package body Opt28 is
++
++ function Full_Filename (Filename : String) return String is
++ Path : constant String := "PATH";
++ Posix_Path : constant Posix_String := To_Posix (Path);
++ begin
++
++ declare
++ M : constant Posix_String := Value_Of (Posix_Path);
++ N : constant Posix_String (1 .. M'Length) := M;
++ Var : constant String := To_String (Str => N);
++ Start_Pos : Natural := 1;
++ End_Pos : Natural := 1;
++ begin
++ while Start_Pos <= Var'Length loop
++ End_Pos := Position (Var (Start_Pos .. Var'Length));
++
++ if Is_File (To_Posix (Var (Start_Pos .. End_Pos - 1) & Filename)) then
++ return Var (Start_Pos .. End_Pos - 1) & Filename;
++ else
++ Start_Pos := End_Pos + 1;
++ end if;
++ end loop;
++ end;
++
++ return "";
++ end;
++
++end Opt28;
+Index: gcc/testsuite/gnat.dg/opt28.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/opt28.ads (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/testsuite/gnat.dg/opt28.ads (.../branches/gcc-4_7-branch)
+@@ -0,0 +1,8 @@
++-- { dg-do compile }
++-- { dg-options "-O2" }
++
++package Opt28 is
++
++ function Full_Filename (Filename : String) return String;
++
++end Opt28;
Index: gcc/testsuite/gnat.dg/loop_optimization16_pkg.adb
===================================================================
--- a/src/gcc/testsuite/gnat.dg/loop_optimization16_pkg.adb (.../tags/gcc_4_7_3_release)
@@ -2126,6 +2609,22 @@ Index: gcc/testsuite/gnat.dg/in_out_parameter4.adb
+begin
+ S := Recurse (Val);
+end;
+Index: gcc/testsuite/gnat.dg/opt28_pkg.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/opt28_pkg.ads (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/testsuite/gnat.dg/opt28_pkg.ads (.../branches/gcc-4_7-branch)
+@@ -0,0 +1,11 @@
++package Opt28_Pkg is
++
++ type Posix_String is array (Positive range <>) of aliased Character;
++
++ function To_Posix (Str : String) return Posix_String;
++ function To_String (Str : Posix_String) return String;
++ function Is_File (Str : Posix_String) return Boolean;
++ function Value_Of (Name : Posix_String) return Posix_String;
++ function Position (In_Line : String) return Natural;
++
++end Opt28_Pkg;
Index: gcc/testsuite/gnat.dg/loop_optimization16.adb
===================================================================
--- a/src/gcc/testsuite/gnat.dg/loop_optimization16.adb (.../tags/gcc_4_7_3_release)
@@ -2343,7 +2842,18 @@ Index: gcc/testsuite/ChangeLog
===================================================================
--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_7_3_release)
+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_7-branch)
-@@ -1,3 +1,214 @@
+@@ -1,3 +1,225 @@
++2013-10-16 Paolo Carlini <paolo.carlini@oracle.com>
++
++ PR c++/58633
++ * g++.dg/cpp0x/decltype57.C: New.
++ * g++.dg/cpp0x/enum18.C: Revert r174385 changes.
++
++2013-09-23 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gnat.dg/opt28.ad[sb]: New test.
++ * gnat.dg/opt28_pkg.ads: New helper.
++
+2013-09-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/in_out_parameter4.adb: New test.
@@ -2693,6 +3203,17 @@ Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+ test<pdm>();
+ test<pmf>();
+}
+Index: gcc/testsuite/g++.dg/cpp0x/enum18.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp0x/enum18.C (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/enum18.C (.../branches/gcc-4_7-branch)
+@@ -4,5 +4,5 @@
+ int main(void) {
+ enum e {};
+ e ev;
+- ev.e::~e_u(); // { dg-error "e_u. has not been declared" }
++ ev.e::~e_u(); // { dg-error "" }
+ }
Index: gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C
===================================================================
--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C (.../tags/gcc_4_7_3_release)
@@ -2752,6 +3273,19 @@ Index: gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C
+ unsigned c;
+};
+B <C, C> p ("a", "b");
+Index: gcc/testsuite/g++.dg/cpp0x/decltype57.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp0x/decltype57.C (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/decltype57.C (.../branches/gcc-4_7-branch)
+@@ -0,0 +1,8 @@
++// PR c++/58633
++// { dg-do compile { target c++11 } }
++
++void foo(int i)
++{
++ typedef int I;
++ decltype(i.I::~I())* p;
++}
Index: gcc/testsuite/g++.dg/template/array26.C
===================================================================
--- a/src/gcc/testsuite/g++.dg/template/array26.C (.../tags/gcc_4_7_3_release)
@@ -3733,7 +4267,12 @@ Index: gcc/cp/ChangeLog
===================================================================
--- a/src/gcc/cp/ChangeLog (.../tags/gcc_4_7_3_release)
+++ b/src/gcc/cp/ChangeLog (.../branches/gcc-4_7-branch)
-@@ -1,3 +1,62 @@
+@@ -1,3 +1,67 @@
++2013-10-16 Paolo Carlini <paolo.carlini@oracle.com>
++
++ PR c++/58633
++ * parser.c (cp_parser_pseudo_destructor_name): Revert r174385 changes.
++
+2013-09-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/58273
@@ -3896,7 +4435,18 @@ Index: gcc/cp/parser.c
===================================================================
--- a/src/gcc/cp/parser.c (.../tags/gcc_4_7_3_release)
+++ b/src/gcc/cp/parser.c (.../branches/gcc-4_7-branch)
-@@ -16691,7 +16691,7 @@
+@@ -6317,10 +6317,6 @@
+ /* Look for the `~'. */
+ cp_parser_require (parser, CPP_COMPL, RT_COMPL);
+
+- /* Once we see the ~, this has to be a pseudo-destructor. */
+- if (!processing_template_decl && !cp_parser_error_occurred (parser))
+- cp_parser_commit_to_tentative_parse (parser);
+-
+ /* Look for the type-name again. We are not responsible for
+ checking that it matches the first type-name. */
+ *type = cp_parser_nonclass_name (parser);
+@@ -16691,7 +16687,7 @@
cp_parser_late_return_type_opt (cp_parser* parser, cp_cv_quals quals)
{
cp_token *token;
@@ -3905,7 +4455,7 @@ Index: gcc/cp/parser.c
/* Peek at the next token. */
token = cp_lexer_peek_token (parser->lexer);
-@@ -16702,8 +16702,8 @@
+@@ -16702,8 +16698,8 @@
/* Consume the ->. */
cp_lexer_consume_token (parser->lexer);
@@ -4028,6 +4578,20 @@ Index: gcc/cp/cp-tree.h
/* Set CLASS_TYPE_P for T to VAL. T must be a class, struct, or
union type. */
#define SET_CLASS_TYPE_P(T, VAL) \
+Index: gcc/tree-ssa-ccp.c
+===================================================================
+--- a/src/gcc/tree-ssa-ccp.c (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/tree-ssa-ccp.c (.../branches/gcc-4_7-branch)
+@@ -1744,6 +1744,9 @@
+ insert_clobber_before_stack_restore (gimple_phi_result (stmt), var,
+ visited);
+ }
++ else if (gimple_assign_ssa_name_copy_p (stmt))
++ insert_clobber_before_stack_restore (gimple_assign_lhs (stmt), var,
++ visited);
+ else
+ gcc_assert (is_gimple_debug (stmt));
+ }
Index: gcc/dwarf2out.c
===================================================================
--- a/src/gcc/dwarf2out.c (.../tags/gcc_4_7_3_release)
@@ -4071,7 +4635,12 @@ Index: gcc/ada/ChangeLog
===================================================================
--- a/src/gcc/ada/ChangeLog (.../tags/gcc_4_7_3_release)
+++ b/src/gcc/ada/ChangeLog (.../branches/gcc-4_7-branch)
-@@ -1,3 +1,18 @@
+@@ -1,3 +1,23 @@
++2013-10-19 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gcc-interface/utils.c (gnat_set_type_context): New function.
++ (gnat_pushdecl): Use it to set the context of the type.
++
+2013-09-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (Subprogram_Body_to_gnu): Pop the stack of
@@ -4090,6 +4659,60 @@ Index: gcc/ada/ChangeLog
2013-04-11 Release Manager
* GCC 4.7.3 released.
+Index: gcc/ada/gcc-interface/utils.c
+===================================================================
+--- a/src/gcc/ada/gcc-interface/utils.c (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/ada/gcc-interface/utils.c (.../branches/gcc-4_7-branch)
+@@ -500,6 +500,22 @@
+ free_binding_level = level;
+ }
+
++/* Set the context of TYPE and its parallel types (if any) to CONTEXT. */
++
++static void
++gnat_set_type_context (tree type, tree context)
++{
++ tree decl = TYPE_STUB_DECL (type);
++
++ TYPE_CONTEXT (type) = context;
++
++ while (decl && DECL_PARALLEL_TYPE (decl))
++ {
++ TYPE_CONTEXT (DECL_PARALLEL_TYPE (decl)) = context;
++ decl = TYPE_STUB_DECL (DECL_PARALLEL_TYPE (decl));
++ }
++}
++
+ /* Record DECL as belonging to the current lexical scope and use GNAT_NODE
+ for location information and flag propagation. */
+
+@@ -581,7 +597,7 @@
+ if (TREE_CODE (t) == POINTER_TYPE)
+ TYPE_NEXT_PTR_TO (t) = tt;
+ TYPE_NAME (tt) = DECL_NAME (decl);
+- TYPE_CONTEXT (tt) = DECL_CONTEXT (decl);
++ gnat_set_type_context (tt, DECL_CONTEXT (decl));
+ TYPE_STUB_DECL (tt) = TYPE_STUB_DECL (t);
+ DECL_ORIGINAL_TYPE (decl) = tt;
+ }
+@@ -591,7 +607,7 @@
+ /* We need a variant for the placeholder machinery to work. */
+ tree tt = build_variant_type_copy (t);
+ TYPE_NAME (tt) = decl;
+- TYPE_CONTEXT (tt) = DECL_CONTEXT (decl);
++ gnat_set_type_context (tt, DECL_CONTEXT (decl));
+ TREE_USED (tt) = TREE_USED (t);
+ TREE_TYPE (decl) = tt;
+ if (DECL_ORIGINAL_TYPE (TYPE_NAME (t)))
+@@ -613,7 +629,7 @@
+ if (!(TYPE_NAME (t) && TREE_CODE (TYPE_NAME (t)) == TYPE_DECL))
+ {
+ TYPE_NAME (t) = decl;
+- TYPE_CONTEXT (t) = DECL_CONTEXT (decl);
++ gnat_set_type_context (t, DECL_CONTEXT (decl));
+ }
+ }
+ }
Index: gcc/ada/gcc-interface/trans.c
===================================================================
--- a/src/gcc/ada/gcc-interface/trans.c (.../tags/gcc_4_7_3_release)
@@ -4833,6 +5456,18 @@ Index: gcc/collect2-aix.h
#define N_UNDEF ((short) 0)
#define N_TMASK 060
+Index: gcc/config.gcc
+===================================================================
+--- a/src/gcc/config.gcc (.../tags/gcc_4_7_3_release)
++++ b/src/gcc/config.gcc (.../branches/gcc-4_7-branch)
+@@ -1064,7 +1064,6 @@
+ tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h gnu-user.h linux.h \
+ glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
+ pa/pa64-linux.h"
+- tmake_file="${tmake_file} pa/t-linux"
+ gas=yes gnu_ld=yes
+ need_64bit_hwint=yes
+ ;;
Index: gcc/tlink.c
===================================================================
--- a/src/gcc/tlink.c (.../tags/gcc_4_7_3_release)
@@ -6191,7 +6826,7 @@ Index: gcc/config/pa/pa.md
===================================================================
--- a/src/gcc/config/pa/pa.md (.../tags/gcc_4_7_3_release)
+++ b/src/gcc/config/pa/pa.md (.../branches/gcc-4_7-branch)
-@@ -730,7 +730,7 @@
+@@ -730,46 +730,46 @@
(define_insn "scc"
[(set (match_operand:SI 0 "register_operand" "=r")
(match_operator:SI 3 "comparison_operator"
@@ -6199,8 +6834,11 @@ Index: gcc/config/pa/pa.md
+ [(match_operand:SI 1 "reg_or_0_operand" "rM")
(match_operand:SI 2 "arith11_operand" "rI")]))]
""
- "{com%I2clr|cmp%I2clr},%B3 %2,%1,%0\;ldi 1,%0"
-@@ -740,7 +740,7 @@
+- "{com%I2clr|cmp%I2clr},%B3 %2,%1,%0\;ldi 1,%0"
++ "{com%I2clr|cmp%I2clr},%B3 %2,%r1,%0\;ldi 1,%0"
+ [(set_attr "type" "binary")
+ (set_attr "length" "8")])
+
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r")
(match_operator:DI 3 "comparison_operator"
@@ -6208,8 +6846,11 @@ Index: gcc/config/pa/pa.md
+ [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "arith11_operand" "rI")]))]
"TARGET_64BIT"
- "cmp%I2clr,*%B3 %2,%1,%0\;ldi 1,%0"
-@@ -750,10 +750,10 @@
+- "cmp%I2clr,*%B3 %2,%1,%0\;ldi 1,%0"
++ "cmp%I2clr,*%B3 %2,%r1,%0\;ldi 1,%0"
+ [(set_attr "type" "binary")
+ (set_attr "length" "8")])
+
(define_insn "iorscc"
[(set (match_operand:SI 0 "register_operand" "=r")
(ior:SI (match_operator:SI 3 "comparison_operator"
@@ -6221,8 +6862,11 @@ Index: gcc/config/pa/pa.md
+ [(match_operand:SI 4 "reg_or_0_operand" "rM")
(match_operand:SI 5 "arith11_operand" "rI")])))]
""
- "{com%I2clr|cmp%I2clr},%S3 %2,%1,%%r0\;{com%I5clr|cmp%I5clr},%B6 %5,%4,%0\;ldi 1,%0"
-@@ -763,10 +763,10 @@
+- "{com%I2clr|cmp%I2clr},%S3 %2,%1,%%r0\;{com%I5clr|cmp%I5clr},%B6 %5,%4,%0\;ldi 1,%0"
++ "{com%I2clr|cmp%I2clr},%S3 %2,%r1,%%r0\;{com%I5clr|cmp%I5clr},%B6 %5,%r4,%0\;ldi 1,%0"
+ [(set_attr "type" "binary")
+ (set_attr "length" "12")])
+
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r")
(ior:DI (match_operator:DI 3 "comparison_operator"
@@ -6234,8 +6878,12 @@ Index: gcc/config/pa/pa.md
+ [(match_operand:DI 4 "reg_or_0_operand" "rM")
(match_operand:DI 5 "arith11_operand" "rI")])))]
"TARGET_64BIT"
- "cmp%I2clr,*%S3 %2,%1,%%r0\;cmp%I5clr,*%B6 %5,%4,%0\;ldi 1,%0"
-@@ -778,7 +778,7 @@
+- "cmp%I2clr,*%S3 %2,%1,%%r0\;cmp%I5clr,*%B6 %5,%4,%0\;ldi 1,%0"
++ "cmp%I2clr,*%S3 %2,%r1,%%r0\;cmp%I5clr,*%B6 %5,%r4,%0\;ldi 1,%0"
+ [(set_attr "type" "binary")
+ (set_attr "length" "12")])
+
+@@ -778,20 +778,20 @@
(define_insn "negscc"
[(set (match_operand:SI 0 "register_operand" "=r")
(neg:SI (match_operator:SI 3 "comparison_operator"
@@ -6243,8 +6891,11 @@ Index: gcc/config/pa/pa.md
+ [(match_operand:SI 1 "reg_or_0_operand" "rM")
(match_operand:SI 2 "arith11_operand" "rI")])))]
""
- "{com%I2clr|cmp%I2clr},%B3 %2,%1,%0\;ldi -1,%0"
-@@ -788,7 +788,7 @@
+- "{com%I2clr|cmp%I2clr},%B3 %2,%1,%0\;ldi -1,%0"
++ "{com%I2clr|cmp%I2clr},%B3 %2,%r1,%0\;ldi -1,%0"
+ [(set_attr "type" "binary")
+ (set_attr "length" "8")])
+
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r")
(neg:DI (match_operator:DI 3 "comparison_operator"
@@ -6252,7 +6903,11 @@ Index: gcc/config/pa/pa.md
+ [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "arith11_operand" "rI")])))]
"TARGET_64BIT"
- "cmp%I2clr,*%B3 %2,%1,%0\;ldi -1,%0"
+- "cmp%I2clr,*%B3 %2,%1,%0\;ldi -1,%0"
++ "cmp%I2clr,*%B3 %2,%r1,%0\;ldi -1,%0"
+ [(set_attr "type" "binary")
+ (set_attr "length" "8")])
+
Index: gcc/config/pa/pa.c
===================================================================
--- a/src/gcc/config/pa/pa.c (.../tags/gcc_4_7_3_release)