Simplify this code; it's not necessary to check isIdentifiedObject here
authorDan Gohman <gohman@apple.com>
Fri, 20 Nov 2009 01:34:03 +0000 (01:34 +0000)
committerDan Gohman <gohman@apple.com>
Fri, 20 Nov 2009 01:34:03 +0000 (01:34 +0000)
because if the results from getUnderlyingObject match, the values must
be from the same underlying object, even if we don't know what that
object is.

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

lib/Analysis/CaptureTracking.cpp

index e86ad96e4a15e821852f997c8ff876aa16766130..1db9f2dda19c75c19a6c976c8e6ba321b0357de2 100644 (file)
@@ -105,7 +105,7 @@ bool llvm::PointerMayBeCaptured(const Value *V,
           Worklist.push_back(U);
       }
       break;
-    case Instruction::ICmp: {
+    case Instruction::ICmp:
       // Don't count comparisons of the original value against null as captures.
       // This allows us to ignore comparisons of malloc results with null,
       // for example.
@@ -114,16 +114,14 @@ bool llvm::PointerMayBeCaptured(const Value *V,
               dyn_cast<ConstantPointerNull>(I->getOperand(1)))
           if (CPN->getType()->getAddressSpace() == 0)
             break;
-      // Don't count comparisons of two pointers within the same identified
-      // object as captures.
-      Value *O0 = I->getOperand(0)->getUnderlyingObject();
-      if (isIdentifiedObject(O0) &&
-          O0 == I->getOperand(1)->getUnderlyingObject())
+      // Don't count comparisons of two pointers within the same object
+      // as captures.
+      if (I->getOperand(0)->getUnderlyingObject() ==
+          I->getOperand(1)->getUnderlyingObject())
         break;
       // Otherwise, be conservative. There are crazy ways to capture pointers
       // using comparisons.
       return true;
-    }
     default:
       // Something else - be conservative and say it is captured.
       return true;