diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2009-12-11 18:00:57 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2009-12-11 18:00:57 +0000 |
commit | ecb7e932e9274a0628477d17931a06b3b109024a (patch) | |
tree | c37691a7dde189ae059bda55212ea63675478b9b | |
parent | 7628294ee86c2f5459b6bf476434fdc8f4f7055e (diff) |
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
-rw-r--r-- | lib/CodeGen/Mangle.cpp | 5 | ||||
-rw-r--r-- | test/CodeGenCXX/mangle.cpp | 8 |
2 files changed, 9 insertions, 4 deletions
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<const TagType*>(T)); } void CXXNameMangler::mangleType(const TagType *T) { - if (!T->getDecl()->getIdentifier()) - mangleName(T->getDecl()->getTypedefForAnonDecl()); - else - mangleName(T->getDecl()); + mangleName(T->getDecl()); } // <type> ::= <array-type> 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 T> typename __enable_if<(__is_scalar<T>::__value), void>::__ty template void ft8<int>(); // CHECK: @_Z3ft8IPvEN11__enable_ifIXsr11__is_scalarIT_E7__valueEvE6__typeEv template void ft8<void*>(); + +// PR5706 +// This example was crashing in the mangler code +struct S8 { + virtual ~S8() { } +}; + +static struct : S8 { } obj8; |