mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-08 05:19:14 +02:00
* some updates for the newcg
This commit is contained in:
parent
2449cd4148
commit
dfe879d12e
@ -39,14 +39,20 @@ implementation
|
|||||||
globtype,systems,
|
globtype,systems,
|
||||||
cobjects,verbose,globals,
|
cobjects,verbose,globals,
|
||||||
aasm,symtable,types,
|
aasm,symtable,types,
|
||||||
hcodegen,htypechk,
|
htypechk,
|
||||||
tcadd,tccal,tccnv,tccon,tcflw,
|
tcadd,tccal,tccnv,tccon,tcflw,
|
||||||
tcinl,tcld,tcmat,tcmem,tcset,cpubase,cpuasm
|
tcinl,tcld,tcmat,tcmem,tcset,cpubase,cpuasm
|
||||||
|
{$ifdef newcg}
|
||||||
|
,cgbase
|
||||||
|
,tgcpu
|
||||||
|
{$else newcg}
|
||||||
|
,hcodegen
|
||||||
{$ifdef i386}
|
{$ifdef i386}
|
||||||
,tgeni386
|
,tgeni386
|
||||||
{$endif}
|
{$endif}
|
||||||
{$ifdef m68k}
|
{$ifdef m68k}
|
||||||
,tgen68k
|
,tgen68k
|
||||||
|
{$endif}
|
||||||
{$endif}
|
{$endif}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -76,7 +82,11 @@ implementation
|
|||||||
{ left is the next statement in the list }
|
{ left is the next statement in the list }
|
||||||
p^.resulttype:=voiddef;
|
p^.resulttype:=voiddef;
|
||||||
{ no temps over several statements }
|
{ no temps over several statements }
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
{ right is the statement itself calln assignn or a complex one }
|
{ right is the statement itself calln assignn or a complex one }
|
||||||
{must_be_valid:=true; obsolete PM }
|
{must_be_valid:=true; obsolete PM }
|
||||||
firstpass(p^.right);
|
firstpass(p^.right);
|
||||||
@ -155,7 +165,11 @@ implementation
|
|||||||
end;
|
end;
|
||||||
if assigned(hp^.right) then
|
if assigned(hp^.right) then
|
||||||
begin
|
begin
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
codegenerror:=false;
|
codegenerror:=false;
|
||||||
firstpass(hp^.right);
|
firstpass(hp^.right);
|
||||||
if (not (cs_extsyntax in aktmoduleswitches)) and
|
if (not (cs_extsyntax in aktmoduleswitches)) and
|
||||||
@ -372,7 +386,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* log truncated
|
||||||
|
|
||||||
Revision 1.112 2000/01/07 01:14:28 peter
|
Revision 1.112 2000/01/07 01:14:28 peter
|
||||||
|
@ -53,11 +53,11 @@ uses
|
|||||||
scanner,aasm,tree,types,
|
scanner,aasm,tree,types,
|
||||||
import,gendef,
|
import,gendef,
|
||||||
{$ifdef newcg}
|
{$ifdef newcg}
|
||||||
cgbase,
|
cgbase,tgcpu,
|
||||||
{$else newcg}
|
{$else newcg}
|
||||||
hcodegen,
|
hcodegen,temp_gen,
|
||||||
{$endif newcg}
|
{$endif newcg}
|
||||||
temp_gen,pass_1,cpubase,cpuasm
|
pass_1,cpubase,cpuasm
|
||||||
{$ifndef NOPASS2}
|
{$ifndef NOPASS2}
|
||||||
,pass_2
|
,pass_2
|
||||||
{$endif}
|
{$endif}
|
||||||
@ -1970,7 +1970,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* log truncated
|
||||||
|
|
||||||
Revision 1.47 2000/02/08 13:55:13 peter
|
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
|
* moved mangledname creation of normal proc so it also handles a wrong
|
||||||
method proc
|
method proc
|
||||||
|
|
||||||
}
|
}
|
@ -36,7 +36,12 @@ implementation
|
|||||||
globtype,systems,tokens,
|
globtype,systems,tokens,
|
||||||
cobjects,verbose,globals,
|
cobjects,verbose,globals,
|
||||||
symconst,symtable,aasm,types,
|
symconst,symtable,aasm,types,
|
||||||
hcodegen,htypechk,pass_1,
|
{$ifdef newcg}
|
||||||
|
cgbase,
|
||||||
|
{$else newcg}
|
||||||
|
hcodegen,
|
||||||
|
{$endif newcg}
|
||||||
|
htypechk,pass_1,
|
||||||
cpubase,tccnv
|
cpubase,tccnv
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -1255,7 +1260,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* fixed another internalerror
|
||||||
|
|
||||||
Revision 1.67 2000/02/13 22:46:28 florian
|
Revision 1.67 2000/02/13 22:46:28 florian
|
||||||
|
@ -40,13 +40,19 @@ implementation
|
|||||||
globtype,systems,
|
globtype,systems,
|
||||||
cobjects,verbose,globals,
|
cobjects,verbose,globals,
|
||||||
symconst,aasm,types,
|
symconst,aasm,types,
|
||||||
hcodegen,htypechk,pass_1,cpubase
|
htypechk,pass_1,cpubase
|
||||||
|
{$ifdef newcg}
|
||||||
|
,cgbase
|
||||||
|
,tgobj
|
||||||
|
{$else newcg}
|
||||||
|
,hcodegen
|
||||||
{$ifdef i386}
|
{$ifdef i386}
|
||||||
,tgeni386
|
,tgeni386
|
||||||
{$endif}
|
{$endif}
|
||||||
{$ifdef m68k}
|
{$ifdef m68k}
|
||||||
,tgen68k
|
,tgen68k
|
||||||
{$endif m68k}
|
{$endif m68k}
|
||||||
|
{$endif newcg}
|
||||||
;
|
;
|
||||||
|
|
||||||
{*****************************************************************************
|
{*****************************************************************************
|
||||||
@ -489,7 +495,7 @@ implementation
|
|||||||
begin
|
begin
|
||||||
{ procedure does a call }
|
{ procedure does a call }
|
||||||
procinfo^.flags:=procinfo^.flags or pi_do_call;
|
procinfo^.flags:=procinfo^.flags or pi_do_call;
|
||||||
|
{$ifndef newcg}
|
||||||
{ calc the correture value for the register }
|
{ calc the correture value for the register }
|
||||||
{$ifdef i386}
|
{$ifdef i386}
|
||||||
for regi:=R_EAX to R_EDI do
|
for regi:=R_EAX to R_EDI do
|
||||||
@ -499,6 +505,7 @@ implementation
|
|||||||
for regi:=R_D0 to R_A6 do
|
for regi:=R_D0 to R_A6 do
|
||||||
inc(reg_pushes[regi],t_times*2);
|
inc(reg_pushes[regi],t_times*2);
|
||||||
{$endif}
|
{$endif}
|
||||||
|
{$endif newcg}
|
||||||
{ calculate the type of the parameters }
|
{ calculate the type of the parameters }
|
||||||
if assigned(p^.left) then
|
if assigned(p^.left) then
|
||||||
begin
|
begin
|
||||||
@ -1051,6 +1058,7 @@ implementation
|
|||||||
begin
|
begin
|
||||||
firstcallparan(p^.left,pparaitem(p^.procdefinition^.para^.first),true);
|
firstcallparan(p^.left,pparaitem(p^.procdefinition^.para^.first),true);
|
||||||
end;
|
end;
|
||||||
|
{$ifndef newcg}
|
||||||
{$ifdef i386}
|
{$ifdef i386}
|
||||||
for regi:=R_EAX to R_EDI do
|
for regi:=R_EAX to R_EDI do
|
||||||
begin
|
begin
|
||||||
@ -1065,6 +1073,7 @@ implementation
|
|||||||
inc(reg_pushes[regi],t_times*2);
|
inc(reg_pushes[regi],t_times*2);
|
||||||
end;
|
end;
|
||||||
{$endif}
|
{$endif}
|
||||||
|
{$endif newcg}
|
||||||
end;
|
end;
|
||||||
{ ensure that the result type is set }
|
{ ensure that the result type is set }
|
||||||
p^.resulttype:=p^.procdefinition^.rettype.def;
|
p^.resulttype:=p^.procdefinition^.rettype.def;
|
||||||
@ -1224,7 +1233,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* log truncated
|
||||||
|
|
||||||
Revision 1.78 2000/01/07 09:35:12 pierre
|
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
|
Revision 1.59 1999/08/13 21:33:16 peter
|
||||||
* support for array constructors extended and more error checking
|
* support for array constructors extended and more error checking
|
||||||
|
|
||||||
}
|
}
|
@ -48,14 +48,21 @@ implementation
|
|||||||
uses
|
uses
|
||||||
globtype,systems,
|
globtype,systems,
|
||||||
cobjects,verbose,globals,
|
cobjects,verbose,globals,
|
||||||
symconst,symtable,aasm,types,
|
symconst,symtable,aasm,types,htypechk,pass_1,cpubase
|
||||||
hcodegen,htypechk,temp_gen,pass_1,cpubase
|
{$ifdef newcg}
|
||||||
|
,tgobj
|
||||||
|
,tgcpu
|
||||||
|
,cgbase
|
||||||
|
{$else newcg}
|
||||||
|
,hcodegen
|
||||||
|
,temp_gen
|
||||||
{$ifdef i386}
|
{$ifdef i386}
|
||||||
,tgeni386
|
,tgeni386
|
||||||
{$endif}
|
{$endif}
|
||||||
{$ifdef m68k}
|
{$ifdef m68k}
|
||||||
,tgen68k
|
,tgen68k
|
||||||
{$endif m68k}
|
{$endif m68k}
|
||||||
|
{$endif newcg}
|
||||||
;
|
;
|
||||||
|
|
||||||
{*****************************************************************************
|
{*****************************************************************************
|
||||||
@ -71,8 +78,12 @@ implementation
|
|||||||
{ calc register weight }
|
{ calc register weight }
|
||||||
if not(cs_littlesize in aktglobalswitches ) then
|
if not(cs_littlesize in aktglobalswitches ) then
|
||||||
t_times:=t_times*8;
|
t_times:=t_times*8;
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
|
|
||||||
firstpass(p^.left);
|
firstpass(p^.left);
|
||||||
set_varstate(p^.left,true);
|
set_varstate(p^.left,true);
|
||||||
if codegenerror then
|
if codegenerror then
|
||||||
@ -92,7 +103,11 @@ implementation
|
|||||||
{ loop instruction }
|
{ loop instruction }
|
||||||
if assigned(p^.right) then
|
if assigned(p^.right) then
|
||||||
begin
|
begin
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
firstpass(p^.right);
|
firstpass(p^.right);
|
||||||
if codegenerror then
|
if codegenerror then
|
||||||
exit;
|
exit;
|
||||||
@ -121,7 +136,11 @@ implementation
|
|||||||
hp : ptree;
|
hp : ptree;
|
||||||
begin
|
begin
|
||||||
old_t_times:=t_times;
|
old_t_times:=t_times;
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
firstpass(p^.left);
|
firstpass(p^.left);
|
||||||
set_varstate(p^.left,true);
|
set_varstate(p^.left,true);
|
||||||
|
|
||||||
@ -148,7 +167,11 @@ implementation
|
|||||||
{ if path }
|
{ if path }
|
||||||
if assigned(p^.right) then
|
if assigned(p^.right) then
|
||||||
begin
|
begin
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
firstpass(p^.right);
|
firstpass(p^.right);
|
||||||
|
|
||||||
if p^.registers32<p^.right^.registers32 then
|
if p^.registers32<p^.right^.registers32 then
|
||||||
@ -164,7 +187,11 @@ implementation
|
|||||||
{ else path }
|
{ else path }
|
||||||
if assigned(p^.t1) then
|
if assigned(p^.t1) then
|
||||||
begin
|
begin
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
firstpass(p^.t1);
|
firstpass(p^.t1);
|
||||||
|
|
||||||
if p^.registers32<p^.t1^.registers32 then
|
if p^.registers32<p^.t1^.registers32 then
|
||||||
@ -247,11 +274,19 @@ implementation
|
|||||||
if p^.left^.treetype<>assignn then
|
if p^.left^.treetype<>assignn then
|
||||||
CGMessage(cg_e_illegal_expression);
|
CGMessage(cg_e_illegal_expression);
|
||||||
|
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
firstpass(p^.left);
|
firstpass(p^.left);
|
||||||
set_varstate(p^.left,false);
|
set_varstate(p^.left,false);
|
||||||
|
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
if assigned(p^.t1) then
|
if assigned(p^.t1) then
|
||||||
begin
|
begin
|
||||||
firstpass(p^.t1);
|
firstpass(p^.t1);
|
||||||
@ -274,7 +309,11 @@ implementation
|
|||||||
{$endif SUPPORT_MMX}
|
{$endif SUPPORT_MMX}
|
||||||
|
|
||||||
{ process count var }
|
{ process count var }
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
firstpass(p^.t2);
|
firstpass(p^.t2);
|
||||||
set_varstate(p^.t2,true);
|
set_varstate(p^.t2,true);
|
||||||
if codegenerror then
|
if codegenerror then
|
||||||
@ -306,13 +345,21 @@ implementation
|
|||||||
p^.registersmmx:=p^.t2^.registersmmx;
|
p^.registersmmx:=p^.t2^.registersmmx;
|
||||||
{$endif SUPPORT_MMX}
|
{$endif SUPPORT_MMX}
|
||||||
|
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
firstpass(p^.right);
|
firstpass(p^.right);
|
||||||
set_varstate(p^.right,true);
|
set_varstate(p^.right,true);
|
||||||
if p^.right^.treetype<>ordconstn then
|
if p^.right^.treetype<>ordconstn then
|
||||||
begin
|
begin
|
||||||
p^.right:=gentypeconvnode(p^.right,p^.t2^.resulttype);
|
p^.right:=gentypeconvnode(p^.right,p^.t2^.resulttype);
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
firstpass(p^.right);
|
firstpass(p^.right);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -381,7 +428,11 @@ implementation
|
|||||||
|
|
||||||
procedure firstlabel(var p : ptree);
|
procedure firstlabel(var p : ptree);
|
||||||
begin
|
begin
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
p^.exceptionblock:=aktexceptblock;
|
p^.exceptionblock:=aktexceptblock;
|
||||||
firstpass(p^.left);
|
firstpass(p^.left);
|
||||||
p^.registers32:=p^.left^.registers32;
|
p^.registers32:=p^.left^.registers32;
|
||||||
@ -439,7 +490,11 @@ implementation
|
|||||||
oldexceptblock : ptree;
|
oldexceptblock : ptree;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
oldexceptblock:=aktexceptblock;
|
oldexceptblock:=aktexceptblock;
|
||||||
aktexceptblock:=p^.left;
|
aktexceptblock:=p^.left;
|
||||||
firstpass(p^.left);
|
firstpass(p^.left);
|
||||||
@ -447,7 +502,11 @@ implementation
|
|||||||
{ on statements }
|
{ on statements }
|
||||||
if assigned(p^.right) then
|
if assigned(p^.right) then
|
||||||
begin
|
begin
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
oldexceptblock:=aktexceptblock;
|
oldexceptblock:=aktexceptblock;
|
||||||
aktexceptblock:=p^.right;
|
aktexceptblock:=p^.right;
|
||||||
firstpass(p^.right);
|
firstpass(p^.right);
|
||||||
@ -485,14 +544,22 @@ implementation
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
p^.resulttype:=voiddef;
|
p^.resulttype:=voiddef;
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
oldexceptblock:=aktexceptblock;
|
oldexceptblock:=aktexceptblock;
|
||||||
aktexceptblock:=p^.left;
|
aktexceptblock:=p^.left;
|
||||||
firstpass(p^.left);
|
firstpass(p^.left);
|
||||||
aktexceptblock:=oldexceptblock;
|
aktexceptblock:=oldexceptblock;
|
||||||
set_varstate(p^.left,true);
|
set_varstate(p^.left,true);
|
||||||
|
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
oldexceptblock:=aktexceptblock;
|
oldexceptblock:=aktexceptblock;
|
||||||
aktexceptblock:=p^.right;
|
aktexceptblock:=p^.right;
|
||||||
firstpass(p^.right);
|
firstpass(p^.right);
|
||||||
@ -515,7 +582,11 @@ implementation
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
{ that's really an example procedure for a firstpass :) }
|
{ that's really an example procedure for a firstpass :) }
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
p^.resulttype:=voiddef;
|
p^.resulttype:=voiddef;
|
||||||
p^.registers32:=0;
|
p^.registers32:=0;
|
||||||
p^.registersfpu:=0;
|
p^.registersfpu:=0;
|
||||||
@ -532,7 +603,11 @@ implementation
|
|||||||
{$endif SUPPORT_MMX}
|
{$endif SUPPORT_MMX}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
if assigned(p^.right) then
|
if assigned(p^.right) then
|
||||||
begin
|
begin
|
||||||
oldexceptblock:=aktexceptblock;
|
oldexceptblock:=aktexceptblock;
|
||||||
@ -551,7 +626,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* log truncated
|
||||||
|
|
||||||
Revision 1.33 2000/02/01 09:43:22 peter
|
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
|
Revision 1.13 1999/08/01 18:28:15 florian
|
||||||
* modifications for the new code generator
|
* modifications for the new code generator
|
||||||
|
|
||||||
}
|
}
|
@ -35,11 +35,18 @@ implementation
|
|||||||
cobjects,verbose,globals,systems,
|
cobjects,verbose,globals,systems,
|
||||||
globtype,
|
globtype,
|
||||||
symconst,symtable,aasm,types,
|
symconst,symtable,aasm,types,
|
||||||
hcodegen,htypechk,pass_1,
|
htypechk,pass_1,
|
||||||
tccal,cpubase
|
tccal,cpubase
|
||||||
|
{$ifdef newcg}
|
||||||
|
,cgbase
|
||||||
|
,tgobj
|
||||||
|
,tgcpu
|
||||||
|
{$else newcg}
|
||||||
|
,hcodegen
|
||||||
{$ifdef i386}
|
{$ifdef i386}
|
||||||
,tgeni386
|
,tgeni386
|
||||||
{$endif}
|
{$endif}
|
||||||
|
{$endif newcg}
|
||||||
;
|
;
|
||||||
|
|
||||||
{*****************************************************************************
|
{*****************************************************************************
|
||||||
@ -1285,7 +1292,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* modifications to make the compiler functional when compiled with
|
||||||
-Or
|
-Or
|
||||||
|
|
||||||
@ -1373,4 +1383,4 @@ end.
|
|||||||
Revision 1.45 1999/08/04 00:23:40 florian
|
Revision 1.45 1999/08/04 00:23:40 florian
|
||||||
* renamed i386asm and i386base to cpuasm and cpubase
|
* renamed i386asm and i386base to cpuasm and cpubase
|
||||||
|
|
||||||
}
|
}
|
@ -39,11 +39,18 @@ implementation
|
|||||||
uses
|
uses
|
||||||
cobjects,verbose,globtype,globals,systems,
|
cobjects,verbose,globtype,globals,systems,
|
||||||
symconst,symtable,aasm,types,
|
symconst,symtable,aasm,types,
|
||||||
hcodegen,htypechk,pass_1,
|
htypechk,pass_1,
|
||||||
tccnv,cpubase
|
tccnv,cpubase
|
||||||
|
{$ifdef newcg}
|
||||||
|
,cgbase
|
||||||
|
,tgobj
|
||||||
|
,tgcpu
|
||||||
|
{$else newcg}
|
||||||
|
,hcodegen
|
||||||
{$ifdef i386}
|
{$ifdef i386}
|
||||||
,tgeni386
|
,tgeni386
|
||||||
{$endif}
|
{$endif}
|
||||||
|
{$endif newcg}
|
||||||
;
|
;
|
||||||
|
|
||||||
{*****************************************************************************
|
{*****************************************************************************
|
||||||
@ -478,7 +485,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* log truncated
|
||||||
|
|
||||||
Revision 1.58 2000/01/21 22:06:16 florian
|
Revision 1.58 2000/01/21 22:06:16 florian
|
||||||
@ -560,4 +570,4 @@ end.
|
|||||||
* oldtp mode directives better supported
|
* oldtp mode directives better supported
|
||||||
* added some messages to errore.msg
|
* added some messages to errore.msg
|
||||||
|
|
||||||
}
|
}
|
@ -38,7 +38,12 @@ implementation
|
|||||||
globtype,systems,tokens,
|
globtype,systems,tokens,
|
||||||
cobjects,verbose,globals,
|
cobjects,verbose,globals,
|
||||||
symconst,symtable,aasm,types,
|
symconst,symtable,aasm,types,
|
||||||
hcodegen,htypechk,pass_1,cpubase,
|
htypechk,pass_1,cpubase,
|
||||||
|
{$ifdef newcg}
|
||||||
|
cgbase,
|
||||||
|
{$else newcg}
|
||||||
|
hcodegen,
|
||||||
|
{$endif newcg}
|
||||||
{ for isbinaryoverloaded function }
|
{ for isbinaryoverloaded function }
|
||||||
tcadd;
|
tcadd;
|
||||||
|
|
||||||
@ -447,7 +452,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* log truncated
|
||||||
|
|
||||||
Revision 1.27 2000/01/07 01:14:46 peter
|
Revision 1.27 2000/01/07 01:14:46 peter
|
||||||
@ -492,4 +500,4 @@ end.
|
|||||||
* moved bitmask constants to sets
|
* moved bitmask constants to sets
|
||||||
* some other type/const renamings
|
* some other type/const renamings
|
||||||
|
|
||||||
}
|
}
|
@ -46,8 +46,13 @@ implementation
|
|||||||
globtype,systems,
|
globtype,systems,
|
||||||
cobjects,verbose,globals,
|
cobjects,verbose,globals,
|
||||||
symconst,symtable,aasm,types,
|
symconst,symtable,aasm,types,
|
||||||
hcodegen,htypechk,pass_1,cpubase;
|
htypechk,pass_1,cpubase
|
||||||
|
{$ifdef newcg}
|
||||||
|
,cgbase
|
||||||
|
{$else newcg}
|
||||||
|
,hcodegen
|
||||||
|
{$endif newcg}
|
||||||
|
;
|
||||||
{*****************************************************************************
|
{*****************************************************************************
|
||||||
FirstLoadVMT
|
FirstLoadVMT
|
||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
@ -641,7 +646,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* log truncated
|
||||||
|
|
||||||
Revision 1.40 2000/01/10 16:38:43 pierre
|
Revision 1.40 2000/01/10 16:38:43 pierre
|
||||||
@ -717,4 +725,4 @@ end.
|
|||||||
* moved bitmask constants to sets
|
* moved bitmask constants to sets
|
||||||
* some other type/const renamings
|
* some other type/const renamings
|
||||||
|
|
||||||
}
|
}
|
@ -38,14 +38,20 @@ implementation
|
|||||||
globtype,systems,
|
globtype,systems,
|
||||||
cobjects,verbose,globals,
|
cobjects,verbose,globals,
|
||||||
symconst,symtable,aasm,types,
|
symconst,symtable,aasm,types,
|
||||||
hcodegen,htypechk,pass_1,
|
htypechk,pass_1,
|
||||||
tccnv,cpubase
|
tccnv,cpubase
|
||||||
|
{$ifdef newcg}
|
||||||
|
,cgbase
|
||||||
|
,tgcpu
|
||||||
|
{$else newcg}
|
||||||
|
,hcodegen
|
||||||
{$ifdef i386}
|
{$ifdef i386}
|
||||||
,tgeni386
|
,tgeni386
|
||||||
{$endif}
|
{$endif}
|
||||||
{$ifdef m68k}
|
{$ifdef m68k}
|
||||||
,tgen68k
|
,tgen68k
|
||||||
{$endif}
|
{$endif}
|
||||||
|
{$endif newcg}
|
||||||
;
|
;
|
||||||
|
|
||||||
{*****************************************************************************
|
{*****************************************************************************
|
||||||
@ -239,7 +245,11 @@ implementation
|
|||||||
hp : ptree;
|
hp : ptree;
|
||||||
begin
|
begin
|
||||||
{ evalutes the case expression }
|
{ evalutes the case expression }
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
firstpass(p^.left);
|
firstpass(p^.left);
|
||||||
set_varstate(p^.left,true);
|
set_varstate(p^.left,true);
|
||||||
if codegenerror then
|
if codegenerror then
|
||||||
@ -264,7 +274,11 @@ implementation
|
|||||||
hp:=p^.right;
|
hp:=p^.right;
|
||||||
while assigned(hp) do
|
while assigned(hp) do
|
||||||
begin
|
begin
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
firstpass(hp^.right);
|
firstpass(hp^.right);
|
||||||
|
|
||||||
{ searchs max registers }
|
{ searchs max registers }
|
||||||
@ -283,7 +297,11 @@ implementation
|
|||||||
{ may be handle else tree }
|
{ may be handle else tree }
|
||||||
if assigned(p^.elseblock) then
|
if assigned(p^.elseblock) then
|
||||||
begin
|
begin
|
||||||
|
{$ifdef newcg}
|
||||||
|
tg.cleartempgen;
|
||||||
|
{$else newcg}
|
||||||
cleartempgen;
|
cleartempgen;
|
||||||
|
{$endif newcg}
|
||||||
firstpass(p^.elseblock);
|
firstpass(p^.elseblock);
|
||||||
if codegenerror then
|
if codegenerror then
|
||||||
exit;
|
exit;
|
||||||
@ -306,7 +324,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* log truncated
|
||||||
|
|
||||||
Revision 1.17 2000/01/07 01:14:47 peter
|
Revision 1.17 2000/01/07 01:14:47 peter
|
||||||
@ -334,4 +355,3 @@ end.
|
|||||||
* some other type/const renamings
|
* some other type/const renamings
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -345,12 +345,20 @@ unit tree;
|
|||||||
|
|
||||||
{$I innr.inc}
|
{$I innr.inc}
|
||||||
|
|
||||||
|
{$ifdef newcg}
|
||||||
|
{$I nodeh.inc}
|
||||||
|
{$endif newcg}
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
systems,
|
systems,
|
||||||
globals,verbose,files,types,hcodegen;
|
globals,verbose,files,types,
|
||||||
|
{$ifdef newcg}
|
||||||
|
cgbase
|
||||||
|
{$else newcg}
|
||||||
|
hcodegen
|
||||||
|
{$endif newcg}
|
||||||
|
;
|
||||||
|
|
||||||
function getnode : ptree;
|
function getnode : ptree;
|
||||||
|
|
||||||
@ -1915,10 +1923,16 @@ unit tree;
|
|||||||
case_get_min:=hp^._low;
|
case_get_min:=hp^._low;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$ifdef newcg}
|
||||||
|
{$I node.inc}
|
||||||
|
{$endif newcg}
|
||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* log truncated
|
||||||
|
|
||||||
Revision 1.110 2000/01/26 12:02:30 peter
|
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
|
a same register is freed twice (happens in several part
|
||||||
of current compiler like addn for strings and sets)
|
of current compiler like addn for strings and sets)
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user