blob: 15de77381ed15589246b348e16e91ea87396fdbc [file] [log] [blame]
Peter Collingbourne2325bb32017-03-04 01:31:01 +00001; 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:
Evgeniy Stepanovb933ad32017-06-02 18:24:23 +000041; SUMMARY-NEXT: WithGlobalValueDeadStripping: false
Peter Collingbourne2325bb32017-03-04 01:31:01 +000042; SUMMARY-NEXT: ...
43
44; CHECK: @vt1 = constant void (i8*)* @vf1
45@vt1 = constant void (i8*)* @vf1, !type !0
46
47; CHECK: @vt2 = constant void (i8*)* @vf2
48@vt2 = constant void (i8*)* @vf2, !type !1
49
50@vt3 = constant void (i8*)* @vf3, !type !2
51
52; CHECK: @vt4 = constant void (i8*)* @"vf4$merged"
53@vt4 = constant void (i8*)* @vf4, !type !3
54
55@vt5 = constant void (i8*)* @vf5, !type !4
56
57; CHECK: declare void @vf1(i8*)
58declare void @vf1(i8*)
59
60; CHECK: define void @vf2(i8*)
61define void @vf2(i8*) {
62 ret void
63}
64
65declare void @vf3(i8*)
66
67; CHECK: define hidden void @"vf4$merged"
68define internal void @vf4(i8*) {
69 ret void
70}
71
72declare void @vf5(i8*)
73
74!0 = !{i32 0, !"typeid1"}
75!1 = !{i32 0, !"typeid2"}
76!2 = !{i32 0, !"typeid3"}
77!3 = !{i32 0, !"typeid4"}
78!4 = !{i32 0, !5}
79!5 = distinct !{}