https://github.com/jansvoboda11 created 
https://github.com/llvm/llvm-project/pull/160936

This PR uses the VFS to get the unique file ID when printing externalized decls 
in CUDA instead of going straight to the real file system. This matches the 
behavior of other input files of the compiler.

>From e0d452e9cccb10cf1f1404ed6b835de31af8c9e9 Mon Sep 17 00:00:00 2001
From: Jan Svoboda <[email protected]>
Date: Fri, 26 Sep 2025 12:37:37 -0700
Subject: [PATCH] [clang] Use the VFS to get the unique file ID

---
 clang/lib/CodeGen/CodeGenModule.cpp | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/clang/lib/CodeGen/CodeGenModule.cpp 
b/clang/lib/CodeGen/CodeGenModule.cpp
index 875f06b53f53d..f6f7f22a09004 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -8172,12 +8172,17 @@ void 
CodeGenModule::printPostfixForExternalizedDecl(llvm::raw_ostream &OS,
 
     // Get the UniqueID for the file containing the decl.
     llvm::sys::fs::UniqueID ID;
-    if (llvm::sys::fs::getUniqueID(PLoc.getFilename(), ID)) {
+    auto Status = FS->status(PLoc.getFilename());
+    if (!Status) {
       PLoc = SM.getPresumedLoc(D->getLocation(), /*UseLineDirectives=*/false);
       assert(PLoc.isValid() && "Source location is expected to be valid.");
-      if (auto EC = llvm::sys::fs::getUniqueID(PLoc.getFilename(), ID))
-        SM.getDiagnostics().Report(diag::err_cannot_open_file)
-            << PLoc.getFilename() << EC.message();
+      Status = FS->status(PLoc.getFilename());
+    }
+    if (!Status) {
+      SM.getDiagnostics().Report(diag::err_cannot_open_file)
+          << PLoc.getFilename() << Status.getError().message();
+    } else {
+      ID = Status->getUniqueID();
     }
     OS << llvm::format("%x", ID.getFile()) << llvm::format("%x", 
ID.getDevice())
        << "_" << llvm::utohexstr(Result.low(), /*LowerCase=*/true, 
/*Width=*/8);

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to