mirror of
https://github.com/ziglang/zig.git
synced 2025-12-16 11:13:08 +00:00
x64: make lowerUnnamedConst a fallthrough condition
This commit is contained in:
parent
06f58a0b3b
commit
4d0c48738b
@ -5433,24 +5433,14 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (typed_value.ty.zigTypeTag()) {
|
switch (typed_value.ty.zigTypeTag()) {
|
||||||
.Array => {
|
|
||||||
return self.lowerUnnamedConst(typed_value);
|
|
||||||
},
|
|
||||||
.Pointer => switch (typed_value.ty.ptrSize()) {
|
.Pointer => switch (typed_value.ty.ptrSize()) {
|
||||||
.Slice => {
|
.Slice => {},
|
||||||
return self.lowerUnnamedConst(typed_value);
|
|
||||||
},
|
|
||||||
else => {
|
else => {
|
||||||
switch (typed_value.val.tag()) {
|
switch (typed_value.val.tag()) {
|
||||||
.int_u64 => {
|
.int_u64 => {
|
||||||
return MCValue{ .immediate = typed_value.val.toUnsignedInt() };
|
return MCValue{ .immediate = typed_value.val.toUnsignedInt() };
|
||||||
},
|
},
|
||||||
.slice => {
|
else => {},
|
||||||
return self.lowerUnnamedConst(typed_value);
|
|
||||||
},
|
|
||||||
else => {
|
|
||||||
return self.fail("TODO codegen more kinds of const pointers: {}", .{typed_value.val.tag()});
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -5459,10 +5449,9 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
|
|||||||
if (info.bits <= ptr_bits and info.signedness == .signed) {
|
if (info.bits <= ptr_bits and info.signedness == .signed) {
|
||||||
return MCValue{ .immediate = @bitCast(u64, typed_value.val.toSignedInt()) };
|
return MCValue{ .immediate = @bitCast(u64, typed_value.val.toSignedInt()) };
|
||||||
}
|
}
|
||||||
if (info.bits > ptr_bits or info.signedness == .signed) {
|
if (!(info.bits > ptr_bits or info.signedness == .signed)) {
|
||||||
return self.fail("TODO const int bigger than ptr and signed int", .{});
|
return MCValue{ .immediate = typed_value.val.toUnsignedInt() };
|
||||||
}
|
}
|
||||||
return MCValue{ .immediate = typed_value.val.toUnsignedInt() };
|
|
||||||
},
|
},
|
||||||
.Bool => {
|
.Bool => {
|
||||||
return MCValue{ .immediate = @boolToInt(typed_value.val.toBool()) };
|
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) {
|
} else if (typed_value.ty.abiSize(self.target.*) == 1) {
|
||||||
return MCValue{ .immediate = @boolToInt(typed_value.val.isNull()) };
|
return MCValue{ .immediate = @boolToInt(typed_value.val.isNull()) };
|
||||||
}
|
}
|
||||||
return self.fail("TODO non pointer optionals", .{});
|
|
||||||
},
|
},
|
||||||
.Enum => {
|
.Enum => {
|
||||||
if (typed_value.val.castTag(.enum_field_index)) |field_index| {
|
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.genTypedValue(.{ .ty = error_type, .val = typed_value.val });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return self.lowerUnnamedConst(typed_value);
|
|
||||||
},
|
},
|
||||||
.Struct => {
|
else => {},
|
||||||
return self.lowerUnnamedConst(typed_value);
|
|
||||||
},
|
|
||||||
.Union => {
|
|
||||||
return self.lowerUnnamedConst(typed_value);
|
|
||||||
},
|
|
||||||
else => return self.fail("TODO implement const of type '{}'", .{typed_value.ty}),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return self.lowerUnnamedConst(typed_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
const CallMCValues = struct {
|
const CallMCValues = struct {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user