aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKito Cheng <kito.cheng@gmail.com>2018-04-20 19:03:19 +0000
committerJim Wilson <wilson@gcc.gnu.org>2018-04-20 12:03:19 -0700
commit9b922d6aaf143d35ed5f1c116f0a0702df6ae04c (patch)
tree0deab27d2559fe9d125641262739cbdc4706f373
parentb593a195f96010854466ecf46c00c8b0e31bd4a8 (diff)
downloadgcc-9b922d6aaf143d35ed5f1c116f0a0702df6ae04c.zip
gcc-9b922d6aaf143d35ed5f1c116f0a0702df6ae04c.tar.gz
gcc-9b922d6aaf143d35ed5f1c116f0a0702df6ae04c.tar.bz2
RISC-V: Make sure stack is always aligned during adjusting stack.
gcc/ 2018-04-20 Kito Cheng <kito.cheng@gmail.com> * config/riscv/riscv.c (riscv_first_stack_step): Round up min step to make sure stack always aligned. From-SVN: r259530
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/riscv/riscv.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1702d95..d25e3e3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-04-20 Kito Cheng <kito.cheng@gmail.com>
+
+ * config/riscv/riscv.c (riscv_first_stack_step): Round up min
+ step to make sure stack always aligned.
+
2018-04-20 Carl Love <cel@us.ibm.com>
PR target/83402
diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c
index 2870177..2a8f87d 100644
--- a/gcc/config/riscv/riscv.c
+++ b/gcc/config/riscv/riscv.c
@@ -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);