diff options
author | Jason Merrill <jason@redhat.com> | 2014-02-21 09:56:38 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-02-21 09:56:38 -0500 |
commit | 1ea32974525999aa5b4a4550a74bef7849d9e9e1 (patch) | |
tree | 864102dc7e919b56136302a4168daf69a9723e9a | |
parent | 1c195d2a8fcc6161198e2be68293cd824051b063 (diff) | |
download | gcc-1ea32974525999aa5b4a4550a74bef7849d9e9e1.zip gcc-1ea32974525999aa5b4a4550a74bef7849d9e9e1.tar.gz gcc-1ea32974525999aa5b4a4550a74bef7849d9e9e1.tar.bz2 |
re PR c++/60248 ([C++11] ICE specializing variadic template)
PR c++/60248
* mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
From-SVN: r208000
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/mangle.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/variadic149.C | 11 |
3 files changed, 15 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 28ce725..0dff516 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2014-02-21 Jason Merrill <jason@redhat.com> + PR c++/60248 + * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL. + PR c++/60252 * lambda.c (maybe_resolve_dummy): Don't try to capture this in declaration context. diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index 7bb6f4b..251edb1 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -3485,6 +3485,7 @@ mangle_decl (const tree decl) if (G.need_abi_warning /* Don't do this for a fake symbol we aren't going to emit anyway. */ + && TREE_CODE (decl) != TYPE_DECL && !DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl) && !DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (decl)) { diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic149.C b/gcc/testsuite/g++.dg/cpp0x/variadic149.C new file mode 100644 index 0000000..a250e7c --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/variadic149.C @@ -0,0 +1,11 @@ +// PR c++/60248 +// { dg-options "-std=c++11 -g -fabi-version=2" } + +template<int...> struct A {}; + +template<> struct A<0> +{ + typedef enum { e } B; +}; + +A<0> a; |