aboutsummaryrefslogtreecommitdiff
path: root/src/type.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-01-03 16:50:29 -0500
committerGitHub <noreply@github.com>2022-01-03 16:50:29 -0500
commit81fa31c05456facea1d1963a1e7f665351fb248d (patch)
tree8ea6dba0c5b8ec9e8ba9cdff48189da68c198dfd /src/type.zig
parent850b053ea6b7d6f0f5e0e8dbcf37080ca012024f (diff)
parentd94303be2bcee33e7efba22a186fd06eaa809707 (diff)
downloadzig-81fa31c05456facea1d1963a1e7f665351fb248d.tar.gz
zig-81fa31c05456facea1d1963a1e7f665351fb248d.zip
Merge pull request #10451 from ziglang/cache-mode
stage2: introduce CacheMode
Diffstat (limited to 'src/type.zig')
-rw-r--r--src/type.zig17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/type.zig b/src/type.zig
index 5bcf310fc4..b948093994 100644
--- a/src/type.zig
+++ b/src/type.zig
@@ -3106,9 +3106,9 @@ pub const Type = extern union {
.c_ulonglong => return .{ .signedness = .unsigned, .bits = CType.ulonglong.sizeInBits(target) },
.enum_full, .enum_nonexhaustive => ty = ty.cast(Payload.EnumFull).?.data.tag_ty,
- .enum_numbered => ty = self.castTag(.enum_numbered).?.data.tag_ty,
+ .enum_numbered => ty = ty.castTag(.enum_numbered).?.data.tag_ty,
.enum_simple => {
- const enum_obj = self.castTag(.enum_simple).?.data;
+ const enum_obj = ty.castTag(.enum_simple).?.data;
const field_count = enum_obj.fields.count();
if (field_count == 0) return .{ .signedness = .unsigned, .bits = 0 };
return .{ .signedness = .unsigned, .bits = smallestUnsignedBits(field_count - 1) };
@@ -4603,7 +4603,18 @@ pub const CType = enum {
.longlong,
.ulonglong,
=> return 64,
- .longdouble => @panic("TODO figure out what kind of float `long double` is on this target"),
+ .longdouble => switch (target.cpu.arch) {
+ .riscv64,
+ .aarch64,
+ .aarch64_be,
+ .aarch64_32,
+ .s390x,
+ .mips64,
+ .mips64el,
+ => return 128,
+
+ else => return 80,
+ },
},
.windows, .uefi => switch (self) {