Mercurial > hg > CbC > CbC_llvm
view mlir/unittests/TableGen/PassGenTest.cpp @ 223:5f17cb93ff66 llvm-original
LLVM13 (2021/7/18)
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 18 Jul 2021 22:43:00 +0900 |
parents | |
children | c4bab56944e8 |
line wrap: on
line source
//===- PassGenTest.cpp - TableGen PassGen Tests ---------------------------===// // // 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/Pass/Pass.h" #include "gmock/gmock.h" std::unique_ptr<mlir::Pass> createTestPass(int v = 0); #define GEN_PASS_REGISTRATION #include "PassGenTest.h.inc" #define GEN_PASS_CLASSES #include "PassGenTest.h.inc" struct TestPass : public TestPassBase<TestPass> { explicit TestPass(int v) : extraVal(v) {} void runOnOperation() override {} std::unique_ptr<mlir::Pass> clone() const { return TestPassBase<TestPass>::clone(); } int extraVal; }; std::unique_ptr<mlir::Pass> createTestPass(int v) { return std::make_unique<TestPass>(v); } TEST(PassGenTest, PassClone) { mlir::MLIRContext context; const auto unwrap = [](const std::unique_ptr<mlir::Pass> &pass) { return static_cast<const TestPass *>(pass.get()); }; const auto origPass = createTestPass(10); const auto clonePass = unwrap(origPass)->clone(); EXPECT_EQ(unwrap(origPass)->extraVal, unwrap(clonePass)->extraVal); }