authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-02-28 11:01:56+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-02-28 11:40:25+01:00
log4d0c48738bbfe5f657c72f4f52fbcd4c73d4034c
treeb9d1c08fe6d76dae1672bb484f968541568a304f
parent06f58a0b3b241a38ca4092a9f4ee8012370dcff6

x64: make lowerUnnamedConst a fallthrough condition


1 files changed, 7 insertions(+), 24 deletions(-)

src/arch/x86_64/CodeGen.zig+7-24
...@@ -5433,24 +5433,14 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {...@@ -5433,24 +5433,14 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
5433 }5433 }
54345434
5435 switch (typed_value.ty.zigTypeTag()) {5435 switch (typed_value.ty.zigTypeTag()) {
5436 .Array => {
5437 return self.lowerUnnamedConst(typed_value);
5438 },
5439 .Pointer => switch (typed_value.ty.ptrSize()) {5436 .Pointer => switch (typed_value.ty.ptrSize()) {
5440 .Slice => {5437 .Slice => {},
5441 return self.lowerUnnamedConst(typed_value);
5442 },
5443 else => {5438 else => {
5444 switch (typed_value.val.tag()) {5439 switch (typed_value.val.tag()) {
5445 .int_u64 => {5440 .int_u64 => {
5446 return MCValue{ .immediate = typed_value.val.toUnsignedInt() };5441 return MCValue{ .immediate = typed_value.val.toUnsignedInt() };
5447 },5442 },
5448 .slice => {5443 else => {},
5449 return self.lowerUnnamedConst(typed_value);
5450 },
5451 else => {
5452 return self.fail("TODO codegen more kinds of const pointers: {}", .{typed_value.val.tag()});
5453 },
5454 }5444 }
5455 },5445 },
5456 },5446 },
...@@ -5459,10 +5449,9 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {...@@ -5459,10 +5449,9 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
5459 if (info.bits <= ptr_bits and info.signedness == .signed) {5449 if (info.bits <= ptr_bits and info.signedness == .signed) {
5460 return MCValue{ .immediate = @bitCast(u64, typed_value.val.toSignedInt()) };5450 return MCValue{ .immediate = @bitCast(u64, typed_value.val.toSignedInt()) };
5461 }5451 }
5462 if (info.bits > ptr_bits or info.signedness == .signed) {5452 if (!(info.bits > ptr_bits or info.signedness == .signed)) {
5463 return self.fail("TODO const int bigger than ptr and signed int", .{});5453 return MCValue{ .immediate = typed_value.val.toUnsignedInt() };
5464 }5454 }
5465 return MCValue{ .immediate = typed_value.val.toUnsignedInt() };
5466 },5455 },
5467 .Bool => {5456 .Bool => {
5468 return MCValue{ .immediate = @boolToInt(typed_value.val.toBool()) };5457 return MCValue{ .immediate = @boolToInt(typed_value.val.toBool()) };
...@@ -5482,7 +5471,6 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {...@@ -5482,7 +5471,6 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
5482 } else if (typed_value.ty.abiSize(self.target.*) == 1) {5471 } else if (typed_value.ty.abiSize(self.target.*) == 1) {
5483 return MCValue{ .immediate = @boolToInt(typed_value.val.isNull()) };5472 return MCValue{ .immediate = @boolToInt(typed_value.val.isNull()) };
5484 }5473 }
5485 return self.fail("TODO non pointer optionals", .{});
5486 },5474 },
5487 .Enum => {5475 .Enum => {
5488 if (typed_value.val.castTag(.enum_field_index)) |field_index| {5476 if (typed_value.val.castTag(.enum_field_index)) |field_index| {
...@@ -5529,16 +5517,11 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {...@@ -5529,16 +5517,11 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
5529 return self.genTypedValue(.{ .ty = error_type, .val = typed_value.val });5517 return self.genTypedValue(.{ .ty = error_type, .val = typed_value.val });
5530 }5518 }
5531 }5519 }
5532 return self.lowerUnnamedConst(typed_value);
5533 },5520 },
5534 .Struct => {5521 else => {},
5535 return self.lowerUnnamedConst(typed_value);
5536 },
5537 .Union => {
5538 return self.lowerUnnamedConst(typed_value);
5539 },
5540 else => return self.fail("TODO implement const of type '{}'", .{typed_value.ty}),
5541 }5522 }
5523
5524 return self.lowerUnnamedConst(typed_value);
5542}5525}
55435526
5544const CallMCValues = struct {5527const CallMCValues = struct {