https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85173
ktkachov at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |law at gcc dot gnu.org --- Comment #2 from ktkachov at gcc dot gnu.org --- The unrecognizable insn is: (insn 29 28 30 5 (set (mem/v:SI (plus:SI (reg/f:SI 13 sp) (const_int 16380 [0x3ffc])) [0 S4 A32]) (unspec:SI [ (const_int 0 [0]) ] UNSPEC_PROBE_STACK)) "stack-check-3.c":23 -1 (nil)) The memory address is not valid for a store. That address is created explicitly in anti_adjust_stack_and_probe_stack_clash in explow.c: 1988 emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx, 1989 (probe_interval 1990 - GET_MODE_SIZE (word_mode)))); emit_stack_probe then passes that address directly to the target probe_stack. Should the code in emit_stack_probe do a memory_address_addr_space_p check and force_operand if the address is not valid?