You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
BasicBlock::removePredecessor will eliminate PHI nodes entirely if they always evaluate to a single constant value and instead replace all uses of the PHINode with this constant.
This is only correct if we know that the actual constant actually dominates the PHI node, which is not verified in this code. As a result, we may generate self referencing instructions which is not only incorrect but also causes an infinite loop in -load-combine, which does not expect such IR.
This command does not terminate for me, as jump-treading uses removePredecessor
and introduces the incorrect IR that load-combine can not handle:
Extended Description
BasicBlock::removePredecessor will eliminate PHI nodes entirely if they always evaluate to a single constant value and instead replace all uses of the PHINode with this constant.
This is only correct if we know that the actual constant actually dominates the PHI node, which is not verified in this code. As a result, we may generate self referencing instructions which is not only incorrect but also causes an infinite loop in -load-combine, which does not expect such IR.
This command does not terminate for me, as jump-treading uses removePredecessor
and introduces the incorrect IR that load-combine can not handle:
opt /tmp/infinite.ll -jump-threading -load-combine
The text was updated successfully, but these errors were encountered: