Browse Source

* loadord2reg doesn't generate any "movl %reg1,%reg1" anymore

Jonas Maebe 25 years ago
parent
commit
ac7de270ca
1 changed files with 10 additions and 6 deletions
  1. 10 6
      compiler/cgai386.pas

+ 10 - 6
compiler/cgai386.pas

@@ -2499,6 +2499,7 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
         r:Preference;
 
     begin
+        tai := nil;
         case location.loc of
             LOC_REGISTER,LOC_CREGISTER:
                 begin
@@ -2511,10 +2512,9 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
                             tai:=new(paicpu,op_reg_reg(A_MOVZX,S_WL,location.register,destreg));
                         s16bit:
                             tai:=new(paicpu,op_reg_reg(A_MOVSX,S_WL,location.register,destreg));
-                        u32bit:
-                            tai:=new(paicpu,op_reg_reg(A_MOV,S_L,location.register,destreg));
-                        s32bit:
-                            tai:=new(paicpu,op_reg_reg(A_MOV,S_L,location.register,destreg));
+                        u32bit,s32bit:
+                            if location.register <> destreg then
+                              tai:=new(paicpu,op_reg_reg(A_MOV,S_L,location.register,destreg));
                     end;
                     if delloc then
                         ungetregister(location.register);
@@ -2548,7 +2548,8 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
             else
                 internalerror(6);
         end;
-        exprasmlist^.concat(tai);
+        if assigned(tai) then
+          exprasmlist^.concat(tai);
     end;
 
     { if necessary ESI is reloaded after a call}
@@ -3968,7 +3969,10 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
 end.
 {
   $Log$
-  Revision 1.107  2000-06-05 20:39:05  pierre
+  Revision 1.108  2000-06-10 17:31:42  jonas
+    * loadord2reg doesn't generate any "movl %reg1,%reg1" anymore
+
+  Revision 1.107  2000/06/05 20:39:05  pierre
    * fix for inline bug
 
   Revision 1.106  2000/05/26 20:16:00  jonas