xref: /llvm-project/llvm/test/CodeGen/ARM/kcfi.ll (revision afd20587f9952654a9a9ec427052220b5e3a6982)
1*afd20587SFangrui Song; RUN: llc -mtriple=thumbv6m-none-eabi < %s | FileCheck %s
2*afd20587SFangrui Song
3*afd20587SFangrui Song; CHECK-LABEL: .globl nosan
4*afd20587SFangrui Song; CHECK-NEXT:  .p2align 1
5*afd20587SFangrui Song; CHECK-NEXT:  .type nosan,%function
6*afd20587SFangrui Song; CHECK-NEXT:  .code 16
7*afd20587SFangrui Song; CHECK-NEXT:  .thumb_func
8*afd20587SFangrui Song; CHECK-NEXT:  nosan:
9*afd20587SFangrui Songdefine dso_local void @nosan() nounwind {
10*afd20587SFangrui Song  ret void
11*afd20587SFangrui Song}
12*afd20587SFangrui Song
13*afd20587SFangrui Song;; The alignment is at least 4 to avoid unaligned type hash loads when this
14*afd20587SFangrui Song;; instrumented function is indirectly called.
15*afd20587SFangrui Song; CHECK-LABEL: .globl f1
16*afd20587SFangrui Song; CHECK-NEXT:  .p2align 2
17*afd20587SFangrui Song; CHECK-NEXT:  .type f1,%function
18*afd20587SFangrui Song; CHECK-NEXT:  .long 3170468932
19*afd20587SFangrui Song; CHECK-NEXT:  .code 16
20*afd20587SFangrui Song; CHECK-NEXT:  .thumb_func
21*afd20587SFangrui Song; CHECK-NEXT:  f1:
22*afd20587SFangrui Songdefine void @f1(ptr noundef %x) !kcfi_type !1 {
23*afd20587SFangrui Song  ret void
24*afd20587SFangrui Song}
25*afd20587SFangrui Song
26*afd20587SFangrui Song!llvm.module.flags = !{!0}
27*afd20587SFangrui Song!0 = !{i32 4, !"kcfi", i32 1}
28*afd20587SFangrui Song!1 = !{i32 -1124498364}
29