Browse Source

* load left properly into a register in tx86addnode.second_addordinal, resolves #36287

git-svn-id: trunk@43449 -
florian 5 years ago
parent
commit
5f3050961f
1 changed files with 2 additions and 7 deletions
  1. 2 7
      compiler/x86/nx86add.pas

+ 2 - 7
compiler/x86/nx86add.pas

@@ -1520,16 +1520,11 @@ unit nx86add;
          end
          end
        else
        else
          begin
          begin
-           { at least one location is a register, re-use it, so we can try two operand opcodes }
+           { at least one location should be a register, if yes, try to re-use it, so we can try two operand opcodes }
            if left.location.loc<>LOC_REGISTER then
            if left.location.loc<>LOC_REGISTER then
               begin
               begin
                 if right.location.loc<>LOC_REGISTER then
                 if right.location.loc<>LOC_REGISTER then
-                  begin
-                    tmpreg:=cg.getintregister(current_asmdata.CurrAsmList,opsize);
-                    cg.a_load_loc_reg(current_asmdata.CurrAsmList,opsize,left.location,tmpreg);
-                    location_reset(left.location,LOC_REGISTER,opsize);
-                    left.location.register:=tmpreg;
-                  end
+                  hlcg.location_force_reg(current_asmdata.CurrAsmList,left.location,left.resultdef,left.resultdef,false)
                 else
                 else
                   begin
                   begin
                     location_swap(left.location,right.location);
                     location_swap(left.location,right.location);