[Mlir-commits] [mlir] [emitc] Fix precedence when emit emit.expression (PR #124087)
Jianjian Guan
llvmlistbot at llvm.org
Thu Jan 23 00:03:08 PST 2025
https://github.com/jacquesguan created https://github.com/llvm/llvm-project/pull/124087
Fixes https://github.com/llvm/llvm-project/issues/124086.
>From 638a27cdcbf9aaa5754d2c7669ce7bbe2234d02b Mon Sep 17 00:00:00 2001
From: Jianjian GUAN <jacquesguan at me.com>
Date: Thu, 23 Jan 2025 14:31:53 +0800
Subject: [PATCH] [emitc] Fix precedence when emit emit.expression
---
mlir/lib/Target/Cpp/TranslateToCpp.cpp | 6 ++----
mlir/test/Target/Cpp/expressions.mlir | 4 ++--
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/mlir/lib/Target/Cpp/TranslateToCpp.cpp b/mlir/lib/Target/Cpp/TranslateToCpp.cpp
index 01de0e41f20353..3ba1244e637ff2 100644
--- a/mlir/lib/Target/Cpp/TranslateToCpp.cpp
+++ b/mlir/lib/Target/Cpp/TranslateToCpp.cpp
@@ -1387,11 +1387,9 @@ LogicalResult CppEmitter::emitOperand(Value value) {
// as they might be evaluated in the wrong order depending on the shape of
// the expression tree.
bool encloseInParenthesis = precedence.value() <= getExpressionPrecedence();
- if (encloseInParenthesis) {
+ if (encloseInParenthesis)
os << "(";
- pushExpressionPrecedence(lowestPrecedence());
- } else
- pushExpressionPrecedence(precedence.value());
+ pushExpressionPrecedence(precedence.value());
if (failed(emitOperation(*def, /*trailingSemicolon=*/false)))
return failure();
diff --git a/mlir/test/Target/Cpp/expressions.mlir b/mlir/test/Target/Cpp/expressions.mlir
index 6b67065f5d1a1c..3a1694e7d15dcf 100644
--- a/mlir/test/Target/Cpp/expressions.mlir
+++ b/mlir/test/Target/Cpp/expressions.mlir
@@ -70,11 +70,11 @@ func.func @do_not_inline(%arg0: i32, %arg1: i32, %arg2 : i32) -> i32 {
}
// CPP-DEFAULT: float parentheses_for_low_precedence(int32_t [[VAL_1:v[0-9]+]], int32_t [[VAL_2:v[0-9]+]], int32_t [[VAL_3:v[0-9]+]]) {
-// CPP-DEFAULT-NEXT: return (float) ([[VAL_1]] + [[VAL_2]] * [[VAL_3]]);
+// CPP-DEFAULT-NEXT: return (float) (([[VAL_1]] + [[VAL_2]]) * [[VAL_3]]);
// CPP-DEFAULT-NEXT: }
// CPP-DECLTOP: float parentheses_for_low_precedence(int32_t [[VAL_1:v[0-9]+]], int32_t [[VAL_2:v[0-9]+]], int32_t [[VAL_3:v[0-9]+]]) {
-// CPP-DECLTOP-NEXT: return (float) ([[VAL_1]] + [[VAL_2]] * [[VAL_3]]);
+// CPP-DECLTOP-NEXT: return (float) (([[VAL_1]] + [[VAL_2]]) * [[VAL_3]]);
// CPP-DECLTOP-NEXT: }
func.func @parentheses_for_low_precedence(%arg0: i32, %arg1: i32, %arg2: i32) -> f32 {
More information about the Mlir-commits
mailing list