Declare that lowerinvoke doesn't interact with other lowering passes.

Patch written by Domagoj Babic!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28367 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2006-05-17 21:05:27 +00:00
parent 6b12516f1a
commit ed96fe8c79
5 changed files with 22 additions and 7 deletions

View File

@@ -41,11 +41,12 @@ namespace {
AU.addRequired<TargetData>(); AU.addRequired<TargetData>();
AU.setPreservesCFG(); AU.setPreservesCFG();
// This is a cluster of orthogonal Transforms: // This is a cluster of orthogonal Transforms:
AU.addPreserved<UnifyFunctionExitNodes>(); AU.addPreserved<UnifyFunctionExitNodes>();
AU.addPreservedID(PromoteMemoryToRegisterID); AU.addPreservedID(PromoteMemoryToRegisterID);
AU.addPreservedID(LowerSelectID); AU.addPreservedID(LowerSelectID);
AU.addPreservedID(LowerSwitchID); AU.addPreservedID(LowerSwitchID);
AU.addPreservedID(LowerInvokePassID);
} }
/// doPassInitialization - For the lower allocations pass, this ensures that /// doPassInitialization - For the lower allocations pass, this ensures that

View File

@@ -71,7 +71,15 @@ namespace {
JumpBufAlign(Align) {} JumpBufAlign(Align) {}
bool doInitialization(Module &M); bool doInitialization(Module &M);
bool runOnFunction(Function &F); bool runOnFunction(Function &F);
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
// This is a cluster of orthogonal Transforms
AU.addPreservedID(PromoteMemoryToRegisterID);
AU.addPreservedID(LowerSelectID);
AU.addPreservedID(LowerSwitchID);
AU.addPreservedID(LowerAllocationsID);
}
private: private:
void createAbortMessage(); void createAbortMessage();
void writeAbortMessage(Instruction *IB); void writeAbortMessage(Instruction *IB);

View File

@@ -39,10 +39,12 @@ namespace {
virtual void getAnalysisUsage(AnalysisUsage &AU) const { virtual void getAnalysisUsage(AnalysisUsage &AU) const {
// This certainly destroys the CFG. // This certainly destroys the CFG.
// This is a cluster of orthogonal Transforms: // This is a cluster of orthogonal Transforms:
AU.addPreserved<UnifyFunctionExitNodes>(); AU.addPreserved<UnifyFunctionExitNodes>();
AU.addPreservedID(PromoteMemoryToRegisterID); AU.addPreservedID(PromoteMemoryToRegisterID);
AU.addPreservedID(LowerSwitchID); AU.addPreservedID(LowerSwitchID);
AU.addPreservedID(LowerInvokePassID);
AU.addPreservedID(LowerAllocationsID);
} }
bool runOnFunction(Function &F); bool runOnFunction(Function &F);

View File

@@ -34,14 +34,16 @@ namespace {
class LowerSwitch : public FunctionPass { class LowerSwitch : public FunctionPass {
public: public:
virtual bool runOnFunction(Function &F); virtual bool runOnFunction(Function &F);
virtual void getAnalysisUsage(AnalysisUsage &AU) const { virtual void getAnalysisUsage(AnalysisUsage &AU) const {
// This is a cluster of orthogonal Transforms // This is a cluster of orthogonal Transforms
AU.addPreserved<UnifyFunctionExitNodes>(); AU.addPreserved<UnifyFunctionExitNodes>();
AU.addPreservedID(PromoteMemoryToRegisterID); AU.addPreservedID(PromoteMemoryToRegisterID);
AU.addPreservedID(LowerSelectID); AU.addPreservedID(LowerSelectID);
AU.addPreservedID(LowerInvokePassID);
AU.addPreservedID(LowerAllocationsID);
} }
typedef std::pair<Constant*, BasicBlock*> Case; typedef std::pair<Constant*, BasicBlock*> Case;
typedef std::vector<Case>::iterator CaseItr; typedef std::vector<Case>::iterator CaseItr;
private: private:

View File

@@ -38,10 +38,12 @@ namespace {
AU.addRequired<DominanceFrontier>(); AU.addRequired<DominanceFrontier>();
AU.addRequired<TargetData>(); AU.addRequired<TargetData>();
AU.setPreservesCFG(); AU.setPreservesCFG();
// This is a cluster of orthogonal Transforms // This is a cluster of orthogonal Transforms
AU.addPreserved<UnifyFunctionExitNodes>(); AU.addPreserved<UnifyFunctionExitNodes>();
AU.addPreservedID(LowerSelectID); AU.addPreservedID(LowerSelectID);
AU.addPreservedID(LowerSwitchID); AU.addPreservedID(LowerSwitchID);
AU.addPreservedID(LowerInvokePassID);
AU.addPreservedID(LowerAllocationsID);
} }
}; };