]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
xtensa: backport fix for PR target/90922
authorMax Filippov <jcmvbkbc@gmail.com>
Mon, 23 Sep 2019 07:50:40 +0000 (07:50 +0000)
committerMax Filippov <jcmvbkbc@gcc.gnu.org>
Mon, 23 Sep 2019 07:50:40 +0000 (07:50 +0000)
Stack pointer adjustment code in prologue missed a case of no
callee-saved registers and a stack frame size bigger than 128 bytes.
Handle that case.

This fixes the following gcc tests with call0 ABI:
  gcc.c-torture/execute/stdarg-2.c
  gcc.dg/torture/pr55882.c
  gcc.dg/torture/pr57569.c

gcc/
2019-09-23  Max Filippov  <jcmvbkbc@gmail.com>

Backport from mainline
2019-06-18  Max Filippov  <jcmvbkbc@gmail.com>

* config/xtensa/xtensa.c (xtensa_expand_prologue): Add stack
pointer adjustment for the case of no callee-saved registers and
stack frame bigger than 128 bytes.

From-SVN: r276039

gcc/ChangeLog
gcc/config/xtensa/xtensa.c

index 6c8ed228bc3e1cbfe5e07f18365aa1520890f2dc..8631f0a94e9b4a79cc3545e9ef00630c0e9e80f2 100644 (file)
@@ -1,3 +1,12 @@
+2019-09-23  Max Filippov  <jcmvbkbc@gmail.com>
+
+       Backport from mainline
+       2019-06-18  Max Filippov  <jcmvbkbc@gmail.com>
+
+       * config/xtensa/xtensa.c (xtensa_expand_prologue): Add stack
+       pointer adjustment for the case of no callee-saved registers and
+       stack frame bigger than 128 bytes.
+
 2019-09-20  John David Anglin  <danglin@gcc.gnu.org>
 
        * config/pa/pa.c (pa_trampoline_init): Remove spurious extended
index db561e8feb7854deffc89b07a25965fb8afb6b69..a39bac9af7dac2969cc62bc87d6c440242a9ba45 100644 (file)
@@ -2802,7 +2802,8 @@ xtensa_expand_prologue (void)
                            gen_rtx_SET (mem, reg));
            }
        }
-      if (total_size > 1024)
+      if (total_size > 1024
+         || (!callee_save_size && total_size > 128))
        {
          rtx tmp_reg = gen_rtx_REG (Pmode, A9_REG);
          emit_move_insn (tmp_reg, GEN_INT (total_size -