Changes in directory llvm/lib/Transforms/Scalar:
LowerAllocations.cpp updated: 1.56 -> 1.57 LowerSelect.cpp updated: 1.4 -> 1.5 LowerSwitch.cpp updated: 1.19 -> 1.20 Mem2Reg.cpp updated: 1.15 -> 1.16 --- Log message: Patch to make some xforms preserve each other. Patch contributed by Domagoj Babic! --- Diffs of the changes: (+28 -2) LowerAllocations.cpp | 7 +++++++ LowerSelect.cpp | 7 ++++++- LowerSwitch.cpp | 11 ++++++++++- Mem2Reg.cpp | 5 +++++ 4 files changed, 28 insertions(+), 2 deletions(-) Index: llvm/lib/Transforms/Scalar/LowerAllocations.cpp diff -u llvm/lib/Transforms/Scalar/LowerAllocations.cpp:1.56 llvm/lib/Transforms/Scalar/LowerAllocations.cpp:1.57 --- llvm/lib/Transforms/Scalar/LowerAllocations.cpp:1.56 Mon May 1 23:24:36 2006 +++ llvm/lib/Transforms/Scalar/LowerAllocations.cpp Mon May 8 23:13:41 2006 @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Transforms/Scalar.h" +#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" #include "llvm/Module.h" #include "llvm/DerivedTypes.h" #include "llvm/Instructions.h" @@ -39,6 +40,12 @@ virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired<TargetData>(); AU.setPreservesCFG(); + + // This is a cluster of orthogonal Transforms: + AU.addPreserved<UnifyFunctionExitNodes>(); + AU.addPreservedID(PromoteMemoryToRegisterID); + AU.addPreservedID(LowerSelectID); + AU.addPreservedID(LowerSwitchID); } /// doPassInitialization - For the lower allocations pass, this ensures that Index: llvm/lib/Transforms/Scalar/LowerSelect.cpp diff -u llvm/lib/Transforms/Scalar/LowerSelect.cpp:1.4 llvm/lib/Transforms/Scalar/LowerSelect.cpp:1.5 --- llvm/lib/Transforms/Scalar/LowerSelect.cpp:1.4 Mon May 1 23:24:36 2006 +++ llvm/lib/Transforms/Scalar/LowerSelect.cpp Mon May 8 23:13:41 2006 @@ -19,6 +19,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Transforms/Scalar.h" +#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" #include "llvm/Function.h" #include "llvm/Instructions.h" #include "llvm/Pass.h" @@ -37,7 +38,11 @@ LowerSelect(bool onlyfp = false) : OnlyFP(onlyfp) {} virtual void getAnalysisUsage(AnalysisUsage &AU) const { - // Doesn't really preserve anything. It can certainly destroy the CFG. + // This certainly destroys the CFG. + // This is a cluster of orthogonal Transforms: + AU.addPreserved<UnifyFunctionExitNodes>(); + AU.addPreservedID(PromoteMemoryToRegisterID); + AU.addPreservedID(LowerSwitchID); } bool runOnFunction(Function &F); Index: llvm/lib/Transforms/Scalar/LowerSwitch.cpp diff -u llvm/lib/Transforms/Scalar/LowerSwitch.cpp:1.19 llvm/lib/Transforms/Scalar/LowerSwitch.cpp:1.20 --- llvm/lib/Transforms/Scalar/LowerSwitch.cpp:1.19 Mon May 1 23:24:36 2006 +++ llvm/lib/Transforms/Scalar/LowerSwitch.cpp Mon May 8 23:13:41 2006 @@ -14,6 +14,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Transforms/Scalar.h" +#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" #include "llvm/Constants.h" #include "llvm/Function.h" #include "llvm/Instructions.h" @@ -32,7 +33,15 @@ /// modifies the CFG! class LowerSwitch : public FunctionPass { public: - bool runOnFunction(Function &F); + virtual bool runOnFunction(Function &F); + + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + // This is a cluster of orthogonal Transforms + AU.addPreserved<UnifyFunctionExitNodes>(); + AU.addPreservedID(PromoteMemoryToRegisterID); + AU.addPreservedID(LowerSelectID); + } + typedef std::pair<Constant*, BasicBlock*> Case; typedef std::vector<Case>::iterator CaseItr; private: Index: llvm/lib/Transforms/Scalar/Mem2Reg.cpp diff -u llvm/lib/Transforms/Scalar/Mem2Reg.cpp:1.15 llvm/lib/Transforms/Scalar/Mem2Reg.cpp:1.16 --- llvm/lib/Transforms/Scalar/Mem2Reg.cpp:1.15 Mon May 1 23:24:36 2006 +++ llvm/lib/Transforms/Scalar/Mem2Reg.cpp Mon May 8 23:13:41 2006 @@ -14,6 +14,7 @@ #include "llvm/Transforms/Scalar.h" #include "llvm/Transforms/Utils/PromoteMemToReg.h" +#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" #include "llvm/Analysis/Dominators.h" #include "llvm/Instructions.h" #include "llvm/Function.h" @@ -37,6 +38,10 @@ AU.addRequired<DominanceFrontier>(); AU.addRequired<TargetData>(); AU.setPreservesCFG(); + // This is a cluster of orthogonal Transforms + AU.addPreserved<UnifyFunctionExitNodes>(); + AU.addPreservedID(LowerSelectID); + AU.addPreservedID(LowerSwitchID); } }; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits