forked from OSchip/llvm-project
[CodeView] More appropriate name and type for a Microsoft precompiled headers parameter. NFC
llvm-svn: 350520
This commit is contained in:
parent
76ab9d4589
commit
90f4b94da3
|
@ -154,7 +154,7 @@ public:
|
|||
// When using Microsoft precompiled headers, this is the PCH's key.
|
||||
// The same key is used by both the precompiled object, and objects using the
|
||||
// precompiled object. Any difference indicates out-of-date objects.
|
||||
llvm::Optional<llvm::codeview::EndPrecompRecord> EndPrecomp;
|
||||
llvm::Optional<uint32_t> PCHSignature;
|
||||
|
||||
private:
|
||||
void initializeChunks();
|
||||
|
|
|
@ -494,13 +494,13 @@ PDBLinker::mergeDebugT(ObjFile *File, CVIndexMap *ObjectIndexMap) {
|
|||
|
||||
if (auto Err = mergeTypeAndIdRecords(GlobalIDTable, GlobalTypeTable,
|
||||
ObjectIndexMap->TPIMap, Types, Hashes,
|
||||
File->EndPrecomp))
|
||||
File->PCHSignature))
|
||||
fatal("codeview::mergeTypeAndIdRecords failed: " +
|
||||
toString(std::move(Err)));
|
||||
} else {
|
||||
if (auto Err =
|
||||
mergeTypeAndIdRecords(IDTable, TypeTable, ObjectIndexMap->TPIMap,
|
||||
Types, File->EndPrecomp))
|
||||
Types, File->PCHSignature))
|
||||
fatal("codeview::mergeTypeAndIdRecords failed: " +
|
||||
toString(std::move(Err)));
|
||||
}
|
||||
|
@ -632,7 +632,7 @@ PDBLinker::maybeMergeTypeServerPDB(ObjFile *File, const CVType &FirstType) {
|
|||
auto IpiHashes =
|
||||
GloballyHashedType::hashIds(ExpectedIpi->typeArray(), TpiHashes);
|
||||
|
||||
Optional<EndPrecompRecord> EndPrecomp;
|
||||
Optional<uint32_t> EndPrecomp;
|
||||
// Merge TPI first, because the IPI stream will reference type indices.
|
||||
if (auto Err = mergeTypeRecords(GlobalTypeTable, IndexMap.TPIMap,
|
||||
ExpectedTpi->typeArray(), TpiHashes, EndPrecomp))
|
||||
|
@ -744,10 +744,10 @@ PDBLinker::aquirePrecompObj(ObjFile *File, PrecompRecord Precomp) {
|
|||
|
||||
addObjFile(PrecompFile, &IndexMap);
|
||||
|
||||
if (!PrecompFile->EndPrecomp)
|
||||
if (!PrecompFile->PCHSignature)
|
||||
fatal(PrecompFile->getName() + " is not a precompiled headers object");
|
||||
|
||||
if (Precomp.getSignature() != PrecompFile->EndPrecomp->getSignature())
|
||||
if (Precomp.getSignature() != PrecompFile->PCHSignature.getValueOr(0))
|
||||
return createFileError(
|
||||
Precomp.getPrecompFilePath().str(),
|
||||
make_error<pdb::PDBError>(pdb::pdb_error_code::signature_out_of_date));
|
||||
|
|
|
@ -84,20 +84,20 @@ Error mergeTypeAndIdRecords(MergingTypeTableBuilder &DestIds,
|
|||
MergingTypeTableBuilder &DestTypes,
|
||||
SmallVectorImpl<TypeIndex> &SourceToDest,
|
||||
const CVTypeArray &IdsAndTypes,
|
||||
Optional<EndPrecompRecord> &EndPrecomp);
|
||||
Optional<uint32_t> &PCHSignature);
|
||||
|
||||
Error mergeTypeAndIdRecords(GlobalTypeTableBuilder &DestIds,
|
||||
GlobalTypeTableBuilder &DestTypes,
|
||||
SmallVectorImpl<TypeIndex> &SourceToDest,
|
||||
const CVTypeArray &IdsAndTypes,
|
||||
ArrayRef<GloballyHashedType> Hashes,
|
||||
Optional<EndPrecompRecord> &EndPrecomp);
|
||||
Optional<uint32_t> &PCHSignature);
|
||||
|
||||
Error mergeTypeRecords(GlobalTypeTableBuilder &Dest,
|
||||
SmallVectorImpl<TypeIndex> &SourceToDest,
|
||||
const CVTypeArray &Types,
|
||||
ArrayRef<GloballyHashedType> Hashes,
|
||||
Optional<EndPrecompRecord> &EndPrecomp);
|
||||
Optional<uint32_t> &PCHSignature);
|
||||
|
||||
Error mergeIdRecords(GlobalTypeTableBuilder &Dest, ArrayRef<TypeIndex> Types,
|
||||
SmallVectorImpl<TypeIndex> &SourceToDest,
|
||||
|
|
|
@ -77,8 +77,7 @@ public:
|
|||
// Local hashing entry points
|
||||
Error mergeTypesAndIds(MergingTypeTableBuilder &DestIds,
|
||||
MergingTypeTableBuilder &DestTypes,
|
||||
const CVTypeArray &IdsAndTypes,
|
||||
Optional<EndPrecompRecord> &EP);
|
||||
const CVTypeArray &IdsAndTypes, Optional<uint32_t> &S);
|
||||
Error mergeIdRecords(MergingTypeTableBuilder &Dest,
|
||||
ArrayRef<TypeIndex> TypeSourceToDest,
|
||||
const CVTypeArray &Ids);
|
||||
|
@ -90,14 +89,14 @@ public:
|
|||
GlobalTypeTableBuilder &DestTypes,
|
||||
const CVTypeArray &IdsAndTypes,
|
||||
ArrayRef<GloballyHashedType> Hashes,
|
||||
Optional<EndPrecompRecord> &EP);
|
||||
Optional<uint32_t> &S);
|
||||
Error mergeIdRecords(GlobalTypeTableBuilder &Dest,
|
||||
ArrayRef<TypeIndex> TypeSourceToDest,
|
||||
const CVTypeArray &Ids,
|
||||
ArrayRef<GloballyHashedType> Hashes);
|
||||
Error mergeTypeRecords(GlobalTypeTableBuilder &Dest, const CVTypeArray &Types,
|
||||
ArrayRef<GloballyHashedType> Hashes,
|
||||
Optional<EndPrecompRecord> &EP);
|
||||
Optional<uint32_t> &S);
|
||||
|
||||
private:
|
||||
Error doit(const CVTypeArray &Types);
|
||||
|
@ -197,7 +196,7 @@ private:
|
|||
/// its type indices.
|
||||
SmallVector<uint8_t, 256> RemapStorage;
|
||||
|
||||
Optional<EndPrecompRecord> EndPrecomp;
|
||||
Optional<uint32_t> PCHSignature;
|
||||
};
|
||||
|
||||
} // end anonymous namespace
|
||||
|
@ -275,12 +274,12 @@ Error TypeStreamMerger::mergeIdRecords(MergingTypeTableBuilder &Dest,
|
|||
Error TypeStreamMerger::mergeTypesAndIds(MergingTypeTableBuilder &DestIds,
|
||||
MergingTypeTableBuilder &DestTypes,
|
||||
const CVTypeArray &IdsAndTypes,
|
||||
Optional<EndPrecompRecord> &EP) {
|
||||
Optional<uint32_t> &S) {
|
||||
DestIdStream = &DestIds;
|
||||
DestTypeStream = &DestTypes;
|
||||
UseGlobalHashes = false;
|
||||
auto Err = doit(IdsAndTypes);
|
||||
EP = EndPrecomp;
|
||||
S = PCHSignature;
|
||||
return Err;
|
||||
}
|
||||
|
||||
|
@ -288,12 +287,12 @@ Error TypeStreamMerger::mergeTypesAndIds(MergingTypeTableBuilder &DestIds,
|
|||
Error TypeStreamMerger::mergeTypeRecords(GlobalTypeTableBuilder &Dest,
|
||||
const CVTypeArray &Types,
|
||||
ArrayRef<GloballyHashedType> Hashes,
|
||||
Optional<EndPrecompRecord> &EP) {
|
||||
Optional<uint32_t> &S) {
|
||||
DestGlobalTypeStream = &Dest;
|
||||
UseGlobalHashes = true;
|
||||
GlobalHashes = Hashes;
|
||||
auto Err = doit(Types);
|
||||
EP = EndPrecomp;
|
||||
S = PCHSignature;
|
||||
return Err;
|
||||
}
|
||||
|
||||
|
@ -313,13 +312,13 @@ Error TypeStreamMerger::mergeTypesAndIds(GlobalTypeTableBuilder &DestIds,
|
|||
GlobalTypeTableBuilder &DestTypes,
|
||||
const CVTypeArray &IdsAndTypes,
|
||||
ArrayRef<GloballyHashedType> Hashes,
|
||||
Optional<EndPrecompRecord> &EP) {
|
||||
Optional<uint32_t> &S) {
|
||||
DestGlobalIdStream = &DestIds;
|
||||
DestGlobalTypeStream = &DestTypes;
|
||||
UseGlobalHashes = true;
|
||||
GlobalHashes = Hashes;
|
||||
auto Err = doit(IdsAndTypes);
|
||||
EP = EndPrecomp;
|
||||
S = PCHSignature;
|
||||
return Err;
|
||||
}
|
||||
|
||||
|
@ -445,28 +444,27 @@ Error llvm::codeview::mergeIdRecords(MergingTypeTableBuilder &Dest,
|
|||
Error llvm::codeview::mergeTypeAndIdRecords(
|
||||
MergingTypeTableBuilder &DestIds, MergingTypeTableBuilder &DestTypes,
|
||||
SmallVectorImpl<TypeIndex> &SourceToDest, const CVTypeArray &IdsAndTypes,
|
||||
Optional<EndPrecompRecord> &EndPrecomp) {
|
||||
Optional<uint32_t> &PCHSignature) {
|
||||
TypeStreamMerger M(SourceToDest);
|
||||
return M.mergeTypesAndIds(DestIds, DestTypes, IdsAndTypes, EndPrecomp);
|
||||
return M.mergeTypesAndIds(DestIds, DestTypes, IdsAndTypes, PCHSignature);
|
||||
}
|
||||
|
||||
Error llvm::codeview::mergeTypeAndIdRecords(
|
||||
GlobalTypeTableBuilder &DestIds, GlobalTypeTableBuilder &DestTypes,
|
||||
SmallVectorImpl<TypeIndex> &SourceToDest, const CVTypeArray &IdsAndTypes,
|
||||
ArrayRef<GloballyHashedType> Hashes,
|
||||
Optional<EndPrecompRecord> &EndPrecomp) {
|
||||
ArrayRef<GloballyHashedType> Hashes, Optional<uint32_t> &PCHSignature) {
|
||||
TypeStreamMerger M(SourceToDest);
|
||||
return M.mergeTypesAndIds(DestIds, DestTypes, IdsAndTypes, Hashes,
|
||||
EndPrecomp);
|
||||
PCHSignature);
|
||||
}
|
||||
|
||||
Error llvm::codeview::mergeTypeRecords(GlobalTypeTableBuilder &Dest,
|
||||
SmallVectorImpl<TypeIndex> &SourceToDest,
|
||||
const CVTypeArray &Types,
|
||||
ArrayRef<GloballyHashedType> Hashes,
|
||||
Optional<EndPrecompRecord> &EndPrecomp) {
|
||||
Optional<uint32_t> &PCHSignature) {
|
||||
TypeStreamMerger M(SourceToDest);
|
||||
return M.mergeTypeRecords(Dest, Types, Hashes, EndPrecomp);
|
||||
return M.mergeTypeRecords(Dest, Types, Hashes, PCHSignature);
|
||||
}
|
||||
|
||||
Error llvm::codeview::mergeIdRecords(GlobalTypeTableBuilder &Dest,
|
||||
|
@ -483,11 +481,13 @@ Expected<bool> TypeStreamMerger::shouldRemapType(const CVType &Type) {
|
|||
// signature, through EndPrecompRecord. This is done here for performance
|
||||
// reasons, to avoid re-parsing the Types stream.
|
||||
if (Type.kind() == LF_ENDPRECOMP) {
|
||||
assert(!EndPrecomp);
|
||||
EndPrecomp.emplace();
|
||||
EndPrecompRecord EP;
|
||||
if (auto EC = TypeDeserializer::deserializeAs(const_cast<CVType &>(Type),
|
||||
EndPrecomp.getValue()))
|
||||
EP))
|
||||
return joinErrors(std::move(EC), errorCorruptRecord());
|
||||
if (PCHSignature.hasValue())
|
||||
return errorCorruptRecord();
|
||||
PCHSignature.emplace(EP.getSignature());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -1248,9 +1248,9 @@ void COFFDumper::mergeCodeViewTypes(MergingTypeTableBuilder &CVIDs,
|
|||
error(object_error::parse_failed);
|
||||
}
|
||||
SmallVector<TypeIndex, 128> SourceToDest;
|
||||
Optional<EndPrecompRecord> EndPrecomp;
|
||||
Optional<uint32_t> PCHSignature;
|
||||
if (auto EC = mergeTypeAndIdRecords(CVIDs, CVTypes, SourceToDest, Types,
|
||||
EndPrecomp))
|
||||
PCHSignature))
|
||||
return error(std::move(EC));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue