1 ; RUN: opt -wholeprogramdevirt -wholeprogramdevirt-summary-action=export -wholeprogramdevirt-read-summary=%S/Inputs/export.yaml -wholeprogramdevirt-write-summary=%t -S -o - %s | FileCheck %s
2 ; RUN: FileCheck --check-prefix=SUMMARY %s < %t
5 ; SUMMARY-NEXT: typeid3:
7 ; SUMMARY-NEXT: Kind: Unsat
8 ; SUMMARY-NEXT: SizeM1BitWidth: 0
9 ; SUMMARY-NEXT: AlignLog2: 0
10 ; SUMMARY-NEXT: SizeM1: 0
11 ; SUMMARY-NEXT: BitMask: 0
12 ; SUMMARY-NEXT: InlineBits: 0
13 ; SUMMARY-NEXT: WPDRes:
15 ; SUMMARY-NEXT: Kind: SingleImpl
16 ; SUMMARY-NEXT: SingleImplName: 'vf3$merged'
17 ; SUMMARY-NEXT: ResByArg:
18 ; SUMMARY-NEXT: typeid1:
19 ; SUMMARY-NEXT: TTRes:
20 ; SUMMARY-NEXT: Kind: Unsat
21 ; SUMMARY-NEXT: SizeM1BitWidth: 0
22 ; SUMMARY-NEXT: AlignLog2: 0
23 ; SUMMARY-NEXT: SizeM1: 0
24 ; SUMMARY-NEXT: BitMask: 0
25 ; SUMMARY-NEXT: InlineBits: 0
26 ; SUMMARY-NEXT: WPDRes:
28 ; SUMMARY-NEXT: Kind: SingleImpl
29 ; SUMMARY-NEXT: SingleImplName: vf1
30 ; SUMMARY-NEXT: ResByArg:
31 ; SUMMARY-NEXT: typeid2:
32 ; SUMMARY-NEXT: TTRes:
33 ; SUMMARY-NEXT: Kind: Unsat
34 ; SUMMARY-NEXT: SizeM1BitWidth: 0
35 ; SUMMARY-NEXT: AlignLog2: 0
36 ; SUMMARY-NEXT: SizeM1: 0
37 ; SUMMARY-NEXT: BitMask: 0
38 ; SUMMARY-NEXT: InlineBits: 0
39 ; SUMMARY-NEXT: WPDRes:
41 ; SUMMARY-NEXT: Kind: SingleImpl
42 ; SUMMARY-NEXT: SingleImplName: vf2
43 ; SUMMARY-NEXT: ResByArg:
44 ; SUMMARY-NEXT: typeid4:
45 ; SUMMARY-NEXT: TTRes:
46 ; SUMMARY-NEXT: Kind: Unsat
47 ; SUMMARY-NEXT: SizeM1BitWidth: 0
48 ; SUMMARY-NEXT: AlignLog2: 0
49 ; SUMMARY-NEXT: SizeM1: 0
50 ; SUMMARY-NEXT: BitMask: 0
51 ; SUMMARY-NEXT: InlineBits: 0
52 ; SUMMARY-NEXT: WPDRes:
54 ; SUMMARY-NEXT: Kind: SingleImpl
55 ; SUMMARY-NEXT: SingleImplName: 'vf4$merged'
56 ; SUMMARY-NEXT: ResByArg:
57 ; SUMMARY-NEXT: WithGlobalValueDeadStripping: false
60 ; CHECK: $"vf4$merged" = comdat largest
63 ; CHECK: @vt1 = constant void (i8*)* @vf1
64 @vt1 = constant void (i8*)* @vf1, !type !0
66 ; CHECK: @vt2 = constant void (i8*)* @vf2
67 @vt2 = constant void (i8*)* @vf2, !type !1
69 @vt3 = constant void (i8*)* @vf3, !type !2
71 ; CHECK: @vt4 = constant void (i8*)* @"vf4$merged", comdat($"vf4$merged")
72 @vt4 = constant void (i8*)* @vf4, comdat($vf4), !type !3
74 @vt5 = constant void (i8*)* @vf5, !type !4
76 ; CHECK: declare void @vf1(i8*)
77 declare void @vf1(i8*)
79 ; CHECK: define void @vf2(i8*)
80 define void @vf2(i8*) {
84 ; CHECK: define hidden void @"vf3$merged"(i8*) {
85 define internal void @vf3(i8*) {
89 ; CHECK: define hidden void @"vf4$merged"(i8*) comdat {
90 define internal void @vf4(i8*) comdat {
94 declare void @vf5(i8*)
96 !0 = !{i32 0, !"typeid1"}
97 !1 = !{i32 0, !"typeid2"}
98 !2 = !{i32 0, !"typeid3"}
99 !3 = !{i32 0, !"typeid4"}