https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112406
--- Comment #18 from Robin Dapp <rdapp at gcc dot gnu.org> --- Already in ifcvt we have: _ifc__60 = .COND_ADD (_2, _6, MADPictureC1_lsm.10_25, MADPictureC1_lsm.10_25); which we should not. This is similar on riscv. But during value numbering it still is Value numbering stmt = _ifc__60 = .COND_ADD (_47, MADPictureC1_lsm.10_25, _6, MADPictureC1_lsm.10_25); so we originally created the right thing. Hmm, no simplification is happening. Is there still a swap somewhere that should not be?