fix AsmPrinter::GetBlockAddressSymbol to always return a unique

label instead of trying to form one based on the BB name (which
causes collisions if the name is empty).  This fixes PR6608


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98495 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2010-03-14 17:53:23 +00:00
parent c441e97220
commit 3b9d6216a4
8 changed files with 37 additions and 31 deletions

View File

@@ -104,6 +104,18 @@ void MachineModuleInfo::AnalyzeModule(Module &M) {
UsedFunctions.insert(F);
}
/// getAddrLabelSymbol - Return the symbol to be used for the specified basic
/// block when its address is taken. This cannot be its normal LBB label
/// because the block may be accessed outside its containing function.
MCSymbol *MachineModuleInfo::getAddrLabelSymbol(const BasicBlock *BB) {
assert(BB->hasAddressTaken() &&
"Shouldn't get label for block without address taken");
MCSymbol *&Entry = AddrLabelSymbols[const_cast<BasicBlock*>(BB)];
if (Entry) return Entry;
return Entry = Context.CreateTempSymbol();
}
//===-EH-------------------------------------------------------------------===//
/// getOrCreateLandingPadInfo - Find or create an LandingPadInfo for the