[SCCP] convert signed div/rem to unsigned for non-negative operands, 2nd try
The original commit ( fe1f3cfc ) was reverted because it could crash / assert when trying to fold a value that was replaced by a constant. In that case, there might not be an entry for the constant in the solver yet. This version adds a check for that possibility along with tests to exercise that pattern (they used to crash). Original commit message: This extends the transform added with D81756 to handle div/rem opcodes. For example: https://alive2.llvm.org/ce/z/cX6za6 This replicates part of what CVP already does, but the motivating example from issue #57472 demonstrates a phase ordering problem - we convert branches to select before CVP runs and miss the transform. Differential Revision: https://reviews.llvm.org/D133198
Loading
Please sign in to comment