[RewriteStatepointsForGC] Fix debug assertion during derivable pointer rematerialization

Correct assertion would be that there is no other uses from chain we are currently cloning. It is ok to have other uses of values not from this chain.

Differential Revision: http://reviews.llvm.org/D9882



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237899 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Igor Laevsky 2015-05-21 13:02:14 +00:00
parent 5ac9604df7
commit 897d9bccdc

View File

@ -1944,12 +1944,12 @@ static void rematerializeLiveValues(CallSite CS,
assert(LastValue);
ClonedValue->replaceUsesOfWith(LastValue, LastClonedValue);
#ifndef NDEBUG
// Assert that cloned instruction does not use any instructions
// other than LastClonedValue
for (auto OpValue: ClonedValue->operand_values()) {
if (isa<Instruction>(OpValue))
assert(OpValue == LastClonedValue &&
"unexpected use found in rematerialized value");
// Assert that cloned instruction does not use any instructions from
// this chain other than LastClonedValue
for (auto OpValue : ClonedValue->operand_values()) {
assert(std::find(ChainToBase.begin(), ChainToBase.end(), OpValue) ==
ChainToBase.end() &&
"incorrect use in rematerialization chain");
}
#endif
}