xref: /llvm-project/llvm/test/Transforms/FunctionImport/cg_profile.ll (revision 3713bc8a0b38c0c77238e3010e7dd53d50f3c523)
1a2233541SYuanfang Chen; Check that bitcast in "CG Profile" related metadata nodes (in this test case,
2a2233541SYuanfang Chen; generated during function importing in IRMover's RAUW operations) are accepted
3a2233541SYuanfang Chen; by verifier.
459fafdd8SFangrui Song; RUN: opt -passes=cg-profile -module-summary %s -o %t.bc
5a2233541SYuanfang Chen; RUN: opt -module-summary %p/Inputs/cg_profile.ll -o %t2.bc
6a2233541SYuanfang Chen; RUN: llvm-lto -thinlto -o %t3 %t.bc %t2.bc
7a9af1b9aSFangrui Song; RUN: opt -passes=function-import -print-imports -summary-file %t3.thinlto.bc %t.bc \
8a2233541SYuanfang Chen; RUN:   -S 2>&1 | FileCheck %s
9a2233541SYuanfang Chen
10a2233541SYuanfang Chen; CHECK:      !0 = !{i32 1, !"EnableSplitLTOUnit", i32 0}
11a2233541SYuanfang Chen; CHECK-NEXT: !1 = !{i32 5, !"CG Profile", !2}
12ff87ee4dSWolfgang Pieb; CHECK-NEXT: !2 = distinct !{!3}
13*3713bc8aSNikita Popov; CHECK-NEXT: !3 = !{ptr @foo, ptr @bar, i64 2753}
14a2233541SYuanfang Chen
15a2233541SYuanfang Chentarget datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
16a2233541SYuanfang Chentarget triple = "x86_64-unknown-linux-gnu"
17a2233541SYuanfang Chen
18a2233541SYuanfang Chen; %class.A is defined differently in %p/Inputs/cg_profile.ll. This is to trigger
19a2233541SYuanfang Chen; bitcast.
20a2233541SYuanfang Chen%class.A = type { i8 }
21a2233541SYuanfang Chen
22a2233541SYuanfang Chendefine void @foo() !prof !2 {
23*3713bc8aSNikita Popov  call void @bar(ptr null)
24a2233541SYuanfang Chen  ret void
25a2233541SYuanfang Chen}
26a2233541SYuanfang Chen
27*3713bc8aSNikita Popovdeclare void @bar(ptr)
28a2233541SYuanfang Chen
29a2233541SYuanfang Chen!llvm.module.flags = !{!1}
30a2233541SYuanfang Chen
31a2233541SYuanfang Chen!1 = !{i32 1, !"EnableSplitLTOUnit", i32 0}
32a2233541SYuanfang Chen!2 = !{!"function_entry_count", i64 2753}
33