Hello! Recent committed patch breaks i386ssefp-2.c testcase, where maxsd is not generated anymore.
I have looked a bit into this failure and noticed that for some reason we don't perform ifcvt transformations during ce1 RTL pass. The second transformation is still performed during ce2 pass, but this is late as combine already combined some patterns into patterns that can't be split into maxsd pattern. Previously, ce1 pass generated: IF-THEN block found, pass 1, start block 2 [insn 5], then 3 [15], join 4 [17] Replacing insn 10 by jump 35 Conversion succeeded on pass 1. 1 possible IF blocks searched. 1 IF blocks converted. 2 true changes made. (insn 34 9 19 2 (set (reg:DF 58 [ iftmp.0 ]) (unspec:DF [ (reg:DF 60) (reg:DF 58 [ iftmp.0 ]) ] 52)) 564 {*ieee_smaxdf3} (nil) (nil)) but now all relevant insns remain unaffected at the end of ce1 pass: (insn 9 8 10 2 (set (reg:CCFPU 17 flags) (compare:CCFPU (reg:DF 60) (reg:DF 58 [ iftmp.0 ]))) 26 {*cmpfp_iu_sse} (nil) (nil)) (jump_insn 10 9 14 2 (set (pc) (if_then_else (gt (reg:CCFPU 17 flags) (const_int 0 [0x0])) (label_ref:SI 14) (pc))) 365 {*jcc_1} (nil) (expr_list:REG_BR_PROB (const_int 4600 [0x11f8]) (nil))) Uros.