* fixed bug in thlcgwasm.a_op_reg_reg_reg_checkoverflow that used to generate

code that fails WebAssembly validation
This commit is contained in:
Nikolay Nikolov 2024-02-27 11:59:17 +02:00
parent 492717a25c
commit 9da276b352

View File

@ -1870,21 +1870,21 @@ implementation
//todo: any operands needed?
list.concat(taicpu.op_none(a_i32_wrap_i64));
end;
a_load_stack_reg(list,s32inttype,ovloc.register);
end
else
begin
a_load_const_stack(list,s32inttype,0,R_INTREGISTER);
current_asmdata.getjumplabel(lab);
{ can be optimized by removing duplicate xor'ing to convert dst from
signed to unsigned quadrant }
list.concat(taicpu.op_none(a_block));
a_load_const_reg(list,s32inttype,0,ovloc.register);
a_cmp_reg_reg_label(list,size,OC_B,dst,src1,lab);
a_cmp_reg_reg_label(list,size,OC_B,dst,src2,lab);
a_op_const_stack(list,OP_XOR,s32inttype,1);
a_load_const_reg(list,s32inttype,1,ovloc.register);
list.concat(taicpu.op_none(a_end_block));
a_label(list,lab);
end;
a_load_stack_reg(list,s32inttype,ovloc.register);
end
else
ovloc.loc:=LOC_VOID;