[clang] 7b3d285 - [clang] Use the VFS to get the unique file ID (#160936)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 26 14:54:06 PDT 2025
Author: Jan Svoboda
Date: 2025-09-26T14:54:03-07:00
New Revision: 7b3d28573c1c3ae74fc829d659a6a99c02d961f9
URL: https://github.com/llvm/llvm-project/commit/7b3d28573c1c3ae74fc829d659a6a99c02d961f9
DIFF: https://github.com/llvm/llvm-project/commit/7b3d28573c1c3ae74fc829d659a6a99c02d961f9.diff
LOG: [clang] Use the VFS to get the unique file ID (#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.
Added:
Modified:
clang/lib/CodeGen/CodeGenModule.cpp
Removed:
################################################################################
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);
More information about the cfe-commits
mailing list