diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2008-11-24 05:00:44 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2008-11-24 05:00:44 +0000 |
commit | b2b32fd3fe22ca6b165d9c21d7ec0bcd2af105f5 (patch) | |
tree | 33950b6436437290a059c9376feb1df77a73c395 /lib/Analysis/BasicAliasAnalysis.cpp | |
parent | 02ff308aa1c165d37fcf35f618243180ee68eedd (diff) |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59940 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/BasicAliasAnalysis.cpp')
-rw-r--r-- | lib/Analysis/BasicAliasAnalysis.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/Analysis/BasicAliasAnalysis.cpp b/lib/Analysis/BasicAliasAnalysis.cpp index e9c6490ebb..5b65fb1199 100644 --- a/lib/Analysis/BasicAliasAnalysis.cpp +++ b/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. |