| ... | ... | @@ -11,7 +11,7 @@ const print = std.debug.print; |
| 11 | 11 | const expect = std.testing.expect; |
| 12 | 12 | const expectEqual = std.testing.expectEqual; |
| 13 | 13 | const have_i128 = builtin.cpu.arch != .x86 and !builtin.cpu.arch.isArm() and |
| 14 | | !builtin.cpu.arch.isMIPS() and !builtin.cpu.arch.isPowerPC32(); |
| 14 | !builtin.cpu.arch.isMIPS() and !builtin.cpu.arch.isPowerPC32() and builtin.cpu.arch != .riscv32; |
| 15 | 15 | |
| 16 | 16 | const have_f128 = builtin.cpu.arch.isWasm() or (builtin.cpu.arch.isX86() and !builtin.os.tag.isDarwin()); |
| 17 | 17 | const have_f80 = builtin.cpu.arch.isX86(); |
| ... | ... | @@ -49,6 +49,8 @@ export fn zig_five_integers(a: i32, b: i32, c: i32, d: i32, e: i32) void { |
| 49 | 49 | } |
| 50 | 50 | |
| 51 | 51 | test "C ABI integers" { |
| 52 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 53 | |
| 52 | 54 | c_u8(0xff); |
| 53 | 55 | c_u16(0xfffe); |
| 54 | 56 | c_u32(0xfffffffd); |
| ... | ... | @@ -383,6 +385,8 @@ extern fn c_struct_f64(Struct_f64) void; |
| 383 | 385 | test "C ABI struct f64" { |
| 384 | 386 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 385 | 387 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 388 | if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest; |
| 389 | if (builtin.cpu.arch == .riscv32) return error.SkipZigTest; |
| 386 | 390 | |
| 387 | 391 | const s = c_ret_struct_f64(); |
| 388 | 392 | try expect(s.a == 2.5); |
| ... | ... | @@ -411,6 +415,8 @@ extern fn c_struct_f32f32_f32(Struct_f32f32_f32) void; |
| 411 | 415 | test "C ABI struct {f32,f32} f32" { |
| 412 | 416 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 413 | 417 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 418 | if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest; |
| 419 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 414 | 420 | |
| 415 | 421 | const s = c_ret_struct_f32f32_f32(); |
| 416 | 422 | try expect(s.a.b == 1.0); |
| ... | ... | @@ -441,6 +447,8 @@ extern fn c_struct_f32_f32f32(Struct_f32_f32f32) void; |
| 441 | 447 | test "C ABI struct f32 {f32,f32}" { |
| 442 | 448 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 443 | 449 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 450 | if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest; |
| 451 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 444 | 452 | |
| 445 | 453 | const s = c_ret_struct_f32_f32f32(); |
| 446 | 454 | try expect(s.a == 1.0); |
| ... | ... | @@ -476,6 +484,7 @@ extern fn c_struct_u32_union_u32_u32u32(Struct_u32_Union_u32_u32u32) void; |
| 476 | 484 | test "C ABI struct{u32,union{u32,struct{u32,u32}}}" { |
| 477 | 485 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 478 | 486 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 487 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 479 | 488 | |
| 480 | 489 | const s = c_ret_struct_u32_union_u32_u32u32(); |
| 481 | 490 | try expect(s.a == 1); |
| ... | ... | @@ -494,6 +503,8 @@ extern fn c_struct_i32_i32(Struct_i32_i32) void; |
| 494 | 503 | test "C ABI struct i32 i32" { |
| 495 | 504 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 496 | 505 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 506 | if (builtin.cpu.arch == .riscv32) return error.SkipZigTest; |
| 507 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 497 | 508 | |
| 498 | 509 | const s: Struct_i32_i32 = .{ |
| 499 | 510 | .a = 1, |
| ... | ... | @@ -523,7 +534,8 @@ extern fn c_big_struct(BigStruct) void; |
| 523 | 534 | |
| 524 | 535 | test "C ABI big struct" { |
| 525 | 536 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 526 | | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 537 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 538 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 527 | 539 | |
| 528 | 540 | const s = BigStruct{ |
| 529 | 541 | .a = 1, |
| ... | ... | @@ -550,6 +562,7 @@ extern fn c_big_union(BigUnion) void; |
| 550 | 562 | |
| 551 | 563 | test "C ABI big union" { |
| 552 | 564 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 565 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 553 | 566 | |
| 554 | 567 | const x = BigUnion{ |
| 555 | 568 | .a = BigStruct{ |
| ... | ... | @@ -583,6 +596,7 @@ extern fn c_ret_med_struct_mixed() MedStructMixed; |
| 583 | 596 | test "C ABI medium struct of ints and floats" { |
| 584 | 597 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 585 | 598 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 599 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 586 | 600 | |
| 587 | 601 | const s = MedStructMixed{ |
| 588 | 602 | .a = 1234, |
| ... | ... | @@ -615,6 +629,8 @@ test "C ABI small struct of ints" { |
| 615 | 629 | if (builtin.cpu.arch == .x86) return error.SkipZigTest; |
| 616 | 630 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 617 | 631 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 632 | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; |
| 633 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 618 | 634 | |
| 619 | 635 | const s = SmallStructInts{ |
| 620 | 636 | .a = 1, |
| ... | ... | @@ -648,6 +664,7 @@ extern fn c_ret_med_struct_ints() MedStructInts; |
| 648 | 664 | test "C ABI medium struct of ints" { |
| 649 | 665 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 650 | 666 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 667 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 651 | 668 | |
| 652 | 669 | const s = MedStructInts{ |
| 653 | 670 | .x = 1, |
| ... | ... | @@ -726,6 +743,7 @@ test "C ABI split struct of ints" { |
| 726 | 743 | if (builtin.cpu.arch == .x86) return error.SkipZigTest; |
| 727 | 744 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 728 | 745 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 746 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 729 | 747 | |
| 730 | 748 | const s = SplitStructInt{ |
| 731 | 749 | .a = 1234, |
| ... | ... | @@ -753,6 +771,7 @@ test "C ABI split struct of ints and floats" { |
| 753 | 771 | if (builtin.cpu.arch == .x86) return error.SkipZigTest; |
| 754 | 772 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 755 | 773 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 774 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 756 | 775 | |
| 757 | 776 | const s = SplitStructMixed{ |
| 758 | 777 | .a = 1234, |
| ... | ... | @@ -779,7 +798,8 @@ extern fn c_multiple_struct_floats(FloatRect, FloatRect) void; |
| 779 | 798 | |
| 780 | 799 | test "C ABI sret and byval together" { |
| 781 | 800 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 782 | | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 801 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 802 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 783 | 803 | |
| 784 | 804 | const s = BigStruct{ |
| 785 | 805 | .a = 1, |
| ... | ... | @@ -832,6 +852,7 @@ extern fn c_big_struct_floats(Vector5) void; |
| 832 | 852 | test "C ABI structs of floats as parameter" { |
| 833 | 853 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 834 | 854 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 855 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 835 | 856 | |
| 836 | 857 | const v3 = Vector3{ |
| 837 | 858 | .x = 3.0, |
| ... | ... | @@ -871,6 +892,8 @@ export fn zig_multiple_struct_ints(x: Rect, y: Rect) void { |
| 871 | 892 | |
| 872 | 893 | test "C ABI structs of ints as multiple parameters" { |
| 873 | 894 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 895 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 896 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 874 | 897 | |
| 875 | 898 | const r1 = Rect{ |
| 876 | 899 | .left = 1, |
| ... | ... | @@ -908,6 +931,7 @@ export fn zig_multiple_struct_floats(x: FloatRect, y: FloatRect) void { |
| 908 | 931 | test "C ABI structs of floats as multiple parameters" { |
| 909 | 932 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 910 | 933 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 934 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 911 | 935 | |
| 912 | 936 | const r1 = FloatRect{ |
| 913 | 937 | .left = 1, |
| ... | ... | @@ -1021,6 +1045,7 @@ test "Struct with array as padding." { |
| 1021 | 1045 | if (builtin.cpu.arch == .x86) return error.SkipZigTest; |
| 1022 | 1046 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 1023 | 1047 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 1048 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 1024 | 1049 | |
| 1025 | 1050 | c_struct_with_array(.{ .a = 1, .padding = undefined, .b = 2 }); |
| 1026 | 1051 | |
| ... | ... | @@ -1046,6 +1071,7 @@ extern fn c_ret_float_array_struct() FloatArrayStruct; |
| 1046 | 1071 | test "Float array like struct" { |
| 1047 | 1072 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 1048 | 1073 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 1074 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 1049 | 1075 | |
| 1050 | 1076 | c_float_array_struct(.{ |
| 1051 | 1077 | .origin = .{ |
| ... | ... | @@ -1073,6 +1099,7 @@ extern fn c_ret_small_vec() SmallVec; |
| 1073 | 1099 | test "small simd vector" { |
| 1074 | 1100 | if (builtin.cpu.arch == .x86) return error.SkipZigTest; |
| 1075 | 1101 | if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest; |
| 1102 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 1076 | 1103 | |
| 1077 | 1104 | c_small_vec(.{ 1, 2 }); |
| 1078 | 1105 | |
| ... | ... | @@ -1134,7 +1161,8 @@ extern fn c_ret_vector_2_float() Vector2Float; |
| 1134 | 1161 | extern fn c_ret_vector_4_float() Vector4Float; |
| 1135 | 1162 | |
| 1136 | 1163 | test "float simd vectors" { |
| 1137 | | if (builtin.cpu.arch == .powerpc or builtin.cpu.arch == .powerpc64le) return error.SkipZigTest; |
| 1164 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 1165 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 1138 | 1166 | |
| 1139 | 1167 | { |
| 1140 | 1168 | c_vector_2_float(.{ 1.0, 2.0 }); |
| ... | ... | @@ -5419,6 +5447,7 @@ test "C ABI pointer sized float struct" { |
| 5419 | 5447 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5420 | 5448 | if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest; |
| 5421 | 5449 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 5450 | if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest; |
| 5422 | 5451 | |
| 5423 | 5452 | c_ptr_size_float_struct(.{ .x = 1, .y = 2 }); |
| 5424 | 5453 | |
| ... | ... | @@ -5441,24 +5470,28 @@ test "DC: Zig passes to C" { |
| 5441 | 5470 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5442 | 5471 | if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest; |
| 5443 | 5472 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5473 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5444 | 5474 | try expectOk(c_assert_DC(.{ .v1 = -0.25, .v2 = 15 })); |
| 5445 | 5475 | } |
| 5446 | 5476 | test "DC: Zig returns to C" { |
| 5447 | | if (builtin.cpu.arch.isMIPS64() and builtin.mode != .Debug) return error.SkipZigTest; |
| 5477 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5448 | 5478 | if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest; |
| 5449 | 5479 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5480 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5450 | 5481 | try expectOk(c_assert_ret_DC()); |
| 5451 | 5482 | } |
| 5452 | 5483 | test "DC: C passes to Zig" { |
| 5453 | 5484 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5454 | 5485 | if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest; |
| 5455 | 5486 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5487 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5456 | 5488 | try expectOk(c_send_DC()); |
| 5457 | 5489 | } |
| 5458 | 5490 | test "DC: C returns to Zig" { |
| 5459 | | if (builtin.cpu.arch.isMIPS64() and builtin.mode != .Debug) return error.SkipZigTest; |
| 5491 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5460 | 5492 | if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest; |
| 5461 | 5493 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5494 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5462 | 5495 | try expectEqual(DC{ .v1 = -0.25, .v2 = 15 }, c_ret_DC()); |
| 5463 | 5496 | } |
| 5464 | 5497 | |
| ... | ... | @@ -5484,11 +5517,13 @@ test "CFF: Zig passes to C" { |
| 5484 | 5517 | if (builtin.target.cpu.arch == .x86) return error.SkipZigTest; |
| 5485 | 5518 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5486 | 5519 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5520 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5487 | 5521 | try expectOk(c_assert_CFF(.{ .v1 = 39, .v2 = 0.875, .v3 = 1.0 })); |
| 5488 | 5522 | } |
| 5489 | 5523 | test "CFF: Zig returns to C" { |
| 5490 | 5524 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5491 | 5525 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5526 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5492 | 5527 | try expectOk(c_assert_ret_CFF()); |
| 5493 | 5528 | } |
| 5494 | 5529 | test "CFF: C passes to Zig" { |
| ... | ... | @@ -5497,6 +5532,7 @@ test "CFF: C passes to Zig" { |
| 5497 | 5532 | if (builtin.cpu.arch == .aarch64 and builtin.mode != .Debug) return error.SkipZigTest; |
| 5498 | 5533 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5499 | 5534 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5535 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5500 | 5536 | |
| 5501 | 5537 | try expectOk(c_send_CFF()); |
| 5502 | 5538 | } |
| ... | ... | @@ -5505,6 +5541,7 @@ test "CFF: C returns to Zig" { |
| 5505 | 5541 | if (builtin.cpu.arch.isRISCV() and builtin.mode != .Debug) return error.SkipZigTest; |
| 5506 | 5542 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5507 | 5543 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5544 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5508 | 5545 | try expectEqual(CFF{ .v1 = 39, .v2 = 0.875, .v3 = 1.0 }, c_ret_CFF()); |
| 5509 | 5546 | } |
| 5510 | 5547 | pub extern fn c_assert_CFF(lv: CFF) c_int; |
| ... | ... | @@ -5529,21 +5566,25 @@ const PD = extern struct { v1: ?*anyopaque, v2: f64 }; |
| 5529 | 5566 | test "PD: Zig passes to C" { |
| 5530 | 5567 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5531 | 5568 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5569 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5532 | 5570 | try expectOk(c_assert_PD(.{ .v1 = null, .v2 = 0.5 })); |
| 5533 | 5571 | } |
| 5534 | 5572 | test "PD: Zig returns to C" { |
| 5535 | | if (builtin.cpu.arch.isMIPS64() and builtin.mode != .Debug) return error.SkipZigTest; |
| 5573 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5536 | 5574 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5575 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5537 | 5576 | try expectOk(c_assert_ret_PD()); |
| 5538 | 5577 | } |
| 5539 | 5578 | test "PD: C passes to Zig" { |
| 5540 | 5579 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5541 | 5580 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5581 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5542 | 5582 | try expectOk(c_send_PD()); |
| 5543 | 5583 | } |
| 5544 | 5584 | test "PD: C returns to Zig" { |
| 5545 | | if (builtin.cpu.arch.isMIPS64() and builtin.mode != .Debug) return error.SkipZigTest; |
| 5585 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5546 | 5586 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5587 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5547 | 5588 | try expectEqual(PD{ .v1 = null, .v2 = 0.5 }, c_ret_PD()); |
| 5548 | 5589 | } |
| 5549 | 5590 | pub extern fn c_assert_PD(lv: PD) c_int; |
| ... | ... | @@ -5576,6 +5617,7 @@ extern fn c_modify_by_ref_param(ByRef) ByRef; |
| 5576 | 5617 | |
| 5577 | 5618 | test "C function modifies by ref param" { |
| 5578 | 5619 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 5620 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5579 | 5621 | |
| 5580 | 5622 | const res = c_modify_by_ref_param(.{ .val = 1, .arr = undefined }); |
| 5581 | 5623 | try expect(res.val == 42); |
| ... | ... | @@ -5596,8 +5638,9 @@ const ByVal = extern struct { |
| 5596 | 5638 | |
| 5597 | 5639 | extern fn c_func_ptr_byval(*anyopaque, *anyopaque, ByVal, c_ulong, *anyopaque, c_ulong) void; |
| 5598 | 5640 | test "C function that takes byval struct called via function pointer" { |
| 5599 | | if (builtin.cpu.arch.isMIPS64() and builtin.mode != .Debug) return error.SkipZigTest; |
| 5641 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5600 | 5642 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 5643 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5601 | 5644 | |
| 5602 | 5645 | var fn_ptr = &c_func_ptr_byval; |
| 5603 | 5646 | _ = &fn_ptr; |
| ... | ... | @@ -5736,6 +5779,8 @@ extern fn stdcall_coord2(Coord2, Coord2, Coord2) callconv(stdcall_callconv) Coor |
| 5736 | 5779 | test "Stdcall ABI structs" { |
| 5737 | 5780 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5738 | 5781 | if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; |
| 5782 | if (builtin.cpu.arch == .aarch64_be) return error.SkipZigTest; |
| 5783 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5739 | 5784 | |
| 5740 | 5785 | const res = stdcall_coord2( |
| 5741 | 5786 | .{ .x = 0x1111, .y = 0x2222 }, |
| ... | ... | @@ -5749,6 +5794,7 @@ test "Stdcall ABI structs" { |
| 5749 | 5794 | extern fn stdcall_big_union(BigUnion) callconv(stdcall_callconv) void; |
| 5750 | 5795 | test "Stdcall ABI big union" { |
| 5751 | 5796 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 5797 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5752 | 5798 | |
| 5753 | 5799 | const x = BigUnion{ |
| 5754 | 5800 | .a = BigStruct{ |
| ... | ... | @@ -5821,6 +5867,7 @@ const byval_tail_callsite_attr = struct { |
| 5821 | 5867 | test "byval tail callsite attribute" { |
| 5822 | 5868 | if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; |
| 5823 | 5869 | if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; |
| 5870 | if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; |
| 5824 | 5871 | |
| 5825 | 5872 | // Originally reported at https://github.com/ziglang/zig/issues/16290 |
| 5826 | 5873 | // the bug was that the extern function had the byval attribute, but |