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
3
4; SUMMARY:      TypeIdMap:
5; SUMMARY-NEXT:   typeid1:
6; SUMMARY-NEXT:     TTRes:
7; SUMMARY-NEXT:       Kind:            Unsat
8; SUMMARY-NEXT:       SizeM1BitWidth:  0
9; SUMMARY-NEXT:     WPDRes:
10; SUMMARY-NEXT:       0:
11; SUMMARY-NEXT:         Kind:            SingleImpl
12; SUMMARY-NEXT:         SingleImplName:  vf1
13; SUMMARY-NEXT:         ResByArg:
14; SUMMARY-NEXT:   typeid2:
15; SUMMARY-NEXT:     TTRes:
16; SUMMARY-NEXT:       Kind:            Unsat
17; SUMMARY-NEXT:       SizeM1BitWidth:  0
18; SUMMARY-NEXT:     WPDRes:
19; SUMMARY-NEXT:       0:
20; SUMMARY-NEXT:         Kind:            SingleImpl
21; SUMMARY-NEXT:         SingleImplName:  vf2
22; SUMMARY-NEXT:         ResByArg:
23; SUMMARY-NEXT:   typeid3:
24; SUMMARY-NEXT:     TTRes:
25; SUMMARY-NEXT:       Kind:            Unsat
26; SUMMARY-NEXT:       SizeM1BitWidth:  0
27; SUMMARY-NEXT:     WPDRes:
28; SUMMARY-NEXT:       0:
29; SUMMARY-NEXT:         Kind:            SingleImpl
30; SUMMARY-NEXT:         SingleImplName:  vf3
31; SUMMARY-NEXT:         ResByArg:
32; SUMMARY-NEXT:   typeid4:
33; SUMMARY-NEXT:     TTRes:
34; SUMMARY-NEXT:       Kind:            Unsat
35; SUMMARY-NEXT:       SizeM1BitWidth:  0
36; SUMMARY-NEXT:     WPDRes:
37; SUMMARY-NEXT:       0:
38; SUMMARY-NEXT:         Kind:            SingleImpl
39; SUMMARY-NEXT:         SingleImplName:  'vf4$merged'
40; SUMMARY-NEXT:         ResByArg:
41; SUMMARY-NEXT: ...
42
43; CHECK: @vt1 = constant void (i8*)* @vf1
44@vt1 = constant void (i8*)* @vf1, !type !0
45
46; CHECK: @vt2 = constant void (i8*)* @vf2
47@vt2 = constant void (i8*)* @vf2, !type !1
48
49@vt3 = constant void (i8*)* @vf3, !type !2
50
51; CHECK: @vt4 = constant void (i8*)* @"vf4$merged"
52@vt4 = constant void (i8*)* @vf4, !type !3
53
54@vt5 = constant void (i8*)* @vf5, !type !4
55
56; CHECK: declare void @vf1(i8*)
57declare void @vf1(i8*)
58
59; CHECK: define void @vf2(i8*)
60define void @vf2(i8*) {
61  ret void
62}
63
64declare void @vf3(i8*)
65
66; CHECK: define hidden void @"vf4$merged"
67define internal void @vf4(i8*) {
68  ret void
69}
70
71declare void @vf5(i8*)
72
73!0 = !{i32 0, !"typeid1"}
74!1 = !{i32 0, !"typeid2"}
75!2 = !{i32 0, !"typeid3"}
76!3 = !{i32 0, !"typeid4"}
77!4 = !{i32 0, !5}
78!5 = distinct !{}
79