From b1ae37116b234d04071a5277d36dbdba3d476666 Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Tue, 11 Mar 2025 14:32:22 +0100 Subject: [PATCH 1/2] Fix compiler error when source file does not exist --- .../OpenMP/OpenMPToLLVMIRTranslation.cpp | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp index 3373f19a006ba..5e2879b6787ee 100644 --- a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp +++ b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp @@ -4284,7 +4284,7 @@ LogicalResult convertFlagsAttr(Operation *op, mlir::omp::FlagsAttr attribute, return success(); } -static bool getTargetEntryUniqueInfo(llvm::TargetRegionEntryInfo &targetInfo, +static void getTargetEntryUniqueInfo(llvm::TargetRegionEntryInfo &targetInfo, omp::TargetOp targetOp, llvm::StringRef parentName = "") { auto fileLoc = targetOp.getLoc()->findInstanceOf(); @@ -4293,15 +4293,16 @@ static bool getTargetEntryUniqueInfo(llvm::TargetRegionEntryInfo &targetInfo, StringRef fileName = fileLoc.getFilename().getValue(); llvm::sys::fs::UniqueID id; + uint64_t line = fileLoc.getLine(); if (auto ec = llvm::sys::fs::getUniqueID(fileName, id)) { - targetOp.emitError("Unable to get unique ID for file"); - return false; + size_t fileHash = llvm::hash_value(fileName.str()); + size_t deviceId = 0xdeadf17e; + targetInfo = + llvm::TargetRegionEntryInfo(parentName, deviceId, fileHash, line); + } else { + targetInfo = llvm::TargetRegionEntryInfo(parentName, id.getDevice(), + id.getFile(), line); } - - uint64_t line = fileLoc.getLine(); - targetInfo = llvm::TargetRegionEntryInfo(parentName, id.getDevice(), - id.getFile(), line); - return true; } static void @@ -4901,8 +4902,7 @@ convertOmpTarget(Operation &opInst, llvm::IRBuilderBase &builder, llvm::TargetRegionEntryInfo entryInfo; - if (!getTargetEntryUniqueInfo(entryInfo, targetOp, parentName)) - return failure(); + getTargetEntryUniqueInfo(entryInfo, targetOp, parentName); MapInfoData mapData; collectMapDataFromMapOperands(mapData, mapVars, moduleTranslation, dl, From ec0aad752f6ca759071e2b3e8cb3920b13d2519c Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Tue, 11 Mar 2025 17:48:16 +0100 Subject: [PATCH 2/2] Add simplistic test --- flang/test/Lower/OpenMP/missing-inode.f90 | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 flang/test/Lower/OpenMP/missing-inode.f90 diff --git a/flang/test/Lower/OpenMP/missing-inode.f90 b/flang/test/Lower/OpenMP/missing-inode.f90 new file mode 100644 index 0000000000000..01e662557cfe6 --- /dev/null +++ b/flang/test/Lower/OpenMP/missing-inode.f90 @@ -0,0 +1,8 @@ +! RUN: %flang_fc1 -emit-llvm -fopenmp -fopenmp-version=51 -fopenmp-targets=amdgcn-amd-amdhsa -o - %s | FileCheck %s +program missing_inode +#line "/this_path_should_not_exist_on_any_system_out_there/and_if_it_does_it_will_break_the/tes.f90" 700 + ! CHECK: define internal void @__omp_offloading_{{[0-9a-f]+}}_{{[0-9a-f]+}}__QQmain_l701 + !$omp target + call some_routine() + !$omp end target +end program missing_inode \ No newline at end of file