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.