diff options
author | Mark Mitchell <mark@codesourcery.com> | 2006-06-15 03:51:51 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2006-06-15 03:51:51 +0000 |
commit | 4c4e648c764466b842ddaae513af83f7ac88c21c (patch) | |
tree | ba762aa5f0e7a8d1e860b417b9479cc9424da79b /gcc | |
parent | 0c926bff30bcdac2556794048446d7530c6433bf (diff) | |
download | gcc-4c4e648c764466b842ddaae513af83f7ac88c21c.zip gcc-4c4e648c764466b842ddaae513af83f7ac88c21c.tar.gz gcc-4c4e648c764466b842ddaae513af83f7ac88c21c.tar.bz2 |
re PR c++/27665 (ICE writing class instead of typename)
PR c++/27665
* parser.c (cp_parser_unqualified_id): Use constructor_name_p to
identify destructors.
(cp_parser_nested_name_specifier_opt): Remove invalid
optimization.
(cp_parser_template_id): Refine heuristic for determining whether
we are entering a scope.
PR c++/27665
* g++.dg/template/crash52.C: New test.
From-SVN: r114669
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/crash52.C | 19 |
3 files changed, 30 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7bdd699..78e4ed8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,13 @@ 2006-06-14 Mark Mitchell <mark@codesourcery.com> + PR c++/27665 + * parser.c (cp_parser_unqualified_id): Use constructor_name_p to + identify destructors. + (cp_parser_nested_name_specifier_opt): Remove invalid + optimization. + (cp_parser_template_id): Refine heuristic for determining whether + we are entering a scope. + PR c++/27648 * parser.c (cp_parser_declarator): Robustify. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6dc94a4..0a934c9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2006-06-14 Mark Mitchell <mark@codesourcery.com> + PR c++/27665 + * g++.dg/template/crash52.C: New test. + PR c++/27648 * g++.dg/ext/attrib22.C: New test. diff --git a/gcc/testsuite/g++.dg/template/crash52.C b/gcc/testsuite/g++.dg/template/crash52.C new file mode 100644 index 0000000..9fc3f68 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/crash52.C @@ -0,0 +1,19 @@ +// PR c++/27665 + +template<int> struct A +{ + struct B + { + struct C {}; + }; +}; + +template<int N> void foo() +{ + class A<N>::B::C X; +} + +void bar() +{ + foo<0>(); +} |