https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124176
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2026-02-20
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Folding statement: _58 = v_57 < 0.0;
Queued stmt for removal. Folds to: 0
Folding statement: _59 = _58 ? 0.0 : v_57;
Possible COND_EXPR adjustment. Range op1 : [frange] OUT_T [0.0 (0x0.0p+0), 0.0
(0x0.0p+0)] and Range op2: [frange] const float [5.0e-1 (0x0.8p+0), 6.5535e+4
(0x0.ffffp+16)]
gimple_simplified to _59 = v_57;
Global Exported: _59 = [frange] float [5.0e-1 (0x0.8p+0), 6.5535e+4
(0x0.ffffp+16)]
Folded into: _59 = v_57;
I think whoever rewrote the substitute-and-fold engine made it even more
over-complicated. I have no idea why we have pre-fold or why we not first
substitute into the stmt and then fold.