diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-02-28 11:01:56 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2022-02-28 11:40:25 +0100 |
| commit | 4d0c48738bbfe5f657c72f4f52fbcd4c73d4034c (patch) | |
| tree | b9d1c08fe6d76dae1672bb484f968541568a304f /src | |
| parent | 06f58a0b3b241a38ca4092a9f4ee8012370dcff6 (diff) | |
| download | zig-4d0c48738bbfe5f657c72f4f52fbcd4c73d4034c.tar.gz zig-4d0c48738bbfe5f657c72f4f52fbcd4c73d4034c.zip | |
x64: make lowerUnnamedConst a fallthrough condition
Diffstat (limited to 'src')
| -rw-r--r-- | src/arch/x86_64/CodeGen.zig | 31 |
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 { |
