From 3787f36a689222dd3b0b95e9f2c54b7fbaa8c671 Mon Sep 17 00:00:00 2001
From: Kito Cheng <kito.cheng@gmail.com>
Date: Wed, 18 Apr 2018 17:51:35 +0800
Subject: [PATCH] RISC-V: Make sure stack is always aligned during adjusting
stack.
gcc/ChangeLog:
2018-04-18 Kito Cheng <kito.cheng@gmail.com>
* config/riscv/riscv.c (riscv_first_stack_step): Round up min
step to make sure stack always aligned.
---
gcc/config/riscv/riscv.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
@@ -3507,7 +3507,8 @@ riscv_first_stack_step (struct riscv_frame_info *frame)
if (SMALL_OPERAND (frame->total_size))
return frame->total_size;
- HOST_WIDE_INT min_first_step = frame->total_size - frame->fp_sp_offset;
+ HOST_WIDE_INT min_first_step =
+ RISCV_STACK_ALIGN (frame->total_size - frame->fp_sp_offset);
HOST_WIDE_INT max_first_step = IMM_REACH / 2 - PREFERRED_STACK_BOUNDARY / 8;
HOST_WIDE_INT min_second_step = frame->total_size - max_first_step;
gcc_assert (min_first_step <= max_first_step);
--
2.11.2