Browse Source

* fixed WebAssembly code generation for not(cbool64)

Nikolay Nikolov 3 years ago
parent
commit
d2726c2406
1 changed files with 3 additions and 2 deletions
  1. 3 2
      compiler/wasm32/hlcgcpu.pas

+ 3 - 2
compiler/wasm32/hlcgcpu.pas

@@ -571,14 +571,15 @@ implementation
               end
               end
             else if (op=OP_NOT) and is_cbool(size) then
             else if (op=OP_NOT) and is_cbool(size) then
               begin
               begin
+                list.concat(taicpu.op_none(a_i64_eqz));
                 current_asmdata.CurrAsmList.Concat(taicpu.op_functype(a_if,TWasmFuncType.Create([],[wbt_i64])));
                 current_asmdata.CurrAsmList.Concat(taicpu.op_functype(a_if,TWasmFuncType.Create([],[wbt_i64])));
                 incblock;
                 incblock;
                 decstack(current_asmdata.CurrAsmList,1);
                 decstack(current_asmdata.CurrAsmList,1);
-                current_asmdata.CurrAsmList.Concat( taicpu.op_const(a_i64_const, 0) );
+                current_asmdata.CurrAsmList.Concat( taicpu.op_const(a_i64_const, -1) );
                 incstack(current_asmdata.CurrAsmList,1);
                 incstack(current_asmdata.CurrAsmList,1);
                 current_asmdata.CurrAsmList.Concat( taicpu.op_none(a_else) );
                 current_asmdata.CurrAsmList.Concat( taicpu.op_none(a_else) );
                 decstack(current_asmdata.CurrAsmList,1);
                 decstack(current_asmdata.CurrAsmList,1);
-                current_asmdata.CurrAsmList.Concat( taicpu.op_const(a_i64_const, -1) );
+                current_asmdata.CurrAsmList.Concat( taicpu.op_const(a_i64_const, 0) );
                 incstack(current_asmdata.CurrAsmList,1);
                 incstack(current_asmdata.CurrAsmList,1);
                 current_asmdata.CurrAsmList.concat(taicpu.op_none(a_end_if));
                 current_asmdata.CurrAsmList.concat(taicpu.op_none(a_end_if));
                 thlcgwasm(hlcg).decblock;
                 thlcgwasm(hlcg).decblock;