++UI; // If this instruction uses AI more than once, don't break UI.
++NumDeadInst;
- DOUT << "IC: DCE: " << *User;
+ DOUT << "IC: DCE: " << *User << '\n';
EraseInstFromFunction(*User);
}
}
// DCE instruction if trivially dead.
if (isInstructionTriviallyDead(Inst)) {
++NumDeadInst;
- DOUT << "IC: DCE: " << *Inst;
+ DOUT << "IC: DCE: " << *Inst << '\n';
Inst->eraseFromParent();
continue;
}
// ConstantProp instruction if trivially constant.
if (Constant *C = ConstantFoldInstruction(Inst, BB->getContext(), TD)) {
- DOUT << "IC: ConstFold to: " << *C << " from: " << *Inst;
+ DOUT << "IC: ConstFold to: " << *C << " from: " << *Inst << '\n';
Inst->replaceAllUsesWith(C);
++NumConstProp;
Inst->eraseFromParent();
while (Term != BB->begin()) { // Remove instrs bottom-up
BasicBlock::iterator I = Term; --I;
- DOUT << "IC: DCE: " << *I;
+ DOUT << "IC: DCE: " << *I << '\n';
// A debug intrinsic shouldn't force another iteration if we weren't
// going to do one without it.
if (!isa<DbgInfoIntrinsic>(I)) {
AddUsesToWorkList(*I);
++NumDeadInst;
- DOUT << "IC: DCE: " << *I;
+ DOUT << "IC: DCE: " << *I << '\n';
I->eraseFromParent();
RemoveFromWorkList(I);
// Instruction isn't dead, see if we can constant propagate it.
if (Constant *C = ConstantFoldInstruction(I, F.getContext(), TD)) {
- DOUT << "IC: ConstFold to: " << *C << " from: " << *I;
+ DOUT << "IC: ConstFold to: " << *C << " from: " << *I << '\n';
// Add operands to the worklist.
AddUsesToWorkList(*I);
++NumCombined;
// Should we replace the old instruction with a new one?
if (Result != I) {
- DOUT << "IC: Old = " << *I
- << " New = " << *Result;
+ DOUT << "IC: Old = " << *I << '\n'
+ << " New = " << *Result << '\n';
// Everything uses the new instruction now.
I->replaceAllUsesWith(Result);
InstParent->getInstList().erase(I);
} else {
#ifndef NDEBUG
- DOUT << "IC: Mod = " << OrigI
- << " New = " << *I;
+ DOUT << "IC: Mod = " << OrigI << '\n'
+ << " New = " << *I << '\n';
#endif
// If the instruction was modified, it's possible that it is now dead.