[llvm-dev] ConstantFoldTerminator doesn't delete trivially dead phi inputs

Johannes Doerfert via llvm-dev llvm-dev at lists.llvm.org
Fri May 15 10:45:39 PDT 2020


On 5/15/20 5:57 AM, Jay Foad via llvm-dev wrote:
> 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?

I think this is certainly a desirable behavior that could be opt-in

for `ConstantFoldTerminator`.


> Thanks,
> Jay.
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list