From a182530633c46ef772bb346eca16b471b591c899 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Thu, 23 Oct 2014 22:18:29 +0000 Subject: [PATCH] [modules] Simplify reading of INPUT_FILE_OFFSETS record and make it robust against changes to record order. llvm-svn: 220524 --- clang/lib/Serialization/ASTReader.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index e392e5e..1fd39fa 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -2252,6 +2252,8 @@ ASTReader::ReadControlBlock(ModuleFile &F, // Read all of the records and blocks in the control block. RecordData Record; + unsigned NumInputs = 0; + unsigned NumUserInputs = 0; while (1) { llvm::BitstreamEntry Entry = Stream.advance(); @@ -2264,12 +2266,8 @@ ASTReader::ReadControlBlock(ModuleFile &F, const HeaderSearchOptions &HSOpts = PP.getHeaderSearchInfo().getHeaderSearchOpts(); - // All user input files reside at the index range [0, Record[1]), and - // system input files reside at [Record[1], Record[0]). - // Record is the one from INPUT_FILE_OFFSETS. - unsigned NumInputs = Record[0]; - unsigned NumUserInputs = Record[1]; - + // All user input files reside at the index range [0, NumUserInputs), and + // system input files reside at [NumUserInputs, NumInputs). if (!DisableValidation && (ValidateSystemInputs || !HSOpts.ModulesValidateOncePerBuildSession || F.InputFilesValidationTimestamp <= HSOpts.BuildSessionTimestamp)) { @@ -2485,8 +2483,10 @@ ASTReader::ReadControlBlock(ModuleFile &F, ReadModuleMapFileBlock(Record, F, ImportedBy, ClientLoadCapabilities)) return Result; case INPUT_FILE_OFFSETS: + NumInputs = Record[0]; + NumUserInputs = Record[1]; F.InputFileOffsets = (const uint32_t *)Blob.data(); - F.InputFilesLoaded.resize(Record[0]); + F.InputFilesLoaded.resize(NumInputs); break; } } -- 2.7.4