diff options
author | Kai Tietz <ktietz@redhat.com> | 2012-01-19 23:15:26 +0100 |
---|---|---|
committer | Kai Tietz <ktietz@gcc.gnu.org> | 2012-01-19 23:15:26 +0100 |
commit | 54a9f5eac3a0dc398fac641a42a1f12d535d9854 (patch) | |
tree | 188e6c535ecdcf56312df2d80a86c90f0a6ccaaf | |
parent | 2608d8414085d05d05fae8cba70ac22c8fe2c8d0 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr51344.C | 9 |
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; + } +}; |