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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |segher at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The problem is that combine substutites:
(insn 10 9 11 2 (set (reg/v:SI 7 sp [ a ])
        (const_int 0 [0])) "pr104446.c":9:5 81 {*movsi_internal}
     (nil))
(insn 13 11 14 2 (set (mem/f:SI (pre_dec:SI (reg/f:SI 7 sp)) [0  S4 A32])
        (reg:SI 85)) "pr104446.c":10:3 56 {*pushsi2}
     (expr_list:REG_DEAD (reg:SI 85)
        (expr_list:REG_ARGS_SIZE (const_int 16 [0x10])
            (nil))))
into:
(mem/f:SI (pre_dec:SI (const_int 0 [0])) [0  S4 A32])
and before it is attempted to be recognized, we do:
3347          for_each_inc_dec (newpat, count_auto_inc, &new_n_auto_inc);
and that ICEs because:
3709            poly_int64 size = GET_MODE_SIZE (GET_MODE (mem));
3710            rtx r1 = XEXP (x, 0);
3711            rtx c = gen_int_mode (-size, GET_MODE (r1));
3712            return fn (mem, x, r1, r1, c, data);
gen_int_mode (-4, VOIDmode) is invalid.

Reply via email to