[flang] [llvm] [mlir] [flang][debug] Generate DISubprogramAttr for omp::TargetOp. (PR #146532)
Abid Qadeer via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 3 02:38:03 PDT 2025
================
@@ -5324,9 +5324,27 @@ static LogicalResult
convertOmpTarget(Operation &opInst, llvm::IRBuilderBase &builder,
LLVM::ModuleTranslation &moduleTranslation) {
auto targetOp = cast<omp::TargetOp>(opInst);
+ // The current debug location already has the DISubprogram for the outlined
+ // function that will be created for the target op. We save it here so that
+ // we can set it on the outlined function.
+ llvm::DebugLoc outlinedFnLoc = builder.getCurrentDebugLocation();
if (failed(checkImplementationStatus(opInst)))
return failure();
+ // During the handling of target op, we will generate instructions in the
+ // parent function like call to the oulined function or branch to a new
+ // BasicBlock. We set the debug location here to parent function so that those
+ // get the correct debug locations. For outlined functions, the normal MLIR op
+ // conversion will automatically pick the correct location.
+ llvm::BasicBlock *parentBB = builder.GetInsertBlock();
+ assert(parentBB && "No insert block is set for the builder");
+ llvm::Function *parentLLVMFn = parentBB->getParent();
+ assert(parentLLVMFn && "Parent Function must be valid");
+ if (llvm::DISubprogram *SP = parentLLVMFn->getSubprogram())
+ builder.SetCurrentDebugLocation(llvm::DILocation::get(
----------------
abidh wrote:
The callback which generates the body of the outlined function uses the correct location.
https://github.com/llvm/llvm-project/pull/146532
More information about the llvm-commits
mailing list