Fix float argument handling for riscv32 ilp32d (#2871)

This commit is contained in:
Huang Qi 2023-12-06 11:30:07 +08:00 committed by GitHub
parent 47993ec72d
commit 49cd2e011b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4023,16 +4023,14 @@ wasm_runtime_invoke_native(WASMExecEnv *exec_env, void *func_ptr,
if (n_stacks & 1) if (n_stacks & 1)
n_stacks++; n_stacks++;
if (func_type->types[i] == VALUE_TYPE_F32) { if (func_type->types[i] == VALUE_TYPE_F32) {
*(float32 *)&stacks[n_stacks] = *(float32 *)argv_src++; *(float32 *)&stacks[n_stacks++] =
/* NaN boxing, the upper bits of a valid NaN-boxed *(float32 *)argv_src++;
value must be all 1s. */
stacks[n_stacks + 1] = 0xFFFFFFFF;
} }
else { else {
*(float64 *)&stacks[n_stacks] = *(float64 *)argv_src; *(float64 *)&stacks[n_stacks] = *(float64 *)argv_src;
argv_src += 2; argv_src += 2;
n_stacks += 2;
} }
n_stacks += 2;
} }
break; break;
} }