Index: include/assistDS/DataStructureCallGraph.h =================================================================== --- include/assistDS/DataStructureCallGraph.h +++ include/assistDS/DataStructureCallGraph.h @@ -1,108 +0,0 @@ -//===- DataStructureCallGraph.h - Provide a CallGraph using DSA -----------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file declares the DataStructureCallGraph implementation of the -// CallGraph analysis. Based on llvm/lib/Analysis/IPA/CallGraph.cpp. -// -//===----------------------------------------------------------------------===// - -#ifndef _DATA_STRUCTURE_CALLGRAPH_H -#define _DATA_STRUCTURE_CALLGRAPH_H - -#include "dsa/CallTargets.h" -#include "dsa/DataStructure.h" - -#include "llvm/IR/Module.h" -#include "llvm/Analysis/CallGraph.h" -#include "llvm/Support/Debug.h" -#include "llvm/Support/raw_ostream.h" - -namespace llvm { - -class DataStructureCallGraph : public ModulePass, public CallGraph { - // Root is root of the call graph, or the external node if a 'main' function - // couldn't be found. - CallGraphNode *Root; - - // ExternalCallingNode - This node has edges to all external functions and - // those internal functions that have their address taken. - CallGraphNode *ExternalCallingNode; - - // CallsExternalNode - This node has edges to it from all functions making - // indirect calls or calling an external function. - CallGraphNode *CallsExternalNode; - - typedef dsa::CallTargetFinder CallTargetFinderTy; - -public: - static char ID; - DataStructureCallGraph() : - ModulePass(ID), Root(0), ExternalCallingNode(0), CallsExternalNode(0) { } - - virtual bool runOnModule(Module &M); - - virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); - AU.addRequired(); - AU.setPreservesAll(); - } - - virtual void print(raw_ostream &OS, const Module *) const { - OS << "CallGraph Root is: "; - if (Function *F = getRoot()->getFunction()) - OS << F->getName() << "\n"; - else { - OS << "<>\n"; - } - - CallGraph::print(OS, 0); - } - - virtual void releaseMemory() { - destroy(); - } - - // getAdjustedAnalysisPointer - This method is used when a pass implements an - // analysis interface through multiple inheritance. If needed, it should - // override this to adjust the this pointer as needed for the specified pass - // info. - virtual void *getAdjustedAnalysisPointer(AnalysisID PI) { - if (PI == &CallGraph::ID) - return (CallGraph*)this; - return this; - } - - CallGraphNode* getExternalCallingNode() const { return ExternalCallingNode; } - CallGraphNode* getCallsExternalNode() const { return CallsExternalNode; } - - // getRoot - Return the root of the call graph, which is either main, or if - // main cannot be found, the external node. - CallGraphNode *getRoot() { return Root; } - const CallGraphNode *getRoot() const { return Root; } - -private: - // addToCallGraph - Add a function to the call graph, and link the node to all - // of the functions that it calls. - void addToCallGraph(Function *F); - - // destroy - Release memory for the call graph - virtual void destroy() { - // CallsExternalNode is not in the function map, delete it explicitly. - if (CallsExternalNode) { - CallsExternalNode->allReferencesDropped(); - delete CallsExternalNode; - CallsExternalNode = 0; - } - CallGraph::destroy(); - } -}; - -} - -#endif // _DATA_STRUCTURE_CALLGRAPH_H Index: include/assistDS/Devirt.h =================================================================== --- include/assistDS/Devirt.h +++ include/assistDS/Devirt.h @@ -21,7 +21,7 @@ #include "llvm/IR/Function.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/DerivedTypes.h" -#include "llvm/InstVisitor.h" +#include "llvm/IR/InstVisitor.h" #include "llvm/IR/DataLayout.h" using namespace llvm; @@ -41,7 +41,7 @@ dsa::CallTargetFinder *CTF; // Access to the target data analysis pass - DataLayout * TD; + const DataLayout * TD; // Worklist of call sites to transform std::vector Worklist; @@ -63,7 +63,7 @@ virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired >(); - AU.addRequired(); + AU.addRequired(); } // Visitor methods for analyzing instructions Index: include/assistDS/Int2PtrCmp.h =================================================================== --- include/assistDS/Int2PtrCmp.h +++ include/assistDS/Int2PtrCmp.h @@ -26,13 +26,13 @@ // class Int2PtrCmp : public ModulePass { private: - DataLayout * TD; + const DataLayout * TD; public: static char ID; Int2PtrCmp() : ModulePass(ID) {} virtual bool runOnModule(Module& M); virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); + AU.addRequired(); } }; Index: include/assistDS/SimplifyGEP.h =================================================================== --- include/assistDS/SimplifyGEP.h +++ include/assistDS/SimplifyGEP.h @@ -22,13 +22,13 @@ // class SimplifyGEP : public ModulePass { private: - DataLayout * TD; + const DataLayout * TD; public: static char ID; SimplifyGEP() : ModulePass(ID) {} virtual bool runOnModule(Module& M); virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); + AU.addRequired(); } }; } Index: include/assistDS/TypeChecks.h =================================================================== --- include/assistDS/TypeChecks.h +++ include/assistDS/TypeChecks.h @@ -20,8 +20,8 @@ #include "llvm/IR/Instructions.h" #include "llvm/IR/Function.h" #include "llvm/Pass.h" -#include "llvm/Support/CallSite.h" -#include "llvm/Analysis/Dominators.h" +#include "llvm/IR/CallSite.h" +#include "llvm/IR/Dominators.h" #include "llvm/Analysis/LoopInfo.h" #include @@ -49,7 +49,7 @@ std::map BitCast_MD_Map; // Analysis from other passes. - DataLayout *TD; + const DataLayout *TD; AddressTakenAnalysis* addrAnalysis; unsigned int getTypeMarker(Type*); @@ -100,8 +100,8 @@ virtual void print(raw_ostream &OS, const Module *M) const; virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); - AU.addRequired(); + AU.addRequired(); + AU.addRequired(); AU.addRequired(); AU.addRequired(); } Index: include/assistDS/TypeChecksOpt.h =================================================================== --- include/assistDS/TypeChecksOpt.h +++ include/assistDS/TypeChecksOpt.h @@ -19,7 +19,7 @@ #include "llvm/Pass.h" #include "llvm/IR/DataLayout.h" #include "llvm/IR/Instructions.h" -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" #include Index: include/dsa/CallTargets.h =================================================================== --- include/dsa/CallTargets.h +++ include/dsa/CallTargets.h @@ -16,7 +16,7 @@ #define LLVM_ANALYSIS_CALLTARGETS_H #include "llvm/Pass.h" -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" #include "dsa/DataStructure.h" #include Index: include/dsa/DSCallGraph.h =================================================================== --- include/dsa/DSCallGraph.h +++ include/dsa/DSCallGraph.h @@ -19,7 +19,7 @@ #include #include "llvm/ADT/EquivalenceClasses.h" -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" #include #include Index: include/dsa/DSSupport.h =================================================================== --- include/dsa/DSSupport.h +++ include/dsa/DSSupport.h @@ -20,7 +20,7 @@ #include #include "llvm/ADT/DenseSet.h" -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" namespace llvm { Index: include/dsa/DataStructure.h =================================================================== --- include/dsa/DataStructure.h +++ include/dsa/DataStructure.h @@ -22,7 +22,7 @@ #include "llvm/Pass.h" #include "llvm/IR/DataLayout.h" -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" #include "llvm/ADT/EquivalenceClasses.h" #include "llvm/ADT/DenseSet.h" @@ -45,7 +45,7 @@ typedef std::map DSInfoTy; /// DataLayout, comes in handy - DataLayout* TD; + const DataLayout* TD; /// Pass to get Graphs from DataStructures* GraphSource; @@ -87,7 +87,7 @@ std::vector GlobalFunctionList; void init(DataStructures* D, bool clone, bool useAuxCalls, bool copyGlobalAuxCalls, bool resetAux); - void init(DataLayout* T); + void init(const DataLayout* T); void formGlobalECs(); @@ -139,7 +139,7 @@ EquivalenceClasses &getGlobalECs() { return GlobalECs; } - DataLayout& getDataLayout() const { return *TD; } + const DataLayout& getDataLayout() const { return *TD; } const DSCallGraph& getCallGraph() const { return callgraph; } @@ -165,7 +165,7 @@ /// getAnalysisUsage - This obviously provides a data structure graph. /// virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); + AU.addRequired(); AU.setPreservesAll(); } }; @@ -188,7 +188,7 @@ /// getAnalysisUsage - This obviously provides a data structure graph. /// virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); + AU.addRequired(); AU.addRequired(); AU.setPreservesAll(); } Index: include/dsa/TypeSafety.h =================================================================== --- include/dsa/TypeSafety.h +++ include/dsa/TypeSafety.h @@ -49,7 +49,7 @@ bool typeFieldsOverlap (const DSNode * N); // Pointers to prerequisite passes - DataLayout * TD; + const DataLayout * TD; dsa * dsaPass; // Data structures @@ -65,7 +65,7 @@ } virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); + AU.addRequired(); AU.addRequired(); AU.setPreservesAll(); } Index: include/poolalloc/PoolAllocate.h =================================================================== --- include/poolalloc/PoolAllocate.h +++ include/poolalloc/PoolAllocate.h @@ -22,7 +22,7 @@ #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Instructions.h" #include "llvm/Pass.h" -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" #include "llvm/ADT/EquivalenceClasses.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseSet.h" @@ -536,7 +536,7 @@ bool runOnModule(Module &M); GlobalVariable *CreateGlobalPool(unsigned RecSize, unsigned Align, Module& M); - void ProcessFunctionBodySimple(Function& F, DataLayout & TD); + void ProcessFunctionBodySimple(Function& F, const DataLayout & TD); virtual DSGraph* getDSGraph (const Function & F) const { @@ -568,7 +568,7 @@ // FIXME: Is this used? Should it be removed? class PoolAllocateMultipleGlobalPool : public PoolAllocate { - void ProcessFunctionBodySimple(Function& F, DataLayout & TD); + void ProcessFunctionBodySimple(Function& F, const DataLayout & TD); /// Mapping between DSNodes and Pool descriptors. For this pass, it is a /// one-to-one relationship. typedef DenseMap PoolMapTy; Index: include/poolalloc/RunTimeAssociate.h =================================================================== --- include/poolalloc/RunTimeAssociate.h +++ include/poolalloc/RunTimeAssociate.h @@ -21,7 +21,7 @@ #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Instructions.h" #include "llvm/Pass.h" -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" #include "llvm/ADT/EquivalenceClasses.h" #include "llvm/ADT/DenseMap.h" #include "llvm/Support/CommandLine.h" Index: include/rdsa/CallTargets.h =================================================================== --- include/rdsa/CallTargets.h +++ include/rdsa/CallTargets.h @@ -16,7 +16,7 @@ #define LLVM_ANALYSIS_CALLTARGETS_H #include "llvm/Pass.h" -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" #include #include Index: include/rdsa/DSSupport.h =================================================================== --- include/rdsa/DSSupport.h +++ include/rdsa/DSSupport.h @@ -15,7 +15,7 @@ #define LLVM_ANALYSIS_DSSUPPORT_H #include -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" #include "poolalloc/ADT/HashExtras.h" namespace llvm { Index: include/rdsa/DataStructure.h =================================================================== --- include/rdsa/DataStructure.h +++ include/rdsa/DataStructure.h @@ -16,7 +16,7 @@ #include "llvm/Pass.h" #include "llvm/DataLayout.h" -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" #include "llvm/ADT/EquivalenceClasses.h" #include "poolalloc/ADT/HashExtras.h" @@ -203,7 +203,7 @@ /// getAnalysisUsage - This obviously provides a data structure graph. /// virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); + AU.addRequired(); AU.setPreservesAll(); } }; @@ -427,7 +427,7 @@ virtual void releaseMemory(); virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); + AU.addRequired(); AU.addRequired(); AU.setPreservesAll(); } Index: lib/AssistDS/CMakeLists.txt =================================================================== --- lib/AssistDS/CMakeLists.txt +++ lib/AssistDS/CMakeLists.txt @@ -2,7 +2,6 @@ ArgCast.cpp ArgSimplify.cpp DSNodeEquivs.cpp - DataStructureCallGraph.cpp Devirt.cpp DynCount.cpp FuncSimplify.cpp Index: lib/AssistDS/DSNodeEquivs.cpp =================================================================== --- lib/AssistDS/DSNodeEquivs.cpp +++ lib/AssistDS/DSNodeEquivs.cpp @@ -16,7 +16,7 @@ #include "llvm/IR/Constants.h" #include "llvm/IR/Module.h" -#include "llvm/Support/InstIterator.h" +#include "llvm/IR/InstIterator.h" #include "llvm/ADT/SmallSet.h" #include @@ -245,7 +245,7 @@ std::deque WL; SmallSet Visited; - WL.insert(WL.end(), V->use_begin(), V->use_end()); + WL.insert(WL.end(), V->user_begin(), V->user_end()); do { const User *TheUser = WL.front(); WL.pop_front(); @@ -271,7 +271,7 @@ // // If this use is of some other nature, look at the users of this use. // - WL.insert(WL.end(), TheUser->use_begin(), TheUser->use_end()); + WL.insert(WL.end(), TheUser->user_begin(), TheUser->user_end()); } } while (!WL.empty()); } Index: lib/AssistDS/DataStructureCallGraph.cpp =================================================================== --- lib/AssistDS/DataStructureCallGraph.cpp +++ lib/AssistDS/DataStructureCallGraph.cpp @@ -1,127 +0,0 @@ -//===- DataStructureCallGraph.cpp - Provide a CallGraph using DSA ---------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file contains the DataStructureCallGraph implementation of the -// CallGraph analysis. Based on llvm/lib/Analysis/IPA/CallGraph.cpp. -// -//===----------------------------------------------------------------------===// - -#include "assistDS/DataStructureCallGraph.h" -#include "dsa/DSGraph.h" -#include "dsa/DSNode.h" - -#include "llvm/ADT/SmallPtrSet.h" -#include "llvm/IR/Instructions.h" -#include "llvm/IR/IntrinsicInst.h" -#include "llvm/Support/CallSite.h" -#include "llvm/Support/InstIterator.h" - -using namespace llvm; - -char DataStructureCallGraph::ID; - -namespace { - -static RegisterPass -X("dsa-cg", "DSA-based CallGraph implementation"); - -RegisterAnalysisGroup Y(X); - -} - -bool DataStructureCallGraph::runOnModule(Module &M) { - CallGraph::initialize(M); - - ExternalCallingNode = getOrInsertFunction(0); - CallsExternalNode = new CallGraphNode(0); - Root = 0; - - // Add every function to the call graph. - for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) - addToCallGraph(I); - - // If we didn't find a main function, use the external call graph node - if (Root == 0) Root = ExternalCallingNode; - - return false; -} - -// Add a function to the call graph, and link the node to all of the functions -// that it calls. -void DataStructureCallGraph::addToCallGraph(Function *F) { - CallGraphNode *Node = getOrInsertFunction(F); - - if (!F->hasLocalLinkage()) { - ExternalCallingNode->addCalledFunction(CallSite(), Node); - - // Found the entry point? - if (F->getName() == "main") { - if (Root) // Found multiple external mains? Don't pick one. - Root = ExternalCallingNode; - else - Root = Node; // Found a main, keep track of it! - } - } - - // If this function is not defined in this translation unit, it could call - // anything. - if (F->isDeclaration() && !F->isIntrinsic()) { - Node->addCalledFunction(CallSite(), CallsExternalNode); - return; - } - - TDDataStructures &DS = getAnalysis(); - DSGraph &GG = *DS.getGlobalsGraph(); - CallTargetFinderTy &CTF = getAnalysis(); - - // Determine if the function can be called by external code by looking up - // its DSNode in the globals graph. A node marked External, Unknown, or - // Incomplete has the possibility of being called from external code. - DSNode *N = GG.getNodeForValue(F).getNode(); - - if (N && - (N->isExternalNode() || - N->isUnknownNode() || - N->isIncompleteNode())) { - ExternalCallingNode->addCalledFunction(CallSite(), Node); - } - - // Go over the instructions in the function and determine the call targets - // for each call site. - for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I) { - CallSite CS(&*I); - - // Only look through valid call sites that are not calls to intrinsics. - if (!CS || isa(&*I)) - continue; - - if (const Function *F = - dyn_cast(CS.getCalledValue()->stripPointerCasts())) { - // Direct call: Don't use DSA, just add the function we discovered as - // the call target. - - Node->addCalledFunction(CS, getOrInsertFunction(F)); - } else { - // Indirect call: Use CallTargetFinder to determine the set of targets to - // the indirect call site. Be conservative about incomplete call sites. - - if (!CTF.isComplete(CS)) { - // Add CallsExternalNode as a target of incomplete call sites. - Node->addCalledFunction(CS, CallsExternalNode); - } - - SmallPtrSet Targets(CTF.begin(CS), CTF.end(CS)); - - for (SmallPtrSet::const_iterator - TI = Targets.begin(), TE = Targets.end(); TI != TE; ++TI) { - Node->addCalledFunction(CS, getOrInsertFunction(*TI)); - } - } - } -} Index: lib/AssistDS/Devirt.cpp =================================================================== --- lib/AssistDS/Devirt.cpp +++ lib/AssistDS/Devirt.cpp @@ -399,7 +399,7 @@ // Get information on the target system. // // - TD = &getAnalysis(); + TD = &getAnalysis().getDataLayout(); // Visit all of the call instructions in this function and record those that // are indirect function calls. Index: lib/AssistDS/DynCount.cpp =================================================================== --- lib/AssistDS/DynCount.cpp +++ lib/AssistDS/DynCount.cpp @@ -34,7 +34,7 @@ } virtual bool runOnModule (Module & M); virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); + AU.addRequired(); AU.addRequired >(); } }; Index: lib/AssistDS/FuncSpec.cpp =================================================================== --- lib/AssistDS/FuncSpec.cpp +++ lib/AssistDS/FuncSpec.cpp @@ -69,7 +69,7 @@ } } // Now find all call sites that it is called from - for(Value::use_iterator ui = I->use_begin(), ue = I->use_end(); + for(Value::user_iterator ui = I->user_begin(), ue = I->user_end(); ui != ue; ++ui) { if (CallInst* CI = dyn_cast(*ui)) { // Check that it is the called value (and not an argument) Index: lib/AssistDS/GEPExprArgs.cpp =================================================================== --- lib/AssistDS/GEPExprArgs.cpp +++ lib/AssistDS/GEPExprArgs.cpp @@ -16,10 +16,10 @@ #include "llvm/IR/Constants.h" #include "llvm/IR/Operator.h" #include "llvm/IR/Use.h" -#include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/IR/GetElementPtrTypeIterator.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/ADT/Statistic.h" -#include "llvm/ADT/ValueMap.h" +#include "llvm/IR/ValueMap.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Support/Debug.h" #include Index: lib/AssistDS/IndCloner.cpp =================================================================== --- lib/AssistDS/IndCloner.cpp +++ lib/AssistDS/IndCloner.cpp @@ -71,7 +71,7 @@ // function by the linker. // if (!I->isDeclaration() && !I->mayBeOverridden()) { - for (Value::use_iterator ui = I->use_begin(), ue = I->use_end(); + for (Value::user_iterator ui = I->user_begin(), ue = I->user_end(); ui != ue; ++ui) { if (!isa(*ui) && !isa(*ui)) { if(!ui->use_empty()) Index: lib/AssistDS/Int2PtrCmp.cpp =================================================================== --- lib/AssistDS/Int2PtrCmp.cpp +++ lib/AssistDS/Int2PtrCmp.cpp @@ -18,7 +18,7 @@ #include "llvm/ADT/Statistic.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Support/Debug.h" -#include "llvm/Support/PatternMatch.h" +#include "llvm/IR/PatternMatch.h" #include #include @@ -45,7 +45,7 @@ // false - The module was not modified. // bool Int2PtrCmp::runOnModule(Module& M) { - TD = &getAnalysis(); + TD = &getAnalysis().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;) { Index: lib/AssistDS/LoadArgs.cpp =================================================================== --- lib/AssistDS/LoadArgs.cpp +++ lib/AssistDS/LoadArgs.cpp @@ -17,10 +17,10 @@ #include "assistDS/LoadArgs.h" #include "llvm/IR/Constants.h" #include "llvm/IR/Use.h" -#include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/IR/GetElementPtrTypeIterator.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/ADT/Statistic.h" -#include "llvm/ADT/ValueMap.h" +#include "llvm/IR/ValueMap.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Support/Debug.h" #include Index: lib/AssistDS/MergeGEP.cpp =================================================================== --- lib/AssistDS/MergeGEP.cpp +++ lib/AssistDS/MergeGEP.cpp @@ -18,7 +18,7 @@ #include "llvm/IR/Instructions.h" #include "llvm/IR/Operator.h" #include "llvm/IR/Module.h" -#include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/IR/GetElementPtrTypeIterator.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/ADT/Statistic.h" #include "llvm/Support/FormattedStream.h" Index: lib/AssistDS/SimplifyExtractValue.cpp =================================================================== --- lib/AssistDS/SimplifyExtractValue.cpp +++ lib/AssistDS/SimplifyExtractValue.cpp @@ -20,7 +20,7 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Support/Debug.h" -#include "llvm/Support/PatternMatch.h" +#include "llvm/IR/PatternMatch.h" #include "llvm/IR/DataLayout.h" #include Index: lib/AssistDS/SimplifyGEP.cpp =================================================================== --- lib/AssistDS/SimplifyGEP.cpp +++ lib/AssistDS/SimplifyGEP.cpp @@ -15,7 +15,7 @@ #define DEBUG_TYPE "simplify-gep" #include "assistDS/SimplifyGEP.h" -#include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/IR/GetElementPtrTypeIterator.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Support/Debug.h" #include "llvm/IR/Constants.h" @@ -75,7 +75,7 @@ // false - The module was not modified. // bool SimplifyGEP::runOnModule(Module& M) { - TD = &getAnalysis(); + TD = &getAnalysis().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) { Index: lib/AssistDS/SimplifyInsertValue.cpp =================================================================== --- lib/AssistDS/SimplifyInsertValue.cpp +++ lib/AssistDS/SimplifyInsertValue.cpp @@ -18,7 +18,7 @@ #include "llvm/ADT/Statistic.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Support/Debug.h" -#include "llvm/Support/PatternMatch.h" +#include "llvm/IR/PatternMatch.h" #include "llvm/IR/DataLayout.h" #include Index: lib/AssistDS/SimplifyLoad.cpp =================================================================== --- lib/AssistDS/SimplifyLoad.cpp +++ lib/AssistDS/SimplifyLoad.cpp @@ -16,7 +16,7 @@ #include "llvm/ADT/Statistic.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Support/Debug.h" -#include "llvm/Support/PatternMatch.h" +#include "llvm/IR/PatternMatch.h" #include "llvm/IR/DataLayout.h" #include Index: lib/AssistDS/StructReturnToPointer.cpp =================================================================== --- lib/AssistDS/StructReturnToPointer.cpp +++ lib/AssistDS/StructReturnToPointer.cpp @@ -17,7 +17,7 @@ #include "llvm/IR/Attributes.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/ADT/Statistic.h" -#include "llvm/ADT/ValueMap.h" +#include "llvm/IR/ValueMap.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Support/Debug.h" Index: lib/AssistDS/TypeChecks.cpp =================================================================== --- lib/AssistDS/TypeChecks.cpp +++ lib/AssistDS/TypeChecks.cpp @@ -16,9 +16,8 @@ #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Module.h" -#include "llvm/Assembly/Writer.h" #include "llvm/Support/Debug.h" -#include "llvm/Support/InstIterator.h" +#include "llvm/IR/InstIterator.h" #include "llvm/Support/raw_ostream.h" #include "llvm/IR/Intrinsics.h" #include "llvm/Support/CommandLine.h" @@ -152,7 +151,7 @@ bool modified = false; // Flags whether we modified the module. bool transformIndirectCalls = true; - TD = &getAnalysis(); + TD = &getAnalysis().getDataLayout(); addrAnalysis = &getAnalysis(); // Create the necessary prototypes @@ -257,7 +256,7 @@ Function &F = *MI; if(F.isDeclaration()) continue; - DominatorTree & DT = getAnalysis(F); + DominatorTree & DT = getAnalysis(F).getDomTree(); std::deque Worklist; Worklist.push_back (DT.getRootNode()); while(Worklist.size()) { @@ -321,8 +320,8 @@ Constant *CNew = ConstantExpr::getBitCast(FI->second, F->getType()); std::set toReplace; - for(Function::use_iterator User = F->use_begin(); - User != F->use_end();++User) { + for(Function::user_iterator User = F->user_begin(); + User != F->user_end();++User) { toReplace.insert(*User); } for(std::set::iterator userI = toReplace.begin(); userI != toReplace.end(); ++userI) { @@ -506,7 +505,7 @@ Function &F = *MI; if(F.isDeclaration()) continue; - DominatorTree & DT = getAnalysis(F); + DominatorTree & DT = getAnalysis(F).getDomTree(); std::deque Worklist; Worklist.push_back (DT.getRootNode()); while(Worklist.size()) { @@ -550,7 +549,7 @@ Function &F = *MI; if(F.isDeclaration()) continue; - DominatorTree & DT = getAnalysis(F); + DominatorTree & DT = getAnalysis(F).getDomTree(); LoopInfo & LI = getAnalysis(F); std::deque Worklist; Worklist.push_back (DT.getRootNode()); @@ -2124,7 +2123,7 @@ // BCI - ptr // I - instruction whose uses to instrument bool TypeChecks::visitUses(Instruction *I, Instruction *AI, Value *BCI) { - for(Value::use_iterator II = I->use_begin(); II != I->use_end(); ++II) { + for(Value::user_iterator II = I->user_begin(); II != I->user_end(); ++II) { if(DisablePtrCmpChecks) { if(isa(*II)) { if(I->getType()->isPointerTy()) Index: lib/AssistDS/TypeChecksOpt.cpp =================================================================== --- lib/AssistDS/TypeChecksOpt.cpp +++ lib/AssistDS/TypeChecksOpt.cpp @@ -16,9 +16,8 @@ #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Module.h" -#include "llvm/Assembly/Writer.h" #include "llvm/Support/Debug.h" -#include "llvm/Support/InstIterator.h" +#include "llvm/IR/InstIterator.h" #include "llvm/Support/raw_ostream.h" #include "llvm/IR/Intrinsics.h" #include "llvm/Support/CommandLine.h" Index: lib/DSA/AddressTakenAnalysis.cpp =================================================================== --- lib/DSA/AddressTakenAnalysis.cpp +++ lib/DSA/AddressTakenAnalysis.cpp @@ -15,6 +15,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Pass.h" +#include "llvm/IR/CallSite.h" #include "llvm/IR/Constants.h" #include "llvm/IR/Module.h" #include "llvm/IR/Function.h" @@ -22,7 +23,6 @@ #include "llvm/Support/CommandLine.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Support/Debug.h" -#include "llvm/Support/CallSite.h" #include #include @@ -36,7 +36,7 @@ static bool isAddressTaken(Value* V) { for (Value::use_iterator I = V->use_begin(), E = V->use_end(); I != E; ++I) { - User *U = *I; + User *U = I->getUser(); if(isa(U)) return true; if (!isa(U) && !isa(U)) { @@ -60,7 +60,7 @@ // are never used } else { llvm::CallSite CS(cast(U)); - if (!CS.isCallee(I)) + if (!CS.isCallee(&(*I))) return true; } } Index: lib/DSA/Basic.cpp =================================================================== --- lib/DSA/Basic.cpp +++ lib/DSA/Basic.cpp @@ -15,15 +15,15 @@ #include "dsa/DataStructure.h" #include "dsa/DSGraph.h" -#include "llvm/InstVisitor.h" +#include "llvm/IR/InstVisitor.h" #include "llvm/IR/Constants.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/Intrinsics.h" #include "llvm/IR/Module.h" #include "llvm/IR/TypeBuilder.h" -#include "llvm/Support/InstIterator.h" -#include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/IR/InstIterator.h" +#include "llvm/IR/GetElementPtrTypeIterator.h" using namespace llvm; @@ -33,7 +33,7 @@ char BasicDataStructures::ID = 0; bool BasicDataStructures::runOnModule(Module &M) { - init(&getAnalysis()); + init(&getAnalysis().getDataLayout()); // // Create a void pointer type. This is simply a pointer to an 8 bit value. Index: lib/DSA/DSGraph.cpp =================================================================== --- lib/DSA/DSGraph.cpp +++ lib/DSA/DSGraph.cpp @@ -23,7 +23,6 @@ #include "llvm/IR/Instructions.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/DataLayout.h" -#include "llvm/Assembly/Writer.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" #include "llvm/ADT/DepthFirstIterator.h" Index: lib/DSA/DSTest.cpp =================================================================== --- lib/DSA/DSTest.cpp +++ lib/DSA/DSTest.cpp @@ -45,7 +45,6 @@ #include "llvm/Support/CommandLine.h" #include "llvm/Support/raw_ostream.h" #include "llvm/IR/ValueSymbolTable.h" -#include "llvm/Assembly/Writer.h" using namespace llvm; namespace { Index: lib/DSA/DataStructure.cpp =================================================================== --- lib/DSA/DataStructure.cpp +++ lib/DSA/DataStructure.cpp @@ -22,7 +22,6 @@ #include "llvm/IR/Instructions.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/DataLayout.h" -#include "llvm/Assembly/Writer.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" #include "llvm/ADT/DepthFirstIterator.h" @@ -1496,7 +1495,7 @@ if (!clone) D->DSGraphsStolen = true; } -void DataStructures::init(DataLayout* T) { +void DataStructures::init(const DataLayout* T) { assert (!TD && "Already init"); GraphSource = 0; Clone = false; Index: lib/DSA/DataStructureStats.cpp =================================================================== --- lib/DSA/DataStructureStats.cpp +++ lib/DSA/DataStructureStats.cpp @@ -18,7 +18,7 @@ #include "llvm/IR/Constants.h" #include "llvm/IR/Function.h" #include "llvm/IR/Instructions.h" -#include "llvm/InstVisitor.h" +#include "llvm/IR/InstVisitor.h" #include "llvm/Pass.h" #include "llvm/ADT/Statistic.h" #include "llvm/Support/Debug.h" @@ -80,7 +80,7 @@ void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); AU.addRequired(); - AU.addRequired(); + AU.addRequired(); AU.addRequired >(); } @@ -236,7 +236,7 @@ bool DSGraphStats::runOnFunction(Function& F) { DS = &getAnalysis(); - TD = &getAnalysis(); + TD = &getAnalysis().getDataLayout(); TS = &getAnalysis >(); TDGraph = DS->getDSGraph(F); countCallees(F); Index: lib/DSA/EquivClassGraphs.cpp =================================================================== --- lib/DSA/EquivClassGraphs.cpp +++ lib/DSA/EquivClassGraphs.cpp @@ -20,7 +20,7 @@ #include "llvm/IR/Module.h" #include "llvm/Pass.h" #include "dsa/DSGraph.h" -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" #include "llvm/Support/Debug.h" #include "llvm/ADT/SCCIterator.h" #include "llvm/ADT/Statistic.h" Index: lib/DSA/Local.cpp =================================================================== --- lib/DSA/Local.cpp +++ lib/DSA/Local.cpp @@ -31,8 +31,8 @@ #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" #include "llvm/Support/FormattedStream.h" -#include "llvm/Support/GetElementPtrTypeIterator.h" -#include "llvm/InstVisitor.h" +#include "llvm/IR/GetElementPtrTypeIterator.h" +#include "llvm/IR/InstVisitor.h" #include "llvm/Support/Timer.h" #include @@ -1440,7 +1440,7 @@ char LocalDataStructures::ID; bool LocalDataStructures::runOnModule(Module &M) { - init(&getAnalysis()); + init(&getAnalysis().getDataLayout()); addrAnalysis = &getAnalysis(); // First step, build the globals graph. Index: lib/DSA/Printer.cpp =================================================================== --- lib/DSA/Printer.cpp +++ lib/DSA/Printer.cpp @@ -18,7 +18,6 @@ #include "dsa/DSGraphTraits.h" #include "llvm/IR/Module.h" #include "llvm/IR/Constants.h" -#include "llvm/Assembly/Writer.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/GraphWriter.h" #include "llvm/ADT/Statistic.h" @@ -116,7 +115,7 @@ for (DSNode::globals_iterator i = N->globals_begin(), e = N->globals_end(); i != e; ++i) { - WriteAsOperand(OS, *i, false, M); + (*i)->print(OS); // Figure out how many globals are equivalent to this one. if (GlobalECs) { @@ -214,7 +213,7 @@ if (!isa(I->first)) { std::string OS_str; llvm::raw_string_ostream OS(OS_str); - WriteAsOperand(OS, I->first, false, CurMod); + I->first->print(OS); GW.emitSimpleNode(I->first, "", OS.str()); // Add edge from return node to real destination @@ -305,7 +304,7 @@ O << "Writing '" << Filename << "'..."; if (!DontPrintGraphs) { std::string Error; - llvm::raw_fd_ostream F(Filename.c_str(), Error); + llvm::raw_fd_ostream F(Filename.c_str(), Error, sys::fs::F_Text); if (Error.size()) { O << " error opening file for writing! " << Error << "\n"; Index: lib/DSA/StdLibPass.cpp =================================================================== --- lib/DSA/StdLibPass.cpp +++ lib/DSA/StdLibPass.cpp @@ -18,7 +18,7 @@ #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/Intrinsics.h" -#include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/IR/GetElementPtrTypeIterator.h" #include "llvm/IR/DataLayout.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" Index: lib/DSA/TypeSafety.cpp =================================================================== --- lib/DSA/TypeSafety.cpp +++ lib/DSA/TypeSafety.cpp @@ -333,7 +333,7 @@ // // Get access to prerequisite passes. // - TD = &getAnalysis(); + TD = &getAnalysis().getDataLayout(); dsaPass = &getAnalysis(); // Index: lib/PoolAllocate/Heuristic.cpp =================================================================== --- lib/PoolAllocate/Heuristic.cpp +++ lib/PoolAllocate/Heuristic.cpp @@ -871,7 +871,7 @@ for (std::map::iterator PDI = PDs.begin(), E = PDs.end(); PDI != E; ++PDI) { Value *OldPD = PDI->second; - std::vector OldPDUsers(OldPD->use_begin(), OldPD->use_end()); + std::vector OldPDUsers(OldPD->user_begin(), OldPD->user_end()); for (unsigned i = 0, e = OldPDUsers.size(); i != e; ++i) { CallSite PDUser(cast(OldPDUsers[i])); if (PDUser.getCalledValue() != PoolInit && Index: lib/PoolAllocate/PAMultipleGlobalPool.cpp =================================================================== --- lib/PoolAllocate/PAMultipleGlobalPool.cpp +++ lib/PoolAllocate/PAMultipleGlobalPool.cpp @@ -26,7 +26,7 @@ #include "llvm/IR/Instructions.h" #include "llvm/IR/Module.h" #include "llvm/IR/TypeBuilder.h" -#include "llvm/Support/CFG.h" +#include "llvm/IR/CFG.h" #include "llvm/Transforms/Utils/BasicBlockUtils.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/ADT/DepthFirstIterator.h" @@ -74,7 +74,7 @@ } void PoolAllocateMultipleGlobalPool::getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); + AU.addRequired(); assert(0 && "PoolAllocateMultipleGlobalPool doesn't work! Needs Steensgard-like analysis, which was removed!"); //AU.addRequiredTransitive(); // It is a big lie. @@ -96,7 +96,7 @@ Graphs = NULL; assert (Graphs && "No DSA pass available!\n"); - DataLayout & TD = getAnalysis(); + const DataLayout & TD = getAnalysis().getDataLayout(); // Add the pool* prototypes to the module AddPoolPrototypes(&M); @@ -120,7 +120,7 @@ } void -PoolAllocateMultipleGlobalPool::ProcessFunctionBodySimple (Function& F, DataLayout & TD) { +PoolAllocateMultipleGlobalPool::ProcessFunctionBodySimple (Function& F, const DataLayout & TD) { std::vector toDelete; std::vector Returns; Index: lib/PoolAllocate/PASimple.cpp =================================================================== --- lib/PoolAllocate/PASimple.cpp +++ lib/PoolAllocate/PASimple.cpp @@ -23,7 +23,7 @@ #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/Module.h" -#include "llvm/Support/CFG.h" +#include "llvm/IR/CFG.h" #include "llvm/Transforms/Utils/BasicBlockUtils.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/ADT/DepthFirstIterator.h" @@ -70,7 +70,7 @@ } void PoolAllocateSimple::getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); + AU.addRequired(); // Get the Target Data information and the Graphs if (CompleteDSA) { AU.addRequiredTransitive(); @@ -131,7 +131,7 @@ Graphs = &getAnalysis(); } assert (Graphs && "No DSA pass available!\n"); - DataLayout & TD = getAnalysis(); + const DataLayout & TD = getAnalysis().getDataLayout(); // Add the pool* prototypes to the module AddPoolPrototypes(&M); @@ -187,7 +187,7 @@ } void -PoolAllocateSimple::ProcessFunctionBodySimple (Function& F, DataLayout & TD) { +PoolAllocateSimple::ProcessFunctionBodySimple (Function& F, const DataLayout & TD) { // Set of instructions to delete because they have been replaced. We record // all instructions to delete first and then delete them later to avoid // invalidating the iterators over the instruction list. Index: lib/PoolAllocate/PointerCompress.cpp =================================================================== --- lib/PoolAllocate/PointerCompress.cpp +++ lib/PoolAllocate/PointerCompress.cpp @@ -24,8 +24,8 @@ #include "llvm/ADT/STLExtras.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" -#include "llvm/Support/GetElementPtrTypeIterator.h" -#include "llvm/InstVisitor.h" +#include "llvm/IR/GetElementPtrTypeIterator.h" +#include "llvm/IR/InstVisitor.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Transforms/Utils/Cloning.h" Index: lib/PoolAllocate/PoolAllocate.cpp =================================================================== --- lib/PoolAllocate/PoolAllocate.cpp +++ lib/PoolAllocate/PoolAllocate.cpp @@ -27,7 +27,7 @@ #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/Module.h" -#include "llvm/Support/CFG.h" +#include "llvm/IR/CFG.h" #include "llvm/Transforms/Utils/BasicBlockUtils.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/ADT/DepthFirstIterator.h" @@ -218,7 +218,7 @@ if (lie_preserve_passes == LIE_PRESERVE_ALL) AU.setPreservesAll(); - AU.addRequired(); + AU.addRequired(); } bool PoolAllocate::runOnModule(Module &M) { @@ -349,8 +349,8 @@ // o) the called function is the function that we're replacing // std::vector toReplace; - for (Function::use_iterator User = F->use_begin(); - User != F->use_end(); + for (Function::user_iterator User = F->user_begin(); + User != F->user_end(); ++User) { if (CallInst * CI = dyn_cast(*User)) { if (CI->getCalledFunction() == F) @@ -1318,7 +1318,7 @@ void PoolAllocate::CalculateLivePoolFreeBlocks(std::set&LiveBlocks, Value *PD) { - for (Value::use_iterator I = PD->use_begin(), E = PD->use_end(); I != E; ++I){ + for (Value::user_iterator I = PD->user_begin(), E = PD->user_end(); I != E; ++I){ // // The only users of the pool should be call, invoke, and cast // instructions. We know that poolfree() and pooldestroy() do not need to Index: lib/PoolAllocate/PoolOptimize.cpp =================================================================== --- lib/PoolAllocate/PoolOptimize.cpp +++ lib/PoolAllocate/PoolOptimize.cpp @@ -239,14 +239,14 @@ // Yes, if there are uses at all, nuke the pool init, destroy, and the PD. if (!HasPoolAlloc) { while (!PoolDesc->use_empty()) - cast(PoolDesc->use_back())->eraseFromParent(); + cast(PoolDesc->user_back())->eraseFromParent(); if (AllocaInst *AI = dyn_cast(PoolDesc)) AI->eraseFromParent(); else cast(PoolDesc)->eraseFromParent(); } else { // Convert all of the pool descriptor users to the BumpPtr flavor. - std::vector PDUsers(PoolDesc->use_begin(), PoolDesc->use_end()); + std::vector PDUsers(PoolDesc->user_begin(), PoolDesc->user_end()); while (!PDUsers.empty()) { CallInst *CI = cast(PDUsers.back()); Index: lib/PoolAllocate/RunTimeAssociate.cpp =================================================================== --- lib/PoolAllocate/RunTimeAssociate.cpp +++ lib/PoolAllocate/RunTimeAssociate.cpp @@ -23,7 +23,7 @@ #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/Module.h" -#include "llvm/Support/CFG.h" +#include "llvm/IR/CFG.h" #include "llvm/Transforms/Utils/BasicBlockUtils.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/ADT/DepthFirstIterator.h" Index: lib/PoolAllocate/TransformFunctionBody.cpp =================================================================== --- lib/PoolAllocate/TransformFunctionBody.cpp +++ lib/PoolAllocate/TransformFunctionBody.cpp @@ -23,7 +23,7 @@ #include "llvm/IR/Constants.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/DataLayout.h" -#include "llvm/InstVisitor.h" +#include "llvm/IR/InstVisitor.h" #include "llvm/Support/FormattedStream.h" #include "llvm/Support/Debug.h" #include "llvm/ADT/StringMap.h" Index: lib/rDSA/EquivClassGraphs.cpp =================================================================== --- lib/rDSA/EquivClassGraphs.cpp +++ lib/rDSA/EquivClassGraphs.cpp @@ -20,7 +20,7 @@ #include "llvm/Module.h" #include "llvm/Pass.h" #include "rdsa/DSGraph.h" -#include "llvm/Support/CallSite.h" +#include "llvm/IR/CallSite.h" #include "llvm/Support/Debug.h" #include "llvm/ADT/SCCIterator.h" #include "llvm/ADT/Statistic.h" Index: lib/rDSA/Local.cpp =================================================================== --- lib/rDSA/Local.cpp +++ lib/rDSA/Local.cpp @@ -21,7 +21,7 @@ #include "llvm/DerivedTypes.h" #include "llvm/Instructions.h" #include "llvm/Intrinsics.h" -#include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/IR/GetElementPtrTypeIterator.h" #include "llvm/Support/InstVisitor.h" #include "llvm/DataLayout.h" #include "llvm/Support/CommandLine.h" @@ -944,7 +944,7 @@ char LocalDataStructures::ID; bool LocalDataStructures::runOnModule(Module &M) { - init(&getAnalysis()); + init(&getAnalysis().getDataLayout()); // First step, build the globals graph. { Index: lib/rDSA/StdLibPass.cpp =================================================================== --- lib/rDSA/StdLibPass.cpp +++ lib/rDSA/StdLibPass.cpp @@ -16,7 +16,7 @@ #include "llvm/DerivedTypes.h" #include "llvm/Instructions.h" #include "llvm/Intrinsics.h" -#include "llvm/Support/GetElementPtrTypeIterator.h" +#include "llvm/IR/GetElementPtrTypeIterator.h" #include "llvm/DataLayout.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" Index: lib/rDSA/Steensgaard.cpp =================================================================== --- lib/rDSA/Steensgaard.cpp +++ lib/rDSA/Steensgaard.cpp @@ -49,7 +49,7 @@ bool SteensgaardDataStructures::runOnModule(Module &M) { DS = &getAnalysis(); - init(&getAnalysis()); + init(&getAnalysis().getDataLayout()); return runOnModuleInternal(M); }