From dfe879d12e83325933d48011d36e4819899d4910 Mon Sep 17 00:00:00 2001 From: florian Date: Thu, 17 Feb 2000 14:53:42 +0000 Subject: [PATCH] * some updates for the newcg --- compiler/pass_1.pas | 21 +++++++++-- compiler/psub.pas | 13 ++++--- compiler/tcadd.pas | 12 +++++-- compiler/tccal.pas | 20 ++++++++--- compiler/tcflw.pas | 88 ++++++++++++++++++++++++++++++++++++++++++--- compiler/tcinl.pas | 16 +++++++-- compiler/tcld.pas | 16 +++++++-- compiler/tcmat.pas | 14 ++++++-- compiler/tcmem.pas | 16 ++++++--- compiler/tcset.pas | 26 ++++++++++++-- compiler/tree.pas | 22 +++++++++--- 11 files changed, 226 insertions(+), 38 deletions(-) diff --git a/compiler/pass_1.pas b/compiler/pass_1.pas index 67f3bf38e4..619133f947 100644 --- a/compiler/pass_1.pas +++ b/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 diff --git a/compiler/psub.pas b/compiler/psub.pas index d5ab80ccfe..4c71180247 100644 --- a/compiler/psub.pas +++ b/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 -} +} \ No newline at end of file diff --git a/compiler/tcadd.pas b/compiler/tcadd.pas index e50d34c602..6e3f06e072 100644 --- a/compiler/tcadd.pas +++ b/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 diff --git a/compiler/tccal.pas b/compiler/tccal.pas index 0f84010608..7c7ec77e51 100644 --- a/compiler/tccal.pas +++ b/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 -} +} \ No newline at end of file diff --git a/compiler/tcflw.pas b/compiler/tcflw.pas index 58e871467c..f6b0ed7f98 100644 --- a/compiler/tcflw.pas +++ b/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^.registers32assignn 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 -} +} \ No newline at end of file diff --git a/compiler/tcinl.pas b/compiler/tcinl.pas index b752555cfe..3878349b6c 100644 --- a/compiler/tcinl.pas +++ b/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 -} +} \ No newline at end of file diff --git a/compiler/tcld.pas b/compiler/tcld.pas index 491f636acb..61ebf889bd 100644 --- a/compiler/tcld.pas +++ b/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 -} +} \ No newline at end of file diff --git a/compiler/tcmat.pas b/compiler/tcmat.pas index fb4068f724..b9cc07db07 100644 --- a/compiler/tcmat.pas +++ b/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 -} +} \ No newline at end of file diff --git a/compiler/tcmem.pas b/compiler/tcmem.pas index dda3c3994b..4e75d4ef1f 100644 --- a/compiler/tcmem.pas +++ b/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 -} +} \ No newline at end of file diff --git a/compiler/tcset.pas b/compiler/tcset.pas index 21c47772de..4460974249 100644 --- a/compiler/tcset.pas +++ b/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 } - diff --git a/compiler/tree.pas b/compiler/tree.pas index f48ea46d8e..02f38e74cf 100644 --- a/compiler/tree.pas +++ b/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) -} +} \ No newline at end of file