brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · c4a1d8d Raw
119 lines · cpp
1// RUN: %check_clang_tidy %s llvm-use-new-mlir-op-builder %t2 3namespace mlir {4class Location {};5class Value {};6class OpBuilder {7public:8  template <typename OpTy, typename... Args>9  OpTy create(Location location, Args &&...args) {10    return OpTy(args...);11  }12  Location getUnknownLoc() { return Location(); }13};14class ImplicitLocOpBuilder : public OpBuilder {15public:16  template <typename OpTy, typename... Args>17  OpTy create(Args &&...args) {18    return OpTy(args...);19  }20};21struct ModuleOp {22  ModuleOp() {}23  static ModuleOp create(OpBuilder &builder, Location location) {24    return ModuleOp();25  }26};27struct NamedOp {28  NamedOp(const char* name) {}29  static NamedOp create(OpBuilder &builder, Location location, const char* name) {30    return NamedOp(name);31  }32  Value getResult() { return Value(); }33};34struct OperandOp {35  OperandOp(Value val) {}36  static OperandOp create(OpBuilder &builder, Location location, Value val) {37    return OperandOp(val);38  }39};40} // namespace mlir41 42#define ASSIGN(A, B, C, D) C A = B.create<C>(B.getUnknownLoc(), D)43 44template <typename T>45void g(mlir::OpBuilder &b) {46  // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create<OpType>(...)' [llvm-use-new-mlir-op-builder]47  // CHECK-FIXES: T::create(b, b.getUnknownLoc(), "gaz");48  b.create<T>(b.getUnknownLoc(), "gaz");49}50 51class CustomBuilder : public mlir::ImplicitLocOpBuilder {52public:53  mlir::NamedOp f(const char *name) {54    // CHECK-MESSAGES: :[[@LINE+2]]:12: warning: use 'OpType::create(builder, ...)'55    // CHECK-FIXES: return mlir::NamedOp::create(*this, name);56    return create<mlir::NamedOp>(name);57  }58 59  mlir::NamedOp g(const char *name) {60    using mlir::NamedOp;61    // CHECK-MESSAGES: :[[@LINE+2]]:12: warning: use 'OpType::create(builder, ...)'62    // CHECK-FIXES: return NamedOp::create(*this, name);63    return create<NamedOp>(name);64  }65};66 67void f() {68  mlir::OpBuilder builder;69  // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create<OpType>(...)' [llvm-use-new-mlir-op-builder]70  // CHECK-FIXES: mlir::  ModuleOp::create(builder, builder.getUnknownLoc());71  builder.create<mlir::  ModuleOp>(builder.getUnknownLoc());72 73  using mlir::NamedOp;74  using mlir::OperandOp;75 76  // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create<OpType>(...)' [llvm-use-new-mlir-op-builder]77  // CHECK-FIXES: NamedOp::create(builder, builder.getUnknownLoc(), "baz");78  builder.create<NamedOp>(builder.getUnknownLoc(), "baz");79 80  // CHECK-MESSAGES: :[[@LINE+4]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create<OpType>(...)' [llvm-use-new-mlir-op-builder]81  // CHECK-FIXES: NamedOp::create(builder,82  // CHECK-FIXES:      builder.getUnknownLoc(),83  // CHECK-FIXES:      "caz");84  builder.85   create<NamedOp>  (86     builder.getUnknownLoc(),87     "caz");88 89  // CHECK-MESSAGES: :[[@LINE+1]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create<OpType>(...)' [llvm-use-new-mlir-op-builder]90  ASSIGN(op, builder, NamedOp, "daz");91 92  g<NamedOp>(builder);93 94  mlir::ImplicitLocOpBuilder ib;95  // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create<OpType>(...)' [llvm-use-new-mlir-op-builder]96  // CHECK-FIXES: mlir::ModuleOp::create(ib );97  ib.create<mlir::ModuleOp>(   );98 99  // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create<OpType>(...)' [llvm-use-new-mlir-op-builder]100  // CHECK-FIXES: mlir::OpBuilder().create<mlir::ModuleOp>(builder.getUnknownLoc());101  mlir::OpBuilder().create<mlir::ModuleOp>(builder.getUnknownLoc());102 103  auto *p = &builder;104  // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)'105  // CHECK-FIXES: NamedOp::create(*p, builder.getUnknownLoc(), "eaz");106  p->create<NamedOp>(builder.getUnknownLoc(), "eaz");107 108  CustomBuilder cb;109  cb.f("faz");110  cb.g("gaz");111 112  // CHECK-FIXES:      OperandOp::create(builder, builder.getUnknownLoc(),113  // CHECK-FIXES-NEXT:   NamedOp::create(builder, builder.getUnknownLoc(), "haz").getResult());114  // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create<OpType>(...)' [llvm-use-new-mlir-op-builder]115  // CHECK-MESSAGES: :[[@LINE+2]]:5: warning: use 'OpType::create(builder, ...)' instead of 'builder.create<OpType>(...)' [llvm-use-new-mlir-op-builder]116  builder.create<OperandOp>(builder.getUnknownLoc(),117    builder.create<NamedOp>(builder.getUnknownLoc(), "haz").getResult());118}119