diff options
author | Chris Lattner <sabre@nondot.org> | 2004-07-29 07:56:39 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-07-29 07:56:39 +0000 |
commit | c21acbfea49a75a514dd4027526cf45276dc192b (patch) | |
tree | 82c40fd09ab6f75d83a02269b2c4ee4709ec7ca2 /llvm/lib/Analysis/BasicAliasAnalysis.cpp | |
parent | 690bdefb5f056ad9212e4dd0ef9ae205c04e5c4a (diff) | |
download | bcm5719-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.cpp | 14 |
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; + } } } |