eaeltsin added a comment. Looks like our tests fail because ReadFileID doesn't translate file ID as ReadSourceLocation/TranslateSourceLocation do. Please see the prototype fix inline.
================ Comment at: clang/lib/Serialization/ASTReader.cpp:6343 "Invalid data, missing pragma diagnostic states"); - SourceLocation Loc = ReadSourceLocation(F, Record[Idx++]); - auto IDAndOffset = SourceMgr.getDecomposedLoc(Loc); - assert(IDAndOffset.first.isValid() && "invalid FileID for transition"); - assert(IDAndOffset.second == 0 && "not a start location for a FileID"); + FileID FID = ReadFileID(F, Record, Idx); + assert(FID.isValid() && "invalid FileID for transition"); ---------------- This doesn't work as before, likely because ReadFileID doesn't do TranslateSourceLocation. Our tests fail. I tried calling TranslateSourceLocation here and the tests passed: ``` SourceLocation Loc = Diag.SourceMgr->getComposedLoc(FID, 0); SourceLocation Loc2 = TranslateSourceLocation(F, Loc); auto IDAndOffset = SourceMgr.getDecomposedLoc(Loc2); // Note that we don't need to set up Parent/ParentOffset here, because // we won't be changing the diagnostic state within imported FileIDs // (other than perhaps appending to the main source file, which has no // parent). auto &F = Diag.DiagStatesByLoc.Files[IDAndOffset.first]; ``` Sorry I don't know the codebase, so this fix is definitely ugly :) But it shows the problem. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D137213/new/ https://reviews.llvm.org/D137213 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits