1f319bbbdSRiver Riddle //===- StripDebugInfo.cpp - Pass to strip debug information ---------------===//
2f319bbbdSRiver Riddle //
330857107SMehdi Amini // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
456222a06SMehdi Amini // See https://llvm.org/LICENSE.txt for license information.
556222a06SMehdi Amini // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6f319bbbdSRiver Riddle //
756222a06SMehdi Amini //===----------------------------------------------------------------------===//
8f319bbbdSRiver Riddle 
91834ad4aSRiver Riddle #include "PassDetail.h"
10*65fcddffSRiver Riddle #include "mlir/IR/BuiltinOps.h"
119ffdc930SRiver Riddle #include "mlir/IR/Operation.h"
1248ccae24SRiver Riddle #include "mlir/Pass/Pass.h"
13f319bbbdSRiver Riddle #include "mlir/Transforms/Passes.h"
14f319bbbdSRiver Riddle 
15f319bbbdSRiver Riddle using namespace mlir;
16f319bbbdSRiver Riddle 
17f319bbbdSRiver Riddle namespace {
181834ad4aSRiver Riddle struct StripDebugInfo : public StripDebugInfoBase<StripDebugInfo> {
19c33d6970SRiver Riddle   void runOnOperation() override;
20f319bbbdSRiver Riddle };
21f319bbbdSRiver Riddle } // end anonymous namespace
22f319bbbdSRiver Riddle 
23c33d6970SRiver Riddle void StripDebugInfo::runOnOperation() {
24c33d6970SRiver Riddle   // Strip the debug info from all operations.
2549162524SRiver Riddle   auto unknownLoc = UnknownLoc::get(&getContext());
26c33d6970SRiver Riddle   getOperation()->walk([&](Operation *op) { op->setLoc(unknownLoc); });
27f319bbbdSRiver Riddle }
28f319bbbdSRiver Riddle 
29f319bbbdSRiver Riddle /// Creates a pass to strip debug information from a function.
30c33d6970SRiver Riddle std::unique_ptr<Pass> mlir::createStripDebugInfoPass() {
3179f53b0cSJacques Pienaar   return std::make_unique<StripDebugInfo>();
32c6c53449SRiver Riddle }
33