[clang-tools-extra] [clang-tidy][mlir] Make rewrite more conservative. (PR #150757)
Jacques Pienaar via cfe-commits
cfe-commits at lists.llvm.org
Sat Jul 26 06:25:02 PDT 2025
================
@@ -111,17 +111,24 @@ EditGenerator rewrite(RangeSelector Call, RangeSelector Builder,
}
RewriteRuleWith<std::string> useNewMlirOpBuilderCheckRule() {
- return makeRule(
+ Stencil message = cat("use 'OpType::create(builder, ...)' instead of "
+ "'builder.create<OpType>(...)'");
+ // Match a create call on an OpBuilder.
+ ast_matchers::internal::Matcher<Stmt> base =
cxxMemberCallExpr(
on(expr(hasType(
cxxRecordDecl(isSameOrDerivedFrom("::mlir::OpBuilder"))))
.bind("builder")),
callee(cxxMethodDecl(hasTemplateArgument(0, templateArgument()))),
callee(cxxMethodDecl(hasName("create"))))
- .bind("call"),
- rewrite(node("call"), node("builder"), callArgs("call")),
- cat("use 'OpType::create(builder, ...)' instead of "
- "'builder.create<OpType>(...)'"));
+ .bind("call");
+ return applyFirst(
+ {// Attempt to rewrite with a concrete builder.
+ makeRule(cxxMemberCallExpr(unless(on(cxxTemporaryObjectExpr())), base),
+ rewrite(node("call"), node("builder"), callArgs("call")),
+ message),
+ // Warn on calls on temporary objects only.
----------------
jpienaar wrote:
Yes this is meant as "Warn only" on temporary as in, don't attempt rewrite. I can perhaps combine both comments to one as you wrote.
https://github.com/llvm/llvm-project/pull/150757
More information about the cfe-commits
mailing list