https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79487
--- Comment #13 from Dominik Vogt <vogt at linux dot vnet.ibm.com> --- From the "optimize" dump: With float: if (tem.1_3 != -9.223372036854775808e+18) With _Decimal32: if (tem.1_3 != -9223372036854775808) This precision of the constant and the representation as floating point versus integer value continues to the pass before Cse1 (Dfinit): With float: (insn 5 2 11 2 (set (mem/v/c:SF (plus:DI (reg/f:DI 34 %fp) (const_int -4 [0xfffffffffffffffc])) [1 tem+0 S4 A32]) (const_double:SF -9.223372036854775808e+18 [-0x0.8p+64])) With _Decimal32: (insn 5 2 15 2 (set (mem/v/c:SD (plus:DI (reg/f:DI 34 %fp) (const_int -4 [0xfffffffffffffffc])) [1 tem+0 S4 A32]) (const_double:SD -9223372036854775808 [N/A]))