Skip to content

Commit b1933e9

Browse files
jansvoboda11mahesh-attarde
authored andcommitted
[clang] Use the VFS to create the OpenMP region entry ID (llvm#160918)
This PR uses the VFS to create the OpenMP target entry instead of going straight to the real file system. This matches the behavior of other input files of the compiler.
1 parent 1c16710 commit b1933e9

File tree

4 files changed

+21
-14
lines changed

4 files changed

+21
-14
lines changed

clang/lib/CodeGen/CGOpenMPRuntime.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1550,7 +1550,8 @@ static llvm::TargetRegionEntryInfo getEntryInfoFromPresumedLoc(
15501550
return std::pair<std::string, uint64_t>(PLoc.getFilename(), PLoc.getLine());
15511551
};
15521552

1553-
return OMPBuilder.getTargetEntryUniqueInfo(FileInfoCallBack, ParentName);
1553+
return OMPBuilder.getTargetEntryUniqueInfo(FileInfoCallBack,
1554+
*CGM.getFileSystem(), ParentName);
15541555
}
15551556

15561557
ConstantAddress CGOpenMPRuntime::getAddrOfDeclareTargetVar(const VarDecl *VD) {

llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1406,7 +1406,7 @@ class OpenMPIRBuilder {
14061406
/// any.
14071407
LLVM_ABI static TargetRegionEntryInfo
14081408
getTargetEntryUniqueInfo(FileIdentifierInfoCallbackTy CallBack,
1409-
StringRef ParentName = "");
1409+
vfs::FileSystem &VFS, StringRef ParentName = "");
14101410

14111411
/// Enum class for the RedctionGen CallBack type to be used.
14121412
enum class ReductionGenCBKind { Clang, MLIR };

llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10313,17 +10313,19 @@ void OffloadEntriesInfoManager::getTargetRegionEntryFnName(
1031310313

1031410314
TargetRegionEntryInfo
1031510315
OpenMPIRBuilder::getTargetEntryUniqueInfo(FileIdentifierInfoCallbackTy CallBack,
10316+
vfs::FileSystem &VFS,
1031610317
StringRef ParentName) {
1031710318
sys::fs::UniqueID ID(0xdeadf17e, 0);
1031810319
auto FileIDInfo = CallBack();
1031910320
uint64_t FileID = 0;
10320-
std::error_code EC = sys::fs::getUniqueID(std::get<0>(FileIDInfo), ID);
10321-
// If the inode ID could not be determined, create a hash value
10322-
// the current file name and use that as an ID.
10323-
if (EC)
10321+
if (ErrorOr<vfs::Status> Status = VFS.status(std::get<0>(FileIDInfo))) {
10322+
ID = Status->getUniqueID();
10323+
FileID = Status->getUniqueID().getFile();
10324+
} else {
10325+
// If the inode ID could not be determined, create a hash value
10326+
// the current file name and use that as an ID.
1032410327
FileID = hash_value(std::get<0>(FileIDInfo));
10325-
else
10326-
FileID = ID.getFile();
10328+
}
1032710329

1032810330
return TargetRegionEntryInfo(ParentName, ID.getDevice(), FileID,
1032910331
std::get<1>(FileIDInfo));

mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3616,8 +3616,10 @@ getDeclareTargetRefPtrSuffix(LLVM::GlobalOp globalOp,
36163616
llvm::StringRef(loc.getFilename()), loc.getLine());
36173617
};
36183618

3619+
auto vfs = llvm::vfs::getRealFileSystem();
36193620
os << llvm::format(
3620-
"_%x", ompBuilder.getTargetEntryUniqueInfo(fileInfoCallBack).FileID);
3621+
"_%x",
3622+
ompBuilder.getTargetEntryUniqueInfo(fileInfoCallBack, *vfs).FileID);
36213623
}
36223624
os << "_decl_tgt_ref_ptr";
36233625

@@ -5915,10 +5917,12 @@ convertDeclareTargetAttr(Operation *op, mlir::omp::DeclareTargetAttr attribute,
59155917
lineNo);
59165918
};
59175919

5920+
auto vfs = llvm::vfs::getRealFileSystem();
5921+
59185922
ompBuilder->registerTargetGlobalVariable(
59195923
captureClause, deviceClause, isDeclaration, isExternallyVisible,
5920-
ompBuilder->getTargetEntryUniqueInfo(fileInfoCallBack), mangledName,
5921-
generatedRefs, /*OpenMPSimd*/ false, targetTriple,
5924+
ompBuilder->getTargetEntryUniqueInfo(fileInfoCallBack, *vfs),
5925+
mangledName, generatedRefs, /*OpenMPSimd*/ false, targetTriple,
59225926
/*GlobalInitializer*/ nullptr, /*VariableLinkage*/ nullptr,
59235927
gVal->getType(), gVal);
59245928

@@ -5928,9 +5932,9 @@ convertDeclareTargetAttr(Operation *op, mlir::omp::DeclareTargetAttr attribute,
59285932
ompBuilder->Config.hasRequiresUnifiedSharedMemory())) {
59295933
ompBuilder->getAddrOfDeclareTargetVar(
59305934
captureClause, deviceClause, isDeclaration, isExternallyVisible,
5931-
ompBuilder->getTargetEntryUniqueInfo(fileInfoCallBack), mangledName,
5932-
generatedRefs, /*OpenMPSimd*/ false, targetTriple, gVal->getType(),
5933-
/*GlobalInitializer*/ nullptr,
5935+
ompBuilder->getTargetEntryUniqueInfo(fileInfoCallBack, *vfs),
5936+
mangledName, generatedRefs, /*OpenMPSimd*/ false, targetTriple,
5937+
gVal->getType(), /*GlobalInitializer*/ nullptr,
59345938
/*VariableLinkage*/ nullptr);
59355939
}
59365940
}

0 commit comments

Comments
 (0)