xtensa: backport fix for PR target/90922

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: r276037
This commit is contained in:
Max Filippov 2019-09-23 07:47:14 +00:00 committed by Max Filippov
parent 721fce0395
commit 2e1e7ad18e
2 changed files with 11 additions and 1 deletions

View 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-22 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline

View 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 -