Pārlūkot izejas kodu

* some updates for the newcg

florian 25 gadi atpakaļ
vecāks
revīzija
dfe879d12e

+ 19 - 2
compiler/pass_1.pas

@@ -39,14 +39,20 @@ implementation
       globtype,systems,
       cobjects,verbose,globals,
       aasm,symtable,types,
-      hcodegen,htypechk,
+      htypechk,
       tcadd,tccal,tccnv,tccon,tcflw,
       tcinl,tcld,tcmat,tcmem,tcset,cpubase,cpuasm
+{$ifdef newcg}
+      ,cgbase
+      ,tgcpu
+{$else newcg}
+      ,hcodegen
 {$ifdef i386}
       ,tgeni386
 {$endif}
 {$ifdef m68k}
       ,tgen68k
+{$endif}
 {$endif}
       ;
 
@@ -76,7 +82,11 @@ implementation
          { left is the next statement in the list }
          p^.resulttype:=voiddef;
          { no temps over several statements }
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          { right is the statement itself calln assignn or a complex one }
          {must_be_valid:=true; obsolete PM }
          firstpass(p^.right);
@@ -155,7 +165,11 @@ implementation
                 end;
               if assigned(hp^.right) then
                 begin
+{$ifdef newcg}
+                   tg.cleartempgen;
+{$else newcg}
                    cleartempgen;
+{$endif newcg}
                    codegenerror:=false;
                    firstpass(hp^.right);
                    if (not (cs_extsyntax in aktmoduleswitches)) and
@@ -372,7 +386,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.113  2000-02-09 13:22:55  peter
+  Revision 1.114  2000-02-17 14:53:42  florian
+    * some updates for the newcg
+
+  Revision 1.113  2000/02/09 13:22:55  peter
     * log truncated
 
   Revision 1.112  2000/01/07 01:14:28  peter

+ 8 - 5
compiler/psub.pas

@@ -53,11 +53,11 @@ uses
   scanner,aasm,tree,types,
   import,gendef,
 {$ifdef newcg}
-  cgbase,
+  cgbase,tgcpu,
 {$else newcg}
-  hcodegen,
+  hcodegen,temp_gen,
 {$endif newcg}
-  temp_gen,pass_1,cpubase,cpuasm
+  pass_1,cpubase,cpuasm
 {$ifndef NOPASS2}
   ,pass_2
 {$endif}
@@ -1970,7 +1970,10 @@ end.
 
 {
   $Log$
-  Revision 1.48  2000-02-09 13:23:00  peter
+  Revision 1.49  2000-02-17 14:53:42  florian
+    * some updates for the newcg
+
+  Revision 1.48  2000/02/09 13:23:00  peter
     * log truncated
 
   Revision 1.47  2000/02/08 13:55:13  peter
@@ -2051,4 +2054,4 @@ end.
     * moved mangledname creation of normal proc so it also handles a wrong
       method proc
 
-}
+}

+ 10 - 2
compiler/tcadd.pas

@@ -36,7 +36,12 @@ implementation
       globtype,systems,tokens,
       cobjects,verbose,globals,
       symconst,symtable,aasm,types,
-      hcodegen,htypechk,pass_1,
+{$ifdef newcg}
+      cgbase,
+{$else newcg}
+      hcodegen,
+{$endif newcg}
+      htypechk,pass_1,
       cpubase,tccnv
       ;
 
@@ -1255,7 +1260,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.68  2000-02-14 22:34:28  florian
+  Revision 1.69  2000-02-17 14:53:42  florian
+    * some updates for the newcg
+
+  Revision 1.68  2000/02/14 22:34:28  florian
     * fixed another internalerror
 
   Revision 1.67  2000/02/13 22:46:28  florian

+ 16 - 4
compiler/tccal.pas

@@ -40,13 +40,19 @@ implementation
       globtype,systems,
       cobjects,verbose,globals,
       symconst,aasm,types,
-      hcodegen,htypechk,pass_1,cpubase
+      htypechk,pass_1,cpubase
+{$ifdef newcg}
+      ,cgbase
+      ,tgobj
+{$else newcg}
+      ,hcodegen
 {$ifdef i386}
       ,tgeni386
 {$endif}
 {$ifdef m68k}
       ,tgen68k
 {$endif m68k}
+{$endif newcg}
       ;
 
 {*****************************************************************************
@@ -489,7 +495,7 @@ implementation
            begin
               { procedure does a call }
               procinfo^.flags:=procinfo^.flags or pi_do_call;
-
+{$ifndef newcg}
               { calc the correture value for the register }
 {$ifdef i386}
               for regi:=R_EAX to R_EDI do
@@ -499,6 +505,7 @@ implementation
               for regi:=R_D0 to R_A6 do
                 inc(reg_pushes[regi],t_times*2);
 {$endif}
+{$endif newcg}
               { calculate the type of the parameters }
               if assigned(p^.left) then
                 begin
@@ -1051,6 +1058,7 @@ implementation
                 begin
                    firstcallparan(p^.left,pparaitem(p^.procdefinition^.para^.first),true);
                 end;
+{$ifndef newcg}
 {$ifdef i386}
               for regi:=R_EAX to R_EDI do
                 begin
@@ -1065,6 +1073,7 @@ implementation
                     inc(reg_pushes[regi],t_times*2);
                end;
 {$endif}
+{$endif newcg}
            end;
          { ensure that the result type is set }
          p^.resulttype:=p^.procdefinition^.rettype.def;
@@ -1224,7 +1233,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.79  2000-02-09 13:23:07  peter
+  Revision 1.80  2000-02-17 14:53:43  florian
+    * some updates for the newcg
+
+  Revision 1.79  2000/02/09 13:23:07  peter
     * log truncated
 
   Revision 1.78  2000/01/07 09:35:12  pierre
@@ -1299,4 +1311,4 @@ end.
   Revision 1.59  1999/08/13 21:33:16  peter
     * support for array constructors extended and more error checking
 
-}
+}

+ 83 - 5
compiler/tcflw.pas

@@ -48,14 +48,21 @@ implementation
     uses
       globtype,systems,
       cobjects,verbose,globals,
-      symconst,symtable,aasm,types,
-      hcodegen,htypechk,temp_gen,pass_1,cpubase
+      symconst,symtable,aasm,types,htypechk,pass_1,cpubase
+{$ifdef newcg}
+      ,tgobj
+      ,tgcpu
+      ,cgbase
+{$else newcg}
+      ,hcodegen
+      ,temp_gen
 {$ifdef i386}
       ,tgeni386
 {$endif}
 {$ifdef m68k}
       ,tgen68k
 {$endif m68k}
+{$endif newcg}
       ;
 
 {*****************************************************************************
@@ -71,8 +78,12 @@ implementation
          { calc register weight }
          if not(cs_littlesize in aktglobalswitches ) then
            t_times:=t_times*8;
-
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
+
          firstpass(p^.left);
          set_varstate(p^.left,true);
          if codegenerror then
@@ -92,7 +103,11 @@ implementation
          { loop instruction }
          if assigned(p^.right) then
            begin
+{$ifdef newcg}
+              tg.cleartempgen;
+{$else newcg}
               cleartempgen;
+{$endif newcg}
               firstpass(p^.right);
               if codegenerror then
                 exit;
@@ -121,7 +136,11 @@ implementation
          hp : ptree;
       begin
          old_t_times:=t_times;
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          firstpass(p^.left);
          set_varstate(p^.left,true);
 
@@ -148,7 +167,11 @@ implementation
          { if path }
          if assigned(p^.right) then
            begin
+{$ifdef newcg}
+              tg.cleartempgen;
+{$else newcg}
               cleartempgen;
+{$endif newcg}
               firstpass(p^.right);
 
               if p^.registers32<p^.right^.registers32 then
@@ -164,7 +187,11 @@ implementation
          { else path }
          if assigned(p^.t1) then
            begin
+{$ifdef newcg}
+              tg.cleartempgen;
+{$else newcg}
               cleartempgen;
+{$endif newcg}
               firstpass(p^.t1);
 
               if p^.registers32<p^.t1^.registers32 then
@@ -247,11 +274,19 @@ implementation
          if p^.left^.treetype<>assignn then
            CGMessage(cg_e_illegal_expression);
 
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          firstpass(p^.left);
          set_varstate(p^.left,false);
 
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          if assigned(p^.t1) then
           begin
             firstpass(p^.t1);
@@ -274,7 +309,11 @@ implementation
 {$endif SUPPORT_MMX}
 
          { process count var }
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          firstpass(p^.t2);
          set_varstate(p^.t2,true);
          if codegenerror then
@@ -306,13 +345,21 @@ implementation
            p^.registersmmx:=p^.t2^.registersmmx;
 {$endif SUPPORT_MMX}
 
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          firstpass(p^.right);
          set_varstate(p^.right,true);
          if p^.right^.treetype<>ordconstn then
            begin
               p^.right:=gentypeconvnode(p^.right,p^.t2^.resulttype);
+{$ifdef newcg}
+              tg.cleartempgen;
+{$else newcg}
               cleartempgen;
+{$endif newcg}
               firstpass(p^.right);
            end;
 
@@ -381,7 +428,11 @@ implementation
 
     procedure firstlabel(var p : ptree);
       begin
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          p^.exceptionblock:=aktexceptblock;
          firstpass(p^.left);
          p^.registers32:=p^.left^.registers32;
@@ -439,7 +490,11 @@ implementation
          oldexceptblock : ptree;
 
       begin
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          oldexceptblock:=aktexceptblock;
          aktexceptblock:=p^.left;
          firstpass(p^.left);
@@ -447,7 +502,11 @@ implementation
          { on statements }
          if assigned(p^.right) then
            begin
+{$ifdef newcg}
+              tg.cleartempgen;
+{$else newcg}
               cleartempgen;
+{$endif newcg}
               oldexceptblock:=aktexceptblock;
               aktexceptblock:=p^.right;
               firstpass(p^.right);
@@ -485,14 +544,22 @@ implementation
 
       begin
          p^.resulttype:=voiddef;
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          oldexceptblock:=aktexceptblock;
          aktexceptblock:=p^.left;
          firstpass(p^.left);
          aktexceptblock:=oldexceptblock;
          set_varstate(p^.left,true);
 
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          oldexceptblock:=aktexceptblock;
          aktexceptblock:=p^.right;
          firstpass(p^.right);
@@ -515,7 +582,11 @@ implementation
 
       begin
          { that's really an example procedure for a firstpass :) }
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          p^.resulttype:=voiddef;
          p^.registers32:=0;
          p^.registersfpu:=0;
@@ -532,7 +603,11 @@ implementation
 {$endif SUPPORT_MMX}
            end;
 
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          if assigned(p^.right) then
            begin
               oldexceptblock:=aktexceptblock;
@@ -551,7 +626,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.34  2000-02-09 13:23:07  peter
+  Revision 1.35  2000-02-17 14:53:43  florian
+    * some updates for the newcg
+
+  Revision 1.34  2000/02/09 13:23:07  peter
     * log truncated
 
   Revision 1.33  2000/02/01 09:43:22  peter
@@ -621,4 +699,4 @@ end.
   Revision 1.13  1999/08/01 18:28:15  florian
     * modifications for the new code generator
 
-}
+}

+ 13 - 3
compiler/tcinl.pas

@@ -35,11 +35,18 @@ implementation
       cobjects,verbose,globals,systems,
       globtype,
       symconst,symtable,aasm,types,
-      hcodegen,htypechk,pass_1,
+      htypechk,pass_1,
       tccal,cpubase
+{$ifdef newcg}
+      ,cgbase
+      ,tgobj
+      ,tgcpu
+{$else newcg}
+      ,hcodegen
 {$ifdef i386}
       ,tgeni386
 {$endif}
+{$endif newcg}
       ;
 
 {*****************************************************************************
@@ -1285,7 +1292,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.66  2000-02-13 14:21:51  jonas
+  Revision 1.67  2000-02-17 14:53:43  florian
+    * some updates for the newcg
+
+  Revision 1.66  2000/02/13 14:21:51  jonas
     * modifications to make the compiler functional when compiled with
       -Or
 
@@ -1373,4 +1383,4 @@ end.
   Revision 1.45  1999/08/04 00:23:40  florian
     * renamed i386asm and i386base to cpuasm and cpubase
 
-}
+}

+ 13 - 3
compiler/tcld.pas

@@ -39,11 +39,18 @@ implementation
     uses
       cobjects,verbose,globtype,globals,systems,
       symconst,symtable,aasm,types,
-      hcodegen,htypechk,pass_1,
+      htypechk,pass_1,
       tccnv,cpubase
+{$ifdef newcg}
+      ,cgbase
+      ,tgobj
+      ,tgcpu
+{$else newcg}
+      ,hcodegen
 {$ifdef i386}
       ,tgeni386
 {$endif}
+{$endif newcg}
       ;
 
 {*****************************************************************************
@@ -478,7 +485,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.59  2000-02-09 13:23:07  peter
+  Revision 1.60  2000-02-17 14:53:43  florian
+    * some updates for the newcg
+
+  Revision 1.59  2000/02/09 13:23:07  peter
     * log truncated
 
   Revision 1.58  2000/01/21 22:06:16  florian
@@ -560,4 +570,4 @@ end.
     * oldtp mode directives better supported
     * added some messages to errore.msg
 
-}
+}

+ 11 - 3
compiler/tcmat.pas

@@ -38,7 +38,12 @@ implementation
       globtype,systems,tokens,
       cobjects,verbose,globals,
       symconst,symtable,aasm,types,
-      hcodegen,htypechk,pass_1,cpubase,
+      htypechk,pass_1,cpubase,
+{$ifdef newcg}
+      cgbase,
+{$else newcg}
+      hcodegen,
+{$endif newcg}
       { for isbinaryoverloaded function }
       tcadd;
 
@@ -447,7 +452,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.28  2000-02-09 13:23:08  peter
+  Revision 1.29  2000-02-17 14:53:43  florian
+    * some updates for the newcg
+
+  Revision 1.28  2000/02/09 13:23:08  peter
     * log truncated
 
   Revision 1.27  2000/01/07 01:14:46  peter
@@ -492,4 +500,4 @@ end.
     * moved bitmask constants to sets
     * some other type/const renamings
 
-}
+}

+ 12 - 4
compiler/tcmem.pas

@@ -46,8 +46,13 @@ implementation
       globtype,systems,
       cobjects,verbose,globals,
       symconst,symtable,aasm,types,
-      hcodegen,htypechk,pass_1,cpubase;
-
+      htypechk,pass_1,cpubase
+{$ifdef newcg}
+      ,cgbase
+{$else newcg}
+      ,hcodegen
+{$endif newcg}
+      ;
 {*****************************************************************************
                             FirstLoadVMT
 *****************************************************************************}
@@ -641,7 +646,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.41  2000-02-09 13:23:08  peter
+  Revision 1.42  2000-02-17 14:53:43  florian
+    * some updates for the newcg
+
+  Revision 1.41  2000/02/09 13:23:08  peter
     * log truncated
 
   Revision 1.40  2000/01/10 16:38:43  pierre
@@ -717,4 +725,4 @@ end.
     * moved bitmask constants to sets
     * some other type/const renamings
 
-}
+}

+ 23 - 3
compiler/tcset.pas

@@ -38,14 +38,20 @@ implementation
       globtype,systems,
       cobjects,verbose,globals,
       symconst,symtable,aasm,types,
-      hcodegen,htypechk,pass_1,
+      htypechk,pass_1,
       tccnv,cpubase
+{$ifdef newcg}
+      ,cgbase
+      ,tgcpu
+{$else newcg}
+      ,hcodegen
 {$ifdef i386}
       ,tgeni386
 {$endif}
 {$ifdef m68k}
       ,tgen68k
 {$endif}
+{$endif newcg}
       ;
 
 {*****************************************************************************
@@ -239,7 +245,11 @@ implementation
          hp : ptree;
       begin
          { evalutes the case expression }
+{$ifdef newcg}
+         tg.cleartempgen;
+{$else newcg}
          cleartempgen;
+{$endif newcg}
          firstpass(p^.left);
          set_varstate(p^.left,true);
          if codegenerror then
@@ -264,7 +274,11 @@ implementation
          hp:=p^.right;
          while assigned(hp) do
            begin
+{$ifdef newcg}
+              tg.cleartempgen;
+{$else newcg}
               cleartempgen;
+{$endif newcg}
               firstpass(hp^.right);
 
               { searchs max registers }
@@ -283,7 +297,11 @@ implementation
          { may be handle else tree }
          if assigned(p^.elseblock) then
            begin
+{$ifdef newcg}
+              tg.cleartempgen;
+{$else newcg}
               cleartempgen;
+{$endif newcg}
               firstpass(p^.elseblock);
               if codegenerror then
                 exit;
@@ -306,7 +324,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.18  2000-02-09 13:23:08  peter
+  Revision 1.19  2000-02-17 14:53:43  florian
+    * some updates for the newcg
+
+  Revision 1.18  2000/02/09 13:23:08  peter
     * log truncated
 
   Revision 1.17  2000/01/07 01:14:47  peter
@@ -334,4 +355,3 @@ end.
     * some other type/const renamings
 
 }
-

+ 18 - 4
compiler/tree.pas

@@ -345,12 +345,20 @@ unit tree;
 
 {$I innr.inc}
 
+{$ifdef newcg}
+{$I nodeh.inc}
+{$endif newcg}
   implementation
 
     uses
        systems,
-       globals,verbose,files,types,hcodegen;
-
+       globals,verbose,files,types,
+{$ifdef newcg}
+       cgbase
+{$else newcg}
+       hcodegen
+{$endif newcg}
+       ;
 
     function getnode : ptree;
 
@@ -1915,10 +1923,16 @@ unit tree;
          case_get_min:=hp^._low;
       end;
 
+{$ifdef newcg}
+{$I node.inc}
+{$endif newcg}
 end.
 {
   $Log$
-  Revision 1.111  2000-02-09 13:23:09  peter
+  Revision 1.112  2000-02-17 14:53:43  florian
+    * some updates for the newcg
+
+  Revision 1.111  2000/02/09 13:23:09  peter
     * log truncated
 
   Revision 1.110  2000/01/26 12:02:30  peter
@@ -2000,4 +2014,4 @@ end.
       a same register is freed twice (happens in several part
       of current compiler like addn for strings and sets)
 
-}
+}