@@ -2063,7 +2063,7 @@ void ASTWriter::WriteSourceManagerBlock(SourceManager &SourceMgr,
2063
2063
Record.push_back (Code);
2064
2064
2065
2065
// Starting offset of this entry within this module, so skip the dummy.
2066
- Record.push_back (SLoc->getOffset () - 2 );
2066
+ Record.push_back (getAdjustedOffset ( SLoc->getOffset () ) - 2 );
2067
2067
if (SLoc->isFile ()) {
2068
2068
const SrcMgr::FileInfo &File = SLoc->getFile ();
2069
2069
const SrcMgr::ContentCache *Content = &File.getContentCache ();
@@ -2086,7 +2086,7 @@ void ASTWriter::WriteSourceManagerBlock(SourceManager &SourceMgr,
2086
2086
assert (InputFileIDs[Content->OrigEntry ] != 0 && " Missed file entry" );
2087
2087
Record.push_back (InputFileIDs[Content->OrigEntry ]);
2088
2088
2089
- Record.push_back (File. NumCreatedFIDs );
2089
+ Record.push_back (getAdjustedNumCreatedFIDs (FID) );
2090
2090
2091
2091
FileDeclIDsTy::iterator FDI = FileDeclIDs.find (FID);
2092
2092
if (FDI != FileDeclIDs.end ()) {
@@ -2146,7 +2146,7 @@ void ASTWriter::WriteSourceManagerBlock(SourceManager &SourceMgr,
2146
2146
SourceLocation::UIntTy NextOffset = SourceMgr.getNextLocalOffset ();
2147
2147
if (I + 1 != N)
2148
2148
NextOffset = SourceMgr.getLocalSLocEntry (I + 1 ).getOffset ();
2149
- Record.push_back (NextOffset - SLoc->getOffset () - 1 );
2149
+ Record.push_back (getAdjustedOffset ( NextOffset - SLoc->getOffset () ) - 1 );
2150
2150
Stream.EmitRecordWithAbbrev (SLocExpansionAbbrv, Record);
2151
2151
}
2152
2152
}
@@ -2170,7 +2170,7 @@ void ASTWriter::WriteSourceManagerBlock(SourceManager &SourceMgr,
2170
2170
{
2171
2171
RecordData::value_type Record[] = {
2172
2172
SOURCE_LOCATION_OFFSETS, SLocEntryOffsets.size (),
2173
- SourceMgr.getNextLocalOffset () - 1 /* skip dummy */ ,
2173
+ getAdjustedOffset ( SourceMgr.getNextLocalOffset () ) - 1 /* skip dummy */ ,
2174
2174
SLocEntryOffsetsBase - SourceManagerBlockOffset};
2175
2175
Stream.EmitRecordWithBlob (SLocOffsetsAbbrev, Record,
2176
2176
bytes (SLocEntryOffsets));
@@ -2569,7 +2569,7 @@ void ASTWriter::WritePreprocessorDetail(PreprocessingRecord &PPRec,
2569
2569
uint64_t Offset = Stream.GetCurrentBitNo () - MacroOffsetsBase;
2570
2570
assert ((Offset >> 32 ) == 0 && " Preprocessed entity offset too large" );
2571
2571
PreprocessedEntityOffsets.push_back (
2572
- PPEntityOffset (( *E)->getSourceRange (), Offset));
2572
+ PPEntityOffset (getAdjustedRange (( *E)->getSourceRange () ), Offset));
2573
2573
2574
2574
if (auto *MD = dyn_cast<MacroDefinitionRecord>(*E)) {
2575
2575
// Record this macro definition's ID.
@@ -3014,7 +3014,7 @@ void ASTWriter::WritePragmaDiagnosticMappings(const DiagnosticsEngine &Diag,
3014
3014
3015
3015
Record.push_back (FileIDAndFile.second .StateTransitions .size ());
3016
3016
for (auto &StatePoint : FileIDAndFile.second .StateTransitions ) {
3017
- Record.push_back (StatePoint.Offset );
3017
+ Record.push_back (getAdjustedOffset ( StatePoint.Offset ) );
3018
3018
AddDiagState (StatePoint.State , false );
3019
3019
}
3020
3020
}
@@ -5225,12 +5225,42 @@ void ASTWriter::AddAlignPackInfo(const Sema::AlignPackInfo &Info,
5225
5225
Record.push_back (Raw);
5226
5226
}
5227
5227
5228
+ FileID ASTWriter::getAdjustedFileID (FileID FID) const {
5229
+ // TODO: Actually adjust this.
5230
+ return FID;
5231
+ }
5232
+
5233
+ unsigned ASTWriter::getAdjustedNumCreatedFIDs (FileID FID) const {
5234
+ // TODO: Actually adjust this.
5235
+ return PP->getSourceManager ()
5236
+ .getLocalSLocEntry (FID.ID )
5237
+ .getFile ()
5238
+ .NumCreatedFIDs ;
5239
+ }
5240
+
5241
+ SourceLocation ASTWriter::getAdjustedLocation (SourceLocation Loc) const {
5242
+ // TODO: Actually adjust this.
5243
+ return Loc;
5244
+ }
5245
+
5246
+ SourceRange ASTWriter::getAdjustedRange (SourceRange Range) const {
5247
+ // TODO: Actually adjust this.
5248
+ return Range;
5249
+ }
5250
+
5251
+ SourceLocation::UIntTy
5252
+ ASTWriter::getAdjustedOffset (SourceLocation::UIntTy Offset) const {
5253
+ // TODO: Actually adjust this.
5254
+ return Offset;
5255
+ }
5256
+
5228
5257
void ASTWriter::AddFileID (FileID FID, RecordDataImpl &Record) {
5229
- Record.push_back (FID.getOpaqueValue ());
5258
+ Record.push_back (getAdjustedFileID ( FID) .getOpaqueValue ());
5230
5259
}
5231
5260
5232
5261
void ASTWriter::AddSourceLocation (SourceLocation Loc, RecordDataImpl &Record,
5233
5262
SourceLocationSequence *Seq) {
5263
+ Loc = getAdjustedLocation (Loc);
5234
5264
Record.push_back (SourceLocationEncoding::encode (Loc, Seq));
5235
5265
}
5236
5266
0 commit comments