From 0b2c8f7f677facd703a100da93350295f808488c Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Fri, 21 Feb 2014 10:01:54 -0500 Subject: [PATCH] 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: r208005 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/mangle.c | 1 + gcc/testsuite/g++.dg/cpp0x/variadic149.C | 11 +++++++++++ 3 files changed, 17 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/variadic149.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index fbcba47d9bf8..a27488a7936b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2014-02-21 Jason Merrill + + PR c++/60248 + * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL. + 2014-02-20 Kai Tietz PR c++/58873 diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index 2d1cd95831ca..4f20af653332 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -3378,6 +3378,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 000000000000..a250e7c296a4 --- /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 struct A {}; + +template<> struct A<0> +{ + typedef enum { e } B; +}; + +A<0> a; -- 2.47.2