Browse Source

* change "pop reg/push reg to "mov (%esp), reg" with -Ox, remove otherwise

Jonas Maebe 27 years ago
parent
commit
879b7d0288
1 changed files with 13 additions and 6 deletions
  1. 13 6
      compiler/aopt386.pas

+ 13 - 6
compiler/aopt386.pas

@@ -1229,15 +1229,19 @@ End;
                             (Pai386(hp1)^._operator=A_PUSH) and
                             (Pai386(hp1)^._operator=A_PUSH) and
                             (Pai386(hp1)^.op1t = top_reg) And
                             (Pai386(hp1)^.op1t = top_reg) And
                             (Pai386(hp1)^.op1=Pai386(p)^.op1) then
                             (Pai386(hp1)^.op1=Pai386(p)^.op1) then
-                              begin
+                           If (Not(cs_maxoptimieren in aktswitches)) Then
+                              Begin
                                 hp2:=pai(hp1^.next);
                                 hp2:=pai(hp1^.next);
                                 asml^.remove(p);
                                 asml^.remove(p);
                                 asml^.remove(hp1);
                                 asml^.remove(hp1);
                                 dispose(p,done);
                                 dispose(p,done);
                                 dispose(hp1,done);
                                 dispose(hp1,done);
                                 p:=hp2;
                                 p:=hp2;
-                                continue;
-{                                Pai386(p)^._operator := A_MOV;
+                                continue
+                              End
+                            Else
+                              Begin
+                                Pai386(p)^._operator := A_MOV;
                                 Pai386(p)^.op2 := Pai386(p)^.op1;
                                 Pai386(p)^.op2 := Pai386(p)^.op1;
                                 Pai386(p)^.opxt := top_ref + top_reg shl 4;
                                 Pai386(p)^.opxt := top_ref + top_reg shl 4;
                                 New(TmpRef);
                                 New(TmpRef);
@@ -1251,8 +1255,8 @@ End;
                                 Pai386(p)^.op1 := Pointer(TmpRef);
                                 Pai386(p)^.op1 := Pointer(TmpRef);
                                 hp1 := Pai(p^.next);
                                 hp1 := Pai(p^.next);
                                 AsmL^.Remove(hp1);
                                 AsmL^.Remove(hp1);
-                                Dispose(hp1, Done)}
-                              end;
+                                Dispose(hp1, Done)
+                              End
                        end;
                        end;
                      A_PUSH:
                      A_PUSH:
                        Begin
                        Begin
@@ -1631,7 +1635,10 @@ end;
 End.
 End.
 {
 {
   $Log$
   $Log$
-  Revision 1.16  1998-07-14 14:46:42  peter
+  Revision 1.17  1998-07-15 16:06:00  jonas
+    * change "pop reg/push reg to "mov (%esp), reg" with -Ox, remove otherwise
+
+  Revision 1.16  1998/07/14 14:46:42  peter
     * released NEWINPUT
     * released NEWINPUT
 
 
   Revision 1.15  1998/06/16 08:56:17  peter
   Revision 1.15  1998/06/16 08:56:17  peter