diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-08-04 06:16:50 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-08-04 06:16:50 +0000 |
commit | 11d2427b21675815a2fdb81faff58fd187d95614 (patch) | |
tree | 563bd994459701b45356032874347c34a2a018d9 /clang/lib/AST/ItaniumMangle.cpp | |
parent | 37bffb6f3add4d58ef5f11ace024eac0cb4402c2 (diff) | |
download | bcm5719-llvm-11d2427b21675815a2fdb81faff58fd187d95614.tar.gz bcm5719-llvm-11d2427b21675815a2fdb81faff58fd187d95614.zip |
AST: Fix the mangling for unqualified-blocks
CXXNameMangler::mangleUnqualifiedBlock believed that
MangleContext::getBlockId returned something that used Itanium-style
discriminator numbers.
Discriminator numbers start their numberign from 1 and the first
mangling that actually gets any sort of number mangled in is the second
discriminator.
However, Block IDs start from zero. The logic for omitting the mangling
number did a ' > 1' instead of a ' > 0' comparison; this could
potentially cause mangling conflicts.
llvm-svn: 214699
Diffstat (limited to 'clang/lib/AST/ItaniumMangle.cpp')
-rw-r--r-- | clang/lib/AST/ItaniumMangle.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index da83d710a15..486fab39eac 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -1409,8 +1409,8 @@ void CXXNameMangler::mangleUnqualifiedBlock(const BlockDecl *Block) { if (!Number) Number = Context.getBlockId(Block, false); Out << "Ub"; - if (Number > 1) - Out << Number - 2; + if (Number > 0) + Out << Number - 1; Out << '_'; } |