178 lines
7.2 KiB
Diff
178 lines
7.2 KiB
Diff
|
|
From 9425ee5f8608ff8611628d83386f61950d7fff85 Mon Sep 17 00:00:00 2001
|
||
|
|
From: rickyleung <leung.wing.chung@huawei.com>
|
||
|
|
Date: Tue, 7 May 2024 21:37:03 +0800
|
||
|
|
Subject: [PATCH 7/7] Update testcase for stack clash protection backport
|
||
|
|
|
||
|
|
---
|
||
|
|
.../GlobalISel/legalize-dyn-alloca.mir | 3 +-
|
||
|
|
.../GlobalISel/stacksave-stackrestore.ll | 14 ++++++----
|
||
|
|
.../CodeGen/AArch64/stack-probing-dynamic.ll | 16 ++++++-----
|
||
|
|
.../AArch64/stack-probing-last-in-block.mir | 4 +--
|
||
|
|
.../X86/GlobalISel/stacksave-stackrestore.ll | 28 +++++++++++--------
|
||
|
|
5 files changed, 36 insertions(+), 29 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-dyn-alloca.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-dyn-alloca.mir
|
||
|
|
index 882c7468e70f..82781cebc55a 100644
|
||
|
|
--- a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-dyn-alloca.mir
|
||
|
|
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-dyn-alloca.mir
|
||
|
|
@@ -313,5 +313,4 @@ body: |
|
||
|
|
%7:_(s64) = G_AND %5, %6
|
||
|
|
%8:_(p0) = G_DYN_STACKALLOC %7(s64), 1
|
||
|
|
$x0 = COPY %8(p0)
|
||
|
|
- RET_ReallyLR implicit $x0
|
||
|
|
-...
|
||
|
|
\ No newline at end of file
|
||
|
|
+ RET_ReallyLR implicit $x0
|
||
|
|
\ No newline at end of file
|
||
|
|
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/stacksave-stackrestore.ll b/llvm/test/CodeGen/AArch64/GlobalISel/stacksave-stackrestore.ll
|
||
|
|
index 16bf85af9c17..97ecca0bd77b 100644
|
||
|
|
--- a/llvm/test/CodeGen/AArch64/GlobalISel/stacksave-stackrestore.ll
|
||
|
|
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/stacksave-stackrestore.ll
|
||
|
|
@@ -15,14 +15,18 @@ define void @test_scoped_alloca(i64 %n) {
|
||
|
|
; CHECK-NEXT: .cfi_offset w19, -16
|
||
|
|
; CHECK-NEXT: .cfi_offset w30, -24
|
||
|
|
; CHECK-NEXT: .cfi_offset w29, -32
|
||
|
|
-; CHECK-NEXT: add x9, x0, #15
|
||
|
|
+; CHECK-NEXT: mov x19, x0
|
||
|
|
+; CHECK-NEXT: bl llvm.stacksave.p0
|
||
|
|
+; CHECK-NEXT: add x9, x19, #15
|
||
|
|
; CHECK-NEXT: mov x8, sp
|
||
|
|
; CHECK-NEXT: and x9, x9, #0xfffffffffffffff0
|
||
|
|
-; CHECK-NEXT: mov x19, sp
|
||
|
|
-; CHECK-NEXT: sub x0, x8, x9
|
||
|
|
-; CHECK-NEXT: mov sp, x0
|
||
|
|
+; CHECK-NEXT: mov x19, x0
|
||
|
|
+; CHECK-NEXT: sub x8, x8, x9
|
||
|
|
+; CHECK-NEXT: mov sp, x8
|
||
|
|
+; CHECK-NEXT: mov x0, x8
|
||
|
|
; CHECK-NEXT: bl use_addr
|
||
|
|
-; CHECK-NEXT: mov sp, x19
|
||
|
|
+; CHECK-NEXT: mov x0, x19
|
||
|
|
+; CHECK-NEXT: bl llvm.stackrestore.p0
|
||
|
|
; CHECK-NEXT: mov sp, x29
|
||
|
|
; CHECK-NEXT: ldr x19, [sp, #16] // 8-byte Folded Reload
|
||
|
|
; CHECK-NEXT: ldp x29, x30, [sp], #32 // 16-byte Folded Reload
|
||
|
|
diff --git a/llvm/test/CodeGen/AArch64/stack-probing-dynamic.ll b/llvm/test/CodeGen/AArch64/stack-probing-dynamic.ll
|
||
|
|
index ad9cdbe92b23..3cbcf7749b2a 100644
|
||
|
|
--- a/llvm/test/CodeGen/AArch64/stack-probing-dynamic.ll
|
||
|
|
+++ b/llvm/test/CodeGen/AArch64/stack-probing-dynamic.ll
|
||
|
|
@@ -59,10 +59,10 @@ define void @dynamic_fixed(i64 %size, ptr %out1, ptr %out2) #0 {
|
||
|
|
; CHECK-NEXT: str xzr, [sp, #-64]!
|
||
|
|
; CHECK-NEXT: add x9, x0, #15
|
||
|
|
; CHECK-NEXT: mov x8, sp
|
||
|
|
-; CHECK-NEXT: sub x10, x29, #64
|
||
|
|
; CHECK-NEXT: and x9, x9, #0xfffffffffffffff0
|
||
|
|
-; CHECK-NEXT: str x10, [x1]
|
||
|
|
+; CHECK-NEXT: sub x10, x29, #64
|
||
|
|
; CHECK-NEXT: sub x8, x8, x9
|
||
|
|
+; CHECK-NEXT: str x10, [x1]
|
||
|
|
; CHECK-NEXT: .LBB1_1: // =>This Inner Loop Header: Depth=1
|
||
|
|
; CHECK-NEXT: sub sp, sp, #1, lsl #12 // =4096
|
||
|
|
; CHECK-NEXT: cmp sp, x8
|
||
|
|
@@ -108,10 +108,10 @@ define void @dynamic_align_64(i64 %size, ptr %out) #0 {
|
||
|
|
; CHECK-NEXT: and sp, x9, #0xffffffffffffffc0
|
||
|
|
; CHECK-NEXT: add x9, x0, #15
|
||
|
|
; CHECK-NEXT: mov x8, sp
|
||
|
|
-; CHECK-NEXT: str xzr, [sp]
|
||
|
|
; CHECK-NEXT: and x9, x9, #0xfffffffffffffff0
|
||
|
|
-; CHECK-NEXT: mov x19, sp
|
||
|
|
+; CHECK-NEXT: str xzr, [sp]
|
||
|
|
; CHECK-NEXT: sub x8, x8, x9
|
||
|
|
+; CHECK-NEXT: mov x19, sp
|
||
|
|
; CHECK-NEXT: and x8, x8, #0xffffffffffffffc0
|
||
|
|
; CHECK-NEXT: .LBB2_1: // =>This Inner Loop Header: Depth=1
|
||
|
|
; CHECK-NEXT: sub sp, sp, #1, lsl #12 // =4096
|
||
|
|
@@ -167,10 +167,10 @@ define void @dynamic_align_8192(i64 %size, ptr %out) #0 {
|
||
|
|
; CHECK-NEXT: mov sp, x9
|
||
|
|
; CHECK-NEXT: add x9, x0, #15
|
||
|
|
; CHECK-NEXT: mov x8, sp
|
||
|
|
-; CHECK-NEXT: str xzr, [sp]
|
||
|
|
; CHECK-NEXT: and x9, x9, #0xfffffffffffffff0
|
||
|
|
-; CHECK-NEXT: mov x19, sp
|
||
|
|
+; CHECK-NEXT: str xzr, [sp]
|
||
|
|
; CHECK-NEXT: sub x8, x8, x9
|
||
|
|
+; CHECK-NEXT: mov x19, sp
|
||
|
|
; CHECK-NEXT: and x8, x8, #0xffffffffffffe000
|
||
|
|
; CHECK-NEXT: .LBB3_4: // =>This Inner Loop Header: Depth=1
|
||
|
|
; CHECK-NEXT: sub sp, sp, #1, lsl #12 // =4096
|
||
|
|
@@ -268,8 +268,10 @@ define void @no_reserved_call_frame(i64 %n) #0 {
|
||
|
|
; CHECK-NEXT: str xzr, [sp]
|
||
|
|
; CHECK-NEXT: sub sp, sp, #1104
|
||
|
|
; CHECK-NEXT: str xzr, [sp]
|
||
|
|
+; CHECK-NEXT: sub sp, sp, #1104
|
||
|
|
; CHECK-NEXT: bl callee_stack_args
|
||
|
|
; CHECK-NEXT: add sp, sp, #1104
|
||
|
|
+; CHECK-NEXT: add sp, sp, #1104
|
||
|
|
; CHECK-NEXT: mov sp, x29
|
||
|
|
; CHECK-NEXT: .cfi_def_cfa wsp, 16
|
||
|
|
; CHECK-NEXT: ldp x29, x30, [sp], #16 // 16-byte Folded Reload
|
||
|
|
@@ -331,8 +333,8 @@ define void @dynamic_sve(i64 %size, ptr %out) #0 "target-features"="+sve" {
|
||
|
|
; CHECK-NEXT: .cfi_offset w29, -32
|
||
|
|
; CHECK-NEXT: rdvl x9, #1
|
||
|
|
; CHECK-NEXT: mov x10, #15 // =0xf
|
||
|
|
-; CHECK-NEXT: mov x8, sp
|
||
|
|
; CHECK-NEXT: madd x9, x0, x9, x10
|
||
|
|
+; CHECK-NEXT: mov x8, sp
|
||
|
|
; CHECK-NEXT: and x9, x9, #0xfffffffffffffff0
|
||
|
|
; CHECK-NEXT: sub x8, x8, x9
|
||
|
|
; CHECK-NEXT: .LBB7_1: // =>This Inner Loop Header: Depth=1
|
||
|
|
diff --git a/llvm/test/CodeGen/AArch64/stack-probing-last-in-block.mir b/llvm/test/CodeGen/AArch64/stack-probing-last-in-block.mir
|
||
|
|
index a8a21ab330ba..9a173be5857e 100644
|
||
|
|
--- a/llvm/test/CodeGen/AArch64/stack-probing-last-in-block.mir
|
||
|
|
+++ b/llvm/test/CodeGen/AArch64/stack-probing-last-in-block.mir
|
||
|
|
@@ -141,6 +141,4 @@ body: |
|
||
|
|
B %bb.2
|
||
|
|
|
||
|
|
bb.2.exit:
|
||
|
|
- RET_ReallyLR
|
||
|
|
-
|
||
|
|
-...
|
||
|
|
\ No newline at end of file
|
||
|
|
+ RET_ReallyLR
|
||
|
|
\ No newline at end of file
|
||
|
|
diff --git a/llvm/test/CodeGen/X86/GlobalISel/stacksave-stackrestore.ll b/llvm/test/CodeGen/X86/GlobalISel/stacksave-stackrestore.ll
|
||
|
|
index e86c04ee22db..8f665924577f 100644
|
||
|
|
--- a/llvm/test/CodeGen/X86/GlobalISel/stacksave-stackrestore.ll
|
||
|
|
+++ b/llvm/test/CodeGen/X86/GlobalISel/stacksave-stackrestore.ll
|
||
|
|
@@ -13,21 +13,25 @@ define void @test_scoped_alloca(i64 %n) {
|
||
|
|
; CHECK-NEXT: .cfi_offset %rbp, -16
|
||
|
|
; CHECK-NEXT: movq %rsp, %rbp
|
||
|
|
; CHECK-NEXT: .cfi_def_cfa_register %rbp
|
||
|
|
+; CHECK-NEXT: pushq %r14
|
||
|
|
; CHECK-NEXT: pushq %rbx
|
||
|
|
-; CHECK-NEXT: pushq %rax
|
||
|
|
-; CHECK-NEXT: .cfi_offset %rbx, -24
|
||
|
|
-; CHECK-NEXT: movq %rsp, %rbx
|
||
|
|
-; CHECK-NEXT: movq %rsp, %rax
|
||
|
|
-; CHECK-NEXT: imulq $1, %rdi, %rcx
|
||
|
|
-; CHECK-NEXT: addq $15, %rcx
|
||
|
|
-; CHECK-NEXT: andq $-16, %rcx
|
||
|
|
-; CHECK-NEXT: subq %rcx, %rax
|
||
|
|
-; CHECK-NEXT: movq %rax, %rsp
|
||
|
|
-; CHECK-NEXT: movq %rax, %rdi
|
||
|
|
+; CHECK-NEXT: .cfi_offset %rbx, -32
|
||
|
|
+; CHECK-NEXT: .cfi_offset %r14, -24
|
||
|
|
+; CHECK-NEXT: movq %rdi, %rbx
|
||
|
|
+; CHECK-NEXT: callq llvm.stacksave.p0
|
||
|
|
+; CHECK-NEXT: movq %rax, %r14
|
||
|
|
+; CHECK-NEXT: movq %rsp, %rdi
|
||
|
|
+; CHECK-NEXT: imulq $1, %rbx, %rax
|
||
|
|
+; CHECK-NEXT: addq $15, %rax
|
||
|
|
+; CHECK-NEXT: andq $-16, %rax
|
||
|
|
+; CHECK-NEXT: subq %rax, %rdi
|
||
|
|
+; CHECK-NEXT: movq %rdi, %rsp
|
||
|
|
; CHECK-NEXT: callq use_addr
|
||
|
|
-; CHECK-NEXT: movq %rbx, %rsp
|
||
|
|
-; CHECK-NEXT: leaq -8(%rbp), %rsp
|
||
|
|
+; CHECK-NEXT: movq %r14, %rdi
|
||
|
|
+; CHECK-NEXT: callq llvm.stackrestore.p0
|
||
|
|
+; CHECK-NEXT: leaq -16(%rbp), %rsp
|
||
|
|
; CHECK-NEXT: popq %rbx
|
||
|
|
+; CHECK-NEXT: popq %r14
|
||
|
|
; CHECK-NEXT: popq %rbp
|
||
|
|
; CHECK-NEXT: .cfi_def_cfa %rsp, 8
|
||
|
|
; CHECK-NEXT: retq
|
||
|
|
--
|
||
|
|
2.42.0.windows.2
|
||
|
|
|