Skip to content

Commit 3c954a4

Browse files
committed
Reapply: Use an abbrev to reduce size of VALUE_GUID records in ThinLTO summaries (llvm#90692)
This reverts commit d71771d. Retrying now that it seems increasing BitcodeSummaryVersion worked in llvm#98382
1 parent bfc7540 commit 3c954a4

20 files changed

+143
-111
lines changed

lld/test/COFF/thinlto-index-only.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
; BACKEND1: <GLOBALVAL_SUMMARY_BLOCK
2323
; BACKEND1: <VERSION
2424
; BACKEND1: <FLAGS
25-
; BACKEND1: <VALUE_GUID op0={{1|2}} op1={{-5300342847281564238|-2624081020897602054}}
26-
; BACKEND1: <VALUE_GUID op0={{1|2}} op1={{-5300342847281564238|-2624081020897602054}}
25+
; BACKEND1: <VALUE_GUID {{.*}} op0={{1|2}} {{op1=3060885059 op2=1207956914|op1=3684000822 op2=3884832250}}
26+
; BACKEND1: <VALUE_GUID {{.*}} op0={{1|2}} {{op1=3060885059 op2=1207956914|op1=3684000822 op2=3884832250}}
2727
; BACKEND1: <COMBINED
2828
; BACKEND1: <COMBINED
2929
; BACKEND1: </GLOBALVAL_SUMMARY_BLOCK
@@ -37,7 +37,7 @@
3737
; BACKEND2-NEXT: <GLOBALVAL_SUMMARY_BLOCK
3838
; BACKEND2-NEXT: <VERSION
3939
; BACKEND2-NEXT: <FLAGS
40-
; BACKEND2-NEXT: <VALUE_GUID op0=1 op1=-5300342847281564238
40+
; BACKEND2-NEXT: <VALUE_GUID {{.*}} op0=1 op1=3060885059 op2=1207956914
4141
; BACKEND2-NEXT: <COMBINED
4242
; BACKEND2-NEXT: </GLOBALVAL_SUMMARY_BLOCK
4343

lld/test/ELF/lto/thinlto-emit-index.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@
7676
; BACKEND1: <GLOBALVAL_SUMMARY_BLOCK
7777
; BACKEND1: <VERSION
7878
; BACKEND1: <FLAGS
79-
; BACKEND1: <VALUE_GUID op0={{1|2}} op1={{-3706093650706652785|-5300342847281564238}}
80-
; BACKEND1: <VALUE_GUID op0={{1|2}} op1={{-3706093650706652785|-5300342847281564238}}
79+
; BACKEND1: <VALUE_GUID {{.*}} op0={{1|2}} {{op1=3060885059 op2=1207956914|op1=3432075125 op2=3712786831}}
80+
; BACKEND1: <VALUE_GUID {{.*}} op0={{1|2}} {{op1=3060885059 op2=1207956914|op1=3432075125 op2=3712786831}}
8181
; BACKEND1: <COMBINED
8282
; BACKEND1: <COMBINED
8383
; BACKEND1: </GLOBALVAL_SUMMARY_BLOCK
@@ -90,7 +90,7 @@
9090
; BACKEND2-NEXT: <GLOBALVAL_SUMMARY_BLOCK
9191
; BACKEND2-NEXT: <VERSION
9292
; BACKEND2-NEXT: <FLAGS
93-
; BACKEND2-NEXT: <VALUE_GUID op0=1 op1=-5300342847281564238
93+
; BACKEND2-NEXT: <VALUE_GUID {{.*}} op0=1 op1=3060885059 op2=1207956914
9494
; BACKEND2-NEXT: <COMBINED
9595
; BACKEND2-NEXT: </GLOBALVAL_SUMMARY_BLOCK
9696

lld/test/ELF/lto/thinlto-index-only.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@
103103
; BACKEND1: <GLOBALVAL_SUMMARY_BLOCK
104104
; BACKEND1: <VERSION
105105
; BACKEND1: <FLAGS
106-
; BACKEND1: <VALUE_GUID op0={{1|2}} op1={{-3706093650706652785|-5300342847281564238}}
107-
; BACKEND1: <VALUE_GUID op0={{1|2}} op1={{-3706093650706652785|-5300342847281564238}}
106+
; BACKEND1: <VALUE_GUID {{.*}} op0={{1|2}} {{op1=3060885059 op2=1207956914|op1=3432075125 op2=3712786831}}
107+
; BACKEND1: <VALUE_GUID {{.*}} op0={{1|2}} {{op1=3060885059 op2=1207956914|op1=3432075125 op2=3712786831}}
108108
; BACKEND1: <COMBINED
109109
; BACKEND1: <COMBINED
110110
; BACKEND1: </GLOBALVAL_SUMMARY_BLOCK
@@ -117,7 +117,7 @@
117117
; BACKEND2-NEXT: <GLOBALVAL_SUMMARY_BLOCK
118118
; BACKEND2-NEXT: <VERSION
119119
; BACKEND2-NEXT: <FLAGS
120-
; BACKEND2-NEXT: <VALUE_GUID op0=1 op1=-5300342847281564238
120+
; BACKEND2-NEXT: <VALUE_GUID {{.*}} op0=1 op1=3060885059 op2=1207956914
121121
; BACKEND2-NEXT: <COMBINED
122122
; BACKEND2-NEXT: </GLOBALVAL_SUMMARY_BLOCK
123123

lld/test/MachO/thinlto-emit-index.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@
7676
; BACKEND1: <GLOBALVAL_SUMMARY_BLOCK
7777
; BACKEND1: <VERSION
7878
; BACKEND1: <FLAGS
79-
; BACKEND1: <VALUE_GUID op0={{1|2}} op1={{-3706093650706652785|-5300342847281564238}}
80-
; BACKEND1: <VALUE_GUID op0={{1|2}} op1={{-3706093650706652785|-5300342847281564238}}
79+
; BACKEND1: <VALUE_GUID {{.*}} op0={{1|2}} {{op1=3060885059 op2=1207956914|op1=3432075125 op2=3712786831}}
80+
; BACKEND1: <VALUE_GUID {{.*}} op0={{1|2}} {{op1=3060885059 op2=1207956914|op1=3432075125 op2=3712786831}}
8181
; BACKEND1: <COMBINED
8282
; BACKEND1: <COMBINED
8383
; BACKEND1: </GLOBALVAL_SUMMARY_BLOCK
@@ -90,7 +90,7 @@
9090
; BACKEND2-NEXT: <GLOBALVAL_SUMMARY_BLOCK
9191
; BACKEND2-NEXT: <VERSION
9292
; BACKEND2-NEXT: <FLAGS
93-
; BACKEND2-NEXT: <VALUE_GUID op0=1 op1=-5300342847281564238
93+
; BACKEND2-NEXT: <VALUE_GUID {{.*}} op0=1 op1=3060885059 op2=1207956914
9494
; BACKEND2-NEXT: <COMBINED
9595
; BACKEND2-NEXT: </GLOBALVAL_SUMMARY_BLOCK
9696

lld/test/MachO/thinlto-index-only.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@
7575
; BACKEND1: <GLOBALVAL_SUMMARY_BLOCK
7676
; BACKEND1: <VERSION
7777
; BACKEND1: <FLAGS
78-
; BACKEND1: <VALUE_GUID op0={{1|2}} op1={{-3706093650706652785|-5300342847281564238}}
79-
; BACKEND1: <VALUE_GUID op0={{1|2}} op1={{-3706093650706652785|-5300342847281564238}}
78+
; BACKEND1: <VALUE_GUID {{.*}} op0={{1|2}} {{op1=3060885059 op2=1207956914|op1=3432075125 op2=3712786831}}
79+
; BACKEND1: <VALUE_GUID {{.*}} op0={{1|2}} {{op1=3060885059 op2=1207956914|op1=3432075125 op2=3712786831}}
8080
; BACKEND1: <COMBINED
8181
; BACKEND1: <COMBINED
8282
; BACKEND1: </GLOBALVAL_SUMMARY_BLOCK
@@ -89,7 +89,7 @@
8989
; BACKEND2-NEXT: <GLOBALVAL_SUMMARY_BLOCK
9090
; BACKEND2-NEXT: <VERSION
9191
; BACKEND2-NEXT: <FLAGS
92-
; BACKEND2-NEXT: <VALUE_GUID op0=1 op1=-5300342847281564238
92+
; BACKEND2-NEXT: <VALUE_GUID {{.*}} op0=1 op1=3060885059 op2=1207956914
9393
; BACKEND2-NEXT: <COMBINED
9494
; BACKEND2-NEXT: </GLOBALVAL_SUMMARY_BLOCK
9595

llvm/lib/Bitcode/Reader/BitcodeReader.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7604,9 +7604,14 @@ Error ModuleSummaryIndexBitcodeReader::parseEntireSummary(unsigned ID) {
76047604
TheIndex.setFlags(Record[0]);
76057605
break;
76067606
}
7607-
case bitc::FS_VALUE_GUID: { // [valueid, refguid]
7607+
case bitc::FS_VALUE_GUID: { // [valueid, refguid_upper32, refguid_lower32]
76087608
uint64_t ValueID = Record[0];
7609-
GlobalValue::GUID RefGUID = Record[1];
7609+
GlobalValue::GUID RefGUID;
7610+
if (Version >= 10) {
7611+
RefGUID = Record[1] << 32 | Record[2];
7612+
} else {
7613+
RefGUID = Record[1];
7614+
}
76107615
ValueIdToValueInfoMap[ValueID] = std::make_tuple(
76117616
TheIndex.getOrInsertValueInfo(RefGUID), RefGUID, RefGUID);
76127617
break;

llvm/lib/Bitcode/Writer/BitcodeWriter.cpp

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4348,9 +4348,20 @@ void ModuleBitcodeWriterBase::writePerModuleGlobalValueSummary() {
43484348
return;
43494349
}
43504350

4351+
auto Abbv = std::make_shared<BitCodeAbbrev>();
4352+
Abbv->Add(BitCodeAbbrevOp(bitc::FS_VALUE_GUID));
4353+
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6));
4354+
// GUIDS often use up most of 64-bits, so encode as two Fixed 32.
4355+
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32));
4356+
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32));
4357+
unsigned ValueGuidAbbrev = Stream.EmitAbbrev(std::move(Abbv));
4358+
43514359
for (const auto &GVI : valueIds()) {
43524360
Stream.EmitRecord(bitc::FS_VALUE_GUID,
4353-
ArrayRef<uint64_t>{GVI.second, GVI.first});
4361+
ArrayRef<uint32_t>{GVI.second,
4362+
static_cast<uint32_t>(GVI.first >> 32),
4363+
static_cast<uint32_t>(GVI.first)},
4364+
ValueGuidAbbrev);
43544365
}
43554366

43564367
if (!Index->stackIds().empty()) {
@@ -4364,7 +4375,7 @@ void ModuleBitcodeWriterBase::writePerModuleGlobalValueSummary() {
43644375
}
43654376

43664377
// Abbrev for FS_PERMODULE_PROFILE.
4367-
auto Abbv = std::make_shared<BitCodeAbbrev>();
4378+
Abbv = std::make_shared<BitCodeAbbrev>();
43684379
Abbv->Add(BitCodeAbbrevOp(bitc::FS_PERMODULE_PROFILE));
43694380
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // valueid
43704381
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // flags
@@ -4518,9 +4529,20 @@ void IndexBitcodeWriter::writeCombinedGlobalValueSummary() {
45184529
// Write the index flags.
45194530
Stream.EmitRecord(bitc::FS_FLAGS, ArrayRef<uint64_t>{Index.getFlags()});
45204531

4532+
auto Abbv = std::make_shared<BitCodeAbbrev>();
4533+
Abbv->Add(BitCodeAbbrevOp(bitc::FS_VALUE_GUID));
4534+
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6));
4535+
// GUIDS often use up most of 64-bits, so encode as two Fixed 32.
4536+
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32));
4537+
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32));
4538+
unsigned ValueGuidAbbrev = Stream.EmitAbbrev(std::move(Abbv));
4539+
45214540
for (const auto &GVI : valueIds()) {
45224541
Stream.EmitRecord(bitc::FS_VALUE_GUID,
4523-
ArrayRef<uint64_t>{GVI.second, GVI.first});
4542+
ArrayRef<uint32_t>{GVI.second,
4543+
static_cast<uint32_t>(GVI.first >> 32),
4544+
static_cast<uint32_t>(GVI.first)},
4545+
ValueGuidAbbrev);
45244546
}
45254547

45264548
// Write the stack ids used by this index, which will be a subset of those in
@@ -4536,7 +4558,7 @@ void IndexBitcodeWriter::writeCombinedGlobalValueSummary() {
45364558
}
45374559

45384560
// Abbrev for FS_COMBINED_PROFILE.
4539-
auto Abbv = std::make_shared<BitCodeAbbrev>();
4561+
Abbv = std::make_shared<BitCodeAbbrev>();
45404562
Abbv->Add(BitCodeAbbrevOp(bitc::FS_COMBINED_PROFILE));
45414563
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // valueid
45424564
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // modid

llvm/test/Assembler/thinlto-summary.ll

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -46,28 +46,32 @@
4646
^18 = gv: (guid: 17, summaries: (alias: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 1), aliasee: ^14)))
4747

4848
; Test all types of TypeIdInfo on function summaries.
49-
^19 = gv: (guid: 18, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0), insts: 4, typeIdInfo: (typeTests: (^25, ^27)))))
50-
^20 = gv: (guid: 19, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0), insts: 8, typeIdInfo: (typeTestAssumeVCalls: (vFuncId: (^28, offset: 16))))))
51-
^21 = gv: (guid: 20, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0), insts: 5, typeIdInfo: (typeCheckedLoadVCalls: (vFuncId: (^26, offset: 16))))))
52-
^22 = gv: (guid: 21, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0), insts: 15, typeIdInfo: (typeTestAssumeConstVCalls: ((vFuncId: (^28, offset: 16), args: (42)), (vFuncId: (^28, offset: 24)))))))
53-
^23 = gv: (guid: 22, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0), insts: 5, typeIdInfo: (typeCheckedLoadConstVCalls: ((vFuncId: (^29, offset: 16), args: (42)))))))
49+
^19 = gv: (guid: 18, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0), insts: 4, typeIdInfo: (typeTests: (^26, ^28)))))
50+
^20 = gv: (guid: 19, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0), insts: 8, typeIdInfo: (typeTestAssumeVCalls: (vFuncId: (^29, offset: 16))))))
51+
^21 = gv: (guid: 20, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0), insts: 5, typeIdInfo: (typeCheckedLoadVCalls: (vFuncId: (^27, offset: 16))))))
52+
^22 = gv: (guid: 21, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0), insts: 15, typeIdInfo: (typeTestAssumeConstVCalls: ((vFuncId: (^29, offset: 16), args: (42)), (vFuncId: (^29, offset: 24)))))))
53+
^23 = gv: (guid: 22, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0), insts: 5, typeIdInfo: (typeCheckedLoadConstVCalls: ((vFuncId: (^30, offset: 16), args: (42)))))))
5454

5555
; Function summary with an import type of declaration
5656
^24 = gv: (guid: 23, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, importType: declaration), insts: 5)))
5757

58+
; GUID that are 64-bit
59+
60+
^25 = gv: (guid: 9123456789101112131, summaries: (function: (module: ^0, flags: (linkage: internal, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 1, importType: definition), insts: 1)))
61+
5862
; Test TypeId summaries:
5963

60-
^25 = typeid: (name: "_ZTS1C", summary: (typeTestRes: (kind: single, sizeM1BitWidth: 0)))
64+
^26 = typeid: (name: "_ZTS1C", summary: (typeTestRes: (kind: single, sizeM1BitWidth: 0)))
6165
; Test TypeId with other optional fields (alignLog2/sizeM1/bitMask/inlineBits)
62-
^26 = typeid: (name: "_ZTS1B", summary: (typeTestRes: (kind: inline, sizeM1BitWidth: 0, alignLog2: 1, sizeM1: 2, bitMask: 3, inlineBits: 4)))
66+
^27 = typeid: (name: "_ZTS1B", summary: (typeTestRes: (kind: inline, sizeM1BitWidth: 0, alignLog2: 1, sizeM1: 2, bitMask: 3, inlineBits: 4)))
6367
; Test the AllOnes resolution, and all kinds of WholeProgramDevirtResolution
6468
; types, including all optional resolution by argument kinds.
65-
^27 = typeid: (name: "_ZTS1A", summary: (typeTestRes: (kind: allOnes, sizeM1BitWidth: 7), wpdResolutions: ((offset: 0, wpdRes: (kind: branchFunnel)), (offset: 8, wpdRes: (kind: singleImpl, singleImplName: "_ZN1A1nEi")), (offset: 16, wpdRes: (kind: indir, resByArg: (args: (1, 2), byArg: (kind: indir, byte: 2, bit: 3), args: (3), byArg: (kind: uniformRetVal, info: 1), args: (4), byArg: (kind: uniqueRetVal, info: 1), args: (5), byArg: (kind: virtualConstProp)))))))
69+
^28 = typeid: (name: "_ZTS1A", summary: (typeTestRes: (kind: allOnes, sizeM1BitWidth: 7), wpdResolutions: ((offset: 0, wpdRes: (kind: branchFunnel)), (offset: 8, wpdRes: (kind: singleImpl, singleImplName: "_ZN1A1nEi")), (offset: 16, wpdRes: (kind: indir, resByArg: (args: (1, 2), byArg: (kind: indir, byte: 2, bit: 3), args: (3), byArg: (kind: uniformRetVal, info: 1), args: (4), byArg: (kind: uniqueRetVal, info: 1), args: (5), byArg: (kind: virtualConstProp)))))))
6670
; Test the other kinds of type test resoultions
67-
^28 = typeid: (name: "_ZTS1D", summary: (typeTestRes: (kind: byteArray, sizeM1BitWidth: 0)))
68-
^29 = typeid: (name: "_ZTS1E", summary: (typeTestRes: (kind: unsat, sizeM1BitWidth: 0)))
69-
^30 = flags: 8
70-
^31 = blockcount: 1888
71+
^29 = typeid: (name: "_ZTS1D", summary: (typeTestRes: (kind: byteArray, sizeM1BitWidth: 0)))
72+
^30 = typeid: (name: "_ZTS1E", summary: (typeTestRes: (kind: unsat, sizeM1BitWidth: 0)))
73+
^31 = flags: 8
74+
^32 = blockcount: 1888
7175

7276
; Make sure we get back from llvm-dis essentially what we put in via llvm-as.
7377
; CHECK: ^0 = module: (path: "thinlto-summary1.o", hash: (1369602428, 2747878711, 259090915, 2507395659, 1141468049))
@@ -91,19 +95,20 @@
9195
; CHECK: ^16 = gv: (guid: 15, summaries: (function: (module: ^1, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 1, funcFlags: (readNone: 1, readOnly: 0, noRecurse: 1, returnDoesNotAlias: 0, noInline: 0, alwaysInline: 1, noUnwind: 1, mayThrow: 1, hasUnknownCall: 1, mustBeUnreachable: 0))))
9296
; CHECK: ^17 = gv: (guid: 16, summaries: (function: (module: ^1, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 1, funcFlags: (readNone: 0, readOnly: 1, noRecurse: 0, returnDoesNotAlias: 1, noInline: 0, alwaysInline: 0, noUnwind: 0, mayThrow: 0, hasUnknownCall: 0, mustBeUnreachable: 1), calls: ((callee: ^15)))))
9397
; CHECK: ^18 = gv: (guid: 17, summaries: (alias: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 1, canAutoHide: 0, importType: definition), aliasee: ^14)))
94-
; CHECK: ^19 = gv: (guid: 18, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 4, typeIdInfo: (typeTests: (^25, ^27)))))
95-
; CHECK: ^20 = gv: (guid: 19, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 8, typeIdInfo: (typeTestAssumeVCalls: (vFuncId: (^28, offset: 16))))))
96-
; CHECK: ^21 = gv: (guid: 20, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 5, typeIdInfo: (typeCheckedLoadVCalls: (vFuncId: (^26, offset: 16))))))
97-
; CHECK: ^22 = gv: (guid: 21, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 15, typeIdInfo: (typeTestAssumeConstVCalls: ((vFuncId: (^28, offset: 16), args: (42)), (vFuncId: (^28, offset: 24)))))))
98-
; CHECK: ^23 = gv: (guid: 22, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 5, typeIdInfo: (typeCheckedLoadConstVCalls: ((vFuncId: (^29, offset: 16), args: (42)))))))
98+
; CHECK: ^19 = gv: (guid: 18, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 4, typeIdInfo: (typeTests: (^26, ^28)))))
99+
; CHECK: ^20 = gv: (guid: 19, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 8, typeIdInfo: (typeTestAssumeVCalls: (vFuncId: (^29, offset: 16))))))
100+
; CHECK: ^21 = gv: (guid: 20, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 5, typeIdInfo: (typeCheckedLoadVCalls: (vFuncId: (^27, offset: 16))))))
101+
; CHECK: ^22 = gv: (guid: 21, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 15, typeIdInfo: (typeTestAssumeConstVCalls: ((vFuncId: (^29, offset: 16), args: (42)), (vFuncId: (^29, offset: 24)))))))
102+
; CHECK: ^23 = gv: (guid: 22, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: definition), insts: 5, typeIdInfo: (typeCheckedLoadConstVCalls: ((vFuncId: (^30, offset: 16), args: (42)))))))
99103
; CHECK: ^24 = gv: (guid: 23, summaries: (function: (module: ^0, flags: (linkage: external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0, canAutoHide: 0, importType: declaration), insts: 5)))
100-
; CHECK: ^25 = typeid: (name: "_ZTS1C", summary: (typeTestRes: (kind: single, sizeM1BitWidth: 0))) ; guid = 1884921850105019584
101-
; CHECK: ^26 = typeid: (name: "_ZTS1B", summary: (typeTestRes: (kind: inline, sizeM1BitWidth: 0, alignLog2: 1, sizeM1: 2, bitMask: 3, inlineBits: 4))) ; guid = 6203814149063363976
102-
; CHECK: ^27 = typeid: (name: "_ZTS1A", summary: (typeTestRes: (kind: allOnes, sizeM1BitWidth: 7), wpdResolutions: ((offset: 0, wpdRes: (kind: branchFunnel)), (offset: 8, wpdRes: (kind: singleImpl, singleImplName: "_ZN1A1nEi")), (offset: 16, wpdRes: (kind: indir, resByArg: (args: (1, 2), byArg: (kind: indir, byte: 2, bit: 3), args: (3), byArg: (kind: uniformRetVal, info: 1), args: (4), byArg: (kind: uniqueRetVal, info: 1), args: (5), byArg: (kind: virtualConstProp))))))) ; guid = 7004155349499253778
103-
; CHECK: ^28 = typeid: (name: "_ZTS1D", summary: (typeTestRes: (kind: byteArray, sizeM1BitWidth: 0))) ; guid = 9614786172484273522
104-
; CHECK: ^29 = typeid: (name: "_ZTS1E", summary: (typeTestRes: (kind: unsat, sizeM1BitWidth: 0))) ; guid = 17437243864166745132
105-
; CHECK: ^30 = flags: 8
106-
; CHECK: ^31 = blockcount: 1888
104+
; CHECK: ^25 = gv: (guid: 9123456789101112131, summaries: (function: (module: ^0, flags: (linkage: internal, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 1, canAutoHide: 0, importType: definition), insts: 1)))
105+
; CHECK: ^26 = typeid: (name: "_ZTS1C", summary: (typeTestRes: (kind: single, sizeM1BitWidth: 0))) ; guid = 1884921850105019584
106+
; CHECK: ^27 = typeid: (name: "_ZTS1B", summary: (typeTestRes: (kind: inline, sizeM1BitWidth: 0, alignLog2: 1, sizeM1: 2, bitMask: 3, inlineBits: 4))) ; guid = 6203814149063363976
107+
; CHECK: ^28 = typeid: (name: "_ZTS1A", summary: (typeTestRes: (kind: allOnes, sizeM1BitWidth: 7), wpdResolutions: ((offset: 0, wpdRes: (kind: branchFunnel)), (offset: 8, wpdRes: (kind: singleImpl, singleImplName: "_ZN1A1nEi")), (offset: 16, wpdRes: (kind: indir, resByArg: (args: (1, 2), byArg: (kind: indir, byte: 2, bit: 3), args: (3), byArg: (kind: uniformRetVal, info: 1), args: (4), byArg: (kind: uniqueRetVal, info: 1), args: (5), byArg: (kind: virtualConstProp))))))) ; guid = 7004155349499253778
108+
; CHECK: ^29 = typeid: (name: "_ZTS1D", summary: (typeTestRes: (kind: byteArray, sizeM1BitWidth: 0))) ; guid = 9614786172484273522
109+
; CHECK: ^30 = typeid: (name: "_ZTS1E", summary: (typeTestRes: (kind: unsat, sizeM1BitWidth: 0))) ; guid = 17437243864166745132
110+
; CHECK: ^31 = flags: 8
111+
; CHECK: ^32 = blockcount: 1888
107112

108113
; Make sure parsing of a non-summary entry containing a ":" does not fail
109114
; after summary parsing, which handles colons differently.

0 commit comments

Comments
 (0)