summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/BasicAliasAnalysis.cpp
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2008-11-24 05:00:44 +0000
committerNick Lewycky <nicholas@mxc.ca>2008-11-24 05:00:44 +0000
commitd59572cb2236b8853320e26e5146d58e606673a9 (patch)
tree6eeca1b17122d4025f1289ccda2ae428fc14ca70 /llvm/lib/Analysis/BasicAliasAnalysis.cpp
parenta42ee44aab44a0c2094c035f3064a71ca6b2e67b (diff)
downloadbcm5719-llvm-d59572cb2236b8853320e26e5146d58e606673a9.tar.gz
bcm5719-llvm-d59572cb2236b8853320e26e5146d58e606673a9.zip
Seriously strengthen the guarantee offered by noalias on a function's return
value. It must now be as if the pointer were allocated and has not escaped to the caller. Thanks to Dan Gohman for pointing out the error in the original and helping devise this definition. llvm-svn: 59940
Diffstat (limited to 'llvm/lib/Analysis/BasicAliasAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/BasicAliasAnalysis.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index e9c6490ebb7..5b65fb1199c 100644
--- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
@@ -383,9 +383,9 @@ BasicAliasAnalysis::alias(const Value *V1, unsigned V1Size,
if (isIdentifiedObject(O1) && isIdentifiedObject(O2))
return NoAlias;
- // Local allocations can't alias with arguments or noalias functions.
- if ((isa<AllocationInst>(O1) && (isa<Argument>(O2) || isNoAliasCall(O2))) ||
- (isa<AllocationInst>(O2) && (isa<Argument>(O1) || isNoAliasCall(O1))))
+ // Arguments can't alias with local allocations or noalias calls.
+ if ((isa<Argument>(O1) && (isa<AllocationInst>(O2) || isNoAliasCall(O2))) ||
+ (isa<Argument>(O2) && (isa<AllocationInst>(O1) || isNoAliasCall(O1))))
return NoAlias;
// Most objects can't alias null.
OpenPOWER on IntegriCloud