diff options
author | Chris Lattner <sabre@nondot.org> | 2010-03-14 17:53:23 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-03-14 17:53:23 +0000 |
commit | 3b9d6216a41cfd43759e787db26d797e1f0ba0a8 (patch) | |
tree | 70ab8ae438a0996ff774bc8fd0eafc4c5b6d69e8 /include | |
parent | c441e97220eb8f3fc062d8bdf04d261165428673 (diff) | |
download | external_llvm-3b9d6216a41cfd43759e787db26d797e1f0ba0a8.zip external_llvm-3b9d6216a41cfd43759e787db26d797e1f0ba0a8.tar.gz external_llvm-3b9d6216a41cfd43759e787db26d797e1f0ba0a8.tar.bz2 |
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
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/CodeGen/AsmPrinter.h | 3 | ||||
-rw-r--r-- | include/llvm/CodeGen/MachineModuleInfo.h | 10 |
2 files changed, 11 insertions, 2 deletions
diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h index a909bd6..a36105f 100644 --- a/include/llvm/CodeGen/AsmPrinter.h +++ b/include/llvm/CodeGen/AsmPrinter.h @@ -337,8 +337,7 @@ namespace llvm { /// GetBlockAddressSymbol - Return the MCSymbol used to satisfy BlockAddress /// uses of the specified basic block. MCSymbol *GetBlockAddressSymbol(const BlockAddress *BA) const; - MCSymbol *GetBlockAddressSymbol(const Function *F, - const BasicBlock *BB) const; + MCSymbol *GetBlockAddressSymbol(const BasicBlock *BB) const; /// EmitBasicBlockStart - This method prints the label for the specified /// MachineBasicBlock, an alignment (if present) and a comment describing diff --git a/include/llvm/CodeGen/MachineModuleInfo.h b/include/llvm/CodeGen/MachineModuleInfo.h index 30f99db..2b813cc 100644 --- a/include/llvm/CodeGen/MachineModuleInfo.h +++ b/include/llvm/CodeGen/MachineModuleInfo.h @@ -139,6 +139,11 @@ class MachineModuleInfo : public ImmutablePass { /// llvm.compiler.used. SmallPtrSet<const Function *, 32> UsedFunctions; + + /// AddrLabelSymbols - This map keeps track of which symbol is being used for + /// the specified basic block's address of label. + DenseMap<AssertingVH<BasicBlock>, MCSymbol*> AddrLabelSymbols; + bool CallsEHReturn; bool CallsUnwindInit; @@ -203,6 +208,11 @@ public: /// handling comsumers. std::vector<MachineMove> &getFrameMoves() { return FrameMoves; } + /// 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 *getAddrLabelSymbol(const BasicBlock *BB); + //===- EH ---------------------------------------------------------------===// /// getOrCreateLandingPadInfo - Find or create an LandingPadInfo for the |