Skip to content

Commit 90f4b94

Browse files
committed
[CodeView] More appropriate name and type for a Microsoft precompiled headers parameter. NFC
llvm-svn: 350520
1 parent 76ab9d4 commit 90f4b94

File tree

5 files changed

+32
-32
lines changed

5 files changed

+32
-32
lines changed

lld/COFF/InputFiles.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ class ObjFile : public InputFile {
154154
// When using Microsoft precompiled headers, this is the PCH's key.
155155
// The same key is used by both the precompiled object, and objects using the
156156
// precompiled object. Any difference indicates out-of-date objects.
157-
llvm::Optional<llvm::codeview::EndPrecompRecord> EndPrecomp;
157+
llvm::Optional<uint32_t> PCHSignature;
158158

159159
private:
160160
void initializeChunks();

lld/COFF/PDB.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -494,13 +494,13 @@ PDBLinker::mergeDebugT(ObjFile *File, CVIndexMap *ObjectIndexMap) {
494494

495495
if (auto Err = mergeTypeAndIdRecords(GlobalIDTable, GlobalTypeTable,
496496
ObjectIndexMap->TPIMap, Types, Hashes,
497-
File->EndPrecomp))
497+
File->PCHSignature))
498498
fatal("codeview::mergeTypeAndIdRecords failed: " +
499499
toString(std::move(Err)));
500500
} else {
501501
if (auto Err =
502502
mergeTypeAndIdRecords(IDTable, TypeTable, ObjectIndexMap->TPIMap,
503-
Types, File->EndPrecomp))
503+
Types, File->PCHSignature))
504504
fatal("codeview::mergeTypeAndIdRecords failed: " +
505505
toString(std::move(Err)));
506506
}
@@ -632,7 +632,7 @@ PDBLinker::maybeMergeTypeServerPDB(ObjFile *File, const CVType &FirstType) {
632632
auto IpiHashes =
633633
GloballyHashedType::hashIds(ExpectedIpi->typeArray(), TpiHashes);
634634

635-
Optional<EndPrecompRecord> EndPrecomp;
635+
Optional<uint32_t> EndPrecomp;
636636
// Merge TPI first, because the IPI stream will reference type indices.
637637
if (auto Err = mergeTypeRecords(GlobalTypeTable, IndexMap.TPIMap,
638638
ExpectedTpi->typeArray(), TpiHashes, EndPrecomp))
@@ -744,10 +744,10 @@ PDBLinker::aquirePrecompObj(ObjFile *File, PrecompRecord Precomp) {
744744

745745
addObjFile(PrecompFile, &IndexMap);
746746

747-
if (!PrecompFile->EndPrecomp)
747+
if (!PrecompFile->PCHSignature)
748748
fatal(PrecompFile->getName() + " is not a precompiled headers object");
749749

750-
if (Precomp.getSignature() != PrecompFile->EndPrecomp->getSignature())
750+
if (Precomp.getSignature() != PrecompFile->PCHSignature.getValueOr(0))
751751
return createFileError(
752752
Precomp.getPrecompFilePath().str(),
753753
make_error<pdb::PDBError>(pdb::pdb_error_code::signature_out_of_date));

llvm/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,20 +84,20 @@ Error mergeTypeAndIdRecords(MergingTypeTableBuilder &DestIds,
8484
MergingTypeTableBuilder &DestTypes,
8585
SmallVectorImpl<TypeIndex> &SourceToDest,
8686
const CVTypeArray &IdsAndTypes,
87-
Optional<EndPrecompRecord> &EndPrecomp);
87+
Optional<uint32_t> &PCHSignature);
8888

8989
Error mergeTypeAndIdRecords(GlobalTypeTableBuilder &DestIds,
9090
GlobalTypeTableBuilder &DestTypes,
9191
SmallVectorImpl<TypeIndex> &SourceToDest,
9292
const CVTypeArray &IdsAndTypes,
9393
ArrayRef<GloballyHashedType> Hashes,
94-
Optional<EndPrecompRecord> &EndPrecomp);
94+
Optional<uint32_t> &PCHSignature);
9595

9696
Error mergeTypeRecords(GlobalTypeTableBuilder &Dest,
9797
SmallVectorImpl<TypeIndex> &SourceToDest,
9898
const CVTypeArray &Types,
9999
ArrayRef<GloballyHashedType> Hashes,
100-
Optional<EndPrecompRecord> &EndPrecomp);
100+
Optional<uint32_t> &PCHSignature);
101101

102102
Error mergeIdRecords(GlobalTypeTableBuilder &Dest, ArrayRef<TypeIndex> Types,
103103
SmallVectorImpl<TypeIndex> &SourceToDest,

llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ class TypeStreamMerger {
7777
// Local hashing entry points
7878
Error mergeTypesAndIds(MergingTypeTableBuilder &DestIds,
7979
MergingTypeTableBuilder &DestTypes,
80-
const CVTypeArray &IdsAndTypes,
81-
Optional<EndPrecompRecord> &EP);
80+
const CVTypeArray &IdsAndTypes, Optional<uint32_t> &S);
8281
Error mergeIdRecords(MergingTypeTableBuilder &Dest,
8382
ArrayRef<TypeIndex> TypeSourceToDest,
8483
const CVTypeArray &Ids);
@@ -90,14 +89,14 @@ class TypeStreamMerger {
9089
GlobalTypeTableBuilder &DestTypes,
9190
const CVTypeArray &IdsAndTypes,
9291
ArrayRef<GloballyHashedType> Hashes,
93-
Optional<EndPrecompRecord> &EP);
92+
Optional<uint32_t> &S);
9493
Error mergeIdRecords(GlobalTypeTableBuilder &Dest,
9594
ArrayRef<TypeIndex> TypeSourceToDest,
9695
const CVTypeArray &Ids,
9796
ArrayRef<GloballyHashedType> Hashes);
9897
Error mergeTypeRecords(GlobalTypeTableBuilder &Dest, const CVTypeArray &Types,
9998
ArrayRef<GloballyHashedType> Hashes,
100-
Optional<EndPrecompRecord> &EP);
99+
Optional<uint32_t> &S);
101100

102101
private:
103102
Error doit(const CVTypeArray &Types);
@@ -197,7 +196,7 @@ class TypeStreamMerger {
197196
/// its type indices.
198197
SmallVector<uint8_t, 256> RemapStorage;
199198

200-
Optional<EndPrecompRecord> EndPrecomp;
199+
Optional<uint32_t> PCHSignature;
201200
};
202201

203202
} // end anonymous namespace
@@ -275,25 +274,25 @@ Error TypeStreamMerger::mergeIdRecords(MergingTypeTableBuilder &Dest,
275274
Error TypeStreamMerger::mergeTypesAndIds(MergingTypeTableBuilder &DestIds,
276275
MergingTypeTableBuilder &DestTypes,
277276
const CVTypeArray &IdsAndTypes,
278-
Optional<EndPrecompRecord> &EP) {
277+
Optional<uint32_t> &S) {
279278
DestIdStream = &DestIds;
280279
DestTypeStream = &DestTypes;
281280
UseGlobalHashes = false;
282281
auto Err = doit(IdsAndTypes);
283-
EP = EndPrecomp;
282+
S = PCHSignature;
284283
return Err;
285284
}
286285

287286
// Global hashing entry points
288287
Error TypeStreamMerger::mergeTypeRecords(GlobalTypeTableBuilder &Dest,
289288
const CVTypeArray &Types,
290289
ArrayRef<GloballyHashedType> Hashes,
291-
Optional<EndPrecompRecord> &EP) {
290+
Optional<uint32_t> &S) {
292291
DestGlobalTypeStream = &Dest;
293292
UseGlobalHashes = true;
294293
GlobalHashes = Hashes;
295294
auto Err = doit(Types);
296-
EP = EndPrecomp;
295+
S = PCHSignature;
297296
return Err;
298297
}
299298

@@ -313,13 +312,13 @@ Error TypeStreamMerger::mergeTypesAndIds(GlobalTypeTableBuilder &DestIds,
313312
GlobalTypeTableBuilder &DestTypes,
314313
const CVTypeArray &IdsAndTypes,
315314
ArrayRef<GloballyHashedType> Hashes,
316-
Optional<EndPrecompRecord> &EP) {
315+
Optional<uint32_t> &S) {
317316
DestGlobalIdStream = &DestIds;
318317
DestGlobalTypeStream = &DestTypes;
319318
UseGlobalHashes = true;
320319
GlobalHashes = Hashes;
321320
auto Err = doit(IdsAndTypes);
322-
EP = EndPrecomp;
321+
S = PCHSignature;
323322
return Err;
324323
}
325324

@@ -445,28 +444,27 @@ Error llvm::codeview::mergeIdRecords(MergingTypeTableBuilder &Dest,
445444
Error llvm::codeview::mergeTypeAndIdRecords(
446445
MergingTypeTableBuilder &DestIds, MergingTypeTableBuilder &DestTypes,
447446
SmallVectorImpl<TypeIndex> &SourceToDest, const CVTypeArray &IdsAndTypes,
448-
Optional<EndPrecompRecord> &EndPrecomp) {
447+
Optional<uint32_t> &PCHSignature) {
449448
TypeStreamMerger M(SourceToDest);
450-
return M.mergeTypesAndIds(DestIds, DestTypes, IdsAndTypes, EndPrecomp);
449+
return M.mergeTypesAndIds(DestIds, DestTypes, IdsAndTypes, PCHSignature);
451450
}
452451

453452
Error llvm::codeview::mergeTypeAndIdRecords(
454453
GlobalTypeTableBuilder &DestIds, GlobalTypeTableBuilder &DestTypes,
455454
SmallVectorImpl<TypeIndex> &SourceToDest, const CVTypeArray &IdsAndTypes,
456-
ArrayRef<GloballyHashedType> Hashes,
457-
Optional<EndPrecompRecord> &EndPrecomp) {
455+
ArrayRef<GloballyHashedType> Hashes, Optional<uint32_t> &PCHSignature) {
458456
TypeStreamMerger M(SourceToDest);
459457
return M.mergeTypesAndIds(DestIds, DestTypes, IdsAndTypes, Hashes,
460-
EndPrecomp);
458+
PCHSignature);
461459
}
462460

463461
Error llvm::codeview::mergeTypeRecords(GlobalTypeTableBuilder &Dest,
464462
SmallVectorImpl<TypeIndex> &SourceToDest,
465463
const CVTypeArray &Types,
466464
ArrayRef<GloballyHashedType> Hashes,
467-
Optional<EndPrecompRecord> &EndPrecomp) {
465+
Optional<uint32_t> &PCHSignature) {
468466
TypeStreamMerger M(SourceToDest);
469-
return M.mergeTypeRecords(Dest, Types, Hashes, EndPrecomp);
467+
return M.mergeTypeRecords(Dest, Types, Hashes, PCHSignature);
470468
}
471469

472470
Error llvm::codeview::mergeIdRecords(GlobalTypeTableBuilder &Dest,
@@ -483,11 +481,13 @@ Expected<bool> TypeStreamMerger::shouldRemapType(const CVType &Type) {
483481
// signature, through EndPrecompRecord. This is done here for performance
484482
// reasons, to avoid re-parsing the Types stream.
485483
if (Type.kind() == LF_ENDPRECOMP) {
486-
assert(!EndPrecomp);
487-
EndPrecomp.emplace();
484+
EndPrecompRecord EP;
488485
if (auto EC = TypeDeserializer::deserializeAs(const_cast<CVType &>(Type),
489-
EndPrecomp.getValue()))
486+
EP))
490487
return joinErrors(std::move(EC), errorCorruptRecord());
488+
if (PCHSignature.hasValue())
489+
return errorCorruptRecord();
490+
PCHSignature.emplace(EP.getSignature());
491491
return false;
492492
}
493493
return true;

llvm/tools/llvm-readobj/COFFDumper.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1248,9 +1248,9 @@ void COFFDumper::mergeCodeViewTypes(MergingTypeTableBuilder &CVIDs,
12481248
error(object_error::parse_failed);
12491249
}
12501250
SmallVector<TypeIndex, 128> SourceToDest;
1251-
Optional<EndPrecompRecord> EndPrecomp;
1251+
Optional<uint32_t> PCHSignature;
12521252
if (auto EC = mergeTypeAndIdRecords(CVIDs, CVTypes, SourceToDest, Types,
1253-
EndPrecomp))
1253+
PCHSignature))
12541254
return error(std::move(EC));
12551255
}
12561256
}

0 commit comments

Comments
 (0)