From: Dehao Chen Date: Tue, 8 Nov 2016 16:32:32 +0000 (+0000) Subject: Use the last 7 bits to represent the discriminator to fit it in 1 byte ULEB128 (NFC). X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=43252d01799a9a7307a74ce73ea3e0ab748734cf;p=llvm Use the last 7 bits to represent the discriminator to fit it in 1 byte ULEB128 (NFC). From experiments, discriminator is rarely greater than 127. Here we enforce it to be no greater than 127 so that it will always fit in 1 byte. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286245 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Utils/AddDiscriminators.cpp b/lib/Transforms/Utils/AddDiscriminators.cpp index 66781ca76b4..2e95926c0b3 100644 --- a/lib/Transforms/Utils/AddDiscriminators.cpp +++ b/lib/Transforms/Utils/AddDiscriminators.cpp @@ -188,12 +188,13 @@ static bool addDiscriminators(Function &F) { continue; // If we could insert more than one block with the same line+file, a // discriminator is needed to distinguish both instructions. - unsigned Discriminator = R.second ? ++LDM[L] : LDM[L]; + // Only the lowest 7 bits are used to represent a discriminator to fit + // it in 1 byte ULEB128 representation. + unsigned Discriminator = (R.second ? ++LDM[L] : LDM[L]) & 0x7f; I.setDebugLoc(DIL->cloneWithDiscriminator(Discriminator)); DEBUG(dbgs() << DIL->getFilename() << ":" << DIL->getLine() << ":" - << DIL->getColumn() << ":" - << Discriminator << " " - << I << "\n"); + << DIL->getColumn() << ":" << Discriminator << " " << I + << "\n"); Changed = true; } } @@ -215,7 +216,8 @@ static bool addDiscriminators(Function &F) { Location L = std::make_pair(CurrentDIL->getFilename(), CurrentDIL->getLine()); if (!CallLocations.insert(L).second) { - Current->setDebugLoc(CurrentDIL->cloneWithDiscriminator(++LDM[L])); + Current->setDebugLoc( + CurrentDIL->cloneWithDiscriminator((++LDM[L]) & 0x7f)); Changed = true; } }