Ver Fonte

* removed some ie checks

peter há 22 anos atrás
pai
commit
811fdad9b6
3 ficheiros alterados com 21 adições e 23 exclusões
  1. 4 3
      compiler/i386/ra386att.pas
  2. 5 12
      compiler/i386/ra386int.pas
  3. 12 8
      compiler/i386/radirect.pas

+ 4 - 3
compiler/i386/ra386att.pas

@@ -1440,8 +1440,6 @@ Begin
          begin
            opr.typ:=OPR_REGISTER;
            opr.reg:=actasmregister;
-           if opr.reg.enum<>R_INTREGISTER then
-             internalerror(200302023);
            size:=reg2opsize(actasmregister);
            Consume(AS_REGISTER);
          end
@@ -2135,7 +2133,10 @@ finalization
 end.
 {
   $Log$
-  Revision 1.40  2003-03-18 18:15:53  peter
+  Revision 1.41  2003-04-21 20:05:10  peter
+    * removed some ie checks
+
+  Revision 1.40  2003/03/18 18:15:53  peter
     * changed reg2opsize to function
 
   Revision 1.39  2003/02/20 15:52:58  pierre

+ 5 - 12
compiler/i386/ra386int.pas

@@ -1109,9 +1109,7 @@ Begin
               end;
              if GotOffset then
               begin
-                if procinfo.framepointer.enum<>R_INTREGISTER then
-                  internalerror(200302121);
-                if hasvar and (opr.ref.base.enum=procinfo.framepointer.enum) then
+                if hasvar and (opr.ref.base.number=procinfo.framepointer.number) then
                  begin
                    opr.ref.base.enum:=R_INTREGISTER;
                    opr.ref.base.number:=NR_NO;
@@ -1124,10 +1122,6 @@ Begin
                    { should we allow ?? }
                  end;
               end;
-             if opr.ref.base.enum<>R_INTREGISTER then
-               internalerror(200302121);
-             if opr.ref.index.enum<>R_INTREGISTER then
-               internalerror(200302121);
              { is the base register loaded by the var ? }
              if (opr.ref.base.number<>NR_NO) then
               begin
@@ -1218,10 +1212,6 @@ Begin
              1. just read a *
              2. next token is a *
              3. base register is already used }
-          if opr.ref.base.enum<>R_INTREGISTER then
-            internalerror(200302123);
-          if opr.ref.index.enum<>R_INTREGISTER then
-            internalerror(200302123);
           if (GotStar) or
              (actasmtoken=AS_STAR) or
              (opr.ref.base.number<>NR_NO) then
@@ -1971,7 +1961,10 @@ finalization
 end.
 {
   $Log$
-  Revision 1.44  2003-03-28 19:16:57  peter
+  Revision 1.45  2003-04-21 20:05:10  peter
+    * removed some ie checks
+
+  Revision 1.44  2003/03/28 19:16:57  peter
     * generic constructor working for i386
     * remove fixed self register
     * esi added as address register for i386

+ 12 - 8
compiler/i386/radirect.pas

@@ -64,6 +64,7 @@ interface
          srsym,sym : tsym;
          srsymtable : tsymtable;
          code : TAAsmoutput;
+         framereg : tregister;
          i,l : longint;
 
        procedure writeasmline;
@@ -89,10 +90,10 @@ interface
        if assigned(aktprocdef.funcretsym) and
           is_fpu(aktprocdef.rettype.def) then
          tfuncretsym(aktprocdef.funcretsym).funcretstate:=vs_assigned;
-       if procinfo.framepointer.enum>lastreg then
-         internalerror(200301081);
+       framereg:=procinfo.framepointer;
+       convert_register_to_enum(framereg);
        if (not is_void(aktprocdef.rettype.def)) then
-         retstr:=upper(tostr(procinfo.return_offset)+'('+gas_reg2str[procinfo.framepointer.enum]+')')
+         retstr:=upper(tostr(procinfo.return_offset)+'('+gas_reg2str[framereg.enum]+')')
        else
          retstr:='';
          c:=current_scanner.asmgetchar;
@@ -173,7 +174,7 @@ interface
                                                hs:=tvarsym(sym).mangledname
                                              else
                                                hs:='-'+tostr(tvarsym(sym).address)+
-                                                   '('+gas_reg2str[procinfo.framepointer.enum]+')';
+                                                   '('+gas_reg2str[framereg.enum]+')';
                                              end
                                            else
                                            { call to local function }
@@ -196,7 +197,7 @@ interface
                                                      l:=tvarsym(sym).address;
                                                      { set offset }
                                                      inc(l,aktprocdef.parast.address_fixup);
-                                                     hs:=tostr(l)+'('+gas_reg2str[procinfo.framepointer.enum]+')';
+                                                     hs:=tostr(l)+'('+gas_reg2str[framereg.enum]+')';
                                                      if pos(',',s) > 0 then
                                                        tvarsym(sym).varstate:=vs_used;
                                                   end;
@@ -242,7 +243,7 @@ interface
                                              begin
                                                 if assigned(procinfo._class) then
                                                   hs:=tostr(procinfo.selfpointer_offset)+
-                                                      '('+gas_reg2str[procinfo.framepointer.enum]+')'
+                                                      '('+gas_reg2str[framereg.enum]+')'
                                                 else
                                                  Message(asmr_e_cannot_use_SELF_outside_a_method);
                                              end
@@ -259,7 +260,7 @@ interface
                                                 { we do it: }
                                                 if lexlevel>normal_function_level then
                                                   hs:=tostr(procinfo.framepointer_offset)+
-                                                    '('+gas_reg2str[procinfo.framepointer.enum]+')'
+                                                    '('+gas_reg2str[framereg.enum]+')'
                                                 else
                                                   Message(asmr_e_cannot_use_OLDEBP_outside_nested_procedure);
                                              end;
@@ -307,7 +308,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.6  2003-01-08 18:43:57  daniel
+  Revision 1.7  2003-04-21 20:05:10  peter
+    * removed some ie checks
+
+  Revision 1.6  2003/01/08 18:43:57  daniel
    * Tregister changed into a record
 
   Revision 1.5  2002/11/25 17:43:27  peter