Browse Source

* fixed left_and_right_must_be_fpureg

git-svn-id: trunk@3129 -
florian 19 years ago
parent
commit
a8c2419d8a
1 changed files with 5 additions and 17 deletions
  1. 5 17
      compiler/x86/nx86add.pas

+ 5 - 17
compiler/x86/nx86add.pas

@@ -215,28 +215,16 @@ unit nx86add;
       begin
         if (right.location.loc<>LOC_FPUREGISTER) then
          begin
-           cg.a_loadfpu_loc_reg(current_asmdata.CurrAsmList,right.location,NR_ST);
-           if (right.location.loc <> LOC_CFPUREGISTER) then
-             location_freetemp(current_asmdata.CurrAsmList,left.location);
+           location_force_fpureg(current_asmdata.CurrAsmList,right.location,false);
            if (left.location.loc<>LOC_FPUREGISTER) then
-            begin
-              cg.a_loadfpu_loc_reg(current_asmdata.CurrAsmList,left.location,NR_ST);
-              if (left.location.loc <> LOC_CFPUREGISTER) then
-                location_freetemp(current_asmdata.CurrAsmList,left.location);
-            end
+             location_force_fpureg(current_asmdata.CurrAsmList,left.location,false)
            else
-            begin
-              { left was on the stack => swap }
-              toggleflag(nf_swaped);
-            end;
+             { left was on the stack => swap }
+             toggleflag(nf_swaped);
          end
         { the nominator in st0 }
         else if (left.location.loc<>LOC_FPUREGISTER) then
-         begin
-           cg.a_loadfpu_loc_reg(current_asmdata.CurrAsmList,left.location,NR_ST);
-           if (left.location.loc <> LOC_CFPUREGISTER) then
-             location_freetemp(current_asmdata.CurrAsmList,left.location);
-         end
+          location_force_fpureg(current_asmdata.CurrAsmList,left.location,false)
         else
          begin
            { fpu operands are always in the wrong order on the stack }