//===------ TestRemarkPipeline.cpp --- dynamic pipeline test 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 file implements a pass to test the dynamic pipeline feature. // //===----------------------------------------------------------------------===// #include "mlir/IR/BuiltinOps.h" #include "mlir/IR/Location.h" #include "mlir/IR/Remarks.h" #include "mlir/Pass/Pass.h" #include "mlir/Pass/PassManager.h" #include "mlir/Support/WalkResult.h" using namespace mlir; namespace { class TestRemarkPass : public PassWrapper> { public: MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(TestRemarkPass) StringRef getArgument() const final { return "test-remark"; } StringRef getDescription() const final { return "Tests the remark pipeline feature"; } TestRemarkPass() = default; void runOnOperation() override { getOperation()->walk([](Operation *op) { if (isa(op)) return WalkResult::advance(); Location loc = op->getLoc(); mlir::remark::missed(loc, remark::RemarkOpts::name("test-remark") .category("a-category-1-missed")) << remark::add("This is a test missed remark") << remark::reason("because we are testing the remark pipeline") << remark::suggest("try using the remark pipeline feature"); mlir::remark::passed( loc, remark::RemarkOpts::name("test-remark").category("category-1-passed")) << remark::add("This is a test passed remark (should be dropped)") << remark::reason("because we are testing the remark pipeline") << remark::suggest("try using the remark pipeline feature"); mlir::remark::passed( loc, remark::RemarkOpts::name("test-remark").category("category-1-passed")) << remark::add("This is a test passed remark") << remark::reason("because we are testing the remark pipeline") << remark::suggest("try using the remark pipeline feature"); mlir::remark::failed( loc, remark::RemarkOpts::name("test-remark").category("category-2-failed")) << remark::add("This is a test failed remark") << remark::reason("because we are testing the remark pipeline") << remark::suggest("try using the remark pipeline feature"); mlir::remark::analysis(loc, remark::RemarkOpts::name("test-remark") .category("category-2-analysis")) << remark::add("This is a test analysis remark"); return WalkResult::advance(); }); } }; } // namespace namespace mlir { namespace test { void registerTestRemarkPass() { PassRegistration(); } } // namespace test } // namespace mlir