Fix Regression/Analysis/BasicAA/2005-03-09-BrokenBasicAA.ll, a miscompilation
authorChris Lattner <sabre@nondot.org>
Wed, 9 Mar 2005 16:29:52 +0000 (16:29 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 9 Mar 2005 16:29:52 +0000 (16:29 +0000)
that Alkis found with Java, thanks Alkis!

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

lib/Analysis/BasicAliasAnalysis.cpp

index c50758541ed6997bf5181af8204fbcafa1e8e470..98508a8c14c9aa9287b501b09e1d2e098ee78e03 100644 (file)
@@ -307,7 +307,9 @@ BasicAliasAnalysis::alias(const Value *V1, unsigned V1Size,
     if (!isa<Argument>(O1) && isa<ConstantPointerNull>(V2))
       return NoAlias;                    // Unique values don't alias null
 
-    if (isa<GlobalVariable>(O1) || isa<AllocationInst>(O1))
+    if (isa<GlobalVariable>(O1) || 
+        (isa<AllocationInst>(O1) &&
+         !cast<AllocationInst>(O1)->isArrayAllocation()))
       if (cast<PointerType>(O1->getType())->getElementType()->isSized()) {
         // If the size of the other access is larger than the total size of the
         // global/alloca/malloc, it cannot be accessing the global (it's
@@ -323,7 +325,9 @@ BasicAliasAnalysis::alias(const Value *V1, unsigned V1Size,
     if (!isa<Argument>(O2) && isa<ConstantPointerNull>(V1))
       return NoAlias;                    // Unique values don't alias null
 
-    if (isa<GlobalVariable>(O2) || isa<AllocationInst>(O2))
+    if (isa<GlobalVariable>(O2) ||
+        (isa<AllocationInst>(O2) &&
+         !cast<AllocationInst>(O2)->isArrayAllocation()))
       if (cast<PointerType>(O2->getType())->getElementType()->isSized()) {
         // If the size of the other access is larger than the total size of the
         // global/alloca/malloc, it cannot be accessing the object (it's