From 7cdd2e0cb01c06aad4c1ff8ebeb28109f17dc7f7 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 26 Sep 2002 00:17:21 +0000 Subject: [PATCH] Converted SimpleStructMutation to take TargetData as a required pass. llvm-svn: 3932 --- lib/Transforms/IPO/SimpleStructMutation.cpp | 33 ++++++--------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/lib/Transforms/IPO/SimpleStructMutation.cpp b/lib/Transforms/IPO/SimpleStructMutation.cpp index 022d6d822c5..4e21dd69a0d 100644 --- a/lib/Transforms/IPO/SimpleStructMutation.cpp +++ b/lib/Transforms/IPO/SimpleStructMutation.cpp @@ -12,7 +12,6 @@ #include "llvm/Target/TargetData.h" #include "llvm/DerivedTypes.h" #include -#include using std::vector; using std::set; using std::pair; @@ -20,8 +19,6 @@ using std::pair; namespace { struct SimpleStructMutation : public MutateStructTypes { enum Transform { SwapElements, SortElements }; - const TargetData &TD; - SimpleStructMutation(const TargetData &td) : TD(td) {} virtual bool run(Module &M) = 0; @@ -29,6 +26,7 @@ namespace { // FindUsedTypes and FindUnsafePointerTypes analysis passes... // virtual void getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequired(); AU.addRequired(); AU.addRequired(); MutateStructTypes::getAnalysisUsage(AU); @@ -39,8 +37,6 @@ namespace { }; struct SwapStructElements : public SimpleStructMutation { - SwapStructElements(const TargetData &TD) : SimpleStructMutation(TD) {} - virtual bool run(Module &M) { setTransforms(getTransforms(M, SwapElements)); bool Changed = MutateStructTypes::run(M); @@ -50,8 +46,6 @@ namespace { }; struct SortStructElements : public SimpleStructMutation { - SortStructElements(const TargetData &TD) : SimpleStructMutation(TD) {} - virtual bool run(Module &M) { setTransforms(getTransforms(M, SortElements)); bool Changed = MutateStructTypes::run(M); @@ -59,8 +53,15 @@ namespace { return Changed; } }; + + RegisterOpt X("swapstructs", + "Swap structure types around"); + RegisterOpt Y("sortstructs", + "Sort structure elements by size"); } // end anonymous namespace +Pass *createSwapElementsPass() { return new SwapStructElements(); } +Pass *createSortElementsPass() { return new SortStructElements(); } // PruneTypes - Given a type Ty, make sure that neither it, or one of its @@ -168,6 +169,7 @@ SimpleStructMutation::TransformsType // Build up a set of structure types that we are going to modify, and // information describing how to modify them. std::map > Transforms; + TargetData &TD = getAnalysis(); for (set::iterator I = TypesToModify.begin(), E = TypesToModify.end(); I != E; ++I) { @@ -179,20 +181,3 @@ SimpleStructMutation::TransformsType return Transforms; } - - -Pass *createSwapElementsPass(const TargetData &TD) { - return new SwapStructElements(TD); -} -Pass *createSortElementsPass(const TargetData &TD) { - return new SortStructElements(TD); -} - -namespace { - RegisterOpt X("swapstructs", - "Swap structure types around", - createSwapElementsPass); - RegisterOpt Y("sortstructs", - "Sort structure elements by size", - createSortElementsPass); -}