authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-03-05 07:35:32+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-04-04 06:08:10+02:00
log4c5c5bcd917fe718609360793a8883fbc77f1885
tree94f1969b3adc793e6c0e6937a4fa68fba89f8c40
parent3d1cfdb3658e4d90189d9cf0be12a5a29a4c1e21
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

llvm: Fix i128 alignment for various targets.

This ABI bug was fixed in LLVM 20.

1 files changed, 16 insertions(+), 16 deletions(-)

src/codegen/llvm.zig+16-16
......@@ -356,12 +356,12 @@ pub fn dataLayout(target: std.Target) []const u8 {
356356 .mips => "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64",
357357 .mipsel => "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64",
358358 .mips64 => switch (target.abi) {
359 .gnuabin32, .muslabin32 => "E-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128",
360 else => "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128",
359 .gnuabin32, .muslabin32 => "E-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128",
360 else => "E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128",
361361 },
362362 .mips64el => switch (target.abi) {
363 .gnuabin32, .muslabin32 => "e-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128",
364 else => "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128",
363 .gnuabin32, .muslabin32 => "e-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128",
364 else => "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128",
365365 },
366366 .m68k => "E-m:e-p:32:16:32-i8:8:8-i16:16:16-i32:16:32-n8:16:32-a:0:16-S16",
367367 .powerpc => if (target.os.tag == .aix)
......@@ -370,17 +370,17 @@ pub fn dataLayout(target: std.Target) []const u8 {
370370 "E-m:e-p:32:32-Fn32-i64:64-n32",
371371 .powerpcle => "e-m:e-p:32:32-Fn32-i64:64-n32",
372372 .powerpc64 => switch (target.os.tag) {
373 .aix => "E-m:a-Fi64-i64:64-n32:64-S128-v256:256:256-v512:512:512",
373 .aix => "E-m:a-Fi64-i64:64-i128:128-n32:64-S128-v256:256:256-v512:512:512",
374374 .linux => if (target.abi.isMusl())
375 "E-m:e-Fn32-i64:64-n32:64-S128-v256:256:256-v512:512:512"
375 "E-m:e-Fn32-i64:64-i128:128-n32:64-S128-v256:256:256-v512:512:512"
376376 else
377 "E-m:e-Fi64-i64:64-n32:64-S128-v256:256:256-v512:512:512",
378 .ps3 => "E-m:e-p:32:32-Fi64-i64:64-n32:64",
377 "E-m:e-Fi64-i64:64-i128:128-n32:64-S128-v256:256:256-v512:512:512",
378 .ps3 => "E-m:e-p:32:32-Fi64-i64:64-i128:128-n32:64",
379379 else => if (target.os.tag == .openbsd or
380380 (target.os.tag == .freebsd and target.os.version_range.semver.isAtLeast(.{ .major = 13, .minor = 0, .patch = 0 }) orelse false))
381 "E-m:e-Fn32-i64:64-n32:64"
381 "E-m:e-Fn32-i64:64-i128:128-n32:64"
382382 else
383 "E-m:e-Fi64-i64:64-n32:64",
383 "E-m:e-Fi64-i64:64-i128:128-n32:64",
384384 },
385385 .powerpc64le => if (target.os.tag == .linux)
386386 "e-m:e-Fn32-i64:64-n32:64-S128-v256:256:256-v512:512:512"
......@@ -397,8 +397,8 @@ pub fn dataLayout(target: std.Target) []const u8 {
397397 "e-m:e-p:64:64-i64:64-i128:128-n32:64-S64"
398398 else
399399 "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128",
400 .sparc => "E-m:e-p:32:32-i64:64-f128:64-n32-S64",
401 .sparc64 => "E-m:e-i64:64-n32:64-S128",
400 .sparc => "E-m:e-p:32:32-i64:64-i128:128-f128:64-n32-S64",
401 .sparc64 => "E-m:e-i64:64-i128:128-n32:64-S128",
402402 .s390x => if (target.os.tag == .zos)
403403 "E-m:l-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"
404404 else
......@@ -446,13 +446,13 @@ pub fn dataLayout(target: std.Target) []const u8 {
446446 .spirv32 => "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-G1",
447447 .spirv64 => "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-G1",
448448 .wasm32 => if (target.os.tag == .emscripten)
449 "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-f128:64-n32:64-S128-ni:1:10:20"
449 "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-f128:64-n32:64-S128-ni:1:10:20"
450450 else
451 "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20",
451 "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-n32:64-S128-ni:1:10:20",
452452 .wasm64 => if (target.os.tag == .emscripten)
453 "e-m:e-p:64:64-p10:8:8-p20:8:8-i64:64-f128:64-n32:64-S128-ni:1:10:20"
453 "e-m:e-p:64:64-p10:8:8-p20:8:8-i64:64-i128:128-f128:64-n32:64-S128-ni:1:10:20"
454454 else
455 "e-m:e-p:64:64-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20",
455 "e-m:e-p:64:64-p10:8:8-p20:8:8-i64:64-i128:128-n32:64-S128-ni:1:10:20",
456456 .ve => "e-m:e-i64:64-n32:64-S128-v64:64:64-v128:64:64-v256:64:64-v512:64:64-v1024:64:64-v2048:64:64-v4096:64:64-v8192:64:64-v16384:64:64",
457457 .csky => "e-m:e-S32-p:32:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:32:32-v128:32:32-a:0:32-Fi32-n32",
458458 .loongarch32 => "e-m:e-p:32:32-i64:64-n32-S128",