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: WithGlobalValueDeadStripping: false 42; 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 !{} 80