44;; call sites annotated with !callee_type metadata.
55;; Test if the .callgraph section contains unique direct callees.
66
7- ; RUN: llc -mtriple=x86_64-unknown-linux --call-graph-section -o - < %s | FileCheck %s
7+ ; REQUIRES: x86-registered-target
8+ ; REQUIRES: arm-registered-target
9+
10+ ; RUN: llc -mtriple=x86_64-unknown-linux --call-graph-section -o - < %s | FileCheck --check-prefix=X64 %s
11+ ; RUN: llc -mtriple=arm-unknown-linux --call-graph-section -o - < %s | FileCheck --check-prefix=ARM32 %s
812
913declare !type !0 void @direct_foo ()
1014declare !type !1 i32 @direct_bar (i8 )
1115declare !type !2 ptr @direct_baz (ptr )
1216
13- ; CHECK: ball:
14- ; CHECK-NEXT: [[LABEL_FUNC:\.Lfunc_begin[0-9]+]]:
17+ ; X64: ball:
18+ ; X64-NEXT: [[LABEL_FUNC:\.Lfunc_begin[0-9]+]]:
19+ ; ARM32: ball:
20+ ; ARM32-NEXT: [[LABEL_FUNC:\.Lfunc_begin[0-9]+]]:
1521define ptr @ball () {
1622entry:
1723 call void @direct_foo ()
@@ -36,24 +42,50 @@ entry:
3642!4 = !{!5 }
3743!5 = !{i64 0 , !"_ZTSFPvS_E.generalized" }
3844
39- ; CHECK: .section .callgraph,"o",@progbits,.text
45+ ; X64: .section .callgraph,"o",@progbits,.text
46+ ;; Version
47+ ; X64-NEXT: .byte 0
48+ ;; Flags
49+ ; X64-NEXT: .byte 7
50+ ;; Function Entry PC
51+ ; X64-NEXT: .quad [[LABEL_FUNC]]
52+ ;; Function type ID -- set to 0 as no type metadata attached to function.
53+ ; X64-NEXT: .quad 0
54+ ;; Number of unique direct callees.
55+ ; X64-NEXT: .byte 3
56+ ;; Direct callees.
57+ ; X64-NEXT: .quad direct_foo
58+ ; X64-NEXT: .quad direct_bar
59+ ; X64-NEXT: .quad direct_baz
60+ ;; Number of unique indirect target type IDs.
61+ ; X64-NEXT: .byte 3
62+ ;; Indirect type IDs.
63+ ; X64-NEXT: .quad 4524972987496481828
64+ ; X64-NEXT: .quad 3498816979441845844
65+ ; X64-NEXT: .quad 8646233951371320954
66+
67+ ; ARM32: .section .callgraph,"o",%progbits,.text
4068;; Version
41- ; CHECK -NEXT: .byte 0
69+ ; ARM32 -NEXT: .byte 0
4270;; Flags
43- ; CHECK -NEXT: .byte 7
71+ ; ARM32 -NEXT: .byte 7
4472;; Function Entry PC
45- ; CHECK -NEXT: .quad [[LABEL_FUNC]]
73+ ; ARM32 -NEXT: .long [[LABEL_FUNC]]
4674;; Function type ID -- set to 0 as no type metadata attached to function.
47- ; CHECK-NEXT: .quad 0
75+ ; ARM32-NEXT: .long 0
76+ ; ARM32-NEXT: .long 0
4877;; Number of unique direct callees.
49- ; CHECK -NEXT: .byte 3
78+ ; ARM32 -NEXT: .byte 3
5079;; Direct callees.
51- ; CHECK -NEXT: .quad direct_foo
52- ; CHECK -NEXT: .quad direct_bar
53- ; CHECK -NEXT: .quad direct_baz
80+ ; ARM32 -NEXT: .long direct_foo
81+ ; ARM32 -NEXT: .long direct_bar
82+ ; ARM32 -NEXT: .long direct_baz
5483;; Number of unique indirect target type IDs.
55- ; CHECK -NEXT: .byte 3
84+ ; ARM32 -NEXT: .byte 3
5685;; Indirect type IDs.
57- ; CHECK-NEXT: .quad 4524972987496481828
58- ; CHECK-NEXT: .quad 3498816979441845844
59- ; CHECK-NEXT: .quad 8646233951371320954
86+ ; ARM32-NEXT: .long 838288420
87+ ; ARM32-NEXT: .long 1053552373
88+ ; ARM32-NEXT: .long 1505527380
89+ ; ARM32-NEXT: .long 814631809
90+ ; ARM32-NEXT: .long 342417018
91+ ; ARM32-NEXT: .long 2013108216
0 commit comments