mirror of
https://github.com/ziglang/zig.git
synced 2025-12-26 08:03:08 +00:00
Merge pull request #12641 from Luukdegram/wasm-c-types
stage2: fix size of c_longdouble for Wasm target
This commit is contained in:
commit
d2d42cf7ba
@ -6593,6 +6593,8 @@ pub const CType = enum {
|
||||
.powerpcle,
|
||||
.powerpc64,
|
||||
.powerpc64le,
|
||||
.wasm32,
|
||||
.wasm64,
|
||||
=> return 128,
|
||||
|
||||
else => return 64,
|
||||
@ -6641,6 +6643,8 @@ pub const CType = enum {
|
||||
.powerpcle,
|
||||
.powerpc64,
|
||||
.powerpc64le,
|
||||
.wasm32,
|
||||
.wasm64,
|
||||
=> return 128,
|
||||
|
||||
else => return 64,
|
||||
|
||||
@ -1430,6 +1430,7 @@ test "coerce between pointers of compatible differently-named floats" {
|
||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||
|
||||
if (builtin.os.tag == .windows) {
|
||||
// https://github.com/ziglang/zig/issues/12396
|
||||
|
||||
@ -33,6 +33,7 @@ void zig_five_integers(int32_t, int32_t, int32_t, int32_t, int32_t);
|
||||
|
||||
void zig_f32(float);
|
||||
void zig_f64(double);
|
||||
void zig_longdouble(long double);
|
||||
void zig_five_floats(float, float, float, float, float);
|
||||
|
||||
bool zig_ret_bool();
|
||||
@ -157,6 +158,7 @@ void run_c_tests(void) {
|
||||
|
||||
zig_f32(12.34f);
|
||||
zig_f64(56.78);
|
||||
zig_longdouble(12.34l);
|
||||
zig_five_floats(1.0f, 2.0f, 3.0f, 4.0f, 5.0f);
|
||||
|
||||
zig_ptr((void*)0xdeadbeefL);
|
||||
@ -271,6 +273,10 @@ void c_f64(double x) {
|
||||
assert_or_panic(x == 56.78);
|
||||
}
|
||||
|
||||
void c_long_double(long double x) {
|
||||
assert_or_panic(x == 12.34l);
|
||||
}
|
||||
|
||||
void c_ptr(void *x) {
|
||||
assert_or_panic(x == (void*)0xdeadbeefL);
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
const std = @import("std");
|
||||
const builtin = @import("builtin");
|
||||
const print = std.debug.print;
|
||||
const expect = std.testing.expect;
|
||||
|
||||
@ -89,6 +90,7 @@ export fn zig_struct_u128(a: U128) void {
|
||||
|
||||
extern fn c_f32(f32) void;
|
||||
extern fn c_f64(f64) void;
|
||||
extern fn c_long_double(c_longdouble) void;
|
||||
|
||||
// On windows x64, the first 4 are passed via registers, others on the stack.
|
||||
extern fn c_five_floats(f32, f32, f32, f32, f32) void;
|
||||
@ -107,12 +109,21 @@ test "C ABI floats" {
|
||||
c_five_floats(1.0, 2.0, 3.0, 4.0, 5.0);
|
||||
}
|
||||
|
||||
test "C ABI long double" {
|
||||
if (!builtin.cpu.arch.isWasm()) return error.SkipZigTest;
|
||||
c_long_double(12.34);
|
||||
}
|
||||
|
||||
export fn zig_f32(x: f32) void {
|
||||
expect(x == 12.34) catch @panic("test failure: zig_f32");
|
||||
}
|
||||
export fn zig_f64(x: f64) void {
|
||||
expect(x == 56.78) catch @panic("test failure: zig_f64");
|
||||
}
|
||||
export fn zig_longdouble(x: c_longdouble) void {
|
||||
if (!builtin.cpu.arch.isWasm()) return; // waiting for #1481
|
||||
expect(x == 12.34) catch @panic("test failure: zig_longdouble");
|
||||
}
|
||||
|
||||
extern fn c_ptr(*anyopaque) void;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user