================ @@ -5834,13 +5847,27 @@ bool ASTReader::readASTFileControlBlock( break; case INPUT_FILE: bool Overridden = static_cast<bool>(Record[3]); - const size_t FilenameAsRequestedLength = Record[7] + 1; - auto ResolvedFilenameAsRequested = ResolveImportedPath( - PathBuf, Blob.substr(0, FilenameAsRequestedLength), ModuleDir); - StringRef ExternalFilename = Blob.substr(FilenameAsRequestedLength); + + auto [UnresolvedFilenameAsRequested, UnresolvedFilename] = + getUnresolvedInputFilenames(Record, Blob); + TemporarilyOwnedStringRef ResolvedFilenameAsRequested = + ResolveImportedPath(PathBuf, UnresolvedFilenameAsRequested, + ModuleDir); + const std::string ResolvedFilenameAsRequestedStr = + ResolvedFilenameAsRequested->str(); + + std::string ResolvedFilenameStr; + if (!UnresolvedFilename.empty()) { + SmallString<0> FilenameBuf; + FilenameBuf.reserve(256); + auto ResolvedFilename = + ResolveImportedPath(FilenameBuf, UnresolvedFilename, ModuleDir); + ResolvedFilenameStr = ResolvedFilename->str(); + } ---------------- cyndyishida wrote:
> The visitor API makes it sound like it'll pass Filename even if it's the same > as FilenameAsRequested (which is what I'd expect it to), but here we pass an > empty string. Why? I was thinking that clients would always prefer the external filename and it's only useful when it differs from the requested file name, so checking against an empty value would be easier for clients but I can see that's not a fair assumption. Will update to your suggestion. https://github.com/llvm/llvm-project/pull/132237 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits