Seriously strengthen the guarantee offered by noalias on a function's return
[oota-llvm.git] / lib / Analysis / BasicAliasAnalysis.cpp
index e9c6490ebb75d6c25c058523b1b916fb8a491b77..5b65fb1199c38bea1fbb3cbb5c51fdc3cd6c2ca4 100644 (file)
@@ -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.