xref: /llvm-project/llvm/test/CodeGen/AArch64/stack-tagging-cfi.ll (revision 1ee315ae7964c8433b772e0b5d667834994ba753)
1; RUN: llc < %s -mtriple=aarch64 -mattr=+mte | FileCheck %s
2
3declare void @use32(ptr)
4
5define void @WithUnwind() sanitize_memtag {
6entry:
7; CHECK-LABEL: WithUnwind:
8; CHECK: .cfi_mte_tagged_frame
9; CHECK: stg
10  %x = alloca i32, align 4
11  call void @use32(ptr %x)
12  ret void
13}
14
15define void @NoUnwind() sanitize_memtag nounwind {
16entry:
17; CHECK-LABEL: NoUnwind:
18; CHECK-NOT: .cfi_mte_tagged_frame
19; CHECK: stg
20  %x = alloca i32, align 4
21  call void @use32(ptr %x)
22  ret void
23}
24
25define void @NoUnwindUwTable() sanitize_memtag nounwind uwtable {
26entry:
27; CHECK-LABEL: NoUnwindUwTable:
28; CHECK: .cfi_mte_tagged_frame
29; CHECK: stg
30  %x = alloca i32, align 4
31  call void @use32(ptr %x)
32  ret void
33}
34
35define void @NoMemtag() {
36entry:
37; CHECK-LABEL: NoMemtag:
38; CHECK-NOT: .cfi_mte_tagged_frame
39; CHECK-NOT: stg
40  %x = alloca i32, align 4
41  call void @use32(ptr %x)
42  ret void
43}
44