https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117525

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|middle-end                  |target

--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(insn 14 13 15 3 (set (reg:SI 97 [ _11 ])
        (fix:SI (fix:DF (reg/v:DF 99 [ width ])))) "t.cc":5:7 106
{fix_truncdfsi2}
     (expr_list:REG_DEAD (reg/v:DF 99 [ width ])
        (nil)))

/* With fixed-point machine mode:
   Conversion of floating point operand to fixed point value.
   Value is defined only when the operand's value is an integer.
   With floating-point machine mode (and operand with same mode):
   Operand is rounded toward zero to produce an integer value
   represented in floating point.  */
DEF_RTL_EXPR(FIX, "fix", "e", RTX_UNARY)

`-O3 -fno-trapping-math` is enough to reproduce the ICE.



The way most other targets represent this is just (fix:SI (reg)) without the
inner most `fix:DF/SF`

Reply via email to