@@ -15,6 +15,13 @@ define dso_local i32 @getVar() {
1515; CHECK-NEXT: ldr x8, [x8, :lo12:.refptr.var]
1616; CHECK-NEXT: ldr w0, [x8]
1717; CHECK-NEXT: ret
18+ ;
19+ ; CHECK-GI-LABEL: getVar:
20+ ; CHECK-GI: // %bb.0: // %entry
21+ ; CHECK-GI-NEXT: adrp x8, .refptr.var
22+ ; CHECK-GI-NEXT: ldr x8, [x8, :lo12:.refptr.var]
23+ ; CHECK-GI-NEXT: ldr w0, [x8]
24+ ; CHECK-GI-NEXT: ret
1825entry:
1926 %0 = load i32 , ptr @var , align 4
2027 ret i32 %0
@@ -26,6 +33,12 @@ define dso_local i32 @getDsoLocalVar() {
2633; CHECK-NEXT: adrp x8, dsolocalvar
2734; CHECK-NEXT: ldr w0, [x8, :lo12:dsolocalvar]
2835; CHECK-NEXT: ret
36+ ;
37+ ; CHECK-GI-LABEL: getDsoLocalVar:
38+ ; CHECK-GI: // %bb.0: // %entry
39+ ; CHECK-GI-NEXT: adrp x8, dsolocalvar
40+ ; CHECK-GI-NEXT: ldr w0, [x8, :lo12:dsolocalvar]
41+ ; CHECK-GI-NEXT: ret
2942entry:
3043 %0 = load i32 , ptr @dsolocalvar , align 4
3144 ret i32 %0
@@ -37,6 +50,12 @@ define dso_local i32 @getLocalVar() {
3750; CHECK-NEXT: adrp x8, localvar
3851; CHECK-NEXT: ldr w0, [x8, :lo12:localvar]
3952; CHECK-NEXT: ret
53+ ;
54+ ; CHECK-GI-LABEL: getLocalVar:
55+ ; CHECK-GI: // %bb.0: // %entry
56+ ; CHECK-GI-NEXT: adrp x8, localvar
57+ ; CHECK-GI-NEXT: ldr w0, [x8, :lo12:localvar]
58+ ; CHECK-GI-NEXT: ret
4059entry:
4160 %0 = load i32 , ptr @localvar , align 4
4261 ret i32 %0
@@ -48,6 +67,12 @@ define dso_local i32 @getLocalCommon() {
4867; CHECK-NEXT: adrp x8, localcommon
4968; CHECK-NEXT: ldr w0, [x8, :lo12:localcommon]
5069; CHECK-NEXT: ret
70+ ;
71+ ; CHECK-GI-LABEL: getLocalCommon:
72+ ; CHECK-GI: // %bb.0: // %entry
73+ ; CHECK-GI-NEXT: adrp x8, localcommon
74+ ; CHECK-GI-NEXT: ldr w0, [x8, :lo12:localcommon]
75+ ; CHECK-GI-NEXT: ret
5176entry:
5277 %0 = load i32 , ptr @localcommon , align 4
5378 ret i32 %0
@@ -60,6 +85,13 @@ define dso_local i32 @getExtVar() {
6085; CHECK-NEXT: ldr x8, [x8, :lo12:__imp_extvar]
6186; CHECK-NEXT: ldr w0, [x8]
6287; CHECK-NEXT: ret
88+ ;
89+ ; CHECK-GI-LABEL: getExtVar:
90+ ; CHECK-GI: // %bb.0: // %entry
91+ ; CHECK-GI-NEXT: adrp x8, __imp_extvar
92+ ; CHECK-GI-NEXT: ldr x8, [x8, :lo12:__imp_extvar]
93+ ; CHECK-GI-NEXT: ldr w0, [x8]
94+ ; CHECK-GI-NEXT: ret
6395entry:
6496 %0 = load i32 , ptr @extvar , align 4
6597 ret i32 %0
@@ -69,6 +101,10 @@ define dso_local void @callFunc() {
69101; CHECK-LABEL: callFunc:
70102; CHECK: // %bb.0: // %entry
71103; CHECK-NEXT: b otherFunc
104+ ;
105+ ; CHECK-GI-LABEL: callFunc:
106+ ; CHECK-GI: // %bb.0: // %entry
107+ ; CHECK-GI-NEXT: b otherFunc
72108entry:
73109 tail call void @otherFunc ()
74110 ret void
@@ -112,6 +148,40 @@ define dso_local void @sspFunc() #0 {
112148; CHECK-NEXT: brk #0x1
113149; CHECK-NEXT: .seh_endfunclet
114150; CHECK-NEXT: .seh_endproc
151+ ;
152+ ; CHECK-GI-LABEL: sspFunc:
153+ ; CHECK-GI: .seh_proc sspFunc
154+ ; CHECK-GI-NEXT: // %bb.0: // %entry
155+ ; CHECK-GI-NEXT: sub sp, sp, #32
156+ ; CHECK-GI-NEXT: .seh_stackalloc 32
157+ ; CHECK-GI-NEXT: str x30, [sp, #16] // 8-byte Folded Spill
158+ ; CHECK-GI-NEXT: .seh_save_reg x30, 16
159+ ; CHECK-GI-NEXT: .seh_endprologue
160+ ; CHECK-GI-NEXT: adrp x8, .refptr.__stack_chk_guard
161+ ; CHECK-GI-NEXT: add x0, sp, #7
162+ ; CHECK-GI-NEXT: ldr x8, [x8, :lo12:.refptr.__stack_chk_guard]
163+ ; CHECK-GI-NEXT: ldr x8, [x8]
164+ ; CHECK-GI-NEXT: str x8, [sp, #8]
165+ ; CHECK-GI-NEXT: bl ptrUser
166+ ; CHECK-GI-NEXT: adrp x8, .refptr.__stack_chk_guard
167+ ; CHECK-GI-NEXT: ldr x8, [x8, :lo12:.refptr.__stack_chk_guard]
168+ ; CHECK-GI-NEXT: ldr x9, [sp, #8]
169+ ; CHECK-GI-NEXT: ldr x8, [x8]
170+ ; CHECK-GI-NEXT: cmp x8, x9
171+ ; CHECK-GI-NEXT: b.ne .LBB6_2
172+ ; CHECK-GI-NEXT: // %bb.1: // %entry
173+ ; CHECK-GI-NEXT: .seh_startepilogue
174+ ; CHECK-GI-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload
175+ ; CHECK-GI-NEXT: .seh_save_reg x30, 16
176+ ; CHECK-GI-NEXT: add sp, sp, #32
177+ ; CHECK-GI-NEXT: .seh_stackalloc 32
178+ ; CHECK-GI-NEXT: .seh_endepilogue
179+ ; CHECK-GI-NEXT: ret
180+ ; CHECK-GI-NEXT: .LBB6_2: // %entry
181+ ; CHECK-GI-NEXT: bl __stack_chk_fail
182+ ; CHECK-GI-NEXT: brk #0x1
183+ ; CHECK-GI-NEXT: .seh_endfunclet
184+ ; CHECK-GI-NEXT: .seh_endproc
115185entry:
116186 %c = alloca i8 , align 1
117187 call void @llvm.lifetime.start.p0 (i64 1 , ptr nonnull %c )
@@ -136,5 +206,4 @@ attributes #0 = { sspstrong }
136206; CHECK: .xword var
137207
138208;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
139- ; CHECK-GI: {{.*}}
140209; CHECK-SD: {{.*}}
0 commit comments