Browse Source

* no warning nor error for pushl of segment register

pierre 25 years ago
parent
commit
365f0ebc81
1 changed files with 11 additions and 1 deletions
  1. 11 1
      compiler/ra386.pas

+ 11 - 1
compiler/ra386.pas

@@ -284,6 +284,13 @@ begin
   end;
   end;
   { Handle the BW,BL,WL separatly }
   { Handle the BW,BL,WL separatly }
   sizeerr:=false;
   sizeerr:=false;
+  { special push/pop selector case }
+  if ((opcode=A_PUSH) or
+      (opcode=A_POP)) and
+     (operands[1]^.opr.typ=OPR_REGISTER) and
+     ((operands[1]^.opr.reg>=firstsreg) and
+      (operands[1]^.opr.reg<=lastsreg)) then
+     exit;
   if opsize in [S_BW,S_BL,S_WL] then
   if opsize in [S_BW,S_BL,S_WL] then
    begin
    begin
      if ops<>2 then
      if ops<>2 then
@@ -373,7 +380,10 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.15  2000-05-09 21:44:28  pierre
+  Revision 1.16  2000-05-10 08:55:08  pierre
+   * no warning nor error for pushl of segment register
+
+  Revision 1.15  2000/05/09 21:44:28  pierre
     * add .byte 066h to force correct pushw %es
     * add .byte 066h to force correct pushw %es
     * handle push es as a pushl %es
     * handle push es as a pushl %es