From: Eli Friedman Date: Fri, 11 Dec 2009 18:00:57 +0000 (+0000) Subject: Fix for PR5706: let mangleName deal with mangling names without identifiers X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ecb7e932e9274a0628477d17931a06b3b109024a;p=clang Fix for PR5706: let mangleName deal with mangling names without identifiers correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91136 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp index d156ba549e..57f125e336 100644 --- a/lib/CodeGen/Mangle.cpp +++ b/lib/CodeGen/Mangle.cpp @@ -877,10 +877,7 @@ void CXXNameMangler::mangleType(const RecordType *T) { mangleType(static_cast(T)); } void CXXNameMangler::mangleType(const TagType *T) { - if (!T->getDecl()->getIdentifier()) - mangleName(T->getDecl()->getTypedefForAnonDecl()); - else - mangleName(T->getDecl()); + mangleName(T->getDecl()); } // ::= diff --git a/test/CodeGenCXX/mangle.cpp b/test/CodeGenCXX/mangle.cpp index 38f3c8bd3f..a2e92e9738 100644 --- a/test/CodeGenCXX/mangle.cpp +++ b/test/CodeGenCXX/mangle.cpp @@ -228,3 +228,11 @@ template typename __enable_if<(__is_scalar::__value), void>::__ty template void ft8(); // CHECK: @_Z3ft8IPvEN11__enable_ifIXsr11__is_scalarIT_E7__valueEvE6__typeEv template void ft8(); + +// PR5706 +// This example was crashing in the mangler code +struct S8 { + virtual ~S8() { } +}; + +static struct : S8 { } obj8;