@@ -2278,7 +2278,8 @@ InputFileInfo ASTReader::getInputFileInfo(ModuleFile &F, unsigned ID) {
2278
2278
// Go find this input file.
2279
2279
BitstreamCursor &Cursor = F.InputFilesCursor ;
2280
2280
SavedStreamPosition SavedPosition (Cursor);
2281
- if (llvm::Error Err = Cursor.JumpToBit (F.InputFileOffsets [ID - 1 ])) {
2281
+ if (llvm::Error Err = Cursor.JumpToBit (F.InputFilesOffsetBase +
2282
+ F.InputFileOffsets [ID - 1 ])) {
2282
2283
// FIXME this drops errors on the floor.
2283
2284
consumeError (std::move (Err));
2284
2285
}
@@ -2362,7 +2363,8 @@ InputFile ASTReader::getInputFile(ModuleFile &F, unsigned ID, bool Complain) {
2362
2363
// Go find this input file.
2363
2364
BitstreamCursor &Cursor = F.InputFilesCursor ;
2364
2365
SavedStreamPosition SavedPosition (Cursor);
2365
- if (llvm::Error Err = Cursor.JumpToBit (F.InputFileOffsets [ID - 1 ])) {
2366
+ if (llvm::Error Err = Cursor.JumpToBit (F.InputFilesOffsetBase +
2367
+ F.InputFileOffsets [ID - 1 ])) {
2366
2368
// FIXME this drops errors on the floor.
2367
2369
consumeError (std::move (Err));
2368
2370
}
@@ -2732,6 +2734,7 @@ ASTReader::ReadControlBlock(ModuleFile &F,
2732
2734
Error (" malformed block record in AST file" );
2733
2735
return Failure;
2734
2736
}
2737
+ F.InputFilesOffsetBase = F.InputFilesCursor .GetCurrentBitNo ();
2735
2738
continue ;
2736
2739
2737
2740
case OPTIONS_BLOCK_ID:
@@ -5287,6 +5290,7 @@ bool ASTReader::readASTFileControlBlock(
5287
5290
bool NeedsSystemInputFiles = Listener.needsSystemInputFileVisitation ();
5288
5291
bool NeedsImports = Listener.needsImportVisitation ();
5289
5292
BitstreamCursor InputFilesCursor;
5293
+ uint64_t InputFilesOffsetBase = 0 ;
5290
5294
5291
5295
RecordData Record;
5292
5296
std::string ModuleDir;
@@ -5322,6 +5326,7 @@ bool ASTReader::readASTFileControlBlock(
5322
5326
if (NeedsInputFiles &&
5323
5327
ReadBlockAbbrevs (InputFilesCursor, INPUT_FILES_BLOCK_ID))
5324
5328
return true ;
5329
+ InputFilesOffsetBase = InputFilesCursor.GetCurrentBitNo ();
5325
5330
break ;
5326
5331
5327
5332
default :
@@ -5394,7 +5399,8 @@ bool ASTReader::readASTFileControlBlock(
5394
5399
5395
5400
BitstreamCursor &Cursor = InputFilesCursor;
5396
5401
SavedStreamPosition SavedPosition (Cursor);
5397
- if (llvm::Error Err = Cursor.JumpToBit (InputFileOffs[I])) {
5402
+ if (llvm::Error Err =
5403
+ Cursor.JumpToBit (InputFilesOffsetBase + InputFileOffs[I])) {
5398
5404
// FIXME this drops errors on the floor.
5399
5405
consumeError (std::move (Err));
5400
5406
}
0 commit comments