2
2
3
3
;; Test target-specific stack cookie location.
4
4
;
5
+ ; RUN: llc -mtriple=riscv64-linux < %s | FileCheck --check-prefix=LINUX-RISCV64 %s
5
6
; RUN: llc -mtriple=riscv64-fuchsia < %s | FileCheck --check-prefix=FUCHSIA-RISCV64 %s
7
+ ; RUN: llc -mtriple=riscv64-android < %s | FileCheck --check-prefix=ANDROID-RISCV64 %s
6
8
7
9
define void @func () sspreq nounwind {
10
+ ; LINUX-RISCV64-LABEL: func:
11
+ ; LINUX-RISCV64: # %bb.0:
12
+ ; LINUX-RISCV64-NEXT: addi sp, sp, -32
13
+ ; LINUX-RISCV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
14
+ ; LINUX-RISCV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
15
+ ; LINUX-RISCV64-NEXT: lui s0, %hi(__stack_chk_guard)
16
+ ; LINUX-RISCV64-NEXT: ld a0, %lo(__stack_chk_guard)(s0)
17
+ ; LINUX-RISCV64-NEXT: sd a0, 8(sp)
18
+ ; LINUX-RISCV64-NEXT: addi a0, sp, 4
19
+ ; LINUX-RISCV64-NEXT: call capture
20
+ ; LINUX-RISCV64-NEXT: ld a0, %lo(__stack_chk_guard)(s0)
21
+ ; LINUX-RISCV64-NEXT: ld a1, 8(sp)
22
+ ; LINUX-RISCV64-NEXT: bne a0, a1, .LBB0_2
23
+ ; LINUX-RISCV64-NEXT: # %bb.1:
24
+ ; LINUX-RISCV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
25
+ ; LINUX-RISCV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
26
+ ; LINUX-RISCV64-NEXT: addi sp, sp, 32
27
+ ; LINUX-RISCV64-NEXT: ret
28
+ ; LINUX-RISCV64-NEXT: .LBB0_2:
29
+ ; LINUX-RISCV64-NEXT: call __stack_chk_fail
30
+ ;
8
31
; FUCHSIA-RISCV64-LABEL: func:
9
32
; FUCHSIA-RISCV64: # %bb.0:
10
33
; FUCHSIA-RISCV64-NEXT: addi sp, sp, -32
@@ -22,6 +45,27 @@ define void @func() sspreq nounwind {
22
45
; FUCHSIA-RISCV64-NEXT: ret
23
46
; FUCHSIA-RISCV64-NEXT: .LBB0_2: # %CallStackCheckFailBlk
24
47
; FUCHSIA-RISCV64-NEXT: call __stack_chk_fail
48
+ ;
49
+ ; ANDROID-RISCV64-LABEL: func:
50
+ ; ANDROID-RISCV64: # %bb.0:
51
+ ; ANDROID-RISCV64-NEXT: addi sp, sp, -32
52
+ ; ANDROID-RISCV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
53
+ ; ANDROID-RISCV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
54
+ ; ANDROID-RISCV64-NEXT: lui s0, %hi(__stack_chk_guard)
55
+ ; ANDROID-RISCV64-NEXT: ld a0, %lo(__stack_chk_guard)(s0)
56
+ ; ANDROID-RISCV64-NEXT: sd a0, 8(sp)
57
+ ; ANDROID-RISCV64-NEXT: addi a0, sp, 4
58
+ ; ANDROID-RISCV64-NEXT: call capture
59
+ ; ANDROID-RISCV64-NEXT: ld a0, %lo(__stack_chk_guard)(s0)
60
+ ; ANDROID-RISCV64-NEXT: ld a1, 8(sp)
61
+ ; ANDROID-RISCV64-NEXT: bne a0, a1, .LBB0_2
62
+ ; ANDROID-RISCV64-NEXT: # %bb.1:
63
+ ; ANDROID-RISCV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
64
+ ; ANDROID-RISCV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
65
+ ; ANDROID-RISCV64-NEXT: addi sp, sp, 32
66
+ ; ANDROID-RISCV64-NEXT: ret
67
+ ; ANDROID-RISCV64-NEXT: .LBB0_2:
68
+ ; ANDROID-RISCV64-NEXT: call __stack_chk_fail
25
69
%1 = alloca i32 , align 4
26
70
call void @capture (ptr %1 )
27
71
ret void
0 commit comments