diff --git a/include/llvm/CodeGen/MachineModuleInfo.h b/include/llvm/CodeGen/MachineModuleInfo.h index 1964625f3e6..d36502985a5 100644 --- a/include/llvm/CodeGen/MachineModuleInfo.h +++ b/include/llvm/CodeGen/MachineModuleInfo.h @@ -113,11 +113,7 @@ class MachineModuleInfo : public ImmutablePass { // LandingPads - List of LandingPadInfo describing the landing pad information // in the current function. std::vector LandingPads; - - // Map of invoke call site index values to associated begin EH_LABEL for - // the current function. - DenseMap CallSiteMap; - + // TypeInfos - List of C++ TypeInfo used in the current function. // std::vector TypeInfos; @@ -302,19 +298,7 @@ public: const std::vector &getLandingPads() const { return LandingPads; } - - /// setCallSiteBeginLabel - Map the begin label for a call site - void setCallSiteBeginLabel(unsigned BeginLabel, unsigned Site) { - CallSiteMap[BeginLabel] = Site; - } - - /// getCallSiteBeginLabel - Get the call site number for a begin label - unsigned getCallSiteBeginLabel(unsigned BeginLabel) { - assert(CallSiteMap.count(BeginLabel) && - "Missing call site number for EH_LABEL!"); - return CallSiteMap[BeginLabel]; - } - + /// getTypeInfos - Return a reference to the C++ typeinfo for the current /// function. const std::vector &getTypeInfos() const { diff --git a/include/llvm/Function.h b/include/llvm/Function.h index 72cb267ae0b..38822332c43 100644 --- a/include/llvm/Function.h +++ b/include/llvm/Function.h @@ -24,7 +24,6 @@ #include "llvm/Argument.h" #include "llvm/Attributes.h" #include "llvm/Support/Compiler.h" -#include "llvm/ADT/DenseMap.h" namespace llvm { @@ -87,8 +86,6 @@ private: mutable ArgumentListType ArgumentList; ///< The formal arguments ValueSymbolTable *SymTab; ///< Symbol table of args/instructions AttrListPtr AttributeList; ///< Parameter attributes - DenseMap - CallSiteNumbering; ///< SjLj EH call site numbering // HasLazyArguments is stored in Value::SubclassData. /*bool HasLazyArguments;*/ @@ -168,19 +165,7 @@ public: setValueSubclassData((getSubclassDataFromValue() & 1) | (static_cast(CC) << 1)); } - - /// setCallSiteNumber - Set the call site number mapping for an invoke - /// in the function - void setCallSiteNumber(Instruction *II, unsigned Num) { - CallSiteNumbering[II] = Num; - } - - /// getCallSiteNumber - Get the call site number for an invoke instruction - unsigned getCallSiteNumber(Instruction *II) { - if (CallSiteNumbering.count(II) == 0) return 0; - return CallSiteNumbering[II]; - } - + /// getAttributes - Return the attribute list for this Function. /// const AttrListPtr &getAttributes() const { return AttributeList; } diff --git a/lib/CodeGen/AsmPrinter/DwarfException.cpp b/lib/CodeGen/AsmPrinter/DwarfException.cpp index d09f9d9bca4..615be0e1c79 100644 --- a/lib/CodeGen/AsmPrinter/DwarfException.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfException.cpp @@ -590,16 +590,7 @@ ComputeCallSiteTable(SmallVectorImpl &CallSites, } // Otherwise, create a new call-site. - if (MAI->getExceptionHandlingType() == ExceptionHandling::Dwarf) - CallSites.push_back(Site); - else { - // SjLj EH must maintain the call sites in the order assigned - // to them by the SjLjPrepare pass. - unsigned SiteNo = MMI->getCallSiteBeginLabel(BeginLabel); - if (CallSites.size() < SiteNo) - CallSites.resize(SiteNo); - CallSites[SiteNo - 1] = Site; - } + CallSites.push_back(Site); PreviousIsInvoke = true; } else { // Create a gap. diff --git a/lib/CodeGen/MachineModuleInfo.cpp b/lib/CodeGen/MachineModuleInfo.cpp index dc26d9144ff..ed5bb5e5410 100644 --- a/lib/CodeGen/MachineModuleInfo.cpp +++ b/lib/CodeGen/MachineModuleInfo.cpp @@ -71,7 +71,6 @@ void MachineModuleInfo::EndFunction() { // Clean up exception info. LandingPads.clear(); - CallSiteMap.clear(); TypeInfos.clear(); FilterIds.clear(); FilterEnds.clear(); diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 5b733a873ff..a3fb34576ac 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -5049,12 +5049,6 @@ void SelectionDAGBuilder::LowerCallTo(CallSite CS, SDValue Callee, // used to detect deletion of the invoke via the MachineModuleInfo. BeginLabel = MMI->NextLabelID(); - // Keep track of which landing pads go with which invokes. SjLj uses - // this to maintain the ordering of pads in the LSDA. Dwarf ignores it. - Function *F = LandingPad->getParent()->getFunction(); - MMI->setCallSiteBeginLabel(BeginLabel, - F->getCallSiteNumber(CS.getInstruction())); - // Both PendingLoads and PendingExports must be flushed here; // this call might not return. (void)getRoot(); diff --git a/lib/CodeGen/SjLjEHPrepare.cpp b/lib/CodeGen/SjLjEHPrepare.cpp index 95b94e6c307..95589331cf4 100644 --- a/lib/CodeGen/SjLjEHPrepare.cpp +++ b/lib/CodeGen/SjLjEHPrepare.cpp @@ -474,10 +474,8 @@ bool SjLjEHPass::insertSjLjEHSupport(Function &F) { // At this point, we are all set up, update the invoke instructions // to mark their call_site values, and fill in the dispatch switch // accordingly. - for (unsigned i = 0, e = Invokes.size(); i != e; ++i) { - F.setCallSiteNumber(Invokes[i], i+1); + for (unsigned i = 0, e = Invokes.size(); i != e; ++i) markInvokeCallSite(Invokes[i], i+1, CallSite, DispatchSwitch); - } // The front end has likely added calls to _Unwind_Resume. We need // to find those calls and mark the call_site as -1 immediately prior.