Skip to content

Commit 0efe034

Browse files
committed
[WGSL] Preserve binary operation precedence
https://bugs.webkit.org/show_bug.cgi?id=255517 rdar://108136098 Reviewed by Mike Wyrzykowski. Binary operations should be parenthesized when serializing in order to preserve their precedence. * Source/WebGPU/WGSL/Metal/MetalFunctionWriter.cpp: (WGSL::Metal::FunctionDefinitionWriter::visit): Canonical link: https://commits.webkit.org/263092@main
1 parent b0645e5 commit 0efe034

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

Source/WebGPU/WGSL/Metal/MetalFunctionWriter.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,7 @@ void FunctionDefinitionWriter::visit(AST::UnaryExpression& unary)
508508

509509
void FunctionDefinitionWriter::visit(AST::BinaryExpression& binary)
510510
{
511+
m_stringBuilder.append("(");
511512
visit(binary.leftExpression());
512513
switch (binary.operation()) {
513514
case AST::BinaryOperation::Add:
@@ -567,6 +568,7 @@ void FunctionDefinitionWriter::visit(AST::BinaryExpression& binary)
567568
break;
568569
}
569570
visit(binary.rightExpression());
571+
m_stringBuilder.append(")");
570572
}
571573

572574
void FunctionDefinitionWriter::visit(AST::PointerDereferenceExpression& pointerDereference)

Tools/TestWebKitAPI/Tests/WGSL/MetalGenerationTests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ using namespace metal;
8383
[[fragment]] void function0(unsigned parameter0 [[sample_mask]], unsigned parameter1 [[sample_id]], vec<float, 4> parameter2 [[position]])
8484
{
8585
vec<float, 4> local0 = parameter2;
86-
unsigned local1 = parameter1 + parameter0;
86+
unsigned local1 = (parameter1 + parameter0);
8787
}
8888
8989
)"_s);

0 commit comments

Comments
 (0)