aboutsummaryrefslogtreecommitdiff
path: root/src/translate_c/ast.zig
diff options
context:
space:
mode:
authorEvan Haas <evan@lagerdata.com>2022-07-28 21:04:17 -0700
committerVeikka Tuominen <git@vexu.eu>2022-07-30 13:24:03 +0300
commit8632e4fc7b6cad33b951f71298ee6ac478e133cb (patch)
tree580e88e3c7305e5b7bbf0ac09f061fc78f03c8ce /src/translate_c/ast.zig
parent3cf8f283d3f271b6d0b5de39f55e4ea40b83eece (diff)
downloadzig-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.zig8
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,