projects
/
oota-llvm.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b752341
)
slightly improve mod/ref for DSAA by checking the globals graph for fallback
author
Chris Lattner
<sabre@nondot.org>
Sat, 26 Mar 2005 22:47:03 +0000
(22:47 +0000)
committer
Chris Lattner
<sabre@nondot.org>
Sat, 26 Mar 2005 22:47:03 +0000
(22:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20868
91177308
-0d34-0410-b5e6-
96231b3b80d8
lib/Analysis/DataStructure/DataStructureAA.cpp
patch
|
blob
|
history
diff --git
a/lib/Analysis/DataStructure/DataStructureAA.cpp
b/lib/Analysis/DataStructure/DataStructureAA.cpp
index 6f1cb56d860b3d2683338e1306ba3e0166a86172..c2449c2b74ab614ffd7f42e28fa91ee4f0d4ff36 100644
(file)
--- a/
lib/Analysis/DataStructure/DataStructureAA.cpp
+++ b/
lib/Analysis/DataStructure/DataStructureAA.cpp
@@
-222,6
+222,18
@@
DSAA::getModRefInfo(CallSite CS, Value *P, unsigned Size) {
cast<GlobalVariable>(P)->getType()->getElementType()->isFirstClassType() &&
"This isn't a global that DSA inconsiderately dropped "
"from the graph?");
cast<GlobalVariable>(P)->getType()->getElementType()->isFirstClassType() &&
"This isn't a global that DSA inconsiderately dropped "
"from the graph?");
+
+ DSGraph &GG = *CallerTDGraph.getGlobalsGraph();
+ DSScalarMap::iterator NI = GG.getScalarMap().find(P);
+ if (NI != GG.getScalarMap().end() && !NI->second.isNull()) {
+ // Otherwise, if the node is only M or R, return this. This can be
+ // useful for globals that should be marked const but are not.
+ DSNode *N = NI->second.getNode();
+ if (!N->isModified())
+ Result = (ModRefResult)(Result & ~Mod);
+ if (!N->isRead())
+ Result = (ModRefResult)(Result & ~Ref);
+ }
}
return Result;
}
}
return Result;
}