diff options
Diffstat (limited to 'mlir/lib/Transforms/StripDebugInfo.cpp')
-rw-r--r-- | mlir/lib/Transforms/StripDebugInfo.cpp | 37 |
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"); |