aboutsummaryrefslogtreecommitdiff
path: root/mlir/lib
diff options
context:
space:
mode:
authorKirill Chibisov <contact@kchibisov.com>2024-03-21 17:35:00 +0400
committerGitHub <noreply@github.com>2024-03-21 14:35:00 +0100
commit5344a370fe85d9119729d9036540bbd91956da38 (patch)
tree0483bef7ee8b788e48094a5cf8c44b39807635ba /mlir/lib
parent276283d8641f13b6ecde736ab1a8720f742d9d02 (diff)
downloadllvm-5344a370fe85d9119729d9036540bbd91956da38.zip
llvm-5344a370fe85d9119729d9036540bbd91956da38.tar.gz
llvm-5344a370fe85d9119729d9036540bbd91956da38.tar.bz2
[mlir][emitc] Fix form-expressions inside expression (#86081)
Make form-expressions not create `emitc.expression`s for operations inside the `emitc.expression`s, since they are invalid.
Diffstat (limited to 'mlir/lib')
-rw-r--r--mlir/lib/Dialect/EmitC/Transforms/FormExpressions.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/mlir/lib/Dialect/EmitC/Transforms/FormExpressions.cpp b/mlir/lib/Dialect/EmitC/Transforms/FormExpressions.cpp
index 5b03f81..e7c431f 100644
--- a/mlir/lib/Dialect/EmitC/Transforms/FormExpressions.cpp
+++ b/mlir/lib/Dialect/EmitC/Transforms/FormExpressions.cpp
@@ -36,7 +36,8 @@ struct FormExpressionsPass
// Wrap each C operator op with an expression op.
OpBuilder builder(context);
auto matchFun = [&](Operation *op) {
- if (op->hasTrait<OpTrait::emitc::CExpression>())
+ if (op->hasTrait<OpTrait::emitc::CExpression>() &&
+ !op->getParentOfType<emitc::ExpressionOp>())
createExpression(op, builder);
};
rootOp->walk(matchFun);