[objc-arc] Fix assertion in EraseInstruction so that noop on null calls when passed null do not trigger the assert.

The specific case of interest is when objc_retainBlock is passed null.

llvm-svn: 185885
This commit is contained in:
Michael Gottesman 2013-07-08 23:30:23 +00:00
parent e61c907792
commit c1b648f6c0
1 changed files with 3 additions and 1 deletions

View File

@ -286,7 +286,9 @@ static inline void EraseInstruction(Instruction *CI) {
if (!Unused) {
// Replace the return value with the argument.
assert(IsForwarding(GetBasicInstructionClass(CI)) &&
assert((IsForwarding(GetBasicInstructionClass(CI)) ||
(IsNoopOnNull(GetBasicInstructionClass(CI)) &&
isa<ConstantPointerNull>(OldArg))) &&
"Can't delete non-forwarding instruction with users!");
CI->replaceAllUsesWith(OldArg);
}