diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-08-18 20:34:36 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-08-18 20:34:36 -0700 |
| commit | cee82c7ce4fb8beb39042f9dba16a1a391803fa4 (patch) | |
| tree | ea2a12b10b3742acc3f343a36bf14a8c34246776 /lib/std | |
| parent | b975f7a56fec9e0e7aca9832282bc772c743d731 (diff) | |
| download | zig-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.zig | 9 |
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, |
