Hi, Andreas,
thanks for the comment.
> GNU style is line break before the operator, not after.
updated per your comment.
Qing.
---
gcc/config/aarch64/aarch64.c | 12 +++++++++---
gcc/config/aarch64/aarch64.h | 2 +-
gcc/config/aarch64/aarch64.md | 6 +++---
gcc/testsuite/gcc.target/aarch64/pr80295.c | 8 ++++++++
4 files changed, 21 insertions(+), 7 deletions(-)
create mode 100644 gcc/testsuite/gcc.target/aarch64/pr80295.c
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 6c3ef76..ff0890d 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -3693,7 +3693,9 @@ aarch64_expand_prologue (void)
stack_pointer_rtx,
GEN_INT (callee_offset)));
RTX_FRAME_RELATED_P (insn) = 1;
- emit_insn (gen_stack_tie (stack_pointer_rtx, hard_frame_pointer_rtx));
+ emit_insn (TARGET_ILP32
+ ? gen_stack_tiesi (stack_pointer_rtx, hard_frame_pointer_rtx)
+ : gen_stack_tiedi (stack_pointer_rtx,
hard_frame_pointer_rtx));
}
aarch64_save_callee_saves (DImode, callee_offset, R0_REGNUM, R30_REGNUM,
@@ -3750,7 +3752,9 @@ aarch64_expand_epilogue (bool for_sibcall)
if (final_adjust > crtl->outgoing_args_size || cfun->calls_alloca
|| crtl->calls_eh_return)
{
- emit_insn (gen_stack_tie (stack_pointer_rtx, stack_pointer_rtx));
+ emit_insn (TARGET_ILP32
+ ? gen_stack_tiesi (stack_pointer_rtx, stack_pointer_rtx)
+ : gen_stack_tiedi (stack_pointer_rtx, stack_pointer_rtx));
need_barrier_p = false;
}
@@ -3774,7 +3778,9 @@ aarch64_expand_epilogue (bool for_sibcall)
callee_adjust != 0, &cfi_ops);
if (need_barrier_p)
- emit_insn (gen_stack_tie (stack_pointer_rtx, stack_pointer_rtx));
+ emit_insn (TARGET_ILP32
+ ? gen_stack_tiesi (stack_pointer_rtx, stack_pointer_rtx)
+ : gen_stack_tiedi (stack_pointer_rtx, stack_pointer_rtx));
if (callee_adjust != 0)
aarch64_pop_regs (reg1, reg2, callee_adjust, &cfi_ops);
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index 8fada9e..df58442 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -782,7 +782,7 @@ typedef struct
/* Specify the machine mode that the hardware addresses have.
After generation of rtl, the compiler makes no further distinction
between pointers and any other objects of this machine mode. */
-#define Pmode DImode
+#define Pmode (TARGET_ILP32 ? SImode : DImode)
/* A C expression whose value is zero if pointers that need to be extended
from being `POINTER_SIZE' bits wide to `Pmode' are sign-extended and
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index bb7f2c0..30853b2 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -5533,10 +5533,10 @@
[(set_attr "type" "call")
(set_attr "length" "16")])
-(define_insn "stack_tie"
+(define_insn "stack_tie<GPI:mode>"
[(set (mem:BLK (scratch))
- (unspec:BLK [(match_operand:DI 0 "register_operand" "rk")
- (match_operand:DI 1 "register_operand" "rk")]
+ (unspec:BLK [(match_operand:GPI 0 "register_operand" "rk")
+ (match_operand:GPI 1 "register_operand" "rk")]
UNSPEC_PRLG_STK))]
""
""
diff --git a/gcc/testsuite/gcc.target/aarch64/pr80295.c
b/gcc/testsuite/gcc.target/aarch64/pr80295.c
new file mode 100644
index 0000000..b3866d8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr80295.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-mabi=ilp32" } */
+
+void f (void *b)
+{
+ __builtin_update_setjmp_buf (b);
+}
+
--
1.9.1