[clang] [Clang] Remap paths in OpenMP runtime calls (#82541) (PR #141250)
Dan McGregor via cfe-commits
cfe-commits at lists.llvm.org
Fri May 23 09:37:23 PDT 2025
https://github.com/dankm created https://github.com/llvm/llvm-project/pull/141250
Apply the debug prefix mapping to the OpenMP location strings.
Fixes https://github.com/llvm/llvm-project/issues/82541
>From 6a6c63abc2ff2dd594f82a5ad92f01aee5bdd37a Mon Sep 17 00:00:00 2001
From: Dan McGregor <dan.mcgregor at usask.ca>
Date: Fri, 23 May 2025 10:19:22 -0600
Subject: [PATCH] [Clang] Remap paths in OpenMP runtime calls
Apply the debug prefix mapping to the OpenMP location strings.
Fixes https://github.com/llvm/llvm-project/issues/82541
---
clang/lib/CodeGen/CGOpenMPRuntime.cpp | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
index e458d437d085a..196c28071bfd6 100644
--- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp
+++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
@@ -1352,7 +1352,12 @@ static StringRef getIdentStringFromSourceLocation(CodeGenFunction &CGF,
llvm::raw_svector_ostream OS(Buffer);
// Build debug location
PresumedLoc PLoc = CGF.getContext().getSourceManager().getPresumedLoc(Loc);
- OS << ";" << PLoc.getFilename() << ";";
+ OS << ";";
+ if (CGF.getDebugInfo())
+ OS << CGF.getDebugInfo()->remapDIPath(PLoc.getFilename());
+ else
+ OS << PLoc.getFilename();
+ OS << ";";
if (const auto *FD = dyn_cast_or_null<FunctionDecl>(CGF.CurFuncDecl))
OS << FD->getQualifiedNameAsString();
OS << ";" << PLoc.getLine() << ";" << PLoc.getColumn() << ";;";
@@ -1370,10 +1375,14 @@ llvm::Value *CGOpenMPRuntime::emitUpdateLocation(CodeGenFunction &CGF,
SrcLocStr = OMPBuilder.getOrCreateDefaultSrcLocStr(SrcLocStrSize);
} else {
std::string FunctionName;
+ std::string FileName;
if (const auto *FD = dyn_cast_or_null<FunctionDecl>(CGF.CurFuncDecl))
FunctionName = FD->getQualifiedNameAsString();
PresumedLoc PLoc = CGF.getContext().getSourceManager().getPresumedLoc(Loc);
- const char *FileName = PLoc.getFilename();
+ if (CGF.getDebugInfo())
+ FileName = CGF.getDebugInfo()->remapDIPath(PLoc.getFilename());
+ else
+ FileName = PLoc.getFilename();
unsigned Line = PLoc.getLine();
unsigned Column = PLoc.getColumn();
SrcLocStr = OMPBuilder.getOrCreateSrcLocStr(FunctionName, FileName, Line,
@@ -8840,8 +8849,13 @@ emitMappingInformation(CodeGenFunction &CGF, llvm::OpenMPIRBuilder &OMPBuilder,
ExprName = MapExprs.getMapDecl()->getNameAsString();
}
+ std::string FileName;
PresumedLoc PLoc = CGF.getContext().getSourceManager().getPresumedLoc(Loc);
- return OMPBuilder.getOrCreateSrcLocStr(PLoc.getFilename(), ExprName,
+ if (CGF.getDebugInfo())
+ FileName = CGF.getDebugInfo()->remapDIPath(PLoc.getFilename());
+ else
+ FileName = PLoc.getFilename();
+ return OMPBuilder.getOrCreateSrcLocStr(FileName, ExprName,
PLoc.getLine(), PLoc.getColumn(),
SrcLocStrSize);
}
More information about the cfe-commits
mailing list