Open
Description
Given WASM
0000024: 44 ; f64.const
0000025: 0000 0000 0000 e0c1 ; f64 literal
(module
(func (export "addTwo") (result f64)
f64.const -0x1p+31
)
)
and wasm2c conversion output
//wasm2c test.wasm
f64 w2c__addTwo_0(w2c_* instance) {
FUNC_PROLOGUE;
f64 var_d0;
var_d0 = -2147483648;
FUNC_EPILOGUE;
return var_d0;
}
there is slight discrepancy in output of different compilers.
Clang & GCC correctly output -2147483648.000000
MSVC throws warning (error with /sdl) and outputs 2147483648.000000
(notice absence of negative mark)
https://godbolt.org/z/MrjMzdeKE
While the conversion output is likely correct according to C spec (at least Clang and GCC are not screaming with -Wall), it's very inconvenient for Windows users to do these fixups manually.
Proposal is to use alternative notation
var_d0 = -2147483648.0; //Notice additional decimal
which makes all tested compilers happy and correct.
https://godbolt.org/z/5sE4adbYd
Metadata
Metadata
Assignees
Labels
No labels