Index: llvm/lib/CodeGen/GlobalISel/CSEInfo.cpp =================================================================== --- llvm/lib/CodeGen/GlobalISel/CSEInfo.cpp +++ llvm/lib/CodeGen/GlobalISel/CSEInfo.cpp @@ -61,6 +61,7 @@ case TargetOpcode::G_TRUNC: case TargetOpcode::G_PTR_ADD: case TargetOpcode::G_EXTRACT: + case TargetOpcode::G_SELECT: return true; } return false; Index: llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp =================================================================== --- llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp +++ llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp @@ -3196,8 +3196,6 @@ } Builder.buildSelect(Dst, SelectCond, FoldTrue, FoldFalse, MI.getFlags()); - Observer.erasingInstr(*Select); - Select->eraseFromParent(); MI.eraseFromParent(); return true; Index: llvm/test/CodeGen/AMDGPU/GlobalISel/combine-fold-binop-into-select.mir =================================================================== --- llvm/test/CodeGen/AMDGPU/GlobalISel/combine-fold-binop-into-select.mir +++ llvm/test/CodeGen/AMDGPU/GlobalISel/combine-fold-binop-into-select.mir @@ -938,8 +938,8 @@ ; CHECK-NEXT: %cond:_(s1) = G_ICMP intpred(eq), %reg(s32), %zero ; CHECK-NEXT: %ten:_(s32) = G_CONSTANT i32 10 ; CHECK-NEXT: %twenty:_(s32) = G_CONSTANT i32 20 - ; CHECK-NEXT: %smin:_(s32) = G_SELECT %cond(s1), %ten, %twenty - ; CHECK-NEXT: S_ENDPGM 0, implicit %smin(s32) + ; CHECK-NEXT: %select:_(s32) = G_SELECT %cond(s1), %ten, %twenty + ; CHECK-NEXT: S_ENDPGM 0, implicit %select(s32) %reg:_(s32) = COPY $vgpr0 %zero:_(s32) = G_CONSTANT i32 0 %cond:_(s1) = G_ICMP intpred(eq), %reg, %zero @@ -987,8 +987,8 @@ ; CHECK-NEXT: %cond:_(s1) = G_ICMP intpred(eq), %reg(s32), %zero ; CHECK-NEXT: %ten:_(s32) = G_CONSTANT i32 10 ; CHECK-NEXT: %twenty:_(s32) = G_CONSTANT i32 20 - ; CHECK-NEXT: %umin:_(s32) = G_SELECT %cond(s1), %ten, %twenty - ; CHECK-NEXT: S_ENDPGM 0, implicit %umin(s32) + ; CHECK-NEXT: %select:_(s32) = G_SELECT %cond(s1), %ten, %twenty + ; CHECK-NEXT: S_ENDPGM 0, implicit %select(s32) %reg:_(s32) = COPY $vgpr0 %zero:_(s32) = G_CONSTANT i32 0 %cond:_(s1) = G_ICMP intpred(eq), %reg, %zero