diff options
author | Hans Wennborg <hans@hanshq.net> | 2018-06-11 06:54:23 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2018-06-11 06:54:23 +0000 |
commit | 4cae35f6e479281a8de9914f4e4526df8cb07cc8 (patch) | |
tree | 3ae67ca1bcba3d0801040ac5ac7d3f03f907740b /clang/lib/AST/MicrosoftMangle.cpp | |
parent | 5e403b2981a663a7ac478e7b77fd857d59a37d93 (diff) | |
download | bcm5719-llvm-4cae35f6e479281a8de9914f4e4526df8cb07cc8.tar.gz bcm5719-llvm-4cae35f6e479281a8de9914f4e4526df8cb07cc8.zip |
[MS ABI] Mangle unnamed empty enums (PR37723)
Differential Revision: https://reviews.llvm.org/D47875
llvm-svn: 334388
Diffstat (limited to 'clang/lib/AST/MicrosoftMangle.cpp')
-rw-r--r-- | clang/lib/AST/MicrosoftMangle.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp index e9474791961..94e41991c9b 100644 --- a/clang/lib/AST/MicrosoftMangle.cpp +++ b/clang/lib/AST/MicrosoftMangle.cpp @@ -884,11 +884,13 @@ void MicrosoftCXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND, // associate typedef mangled in if they have one. Name += "<unnamed-type-"; Name += TND->getName(); - } else if (auto *ED = dyn_cast<EnumDecl>(TD)) { - auto EnumeratorI = ED->enumerator_begin(); - assert(EnumeratorI != ED->enumerator_end()); + } else if (isa<EnumDecl>(TD) && + cast<EnumDecl>(TD)->enumerator_begin() != + cast<EnumDecl>(TD)->enumerator_end()) { + // Anonymous non-empty enums mangle in the first enumerator. + auto *ED = cast<EnumDecl>(TD); Name += "<unnamed-enum-"; - Name += EnumeratorI->getName(); + Name += ED->enumerator_begin()->getName(); } else { // Otherwise, number the types using a $S prefix. Name += "<unnamed-type-$S"; |