Simplify the implementation of getUnderlyingObjectsForInstr, without intending to change the semantics at all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201754 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nick Lewycky 2014-02-20 05:06:26 +00:00
parent 31dd38ed2f
commit 78554867a2

View File

@ -148,31 +148,30 @@ static void getUnderlyingObjectsForInstr(const MachineInstr *MI,
if (!V)
return;
if (const PseudoSourceValue *PSV = dyn_cast<PseudoSourceValue>(V)) {
// For now, ignore PseudoSourceValues which may alias LLVM IR values
// because the code that uses this function has no way to cope with
// such aliases.
if (!PSV->isAliased(MFI))
Objects.push_back(UnderlyingObjectsVector::value_type(V, false));
return;
}
SmallVector<Value *, 4> Objs;
getUnderlyingObjects(V, Objs);
for (SmallVectorImpl<Value *>::iterator I = Objs.begin(), IE = Objs.end();
I != IE; ++I) {
bool MayAlias = true;
V = *I;
if (const PseudoSourceValue *PSV = dyn_cast<PseudoSourceValue>(V)) {
// For now, ignore PseudoSourceValues which may alias LLVM IR values
// because the code that uses this function has no way to cope with
// such aliases.
assert(!isa<PseudoSourceValue>(V) && "Underlying value is a stack slot!");
if (PSV->isAliased(MFI)) {
Objects.clear();
return;
}
MayAlias = PSV->mayAlias(MFI);
} else if (!isIdentifiedObject(V)) {
if (!isIdentifiedObject(V)) {
Objects.clear();
return;
}
Objects.push_back(UnderlyingObjectsVector::value_type(V, MayAlias));
Objects.push_back(UnderlyingObjectsVector::value_type(V, true));
}
}