From 7fd8b9c55ba3b3963eb3b56a66023b1b4b75845d Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Sat, 10 Aug 2024 23:10:19 +0200 Subject: [PATCH] re-enable some wasm things in runtime No idea why the floattidf procs are bodged to return 0, does somebody know? I have just enabled the original codepath, if nobody knows I suggest just enabling it and see if we get complaints, it works on all wasm stuff I tried. The linkage being set to "internal" instead of "strong" is actually causing problems in my projects which is what prompted looking at this in the first place, some of these functions were actually needed but not added/used because they had internal linkage. This only happens on bigger projects (or just when using f16?). Unfortunately `git blame` gave me this generic commit: https://github.com/odin-lang/Odin/commit/94bad4d7861c78b9e7191ec0c3114861a1536d5c#diff-fb9f42022cb95efa59d16813546b8cb310234428c85edfabf09b1425c9dc46af --- base/runtime/internal.odin | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/base/runtime/internal.odin b/base/runtime/internal.odin index 1a97ade09..1f85fb569 100644 --- a/base/runtime/internal.odin +++ b/base/runtime/internal.odin @@ -8,10 +8,9 @@ IS_WASM :: ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 @(private) RUNTIME_LINKAGE :: "strong" when ( - (ODIN_USE_SEPARATE_MODULES || + ODIN_USE_SEPARATE_MODULES || ODIN_BUILD_MODE == .Dynamic || - !ODIN_NO_CRT) && - !IS_WASM) else "internal" + !ODIN_NO_CRT) else "internal" RUNTIME_REQUIRE :: false // !ODIN_TILDE @(private) @@ -879,9 +878,6 @@ extendhfsf2 :: proc "c" (value: __float16) -> f32 { @(link_name="__floattidf", linkage=RUNTIME_LINKAGE, require=RUNTIME_REQUIRE) floattidf :: proc "c" (a: i128) -> f64 { -when IS_WASM { - return 0 -} else { DBL_MANT_DIG :: 53 if a == 0 { return 0.0 @@ -921,14 +917,10 @@ when IS_WASM { fb[0] = u32(a) // mantissa-low return transmute(f64)fb } -} @(link_name="__floattidf_unsigned", linkage=RUNTIME_LINKAGE, require=RUNTIME_REQUIRE) floattidf_unsigned :: proc "c" (a: u128) -> f64 { -when IS_WASM { - return 0 -} else { DBL_MANT_DIG :: 53 if a == 0 { return 0.0 @@ -966,7 +958,6 @@ when IS_WASM { fb[0] = u32(a) // mantissa-low return transmute(f64)fb } -}