aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-03-17 19:56:18 +0000
committerChris Lattner <sabre@nondot.org>2005-03-17 19:56:18 +0000
commitea7e6548dce9d03bd4efd3deb842f4f19256a8fd (patch)
treef5a3da9e800f62e46a4af022e1c0c765149b5a58 /llvm/lib/Analysis/DataStructure/DataStructureAA.cpp
parentdf642ff2ae253d337c555ccaf4d472cbd17a6ca8 (diff)
downloadllvm-ea7e6548dce9d03bd4efd3deb842f4f19256a8fd.zip
llvm-ea7e6548dce9d03bd4efd3deb842f4f19256a8fd.tar.gz
llvm-ea7e6548dce9d03bd4efd3deb842f4f19256a8fd.tar.bz2
Two changes:
1. Chain to the parent implementation of M/R analysis if we can't find any information. It has some heuristics that often do well. 2. Do not clear all flags, this can make invalid nodes by turning nodes that used to be collapsed into non-collapsed nodes (fixing crashes) llvm-svn: 20659
Diffstat (limited to 'llvm/lib/Analysis/DataStructure/DataStructureAA.cpp')
-rw-r--r--llvm/lib/Analysis/DataStructure/DataStructureAA.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp b/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp
index 62eb663..74fdb1f 100644
--- a/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp
+++ b/llvm/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);