44 lines
1.5 KiB
Diff
44 lines
1.5 KiB
Diff
|
|
From 7c8fc6b414dc1718e71e0d05c7a78498e06eb499 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Lulu Cheng <chenglulu@loongson.cn>
|
||
|
|
Date: Thu, 29 Jun 2023 19:30:59 +0800
|
||
|
|
Subject: [PATCH 053/124] LoongArch: Fix bug in loongarch_emit_stack_tie
|
||
|
|
[PR110484].
|
||
|
|
|
||
|
|
Which may result in implicit references to $fp when frame_pointer_needed is false,
|
||
|
|
causing regs_ever_live[$fp] to be true when $fp is not explicitly used,
|
||
|
|
resulting in $fp being used as the target replacement register in the rnreg pass.
|
||
|
|
|
||
|
|
The bug originates from SPEC2017 541.leela_r(-flto).
|
||
|
|
|
||
|
|
gcc/ChangeLog:
|
||
|
|
|
||
|
|
PR target/110484
|
||
|
|
* config/loongarch/loongarch.cc (loongarch_emit_stack_tie): Use the
|
||
|
|
frame_pointer_needed to determine whether to use the $fp register.
|
||
|
|
|
||
|
|
Co-authored-by: Guo Jie <guojie@loongson.cn>
|
||
|
|
Signed-off-by: Peng Fan <fanpeng@loongson.cn>
|
||
|
|
Signed-off-by: ticat_fp <fanpeng@loongson.cn>
|
||
|
|
---
|
||
|
|
gcc/config/loongarch/loongarch.cc | 4 +++-
|
||
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||
|
|
|
||
|
|
diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc
|
||
|
|
index caacfa8a3..7b48e3216 100644
|
||
|
|
--- a/gcc/config/loongarch/loongarch.cc
|
||
|
|
+++ b/gcc/config/loongarch/loongarch.cc
|
||
|
|
@@ -1109,7 +1109,9 @@ loongarch_first_stack_step (struct loongarch_frame_info *frame)
|
||
|
|
static void
|
||
|
|
loongarch_emit_stack_tie (void)
|
||
|
|
{
|
||
|
|
- emit_insn (gen_stack_tie (Pmode, stack_pointer_rtx, hard_frame_pointer_rtx));
|
||
|
|
+ emit_insn (gen_stack_tie (Pmode, stack_pointer_rtx,
|
||
|
|
+ frame_pointer_needed ? hard_frame_pointer_rtx
|
||
|
|
+ : stack_pointer_rtx));
|
||
|
|
}
|
||
|
|
|
||
|
|
#define PROBE_INTERVAL (1 << STACK_CHECK_PROBE_INTERVAL_EXP)
|
||
|
|
--
|
||
|
|
2.33.0
|
||
|
|
|