//===- TestControlFlowSink.cpp - Test control-flow sink pass --------------===// // // 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 // //===----------------------------------------------------------------------===// // // This pass tests the control-flow sink utilities by implementing an example // control-flow sink pass. // //===----------------------------------------------------------------------===// #include "mlir/Dialect/Func/IR/FuncOps.h" #include "mlir/IR/Dominance.h" #include "mlir/Pass/Pass.h" #include "mlir/Transforms/ControlFlowSinkUtils.h" usingnamespacemlir; namespace { /// An example control-flow sink pass to test the control-flow sink utilites. /// This pass will sink ops named `test.sink_me` and tag them with an attribute /// `was_sunk` into the first region of `test.sink_target` ops. struct TestControlFlowSinkPass : public PassWrapper<TestControlFlowSinkPass, OperationPass<func::FuncOp>> { … }; } // end anonymous namespace namespace mlir { namespace test { void registerTestControlFlowSink() { … } } // end namespace test } // end namespace mlir