diff options
| author | Evan Haas <evan@lagerdata.com> | 2022-07-28 21:04:17 -0700 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-07-30 13:24:03 +0300 |
| commit | 8632e4fc7b6cad33b951f71298ee6ac478e133cb (patch) | |
| tree | 580e88e3c7305e5b7bbf0ac09f061fc78f03c8ce /src/translate_c/ast.zig | |
| parent | 3cf8f283d3f271b6d0b5de39f55e4ea40b83eece (diff) | |
| download | zig-8632e4fc7b6cad33b951f71298ee6ac478e133cb.tar.gz zig-8632e4fc7b6cad33b951f71298ee6ac478e133cb.zip | |
translate-c: use correct number of initializers for vectors
Fixes #12264
Diffstat (limited to 'src/translate_c/ast.zig')
| -rw-r--r-- | src/translate_c/ast.zig | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/translate_c/ast.zig b/src/translate_c/ast.zig index b88b481ae7..307a7e9ea7 100644 --- a/src/translate_c/ast.zig +++ b/src/translate_c/ast.zig @@ -154,6 +154,8 @@ pub const Node = extern union { div_exact, /// @offsetOf(lhs, rhs) offset_of, + /// @splat(lhs, rhs) + vector_zero_init, /// @shuffle(type, a, b, mask) shuffle, @@ -328,6 +330,7 @@ pub const Node = extern union { .div_exact, .offset_of, .helpers_cast, + .vector_zero_init, => Payload.BinOp, .integer_literal, @@ -1829,6 +1832,10 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex { const type_expr = try renderNode(c, payload.cond); return renderArrayInit(c, type_expr, payload.cases); }, + .vector_zero_init => { + const payload = node.castTag(.vector_zero_init).?.data; + return renderBuiltinCall(c, "@splat", &.{ payload.lhs, payload.rhs }); + }, .field_access => { const payload = node.castTag(.field_access).?.data; const lhs = try renderNodeGrouped(c, payload.lhs); @@ -2305,6 +2312,7 @@ fn renderNodeGrouped(c: *Context, node: Node) !NodeIndex { .@"struct", .@"union", .array_init, + .vector_zero_init, .tuple, .container_init, .container_init_dot, |
