This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/85173] ICE in in extract_insn, at recog.c:2304 for -fstack-clash-protection on ARM


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?

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]