diff --git a/include/llvm/Analysis/IPModRef.h b/include/llvm/Analysis/IPModRef.h index 5a08dc02e73..290ae58fe36 100644 --- a/include/llvm/Analysis/IPModRef.h +++ b/include/llvm/Analysis/IPModRef.h @@ -113,6 +113,7 @@ public: class FunctionModRefInfo { const Function& F; // The function + IPModRef& IPModRefObj; // The IPModRef Object owning this const DSGraph& funcTDGraph; // Top-down DS graph for function const DSGraph& funcLocalGraph; // Local DS graph for function ModRefInfo funcModRefInfo; // ModRefInfo for the function body @@ -127,6 +128,7 @@ class FunctionModRefInfo { public: /* ctor */ FunctionModRefInfo (const Function& func, + IPModRef& IPModRefObj, const DSGraph& tdg, const DSGraph& ldg); /* dtor */ ~FunctionModRefInfo (); diff --git a/lib/Analysis/IPA/IPModRef.cpp b/lib/Analysis/IPA/IPModRef.cpp index 22d7caa92fe..c32f4425cfa 100644 --- a/lib/Analysis/IPA/IPModRef.cpp +++ b/lib/Analysis/IPA/IPModRef.cpp @@ -44,9 +44,10 @@ void ModRefInfo::dump() const // This constructor computes a node numbering for the TD graph. // FunctionModRefInfo::FunctionModRefInfo(const Function& func, + IPModRef& ipmro, const DSGraph& tdg, const DSGraph& ldg) - : F(func), + : F(func), IPModRefObj(ipmro), funcTDGraph(tdg), funcLocalGraph(ldg), funcModRefInfo(tdg.getGraphSize()) @@ -76,7 +77,7 @@ unsigned FunctionModRefInfo::getNodeId(const Value* value) const { // Dummy function that will be replaced with one that inlines // the callee's BU graph into the caller's TD graph. // -const DSGraph* ResolveGraphForCallSite(const DSGraph& funcTDGraph, +static const DSGraph* ResolveGraphForCallSite(const DSGraph& funcTDGraph, const CallInst& callInst) { return &funcTDGraph; // TEMPORARY @@ -203,9 +204,9 @@ FunctionModRefInfo& IPModRef::getFuncInfo(const Function& func, { FunctionModRefInfo*& funcInfo = funcToModRefInfoMap[&func]; assert (funcInfo != NULL || computeIfMissing); - if (funcInfo == NULL && computeIfMissing) + if (funcInfo == NULL) { // Create a new FunctionModRefInfo object - funcInfo = new FunctionModRefInfo(func, // inserts into map + funcInfo = new FunctionModRefInfo(func, *this, // inserts into map getAnalysis().getDSGraph(func), getAnalysis().getDSGraph(func)); funcInfo->computeModRef(func); // computes the mod/ref info @@ -219,6 +220,7 @@ FunctionModRefInfo& IPModRef::getFuncInfo(const Function& func, void IPModRef::getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); AU.addRequired(); + AU.addRequired(); AU.addRequired(); }