]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
xtensa: fix PR target/90922
authorjcmvbkbc <jcmvbkbc@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 18 Jun 2019 22:19:12 +0000 (22:19 +0000)
committerjcmvbkbc <jcmvbkbc@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 18 Jun 2019 22:19:12 +0000 (22:19 +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

2019-06-18  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272455 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 43a0a232dc2188682dbc634c98b9da322993a1df..d8b56f6472fdc3166dea2d327dca4798fea8a467 100644 (file)
@@ -1,3 +1,10 @@
+2019-06-18  Max Filippov  <jcmvbkbc@gmail.com>
+
+       PR target/90922
+       * 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-06-18  Thomas Schwinge  <thomas@codesourcery.com>
 
        PR middle-end/90862
index 19bd616d67f60f8f15efa20521998a374b996a22..ee5612441e25d7a48502234ab2188e3abfd2315f 100644 (file)
@@ -2865,7 +2865,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 -