summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/BasicAliasAnalysis.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-07-29 07:56:39 +0000
committerChris Lattner <sabre@nondot.org>2004-07-29 07:56:39 +0000
commitc21acbfea49a75a514dd4027526cf45276dc192b (patch)
tree82c40fd09ab6f75d83a02269b2c4ee4709ec7ca2 /llvm/lib/Analysis/BasicAliasAnalysis.cpp
parent690bdefb5f056ad9212e4dd0ef9ae205c04e5c4a (diff)
downloadbcm5719-llvm-c21acbfea49a75a514dd4027526cf45276dc192b.tar.gz
bcm5719-llvm-c21acbfea49a75a514dd4027526cf45276dc192b.zip
Fix test/Regression/Analysis/BasicAA/2004-07-28-MustAliasbug.llx
This also fixes the miscompilation of MallocBench/gs with dead store elimination enabled. llvm-svn: 15324
Diffstat (limited to 'llvm/lib/Analysis/BasicAliasAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/BasicAliasAnalysis.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index 5c8dbe16c8b..9145322894f 100644
--- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
@@ -322,11 +322,15 @@ BasicAliasAnalysis::alias(const Value *V1, unsigned V1Size,
BasePtr1 = GetGEPOperands(V1, GEP1Ops);
BasePtr2 = GetGEPOperands(V2, GEP2Ops);
- AliasResult GAlias =
- CheckGEPInstructions(BasePtr1->getType(), GEP1Ops, V1Size,
- BasePtr2->getType(), GEP2Ops, V2Size);
- if (GAlias != MayAlias)
- return GAlias;
+ // If GetGEPOperands were able to fold to the same must-aliased pointer,
+ // do the comparison.
+ if (BasePtr1 == BasePtr2) {
+ AliasResult GAlias =
+ CheckGEPInstructions(BasePtr1->getType(), GEP1Ops, V1Size,
+ BasePtr2->getType(), GEP2Ops, V2Size);
+ if (GAlias != MayAlias)
+ return GAlias;
+ }
}
}
OpenPOWER on IntegriCloud