[llvm-dev] ConstantFoldTerminator doesn't delete trivially dead phi inputs
Jay Foad via llvm-dev
llvm-dev at lists.llvm.org
Fri May 15 03:57:35 PDT 2020
I'm looking into some missed optimizations where CodeGenPrepare seems
to leave trivially dead instructions lying around.
This happens because CodeGenPrepare::runOnFunction calls
ConstantFoldTerminator which folds a "br i1 false" into an
unconditional branch and calls BasicBlock::removePredecessor which
calls PHINode::removeIncomingValue. Each incoming value that is
removed from a phi node might be dead now, but nothing deletes them.
Is there any way this could be improved? Could
PHINode::removeIncomingValue call
RecursivelyDeleteTriviallyDeadInstructions on the value it removes, or
is that a layering violation? Any other ideas?
Thanks,
Jay.
More information about the llvm-dev
mailing list