summaryrefslogtreecommitdiffstats
path: root/mlir/lib/Transforms/StripDebugInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mlir/lib/Transforms/StripDebugInfo.cpp')
-rw-r--r--mlir/lib/Transforms/StripDebugInfo.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/mlir/lib/Transforms/StripDebugInfo.cpp b/mlir/lib/Transforms/StripDebugInfo.cpp
new file mode 100644
index 00000000000..cdfc7fd7e41
--- /dev/null
+++ b/mlir/lib/Transforms/StripDebugInfo.cpp
@@ -0,0 +1,37 @@
+//===- StripDebugInfo.cpp - Pass to strip debug information ---------------===//
+//
+// Part of the MLIR Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "mlir/IR/Function.h"
+#include "mlir/IR/Operation.h"
+#include "mlir/Pass/Pass.h"
+#include "mlir/Transforms/Passes.h"
+
+using namespace mlir;
+
+namespace {
+struct StripDebugInfo : public FunctionPass<StripDebugInfo> {
+ void runOnFunction() override;
+};
+} // end anonymous namespace
+
+void StripDebugInfo::runOnFunction() {
+ FuncOp func = getFunction();
+ auto unknownLoc = UnknownLoc::get(&getContext());
+
+ // Strip the debug info from the function and its operations.
+ func.setLoc(unknownLoc);
+ func.walk([&](Operation *op) { op->setLoc(unknownLoc); });
+}
+
+/// Creates a pass to strip debug information from a function.
+std::unique_ptr<OpPassBase<FuncOp>> mlir::createStripDebugInfoPass() {
+ return std::make_unique<StripDebugInfo>();
+}
+
+static PassRegistration<StripDebugInfo>
+ pass("strip-debuginfo", "Strip debug info from functions and operations");
OpenPOWER on IntegriCloud