Fix test/Regression/Analysis/BasicAA/2004-07-28-MustAliasbug.llx
authorChris Lattner <sabre@nondot.org>
Thu, 29 Jul 2004 07:56:39 +0000 (07:56 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 29 Jul 2004 07:56:39 +0000 (07:56 +0000)
This also fixes the miscompilation of MallocBench/gs with dead store
elimination enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15324 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/BasicAliasAnalysis.cpp

index 5c8dbe16c8b49e62dcabc018c86990a261d896a8..9145322894fa6eb2a13b7296387a8cc546371df8 100644 (file)
@@ -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;
+      }
     }
   }