Răsfoiți Sursa

+ support for "exotic" locations in load_left_right()

git-svn-id: trunk@3556 -
Jonas Maebe 19 ani în urmă
părinte
comite
a3cb1b1523
2 a modificat fișierele cu 8 adăugiri și 0 ștergeri
  1. 4 0
      compiler/powerpc/nppcadd.pas
  2. 4 0
      compiler/powerpc64/nppcadd.pas

+ 4 - 0
compiler/powerpc/nppcadd.pas

@@ -111,6 +111,8 @@ interface
       procedure load_node(var n: tnode);
         begin
           case n.location.loc of
+            LOC_CREGISTER:
+              ;
             LOC_REGISTER:
               if (not cmpop) and
                  ((nodetype <> muln) or
@@ -147,6 +149,8 @@ interface
                       end;
                   end;
               end;
+            else
+              location_force_reg(current_asmdata.CurrAsmList,n.location,def_cgsize(n.resulttype.def),false);
           end;
         end;
 

+ 4 - 0
compiler/powerpc64/nppcadd.pas

@@ -99,6 +99,8 @@ procedure tppcaddnode.load_left_right(cmpop, load_constants: boolean);
   procedure load_node(var n: tnode);
   begin
     case n.location.loc of
+      LOC_CREGISTER:
+        ;
       LOC_REGISTER:
         if not cmpop then
         begin
@@ -123,6 +125,8 @@ procedure tppcaddnode.load_left_right(cmpop, load_constants: boolean);
               location.register := n.location.register;
           end;
         end;
+      else
+        location_force_reg(current_asmdata.CurrAsmList,n.location,def_cgsize(n.resulttype.def),false);
     end;
   end;