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?

Reply via email to