aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-02-28 11:01:56 +0100
committerJakub Konka <kubkon@jakubkonka.com>2022-02-28 11:40:25 +0100
commit4d0c48738bbfe5f657c72f4f52fbcd4c73d4034c (patch)
treeb9d1c08fe6d76dae1672bb484f968541568a304f /src
parent06f58a0b3b241a38ca4092a9f4ee8012370dcff6 (diff)
downloadzig-4d0c48738bbfe5f657c72f4f52fbcd4c73d4034c.tar.gz
zig-4d0c48738bbfe5f657c72f4f52fbcd4c73d4034c.zip
x64: make lowerUnnamedConst a fallthrough condition
Diffstat (limited to 'src')
-rw-r--r--src/arch/x86_64/CodeGen.zig31
1 files changed, 7 insertions, 24 deletions
diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig
index f4aef59760..7b828013bd 100644
--- a/src/arch/x86_64/CodeGen.zig
+++ b/src/arch/x86_64/CodeGen.zig
@@ -5433,24 +5433,14 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
}
switch (typed_value.ty.zigTypeTag()) {
- .Array => {
- return self.lowerUnnamedConst(typed_value);
- },
.Pointer => switch (typed_value.ty.ptrSize()) {
- .Slice => {
- return self.lowerUnnamedConst(typed_value);
- },
+ .Slice => {},
else => {
switch (typed_value.val.tag()) {
.int_u64 => {
return MCValue{ .immediate = typed_value.val.toUnsignedInt() };
},
- .slice => {
- return self.lowerUnnamedConst(typed_value);
- },
- else => {
- return self.fail("TODO codegen more kinds of const pointers: {}", .{typed_value.val.tag()});
- },
+ else => {},
}
},
},
@@ -5459,10 +5449,9 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
if (info.bits <= ptr_bits and info.signedness == .signed) {
return MCValue{ .immediate = @bitCast(u64, typed_value.val.toSignedInt()) };
}
- if (info.bits > ptr_bits or info.signedness == .signed) {
- return self.fail("TODO const int bigger than ptr and signed int", .{});
+ if (!(info.bits > ptr_bits or info.signedness == .signed)) {
+ return MCValue{ .immediate = typed_value.val.toUnsignedInt() };
}
- return MCValue{ .immediate = typed_value.val.toUnsignedInt() };
},
.Bool => {
return MCValue{ .immediate = @boolToInt(typed_value.val.toBool()) };
@@ -5482,7 +5471,6 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
} else if (typed_value.ty.abiSize(self.target.*) == 1) {
return MCValue{ .immediate = @boolToInt(typed_value.val.isNull()) };
}
- return self.fail("TODO non pointer optionals", .{});
},
.Enum => {
if (typed_value.val.castTag(.enum_field_index)) |field_index| {
@@ -5529,16 +5517,11 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
return self.genTypedValue(.{ .ty = error_type, .val = typed_value.val });
}
}
- return self.lowerUnnamedConst(typed_value);
},
- .Struct => {
- return self.lowerUnnamedConst(typed_value);
- },
- .Union => {
- return self.lowerUnnamedConst(typed_value);
- },
- else => return self.fail("TODO implement const of type '{}'", .{typed_value.ty}),
+ else => {},
}
+
+ return self.lowerUnnamedConst(typed_value);
}
const CallMCValues = struct {