xtensa: fix PR target/65416
commit9a775e9df5f72a8a9627fca8d412361562c8186a
authorMax Filippov <jcmvbkbc@gmail.com>
Tue, 19 Jun 2018 18:26:07 +0000 (19 18:26 +0000)
committerMax Filippov <jcmvbkbc@gcc.gnu.org>
Tue, 19 Jun 2018 18:26:07 +0000 (19 18:26 +0000)
tree4479ffdb6075a786a8317fd3f4c48fdaa7003797
parent5f21ea6739d9dae27a1c6ffe94ea28792f02124a
xtensa: fix PR target/65416

The issue is caused by reordering of stack pointer update after stack
space allocation with instructions that write to the allocated stack
space. In windowed ABI register spill area for the previous call frame
is located just below the stack pointer and may be reloaded back into
the register file on movsp.
Implement allocate_stack pattern for windowed ABI configuration and
insert an instruction that prevents reordering of frame memory access
and stack pointer update.

gcc/
2018-06-19  Max Filippov  <jcmvbkbc@gmail.com>

* config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec
constant.
(allocate_stack, frame_blockage, *frame_blockage): New patterns.

From-SVN: r261755
gcc/ChangeLog
gcc/config/xtensa/xtensa.md