aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Tietz <ktietz@redhat.com>2012-01-19 23:15:26 +0100
committerKai Tietz <ktietz@gcc.gnu.org>2012-01-19 23:15:26 +0100
commit54a9f5eac3a0dc398fac641a42a1f12d535d9854 (patch)
tree188e6c535ecdcf56312df2d80a86c90f0a6ccaaf
parent2608d8414085d05d05fae8cba70ac22c8fe2c8d0 (diff)
downloadgcc-54a9f5eac3a0dc398fac641a42a1f12d535d9854.zip
gcc-54a9f5eac3a0dc398fac641a42a1f12d535d9854.tar.gz
gcc-54a9f5eac3a0dc398fac641a42a1f12d535d9854.tar.bz2
re PR c++/51344 (cc1plus hangs when compiling)
2012-01-19 Kai Tietz <ktietz@redhat.com> PR c++/51344 * decl2.c (save_template_attributes): Use merge_attributes instead of chaining up via TREE_CHAIN. 2012-01-19 Kai Tietz <ktietz@redhat.com> * g++.dg/torture/pr51344.C: New test. From-SVN: r183313
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/decl2.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/torture/pr51344.C9
4 files changed, 21 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index adec924..610baa2 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-19 Kai Tietz <ktietz@redhat.com>
+
+ PR c++/51344
+ * decl2.c (save_template_attributes): Use merge_attributes
+ instead of chaining up via TREE_CHAIN.
+
2012-01-19 Jason Merrill <jason@redhat.com>
PR c++/51889
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 270fe54..f51790c 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -1199,9 +1199,9 @@ save_template_attributes (tree *attr_p, tree *decl_p)
old_attrs = *q;
- /* Place the late attributes at the beginning of the attribute
+ /* Merge the late attributes at the beginning with the attribute
list. */
- TREE_CHAIN (tree_last (late_attrs)) = *q;
+ late_attrs = merge_attributes (late_attrs, *q);
*q = late_attrs;
if (!DECL_P (*decl_p) && *decl_p == TYPE_MAIN_VARIANT (*decl_p))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index eb1663c..9b81745 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2012-01-19 Kai Tietz <ktietz@redhat.com>
+
+ * g++.dg/torture/pr51344.C: New test.
+
2012-01-19 Tobias Burnus <burnus@net-b.de>
PR fortran/51904
diff --git a/gcc/testsuite/g++.dg/torture/pr51344.C b/gcc/testsuite/g++.dg/torture/pr51344.C
new file mode 100644
index 0000000..482c0fa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr51344.C
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+template <class T>
+class B
+{
+ friend __attribute__((cdecl)) A& operator >>(A& a, B& b)
+ {
+ return a;
+ }
+};