Simplify this code; it's not necessary to check isIdentifiedObject here

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
This commit is contained in:
Dan Gohman 2009-11-20 01:34:03 +00:00
parent 324da7647c
commit ae079c250f

View 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;