diff options
Diffstat (limited to 'lib/Analysis/DataStructure/DataStructureAA.cpp')
-rw-r--r-- | lib/Analysis/DataStructure/DataStructureAA.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/Analysis/DataStructure/DataStructureAA.cpp b/lib/Analysis/DataStructure/DataStructureAA.cpp index 62eb663990..74fdb1f590 100644 --- a/lib/Analysis/DataStructure/DataStructureAA.cpp +++ b/lib/Analysis/DataStructure/DataStructureAA.cpp @@ -174,13 +174,13 @@ AliasAnalysis::AliasResult DSAA::alias(const Value *V1, unsigned V1Size, AliasAnalysis::ModRefResult DSAA::getModRefInfo(CallSite CS, Value *P, unsigned Size) { Function *F = CS.getCalledFunction(); - if (!F) return pointsToConstantMemory(P) ? Ref : ModRef; - if (F->isExternal()) return ModRef; + if (!F || F->isExternal()) + return AliasAnalysis::getModRefInfo(CS, P, Size); // Clone the function TD graph, clearing off Mod/Ref flags const Function *csParent = CS.getInstruction()->getParent()->getParent(); DSGraph TDGraph(TD->getDSGraph(*csParent)); - TDGraph.maskNodeTypes(0); + TDGraph.maskNodeTypes(~(DSNode::Modified|DSNode::Read)); // Insert the callee's BU graph into the TD graph const DSGraph &BUGraph = BU->getDSGraph(*F); |