Fixes for DataLayout moved from pass to Module.  NFC intended.

llvm-svn: 231377
diff --git a/poolalloc/include/assistDS/Devirt.h b/poolalloc/include/assistDS/Devirt.h
index 0dba3ac..686e7b7 100644
--- a/poolalloc/include/assistDS/Devirt.h
+++ b/poolalloc/include/assistDS/Devirt.h
@@ -22,7 +22,6 @@
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/DerivedTypes.h"
 #include "llvm/IR/InstVisitor.h"
-#include "llvm/IR/DataLayout.h"
 
 using namespace llvm;
 
@@ -40,9 +39,6 @@
       // Access to analysis pass which finds targets of indirect function calls
       dsa::CallTargetFinder<EQTDDataStructures> *CTF;
 
-      // Access to the target data analysis pass
-      const DataLayout * TD;
-
       // Worklist of call sites to transform
       std::vector<Instruction *> Worklist;
 
@@ -63,7 +59,6 @@
 
       virtual void getAnalysisUsage(AnalysisUsage &AU) const {
         AU.addRequired<dsa::CallTargetFinder<EQTDDataStructures> >();
-        AU.addRequired<DataLayoutPass>();
       }
 
       // Visitor methods for analyzing instructions
diff --git a/poolalloc/include/assistDS/Int2PtrCmp.h b/poolalloc/include/assistDS/Int2PtrCmp.h
index 414b2ed..d81a9ea 100644
--- a/poolalloc/include/assistDS/Int2PtrCmp.h
+++ b/poolalloc/include/assistDS/Int2PtrCmp.h
@@ -13,7 +13,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/Module.h"
 #include "llvm/Pass.h"
@@ -25,16 +24,10 @@
   //
   //
   class Int2PtrCmp : public ModulePass {
-  private:
-    const DataLayout * TD;
   public:
     static char ID;
     Int2PtrCmp() : ModulePass(ID) {}
     virtual bool runOnModule(Module& M);
-    virtual void getAnalysisUsage(AnalysisUsage &AU) const {
-      AU.addRequired<DataLayoutPass>();
-    }
-
   };
 }
 
diff --git a/poolalloc/include/assistDS/MergeGEP.h b/poolalloc/include/assistDS/MergeGEP.h
index 012346d..4af6672 100644
--- a/poolalloc/include/assistDS/MergeGEP.h
+++ b/poolalloc/include/assistDS/MergeGEP.h
@@ -11,7 +11,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/Module.h"
 #include "llvm/Pass.h"
diff --git a/poolalloc/include/assistDS/SimplifyGEP.h b/poolalloc/include/assistDS/SimplifyGEP.h
index 5501509..729d6c5 100644
--- a/poolalloc/include/assistDS/SimplifyGEP.h
+++ b/poolalloc/include/assistDS/SimplifyGEP.h
@@ -11,7 +11,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/Module.h"
 #include "llvm/Pass.h"
@@ -21,15 +20,10 @@
   // Class: SimplifyGEP
   //
   class SimplifyGEP : public ModulePass {
-  private:
-    const DataLayout * TD;
   public:
     static char ID;
     SimplifyGEP() : ModulePass(ID) {}
     virtual bool runOnModule(Module& M);
-    virtual void getAnalysisUsage(AnalysisUsage &AU) const {
-      AU.addRequired<DataLayoutPass>();
-    }
   };
 }
 
diff --git a/poolalloc/include/assistDS/TypeChecks.h b/poolalloc/include/assistDS/TypeChecks.h
index 0d7b476..49500eb 100644
--- a/poolalloc/include/assistDS/TypeChecks.h
+++ b/poolalloc/include/assistDS/TypeChecks.h
@@ -16,9 +16,9 @@
 
 #include "dsa/AddressTakenAnalysis.h"
 
-#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/Function.h"
+#include "llvm/IR/Module.h"
 #include "llvm/Pass.h"
 #include "llvm/IR/CallSite.h"
 #include "llvm/IR/Dominators.h"
@@ -100,7 +100,6 @@
   virtual void print(raw_ostream &OS, const Module *M) const;
 
   virtual void getAnalysisUsage(AnalysisUsage &AU) const {
-    AU.addRequired<DataLayoutPass>();
     AU.addRequired<DominatorTreeWrapperPass>();
     AU.addRequired<LoopInfoWrapperPass>();
     AU.addRequired<AddressTakenAnalysis>();
diff --git a/poolalloc/include/assistDS/TypeChecksOpt.h b/poolalloc/include/assistDS/TypeChecksOpt.h
index 0bf0e5d..e87d577 100644
--- a/poolalloc/include/assistDS/TypeChecksOpt.h
+++ b/poolalloc/include/assistDS/TypeChecksOpt.h
@@ -17,7 +17,6 @@
 #include "dsa/TypeSafety.h"
 
 #include "llvm/Pass.h"
-#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/CallSite.h"
 
diff --git a/poolalloc/include/dsa/DataStructure.h b/poolalloc/include/dsa/DataStructure.h
index bd2be48..2c5e5f5 100644
--- a/poolalloc/include/dsa/DataStructure.h
+++ b/poolalloc/include/dsa/DataStructure.h
@@ -21,8 +21,8 @@
 #include "dsa/AllocatorIdentification.h"
 
 #include "llvm/Pass.h"
-#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/CallSite.h"
+#include "llvm/IR/Module.h"
 #include "llvm/ADT/EquivalenceClasses.h"
 #include "llvm/ADT/DenseSet.h"
 
@@ -165,7 +165,6 @@
   /// getAnalysisUsage - This obviously provides a data structure graph.
   ///
   virtual void getAnalysisUsage(AnalysisUsage &AU) const {
-    AU.addRequired<DataLayoutPass>();
     AU.setPreservesAll();
   }
 };
@@ -188,7 +187,6 @@
   /// getAnalysisUsage - This obviously provides a data structure graph.
   ///
   virtual void getAnalysisUsage(AnalysisUsage &AU) const {
-    AU.addRequired<DataLayoutPass>();
     AU.addRequired<AddressTakenAnalysis>();
     AU.setPreservesAll();
   }
diff --git a/poolalloc/include/dsa/TypeSafety.h b/poolalloc/include/dsa/TypeSafety.h
index 3317997..d04ca2b 100644
--- a/poolalloc/include/dsa/TypeSafety.h
+++ b/poolalloc/include/dsa/TypeSafety.h
@@ -65,7 +65,6 @@
     }
 
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
-      AU.addRequired<DataLayoutPass>();
       AU.addRequired<dsa>();
       AU.setPreservesAll();
     }
diff --git a/poolalloc/lib/AssistDS/Devirt.cpp b/poolalloc/lib/AssistDS/Devirt.cpp
index b861a8f..f9824fc 100644
--- a/poolalloc/lib/AssistDS/Devirt.cpp
+++ b/poolalloc/lib/AssistDS/Devirt.cpp
@@ -395,12 +395,6 @@
   //
   CTF = &getAnalysis<dsa::CallTargetFinder<EQTDDataStructures> >();
 
-  //
-  // Get information on the target system.
-  //
-  //
-  TD = &getAnalysis<DataLayoutPass>().getDataLayout();
-
   // Visit all of the call instructions in this function and record those that
   // are indirect function calls.
   //
diff --git a/poolalloc/lib/AssistDS/DynCount.cpp b/poolalloc/lib/AssistDS/DynCount.cpp
index bdcac72..0ae134d 100644
--- a/poolalloc/lib/AssistDS/DynCount.cpp
+++ b/poolalloc/lib/AssistDS/DynCount.cpp
@@ -16,7 +16,6 @@
 #include "llvm/IR/Module.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/Constants.h"
-#include "llvm/IR/DataLayout.h"
 #include "dsa/TypeSafety.h"
 
 using namespace llvm;
@@ -34,7 +33,6 @@
   }
   virtual bool runOnModule (Module & M);
   virtual void getAnalysisUsage(AnalysisUsage &AU) const {
-    AU.addRequired<DataLayoutPass>();
     AU.addRequired<dsa::TypeSafety<TDDataStructures> >();
   }
 };
diff --git a/poolalloc/lib/AssistDS/Int2PtrCmp.cpp b/poolalloc/lib/AssistDS/Int2PtrCmp.cpp
index 7242f12..7092f95 100644
--- a/poolalloc/lib/AssistDS/Int2PtrCmp.cpp
+++ b/poolalloc/lib/AssistDS/Int2PtrCmp.cpp
@@ -45,7 +45,7 @@
 //  false - The module was not modified.
 //
 bool Int2PtrCmp::runOnModule(Module& M) {
-  TD = &getAnalysis<DataLayoutPass>().getDataLayout();
+  const DataLayout &TD = M.getDataLayout();
   for (Module::iterator F = M.begin(); F != M.end(); ++F) {
     for (Function::iterator B = F->begin(), FE = F->end(); B != FE; ++B) {      
       for (BasicBlock::iterator I = B->begin(), BE = B->end(); I != BE;) {
@@ -71,8 +71,8 @@
           if (Constant *RHSC = dyn_cast<Constant>(Op1)) {
             if (Instruction *LHSI = dyn_cast<Instruction>(Op0)){
               if(LHSI->getOpcode() == Instruction::IntToPtr) {
-                if (RHSC->isNullValue() && TD &&
-                    TD->getIntPtrType(RHSC->getContext(), 0) ==
+                if (RHSC->isNullValue() &&
+                    TD.getIntPtrType(RHSC->getContext(), 0) ==
                     LHSI->getOperand(0)->getType()){
                   ICmpInst *CI_new = new ICmpInst(CI, CI->getPredicate(), LHSI->getOperand(0),
                                                   Constant::getNullValue(LHSI->getOperand(0)->getType()));
diff --git a/poolalloc/lib/AssistDS/SimplifyExtractValue.cpp b/poolalloc/lib/AssistDS/SimplifyExtractValue.cpp
index 5a4eb95..c2374aa 100644
--- a/poolalloc/lib/AssistDS/SimplifyExtractValue.cpp
+++ b/poolalloc/lib/AssistDS/SimplifyExtractValue.cpp
@@ -21,7 +21,6 @@
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/IR/PatternMatch.h"
-#include "llvm/IR/DataLayout.h"
 
 #include <set>
 #include <map>
diff --git a/poolalloc/lib/AssistDS/SimplifyGEP.cpp b/poolalloc/lib/AssistDS/SimplifyGEP.cpp
index 7aa3bf2..e918ff0 100644
--- a/poolalloc/lib/AssistDS/SimplifyGEP.cpp
+++ b/poolalloc/lib/AssistDS/SimplifyGEP.cpp
@@ -19,7 +19,7 @@
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/IR/Constants.h"
-#include "llvm/IR/DataLayout.h"
+#include "llvm/IR/Module.h"
 #include "llvm/IR/Operator.h"
 
 #include <vector>
@@ -75,7 +75,7 @@
 //  false - The module was not modified.
 //
 bool SimplifyGEP::runOnModule(Module& M) {
-  TD = &getAnalysis<DataLayoutPass>().getDataLayout();
+  const DataLayout &TD = M.getDataLayout();
   preprocess(M);
   for (Module::iterator F = M.begin(); F != M.end(); ++F){
     for (Function::iterator B = F->begin(), FE = F->end(); B != FE; ++B) {      
@@ -133,9 +133,9 @@
             // into:  %t1 = getelementptr [2 x i32]* %str, i32 0, i32 %V; bitcast
             Type *SrcElTy = StrippedPtrTy->getElementType();
             Type *ResElTy=cast<PointerType>(PtrOp->getType())->getElementType();
-            if (TD && SrcElTy->isArrayTy() &&
-                TD->getTypeAllocSize(cast<ArrayType>(SrcElTy)->getElementType()) ==
-                TD->getTypeAllocSize(ResElTy)) {
+            if (SrcElTy->isArrayTy() &&
+                TD.getTypeAllocSize(cast<ArrayType>(SrcElTy)->getElementType()) ==
+                TD.getTypeAllocSize(ResElTy)) {
               Value *Idx[2];
               Idx[0] = Constant::getNullValue(Type::getInt32Ty(GEP->getContext()));
               Idx[1] = GEP->getOperand(1);
@@ -151,9 +151,9 @@
             //   (where tmp = 8*tmp2) into:
             // getelementptr [100 x double]* %arr, i32 0, i32 %tmp2; bitcast
 
-            if (TD && SrcElTy->isArrayTy() && ResElTy->isIntegerTy(8)) {
+            if (SrcElTy->isArrayTy() && ResElTy->isIntegerTy(8)) {
               uint64_t ArrayEltSize =
-                TD->getTypeAllocSize(cast<ArrayType>(SrcElTy)->getElementType());
+                TD.getTypeAllocSize(cast<ArrayType>(SrcElTy)->getElementType());
 
               // Check to see if "tmp" is a scale by a multiple of ArrayEltSize.  We
               // allow either a mul, shift, or constant here.
diff --git a/poolalloc/lib/AssistDS/SimplifyInsertValue.cpp b/poolalloc/lib/AssistDS/SimplifyInsertValue.cpp
index d495721..91477be 100644
--- a/poolalloc/lib/AssistDS/SimplifyInsertValue.cpp
+++ b/poolalloc/lib/AssistDS/SimplifyInsertValue.cpp
@@ -19,7 +19,6 @@
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/IR/PatternMatch.h"
-#include "llvm/IR/DataLayout.h"
 
 #include <set>
 #include <map>
diff --git a/poolalloc/lib/AssistDS/SimplifyLoad.cpp b/poolalloc/lib/AssistDS/SimplifyLoad.cpp
index 9ed26b1..6582120 100644
--- a/poolalloc/lib/AssistDS/SimplifyLoad.cpp
+++ b/poolalloc/lib/AssistDS/SimplifyLoad.cpp
@@ -17,7 +17,6 @@
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/IR/PatternMatch.h"
-#include "llvm/IR/DataLayout.h"
 
 #include <set>
 #include <map>
diff --git a/poolalloc/lib/AssistDS/TypeChecks.cpp b/poolalloc/lib/AssistDS/TypeChecks.cpp
index cfd80cd..18502e0 100644
--- a/poolalloc/lib/AssistDS/TypeChecks.cpp
+++ b/poolalloc/lib/AssistDS/TypeChecks.cpp
@@ -153,7 +153,7 @@
   bool modified = false; // Flags whether we modified the module.
   bool transformIndirectCalls = true;
 
-  TD = &getAnalysis<DataLayoutPass>().getDataLayout();
+  TD = &M.getDataLayout();
   addrAnalysis = &getAnalysis<AddressTakenAnalysis>();
 
   // Create the necessary prototypes
diff --git a/poolalloc/lib/DSA/Basic.cpp b/poolalloc/lib/DSA/Basic.cpp
index 6f127f8..c5e9df5 100644
--- a/poolalloc/lib/DSA/Basic.cpp
+++ b/poolalloc/lib/DSA/Basic.cpp
@@ -33,7 +33,7 @@
 char BasicDataStructures::ID = 0;
 
 bool BasicDataStructures::runOnModule(Module &M) {
-  init(&getAnalysis<DataLayoutPass>().getDataLayout());
+  init(&M.getDataLayout());
 
   //
   // Create a void pointer type.  This is simply a pointer to an 8 bit value.
diff --git a/poolalloc/lib/DSA/DSGraph.cpp b/poolalloc/lib/DSA/DSGraph.cpp
index f2ddbab..004ead2 100644
--- a/poolalloc/lib/DSA/DSGraph.cpp
+++ b/poolalloc/lib/DSA/DSGraph.cpp
@@ -24,7 +24,6 @@
 #include "llvm/IR/GlobalVariable.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/DerivedTypes.h"
-#include "llvm/IR/DataLayout.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/ADT/DepthFirstIterator.h"
diff --git a/poolalloc/lib/DSA/DataStructure.cpp b/poolalloc/lib/DSA/DataStructure.cpp
index 757c5c3..8f12aff 100644
--- a/poolalloc/lib/DSA/DataStructure.cpp
+++ b/poolalloc/lib/DSA/DataStructure.cpp
@@ -23,7 +23,7 @@
 #include "llvm/IR/GlobalVariable.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/DerivedTypes.h"
-#include "llvm/IR/DataLayout.h"
+#include "llvm/IR/Module.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/ADT/DepthFirstIterator.h"
diff --git a/poolalloc/lib/DSA/DataStructureStats.cpp b/poolalloc/lib/DSA/DataStructureStats.cpp
index f8a7f4b..74c0c52 100644
--- a/poolalloc/lib/DSA/DataStructureStats.cpp
+++ b/poolalloc/lib/DSA/DataStructureStats.cpp
@@ -66,7 +66,6 @@
   class DSGraphStats : public FunctionPass, public InstVisitor<DSGraphStats> {
     void countCallees(const Function &F);
     const TDDataStructures *DS;
-    const DataLayout *TD;
     const DSGraph *TDGraph;
     dsa::TypeSafety<TDDataStructures> *TS;
     DSNodeHandle getNodeHandleForValue(Value *V);
@@ -82,7 +81,6 @@
     void getAnalysisUsage(AnalysisUsage &AU) const {
       AU.setPreservesAll();
       AU.addRequired<TDDataStructures>();
-      AU.addRequired<DataLayoutPass>();
       AU.addRequired<dsa::TypeSafety<TDDataStructures> >();
     }
 
@@ -238,7 +236,6 @@
 
 bool DSGraphStats::runOnFunction(Function& F) {
   DS = &getAnalysis<TDDataStructures>();
-  TD = &getAnalysis<DataLayoutPass>().getDataLayout();
   TS = &getAnalysis<dsa::TypeSafety<TDDataStructures> >();
   TDGraph = DS->getDSGraph(F);
   countCallees(F);
diff --git a/poolalloc/lib/DSA/Local.cpp b/poolalloc/lib/DSA/Local.cpp
index a785250..ec3a2fe 100644
--- a/poolalloc/lib/DSA/Local.cpp
+++ b/poolalloc/lib/DSA/Local.cpp
@@ -21,8 +21,8 @@
 #include "llvm/ADT/DenseSet.h"
 #include "llvm/ADT/Triple.h"
 #include "llvm/IR/Constants.h"
-#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/DerivedTypes.h"
+#include "llvm/IR/Module.h"
 #include "llvm/IR/InlineAsm.h"
 #include "llvm/IR/Intrinsics.h"
 #include "llvm/IR/Instructions.h"
@@ -1442,7 +1442,7 @@
 char LocalDataStructures::ID;
 
 bool LocalDataStructures::runOnModule(Module &M) {
-  init(&getAnalysis<DataLayoutPass>().getDataLayout());
+  init(&M.getDataLayout());
   addrAnalysis = &getAnalysis<AddressTakenAnalysis>();
 
   // First step, build the globals graph.
diff --git a/poolalloc/lib/DSA/StdLibPass.cpp b/poolalloc/lib/DSA/StdLibPass.cpp
index 32d3c4b..8149f68 100644
--- a/poolalloc/lib/DSA/StdLibPass.cpp
+++ b/poolalloc/lib/DSA/StdLibPass.cpp
@@ -18,10 +18,10 @@
 #include "dsa/DSGraph.h"
 #include "llvm/IR/Constants.h"
 #include "llvm/IR/DerivedTypes.h"
+#include "llvm/IR/GetElementPtrTypeIterator.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/Intrinsics.h"
-#include "llvm/IR/GetElementPtrTypeIterator.h"
-#include "llvm/IR/DataLayout.h"
+#include "llvm/IR/Module.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/FormattedStream.h"
diff --git a/poolalloc/lib/DSA/TypeSafety.cpp b/poolalloc/lib/DSA/TypeSafety.cpp
index 0c0f6f8..bac00c0 100644
--- a/poolalloc/lib/DSA/TypeSafety.cpp
+++ b/poolalloc/lib/DSA/TypeSafety.cpp
@@ -333,7 +333,7 @@
   //
   // Get access to prerequisite passes.
   //
-  TD      = &getAnalysis<DataLayoutPass>().getDataLayout();
+  TD      = &M.getDataLayout();
   dsaPass = &getAnalysis<dsa>();
 
   //
diff --git a/poolalloc/lib/PoolAllocate/AllHeapNodesHeuristic.cpp b/poolalloc/lib/PoolAllocate/AllHeapNodesHeuristic.cpp
index 948878d..1c94fad 100644
--- a/poolalloc/lib/PoolAllocate/AllHeapNodesHeuristic.cpp
+++ b/poolalloc/lib/PoolAllocate/AllHeapNodesHeuristic.cpp
@@ -25,7 +25,7 @@
 #include "llvm/ADT/DepthFirstIterator.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/FormattedStream.h"
-#include "llvm/IR/DataLayout.h"
+#include "llvm/IR/Module.h"
 #include <iostream>
 
 using namespace llvm;
diff --git a/poolalloc/lib/PoolAllocate/Heuristic.cpp b/poolalloc/lib/PoolAllocate/Heuristic.cpp
index 1a0f58a..a1985fe 100644
--- a/poolalloc/lib/PoolAllocate/Heuristic.cpp
+++ b/poolalloc/lib/PoolAllocate/Heuristic.cpp
@@ -24,7 +24,6 @@
 #include "llvm/ADT/DepthFirstIterator.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/FormattedStream.h"
-#include "llvm/IR/DataLayout.h"
 #include <iostream>
 
 using namespace llvm;
diff --git a/poolalloc/lib/PoolAllocate/PAMultipleGlobalPool.cpp b/poolalloc/lib/PoolAllocate/PAMultipleGlobalPool.cpp
index 58685fa..c34a5d6 100644
--- a/poolalloc/lib/PoolAllocate/PAMultipleGlobalPool.cpp
+++ b/poolalloc/lib/PoolAllocate/PAMultipleGlobalPool.cpp
@@ -21,7 +21,6 @@
 #include "poolalloc/PoolAllocate.h"
 
 #include "llvm/IR/Constants.h"
-#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/DerivedTypes.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/Module.h"
@@ -74,7 +73,6 @@
 }
 
 void PoolAllocateMultipleGlobalPool::getAnalysisUsage(AnalysisUsage &AU) const {
-  AU.addRequired<DataLayoutPass>();
   assert(0 && "PoolAllocateMultipleGlobalPool doesn't work! Needs Steensgard-like analysis, which was removed!");
   //AU.addRequiredTransitive<SteensgaardDataStructures>();
   // It is a big lie.
@@ -96,7 +94,7 @@
   Graphs = NULL;
   assert (Graphs && "No DSA pass available!\n");
 
-  const DataLayout & TD = getAnalysis<DataLayoutPass>().getDataLayout();
+  const DataLayout & TD = M.getDataLayout();
 
   // Add the pool* prototypes to the module
   AddPoolPrototypes(&M);
diff --git a/poolalloc/lib/PoolAllocate/PASimple.cpp b/poolalloc/lib/PoolAllocate/PASimple.cpp
index 7c971ee..b80231a 100644
--- a/poolalloc/lib/PoolAllocate/PASimple.cpp
+++ b/poolalloc/lib/PoolAllocate/PASimple.cpp
@@ -19,7 +19,6 @@
 #include "dsa/CallTargets.h"
 #include "poolalloc/PoolAllocate.h"
 #include "llvm/IR/Constants.h"
-#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/DerivedTypes.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/Module.h"
@@ -70,7 +69,6 @@
 }
 
 void PoolAllocateSimple::getAnalysisUsage(AnalysisUsage &AU) const {
-  AU.addRequired<DataLayoutPass>();
   // Get the Target Data information and the Graphs
   if (CompleteDSA) {
     AU.addRequiredTransitive<EQTDDataStructures>();
@@ -131,7 +129,7 @@
     Graphs = &getAnalysis<BasicDataStructures>();
   }
   assert (Graphs && "No DSA pass available!\n");
-  const DataLayout & TD = getAnalysis<DataLayoutPass>().getDataLayout();
+  const DataLayout & TD = M.getDataLayout();
 
   // Add the pool* prototypes to the module
   AddPoolPrototypes(&M);
diff --git a/poolalloc/lib/PoolAllocate/PoolAllocate.cpp b/poolalloc/lib/PoolAllocate/PoolAllocate.cpp
index 24e33cd..d1a5c06 100644
--- a/poolalloc/lib/PoolAllocate/PoolAllocate.cpp
+++ b/poolalloc/lib/PoolAllocate/PoolAllocate.cpp
@@ -23,7 +23,6 @@
 #include "poolalloc/RuntimeChecks.h"
 #include "llvm/IR/Attributes.h"
 #include "llvm/IR/Constants.h"
-#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/DerivedTypes.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/Module.h"
@@ -217,8 +216,6 @@
   // Preserve the pool information across passes
   if (lie_preserve_passes == LIE_PRESERVE_ALL)
     AU.setPreservesAll();
-
-  AU.addRequired<DataLayoutPass>();
 }
 
 bool PoolAllocate::runOnModule(Module &M) {
diff --git a/poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp b/poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp
index 5ca8046..c029488 100644
--- a/poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp
+++ b/poolalloc/lib/PoolAllocate/TransformFunctionBody.cpp
@@ -22,7 +22,6 @@
 #include "llvm/IR/DerivedTypes.h"
 #include "llvm/IR/Constants.h"
 #include "llvm/IR/Instructions.h"
-#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/InstVisitor.h"
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/Debug.h"