aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-08-18 20:34:36 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-08-18 20:34:36 -0700
commitcee82c7ce4fb8beb39042f9dba16a1a391803fa4 (patch)
treeea2a12b10b3742acc3f343a36bf14a8c34246776 /lib/std
parentb975f7a56fec9e0e7aca9832282bc772c743d731 (diff)
downloadzig-cee82c7ce4fb8beb39042f9dba16a1a391803fa4.tar.gz
zig-cee82c7ce4fb8beb39042f9dba16a1a391803fa4.zip
improved ABI alignment/size for >= 128-bit integers
* riscv64: adjust alignment and size of 128-bit integers. * take ofmt=c into account for ABI alignment of 128-bit integers and structs. * Type: make packed struct support intInfo * fix f80 alignment for i386-windows-msvc
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/target.zig9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/std/target.zig b/lib/std/target.zig
index 00553bb520..64f9f97809 100644
--- a/lib/std/target.zig
+++ b/lib/std/target.zig
@@ -1808,20 +1808,23 @@ pub const Target = struct {
// 1. Different machine code instruction when loading into SIMD register.
// 2. The C ABI wants 16 for extern structs.
// 3. 16-byte cmpxchg needs 16-byte alignment.
- // Same logic for riscv64, powerpc64, mips64, sparc64.
+ // Same logic for powerpc64, mips64, sparc64.
.x86_64,
- .riscv64,
.powerpc64,
.powerpc64le,
.mips64,
.mips64el,
.sparc64,
- => 8,
+ => return switch (target.ofmt) {
+ .c => 16,
+ else => 8,
+ },
// Even LLVMABIAlignmentOfType(i128) agrees on these targets.
.aarch64,
.aarch64_be,
.aarch64_32,
+ .riscv64,
.bpfel,
.bpfeb,
.nvptx,