aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/value.zig14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/value.zig b/src/value.zig
index da8f7a2c62..a80d788894 100644
--- a/src/value.zig
+++ b/src/value.zig
@@ -1174,6 +1174,10 @@ pub const Value = extern union {
return;
}
switch (ty.zigTypeTag()) {
+ .Void => {},
+ .Bool => {
+ buffer[0] = @boolToInt(val.toBool());
+ },
.Int => {
var bigint_buffer: BigIntSpace = undefined;
const bigint = val.toBigInt(&bigint_buffer, target);
@@ -1291,6 +1295,14 @@ pub const Value = extern union {
) Allocator.Error!Value {
const target = mod.getTarget();
switch (ty.zigTypeTag()) {
+ .Void => return Value.@"void",
+ .Bool => {
+ if (buffer[0] == 0) {
+ return Value.@"false";
+ } else {
+ return Value.@"true";
+ }
+ },
.Int => {
if (buffer.len == 0) return Value.zero;
const int_info = ty.intInfo(target);
@@ -1311,7 +1323,7 @@ pub const Value = extern union {
128 => return Value.Tag.float_128.create(arena, floatReadFromMemory(f128, target, buffer)),
else => unreachable,
},
- .Array => {
+ .Array, .Vector => {
const elem_ty = ty.childType();
const elem_size = elem_ty.abiSize(target);
const elems = try arena.alloc(Value, @intCast(usize, ty.arrayLen()));