blob: 9b7cf8432f746b70eba17e53af8427ae7b4c5b63 [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
Peter Collingbourneb9b60252017-09-11 22:49:10 +00009; SUMMARY-NEXT: AlignLog2: 0
10; SUMMARY-NEXT: SizeM1: 0
11; SUMMARY-NEXT: BitMask: 0
12; SUMMARY-NEXT: InlineBits: 0
Peter Collingbourne2325bb32017-03-04 01:31:01 +000013; SUMMARY-NEXT: WPDRes:
14; SUMMARY-NEXT: 0:
15; SUMMARY-NEXT: Kind: SingleImpl
16; SUMMARY-NEXT: SingleImplName: vf1
17; SUMMARY-NEXT: ResByArg:
18; SUMMARY-NEXT: typeid2:
19; SUMMARY-NEXT: TTRes:
20; SUMMARY-NEXT: Kind: Unsat
21; SUMMARY-NEXT: SizeM1BitWidth: 0
Peter Collingbourneb9b60252017-09-11 22:49:10 +000022; SUMMARY-NEXT: AlignLog2: 0
23; SUMMARY-NEXT: SizeM1: 0
24; SUMMARY-NEXT: BitMask: 0
25; SUMMARY-NEXT: InlineBits: 0
Peter Collingbourne2325bb32017-03-04 01:31:01 +000026; SUMMARY-NEXT: WPDRes:
27; SUMMARY-NEXT: 0:
28; SUMMARY-NEXT: Kind: SingleImpl
29; SUMMARY-NEXT: SingleImplName: vf2
30; SUMMARY-NEXT: ResByArg:
31; SUMMARY-NEXT: typeid3:
32; SUMMARY-NEXT: TTRes:
33; SUMMARY-NEXT: Kind: Unsat
34; SUMMARY-NEXT: SizeM1BitWidth: 0
Peter Collingbourneb9b60252017-09-11 22:49:10 +000035; SUMMARY-NEXT: AlignLog2: 0
36; SUMMARY-NEXT: SizeM1: 0
37; SUMMARY-NEXT: BitMask: 0
38; SUMMARY-NEXT: InlineBits: 0
Peter Collingbourne2325bb32017-03-04 01:31:01 +000039; SUMMARY-NEXT: WPDRes:
40; SUMMARY-NEXT: 0:
41; SUMMARY-NEXT: Kind: SingleImpl
Peter Collingbourne88a58cf2017-09-08 00:10:53 +000042; SUMMARY-NEXT: SingleImplName: 'vf3$merged'
Peter Collingbourne2325bb32017-03-04 01:31:01 +000043; SUMMARY-NEXT: ResByArg:
44; SUMMARY-NEXT: typeid4:
45; SUMMARY-NEXT: TTRes:
46; SUMMARY-NEXT: Kind: Unsat
47; SUMMARY-NEXT: SizeM1BitWidth: 0
Peter Collingbourneb9b60252017-09-11 22:49:10 +000048; SUMMARY-NEXT: AlignLog2: 0
49; SUMMARY-NEXT: SizeM1: 0
50; SUMMARY-NEXT: BitMask: 0
51; SUMMARY-NEXT: InlineBits: 0
Peter Collingbourne2325bb32017-03-04 01:31:01 +000052; SUMMARY-NEXT: WPDRes:
53; SUMMARY-NEXT: 0:
54; SUMMARY-NEXT: Kind: SingleImpl
55; SUMMARY-NEXT: SingleImplName: 'vf4$merged'
56; SUMMARY-NEXT: ResByArg:
Evgeniy Stepanovb933ad32017-06-02 18:24:23 +000057; SUMMARY-NEXT: WithGlobalValueDeadStripping: false
Peter Collingbourne2325bb32017-03-04 01:31:01 +000058; SUMMARY-NEXT: ...
59
Peter Collingbourne88a58cf2017-09-08 00:10:53 +000060; CHECK: $"vf4$merged" = comdat largest
61$vf4 = comdat largest
62
Peter Collingbourne2325bb32017-03-04 01:31:01 +000063; CHECK: @vt1 = constant void (i8*)* @vf1
64@vt1 = constant void (i8*)* @vf1, !type !0
65
66; CHECK: @vt2 = constant void (i8*)* @vf2
67@vt2 = constant void (i8*)* @vf2, !type !1
68
69@vt3 = constant void (i8*)* @vf3, !type !2
70
Peter Collingbourne88a58cf2017-09-08 00:10:53 +000071; CHECK: @vt4 = constant void (i8*)* @"vf4$merged", comdat($"vf4$merged")
72@vt4 = constant void (i8*)* @vf4, comdat($vf4), !type !3
Peter Collingbourne2325bb32017-03-04 01:31:01 +000073
74@vt5 = constant void (i8*)* @vf5, !type !4
75
76; CHECK: declare void @vf1(i8*)
77declare void @vf1(i8*)
78
79; CHECK: define void @vf2(i8*)
80define void @vf2(i8*) {
81 ret void
82}
83
Peter Collingbourne88a58cf2017-09-08 00:10:53 +000084; CHECK: define hidden void @"vf3$merged"(i8*) {
85define internal void @vf3(i8*) {
86 ret void
87}
Peter Collingbourne2325bb32017-03-04 01:31:01 +000088
Peter Collingbourne88a58cf2017-09-08 00:10:53 +000089; CHECK: define hidden void @"vf4$merged"(i8*) comdat {
90define internal void @vf4(i8*) comdat {
Peter Collingbourne2325bb32017-03-04 01:31:01 +000091 ret void
92}
93
94declare void @vf5(i8*)
95
96!0 = !{i32 0, !"typeid1"}
97!1 = !{i32 0, !"typeid2"}
98!2 = !{i32 0, !"typeid3"}
99!3 = !{i32 0, !"typeid4"}
100!4 = !{i32 0, !5}
101!5 = distinct !{}