mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-15 19:24:33 +00:00
InstCombine: Fix infinite loop when encountering switch on trivial icmp.
The test case feeds the following into InstCombine's visitSelect: %tobool8 = icmp ne i32 0, 0 %phitmp = select i1 %tobool8, i32 3, i32 0 Then instcombine replaces the right side of the switch with 0, doesn't notice that nothing changes and tries again indefinitely. This fixes PR12897. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157587 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -498,7 +498,7 @@ Instruction *InstCombiner::visitSelectInstWithICmp(SelectInst &SI,
|
||||
|
||||
// NOTE: if we wanted to, this is where to detect integer MIN/MAX
|
||||
|
||||
if (isa<Constant>(CmpRHS)) {
|
||||
if (CmpRHS != CmpLHS && isa<Constant>(CmpRHS)) {
|
||||
if (CmpLHS == TrueVal && Pred == ICmpInst::ICMP_EQ) {
|
||||
// Transform (X == C) ? X : Y -> (X == C) ? C : Y
|
||||
SI.setOperand(1, CmpRHS);
|
||||
|
Reference in New Issue
Block a user