@@ -2326,7 +2326,8 @@ InputFileInfo ASTReader::getInputFileInfo(ModuleFile &F, unsigned ID) {
2326
2326
// Go find this input file.
2327
2327
BitstreamCursor &Cursor = F.InputFilesCursor ;
2328
2328
SavedStreamPosition SavedPosition (Cursor);
2329
- if (llvm::Error Err = Cursor.JumpToBit (F.InputFileOffsets [ID - 1 ])) {
2329
+ if (llvm::Error Err = Cursor.JumpToBit (F.InputFilesOffsetBase +
2330
+ F.InputFileOffsets [ID - 1 ])) {
2330
2331
// FIXME this drops errors on the floor.
2331
2332
consumeError (std::move (Err));
2332
2333
}
@@ -2410,7 +2411,8 @@ InputFile ASTReader::getInputFile(ModuleFile &F, unsigned ID, bool Complain) {
2410
2411
// Go find this input file.
2411
2412
BitstreamCursor &Cursor = F.InputFilesCursor ;
2412
2413
SavedStreamPosition SavedPosition (Cursor);
2413
- if (llvm::Error Err = Cursor.JumpToBit (F.InputFileOffsets [ID - 1 ])) {
2414
+ if (llvm::Error Err = Cursor.JumpToBit (F.InputFilesOffsetBase +
2415
+ F.InputFileOffsets [ID - 1 ])) {
2414
2416
// FIXME this drops errors on the floor.
2415
2417
consumeError (std::move (Err));
2416
2418
}
@@ -2788,6 +2790,7 @@ ASTReader::ReadControlBlock(ModuleFile &F,
2788
2790
Error (" malformed block record in AST file" );
2789
2791
return Failure;
2790
2792
}
2793
+ F.InputFilesOffsetBase = F.InputFilesCursor .GetCurrentBitNo ();
2791
2794
continue ;
2792
2795
2793
2796
case OPTIONS_BLOCK_ID:
@@ -5328,6 +5331,7 @@ bool ASTReader::readASTFileControlBlock(
5328
5331
bool NeedsSystemInputFiles = Listener.needsSystemInputFileVisitation ();
5329
5332
bool NeedsImports = Listener.needsImportVisitation ();
5330
5333
BitstreamCursor InputFilesCursor;
5334
+ uint64_t InputFilesOffsetBase = 0 ;
5331
5335
5332
5336
RecordData Record;
5333
5337
std::string ModuleDir;
@@ -5363,6 +5367,7 @@ bool ASTReader::readASTFileControlBlock(
5363
5367
if (NeedsInputFiles &&
5364
5368
ReadBlockAbbrevs (InputFilesCursor, INPUT_FILES_BLOCK_ID))
5365
5369
return true ;
5370
+ InputFilesOffsetBase = InputFilesCursor.GetCurrentBitNo ();
5366
5371
break ;
5367
5372
5368
5373
default :
@@ -5435,7 +5440,8 @@ bool ASTReader::readASTFileControlBlock(
5435
5440
5436
5441
BitstreamCursor &Cursor = InputFilesCursor;
5437
5442
SavedStreamPosition SavedPosition (Cursor);
5438
- if (llvm::Error Err = Cursor.JumpToBit (InputFileOffs[I])) {
5443
+ if (llvm::Error Err =
5444
+ Cursor.JumpToBit (InputFilesOffsetBase + InputFileOffs[I])) {
5439
5445
// FIXME this drops errors on the floor.
5440
5446
consumeError (std::move (Err));
5441
5447
}
0 commit comments