From: Jason Merrill Date: Fri, 21 Feb 2014 15:01:54 +0000 (-0500) Subject: re PR c++/60248 ([C++11] ICE specializing variadic template) X-Git-Tag: releases/gcc-4.7.4~230 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0b2c8f7f677facd703a100da93350295f808488c;p=thirdparty%2Fgcc.git 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 --- 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;