[clang] [clang][DependencyScanning] Track dependencies from prebuilt modules to determine IsInStableDir (PR #132237)

Cyndy Ishida via cfe-commits cfe-commits at lists.llvm.org
Mon Apr 7 13:43:46 PDT 2025


================
@@ -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


More information about the cfe-commits mailing list