[ConstraintElim] Try to use first cmp to prove second cmp for ANDs.
This patch extends the existing logic to handle cases where we have branch conditions of the form (AND icmp, icmp) where the first icmp implies the second. This can improve results in some cases, e.g. if SimplifyCFG folded conditions from multiple branches to an AND. The implementation handles this by adding a new type of check (AndImpliedCheck), which are queued before conditional facts for the same block. When encountering AndImpliedChecks during solving, the first condition is optimistically added to the constraint system, then we check if the second icmp can be simplified, and finally the newly added entries are removed. The reason for doing things this way is to avoid clashes with signed <-> unsigned condition transfer, which require us to re-order facts to increase effectiveness. Reviewed By: nikic, antoniofrighetto Differential Revision: https://reviews.llvm.org/D151799
Loading
Please sign in to comment