[flang-commits] [flang] [flang] Remove hardcoded bits from AddDebugInfo. (PR #89231)
via flang-commits
flang-commits at lists.llvm.org
Fri Apr 19 01:48:23 PDT 2024
================
@@ -75,43 +97,46 @@ void AddDebugInfoPass::runOnOperation() {
if (l.dyn_cast<mlir::FusedLoc>())
return;
- llvm::StringRef funcFilePath;
- if (l.dyn_cast<mlir::FileLineColLoc>())
- funcFilePath =
- l.dyn_cast<mlir::FileLineColLoc>().getFilename().getValue();
- else
- funcFilePath = inputFilePath;
+ unsigned int CC = (funcOp.getName() == fir::NameUniquer::doProgramEntry())
+ ? llvm::dwarf::getCallingConvention("DW_CC_program")
+ : llvm::dwarf::getCallingConvention("DW_CC_normal");
+
+ if (auto funcLoc = l.dyn_cast<mlir::FileLineColLoc>()) {
+ fileName = llvm::sys::path::filename(funcLoc.getFilename().getValue());
+ filePath = llvm::sys::path::parent_path(funcLoc.getFilename().getValue());
+ }
mlir::StringAttr funcName =
mlir::StringAttr::get(context, funcOp.getName());
mlir::LLVM::DIBasicTypeAttr bT = mlir::LLVM::DIBasicTypeAttr::get(
context, llvm::dwarf::DW_TAG_base_type, "void", /*sizeInBits=*/0,
/*encoding=*/1);
mlir::LLVM::DISubroutineTypeAttr subTypeAttr =
- mlir::LLVM::DISubroutineTypeAttr::get(
- context, llvm::dwarf::getCallingConvention("DW_CC_normal"),
- {bT, bT});
- mlir::LLVM::DIFileAttr funcFileAttr = getFileAttr(funcFilePath);
+ mlir::LLVM::DISubroutineTypeAttr::get(context, CC, {bT, bT});
+ mlir::LLVM::DIFileAttr funcFileAttr =
+ mlir::LLVM::DIFileAttr::get(context, fileName, filePath);
// Only definitions need a distinct identifier and a compilation unit.
mlir::DistinctAttr id;
mlir::LLVM::DICompileUnitAttr compilationUnit;
- auto subprogramFlags = mlir::LLVM::DISubprogramFlags::Optimized;
+ mlir::LLVM::DISubprogramFlags subprogramFlags =
+ mlir::LLVM::DISubprogramFlags{};
+ if (isOptimized)
+ subprogramFlags = mlir::LLVM::DISubprogramFlags::Optimized;
if (!funcOp.isExternal()) {
id = mlir::DistinctAttr::create(mlir::UnitAttr::get(context));
compilationUnit = cuAttr;
- subprogramFlags =
- subprogramFlags | mlir::LLVM::DISubprogramFlags::Definition;
+ subprogramFlags = mlir::LLVM::DISubprogramFlags::Definition;
}
auto spAttr = mlir::LLVM::DISubprogramAttr::get(
context, id, compilationUnit, fileAttr, funcName, funcName,
- funcFileAttr,
- /*line=*/1,
- /*scopeline=*/1, subprogramFlags, subTypeAttr);
+ funcFileAttr, /*line=*/1, /*scopeline=*/1, subprogramFlags,
----------------
jeanPerier wrote:
line and scopeline are still bogus here (should come from the funcOp location), right? Could you add a FIXME?
https://github.com/llvm/llvm-project/pull/89231
More information about the flang-commits
mailing list