[flang-commits] [flang] 3cc2710 - [MLIR][Flang][DebugInfo] Convert debug format in MLIR translators
Stephen Tozer via flang-commits
flang-commits at lists.llvm.org
Tue Jun 11 05:49:54 PDT 2024
Author: Stephen Tozer
Date: 2024-06-11T13:48:41+01:00
New Revision: 3cc2710e0dd53bb82742904fa13014018a1137ed
URL: https://github.com/llvm/llvm-project/commit/3cc2710e0dd53bb82742904fa13014018a1137ed
DIFF: https://github.com/llvm/llvm-project/commit/3cc2710e0dd53bb82742904fa13014018a1137ed.diff
LOG: [MLIR][Flang][DebugInfo] Convert debug format in MLIR translators
Following from the previous commit, this patch converts to the
appropriate debug info format before printing LLVM IR.
See: https://github.com/llvm/llvm-project/pull/95098
Added:
Modified:
flang/lib/Frontend/FrontendActions.cpp
mlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp
mlir/test/lib/Dialect/Test/TestToLLVMIRTranslation.cpp
Removed:
################################################################################
diff --git a/flang/lib/Frontend/FrontendActions.cpp b/flang/lib/Frontend/FrontendActions.cpp
index a4db944e8c0ab..a74d2be9be3b1 100644
--- a/flang/lib/Frontend/FrontendActions.cpp
+++ b/flang/lib/Frontend/FrontendActions.cpp
@@ -1276,6 +1276,7 @@ void CodeGenAction::executeAction() {
if (action == BackendActionTy::Backend_EmitLL) {
// When printing LLVM IR, we should convert the module to the debug info
// format that LLVM expects us to print.
+ // See https://llvm.org/docs/RemoveDIsDebugInfo.html
llvm::ScopedDbgInfoFormatSetter FormatSetter(*llvmModule,
WriteNewDbgInfoFormat);
if (WriteNewDbgInfoFormat)
diff --git a/mlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp b/mlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp
index 4558893779534..be3b36c762055 100644
--- a/mlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp
+++ b/mlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp
@@ -16,9 +16,12 @@
#include "mlir/Target/LLVMIR/Dialect/All.h"
#include "mlir/Target/LLVMIR/Export.h"
#include "mlir/Tools/mlir-translate/Translation.h"
+#include "llvm/IR/DebugProgramInstruction.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
+extern llvm::cl::opt<bool> WriteNewDbgInfoFormat;
+
using namespace mlir;
namespace mlir {
@@ -31,6 +34,13 @@ void registerToLLVMIRTranslation() {
if (!llvmModule)
return failure();
+ // When printing LLVM IR, we should convert the module to the debug info
+ // format that LLVM expects us to print.
+ // See https://llvm.org/docs/RemoveDIsDebugInfo.html
+ llvm::ScopedDbgInfoFormatSetter FormatSetter(*llvmModule,
+ WriteNewDbgInfoFormat);
+ if (WriteNewDbgInfoFormat)
+ llvmModule->removeDebugIntrinsicDeclarations();
llvmModule->print(output, nullptr);
return success();
},
diff --git a/mlir/test/lib/Dialect/Test/TestToLLVMIRTranslation.cpp b/mlir/test/lib/Dialect/Test/TestToLLVMIRTranslation.cpp
index 57e7d658fb501..813b4960faa94 100644
--- a/mlir/test/lib/Dialect/Test/TestToLLVMIRTranslation.cpp
+++ b/mlir/test/lib/Dialect/Test/TestToLLVMIRTranslation.cpp
@@ -22,6 +22,9 @@
#include "mlir/Tools/mlir-translate/Translation.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/TypeSwitch.h"
+#include "llvm/IR/DebugProgramInstruction.h"
+
+extern llvm::cl::opt<bool> WriteNewDbgInfoFormat;
using namespace mlir;
@@ -122,6 +125,13 @@ void registerTestToLLVMIR() {
if (!llvmModule)
return failure();
+ // When printing LLVM IR, we should convert the module to the debug info
+ // format that LLVM expects us to print.
+ // See https://llvm.org/docs/RemoveDIsDebugInfo.html
+ llvm::ScopedDbgInfoFormatSetter FormatSetter(*llvmModule,
+ WriteNewDbgInfoFormat);
+ if (WriteNewDbgInfoFormat)
+ llvmModule->removeDebugIntrinsicDeclarations();
llvmModule->print(output, nullptr);
return success();
},
More information about the flang-commits
mailing list