From: Jason Merrill Date: Fri, 21 Feb 2014 14:56:38 +0000 (-0500) Subject: re PR c++/60248 ([C++11] ICE specializing variadic template) X-Git-Tag: releases/gcc-4.9.0~774 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1ea32974525999aa5b4a4550a74bef7849d9e9e1;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: r208000 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 28ce7255a462..0dff51609672 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2014-02-21 Jason Merrill + 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 7bb6f4b0199c..251edb14d16e 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 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;