Files
clang-p2996/mlir/lib/Transforms/StripDebugInfo.cpp
River Riddle 9a277af2d4 [mlir][Pass] Add support for generating pass utilities via tablegen
This revision adds support for generating utilities for passes such as options/statistics/etc. that can be inferred from the tablegen definition. This removes additional boilerplate from the pass, and also makes it easier to remove the reliance on the pass registry to provide certain things(e.g. the pass argument).

Differential Revision: https://reviews.llvm.org/D76659
2020-04-01 02:10:46 -07:00

36 lines
1.1 KiB
C++

//===- StripDebugInfo.cpp - Pass to strip debug information ---------------===//
//
// Part of the LLVM 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 OperationPass<StripDebugInfo> {
/// Include the generated pass utilities.
#define GEN_PASS_StripDebugInfo
#include "mlir/Transforms/Passes.h.inc"
void runOnOperation() override;
};
} // end anonymous namespace
void StripDebugInfo::runOnOperation() {
// Strip the debug info from all operations.
auto unknownLoc = UnknownLoc::get(&getContext());
getOperation()->walk([&](Operation *op) { op->setLoc(unknownLoc); });
}
/// Creates a pass to strip debug information from a function.
std::unique_ptr<Pass> mlir::createStripDebugInfoPass() {
return std::make_unique<StripDebugInfo>();
}