* some updates for the newcg

This commit is contained in:
florian 2000-02-17 14:53:42 +00:00
parent 2449cd4148
commit dfe879d12e
11 changed files with 226 additions and 38 deletions

View File

@ -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

View File

@ -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
}
}

View File

@ -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

View File

@ -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
}
}

View File

@ -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
}
}

View File

@ -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
}
}

View File

@ -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
}
}

View File

@ -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
}
}

View File

@ -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
}
}

View File

@ -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
}

View File

@ -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)
}
}