Temporarily revert r61019, r61030, and r61040. These were breaking LLVM Release
[oota-llvm.git] / lib / Analysis / BasicAliasAnalysis.cpp
index 57d320971dbef17b0b9e3dba382f67bc4cb825c4..3270f35ac411d9cf7b3f25668d196b69a99c6f8d 100644 (file)
@@ -63,23 +63,12 @@ static bool AddressMightEscape(const Value *V) {
       // callees could modify it.
       break; // next use
     case Instruction::Call:
-      // If the argument to the call has the nocapture attribute, then the call
-      // may store or load to the pointer, but it cannot escape.
-      if (cast<CallInst>(I)->paramHasAttr(UI.getOperandNo(), 
-                                          Attribute::NoCapture))
-        continue;
-
-      // FIXME: MemIntrinsics should have their operands marked nocapture!
-      if (isa<MemIntrinsic>(I))
-        continue;  // next use
-      return true;
-    case Instruction::Invoke:
-      // If the argument to the call has the nocapture attribute, then the call
-      // may store or load to the pointer, but it cannot escape.
-      if (cast<InvokeInst>(I)->paramHasAttr(UI.getOperandNo()-2,
-                                            Attribute::NoCapture))
-        continue;
-      return true;
+      // If the call is to a few known safe intrinsics, we know that it does
+      // not escape.
+      // TODO: Eventually just check the 'nocapture' attribute.
+      if (!isa<MemIntrinsic>(I))
+        return true;
+      break;  // next use
     default:
       return true;
     }