1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00

back this out for now. Growing Function is not good.

llvm-svn: 94097
This commit is contained in:
Jim Grosbach 2010-01-21 20:10:22 +00:00
parent 75db03497a
commit 57ca094a52
6 changed files with 5 additions and 54 deletions

View File

@ -113,11 +113,7 @@ class MachineModuleInfo : public ImmutablePass {
// LandingPads - List of LandingPadInfo describing the landing pad information
// in the current function.
std::vector<LandingPadInfo> LandingPads;
// Map of invoke call site index values to associated begin EH_LABEL for
// the current function.
DenseMap<unsigned, unsigned> CallSiteMap;
// TypeInfos - List of C++ TypeInfo used in the current function.
//
std::vector<GlobalVariable *> TypeInfos;
@ -302,19 +298,7 @@ public:
const std::vector<LandingPadInfo> &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<GlobalVariable *> &getTypeInfos() const {

View File

@ -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<Instruction*, unsigned>
CallSiteNumbering; ///< SjLj EH call site numbering
// HasLazyArguments is stored in Value::SubclassData.
/*bool HasLazyArguments;*/
@ -168,19 +165,7 @@ public:
setValueSubclassData((getSubclassDataFromValue() & 1) |
(static_cast<unsigned>(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; }

View File

@ -590,16 +590,7 @@ ComputeCallSiteTable(SmallVectorImpl<CallSiteEntry> &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.

View File

@ -71,7 +71,6 @@ void MachineModuleInfo::EndFunction() {
// Clean up exception info.
LandingPads.clear();
CallSiteMap.clear();
TypeInfos.clear();
FilterIds.clear();
FilterEnds.clear();

View File

@ -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();

View File

@ -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.