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]))

Reply via email to