summaryrefslogtreecommitdiffstats
path: root/lib/Transforms/Scalar/ADCE.cpp
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2007-12-01 07:51:45 +0000
committerDuncan Sands <baldrick@free.fr>2007-12-01 07:51:45 +0000
commitdff6710717b159f089c76a07eda074eb6347eb92 (patch)
tree7bbd754ebe64f5d4bbc6000e0e66bdd99f9c847f /lib/Transforms/Scalar/ADCE.cpp
parente3110d0825e6316fd2dd21d6a4e593295cd413f1 (diff)
downloadexternal_llvm-dff6710717b159f089c76a07eda074eb6347eb92.zip
external_llvm-dff6710717b159f089c76a07eda074eb6347eb92.tar.gz
external_llvm-dff6710717b159f089c76a07eda074eb6347eb92.tar.bz2
Integrate the readonly/readnone logic more deeply
into alias analysis. This meant updating the API which now has versions of the getModRefBehavior, doesNotAccessMemory and onlyReadsMemory methods which take a callsite parameter. These should be used unless the callsite is not known, since in general they can do a better job than the versions that take a function. Also, users should no longer call the version of getModRefBehavior that takes both a function and a callsite. To reduce the chance of misuse it is now protected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44487 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/ADCE.cpp')
-rw-r--r--lib/Transforms/Scalar/ADCE.cpp3
1 files changed, 1 insertions, 2 deletions
diff --git a/lib/Transforms/Scalar/ADCE.cpp b/lib/Transforms/Scalar/ADCE.cpp
index e3bd362..7f37334 100644
--- a/lib/Transforms/Scalar/ADCE.cpp
+++ b/lib/Transforms/Scalar/ADCE.cpp
@@ -198,8 +198,7 @@ bool ADCE::doADCE() {
for (BasicBlock::iterator II = BB->begin(), EI = BB->end(); II != EI; ) {
Instruction *I = II++;
if (CallInst *CI = dyn_cast<CallInst>(I)) {
- Function *F = CI->getCalledFunction();
- if (F && AA.onlyReadsMemory(F)) {
+ if (AA.onlyReadsMemory(CI)) {
if (CI->use_empty()) {
BB->getInstList().erase(CI);
++NumCallRemoved;