summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ItaniumMangle.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-08-04 06:16:50 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-08-04 06:16:50 +0000
commit11d2427b21675815a2fdb81faff58fd187d95614 (patch)
tree563bd994459701b45356032874347c34a2a018d9 /clang/lib/AST/ItaniumMangle.cpp
parent37bffb6f3add4d58ef5f11ace024eac0cb4402c2 (diff)
downloadbcm5719-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.cpp4
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 << '_';
}
OpenPOWER on IntegriCloud