* moved the initialisation of the nodetree and tai class reference constants

from the unit initialisation sections to the variable declaration sections
    to prevent the base units from overriding derived classes (based on patch
    by Hans-Peter Dietrich, mantis #17516)

git-svn-id: trunk@16118 -
This commit is contained in:
Jonas Maebe 2010-10-09 18:52:22 +00:00
parent 15846bf3d1
commit 769eb3f604
12 changed files with 59 additions and 134 deletions

View File

@ -642,9 +642,9 @@ interface
{ array with all class types for tais } { array with all class types for tais }
aiclass : taiclassarray; aiclass : taiclassarray;
{ target specific tais } { target specific tais, possibly overwritten in target specific aasmcpu }
cai_align : tai_align_class; cai_align : tai_align_class = tai_align_abstract;
cai_cpu : tai_cpu_class; cai_cpu : tai_cpu_class = tai_cpu_abstract;
{ hook to notify uses of registers } { hook to notify uses of registers }
add_reg_instruction_hook : tadd_reg_instruction_proc; add_reg_instruction_hook : tadd_reg_instruction_proc;
@ -2405,11 +2405,4 @@ implementation
ppufile.putbyte(byte(use_op)); ppufile.putbyte(byte(use_op));
end; end;
begin
cai_cpu:=tai_cpu_abstract;
{ aasmcpu is earlier in the unit order and can
already set the cai_align }
if not assigned(cai_align) then
cai_align:=tai_align_abstract;
end. end.

View File

@ -85,7 +85,7 @@ interface
{ the virtual constructor allows to assign } { the virtual constructor allows to assign }
{ another class type to caddnode => processor } { another class type to caddnode => processor }
{ specific node types can be created } { specific node types can be created }
caddnode : taddnodeclass; caddnode : taddnodeclass = taddnode;
implementation implementation
@ -2806,6 +2806,4 @@ implementation
end; end;
{$endif} {$endif}
begin
caddnode:=taddnode;
end. end.

View File

@ -194,14 +194,14 @@ type
ttempdeletenodeclass = class of ttempdeletenode; ttempdeletenodeclass = class of ttempdeletenode;
var var
cnothingnode : tnothingnodeclass; cnothingnode : tnothingnodeclass = tnothingnode;
cerrornode : terrornodeclass; cerrornode : terrornodeclass = terrornode;
casmnode : tasmnodeclass; casmnode : tasmnodeclass = tasmnode;
cstatementnode : tstatementnodeclass; cstatementnode : tstatementnodeclass = tstatementnode;
cblocknode : tblocknodeclass; cblocknode : tblocknodeclass = tblocknode;
ctempcreatenode : ttempcreatenodeclass; ctempcreatenode : ttempcreatenodeclass = ttempcreatenode;
ctemprefnode : ttemprefnodeclass; ctemprefnode : ttemprefnodeclass = ttemprefnode;
ctempdeletenode : ttempdeletenodeclass; ctempdeletenode : ttempdeletenodeclass = ttempdeletenode;
{ Create a blocknode and statement node for multiple statements { Create a blocknode and statement node for multiple statements
generated internally by the parser } generated internally by the parser }
@ -1127,13 +1127,4 @@ implementation
tempinfo^.typedef.GetTypeName,'", tempinfo = $',hexstr(ptrint(tempinfo),sizeof(ptrint)*2)); tempinfo^.typedef.GetTypeName,'", tempinfo = $',hexstr(ptrint(tempinfo),sizeof(ptrint)*2));
end; end;
begin
cnothingnode:=tnothingnode;
cerrornode:=terrornode;
casmnode:=tasmnode;
cstatementnode:=tstatementnode;
cblocknode:=tblocknode;
ctempcreatenode:=ttempcreatenode;
ctemprefnode:=ttemprefnode;
ctempdeletenode:=ttempdeletenode;
end. end.

View File

@ -224,8 +224,8 @@ interface
function translate_disp_call(selfnode,parametersnode,putvalue : tnode;methodname : ansistring;dispid : longint;resultdef : tdef) : tnode; function translate_disp_call(selfnode,parametersnode,putvalue : tnode;methodname : ansistring;dispid : longint;resultdef : tdef) : tnode;
var var
ccallnode : tcallnodeclass; ccallnode : tcallnodeclass = tcallnode;
ccallparanode : tcallparanodeclass; ccallparanode : tcallparanodeclass = tcallparanode;
{ Current callnode, this is needed for having a link { Current callnode, this is needed for having a link
between the callparanodes and the callnode they belong to } between the callparanodes and the callnode they belong to }
@ -3803,8 +3803,4 @@ implementation
{$endif DEBUGINLINE} {$endif DEBUGINLINE}
end; end;
begin
ccallnode:=tcallnode;
ccallparanode:=tcallparanode;
end. end.

View File

@ -219,9 +219,9 @@ interface
tisnodeclass = class of tisnode; tisnodeclass = class of tisnode;
var var
ctypeconvnode : ttypeconvnodeclass; ctypeconvnode : ttypeconvnodeclass = ttypeconvnode;
casnode : tasnodeclass; casnode : tasnodeclass = tasnode;
cisnode : tisnodeclass; cisnode : tisnodeclass=tisnode;
procedure inserttypeconv(var p:tnode;def:tdef); procedure inserttypeconv(var p:tnode;def:tdef);
procedure inserttypeconv_explicit(var p:tnode;def:tdef); procedure inserttypeconv_explicit(var p:tnode;def:tdef);
@ -3601,9 +3601,4 @@ implementation
end; end;
end; end;
begin
ctypeconvnode:=ttypeconvnode;
casnode:=tasnode;
cisnode:=tisnode;
end. end.

View File

@ -178,14 +178,14 @@ interface
tguidconstnodeclass = class of tguidconstnode; tguidconstnodeclass = class of tguidconstnode;
var var
cdataconstnode : tdataconstnodeclass; crealconstnode : trealconstnodeclass = trealconstnode;
crealconstnode : trealconstnodeclass; cordconstnode : tordconstnodeclass = tordconstnode;
cordconstnode : tordconstnodeclass; cpointerconstnode : tpointerconstnodeclass = tpointerconstnode;
cpointerconstnode : tpointerconstnodeclass; cstringconstnode : tstringconstnodeclass = tstringconstnode;
cstringconstnode : tstringconstnodeclass; csetconstnode : tsetconstnodeclass = tsetconstnode;
csetconstnode : tsetconstnodeclass; cguidconstnode : tguidconstnodeclass = tguidconstnode;
cguidconstnode : tguidconstnodeclass; cnilnode : tnilnodeclass=tnilnode;
cnilnode : tnilnodeclass; cdataconstnode : tdataconstnodeclass = tdataconstnode;
function genintconstnode(v : TConstExprInt) : tordconstnode; function genintconstnode(v : TConstExprInt) : tordconstnode;
function genenumnode(v : tenumsym) : tordconstnode; function genenumnode(v : tenumsym) : tordconstnode;
@ -1220,13 +1220,4 @@ implementation
(guid2string(value) = guid2string(tguidconstnode(p).value)); (guid2string(value) = guid2string(tguidconstnode(p).value));
end; end;
begin
crealconstnode:=trealconstnode;
cordconstnode:=tordconstnode;
cpointerconstnode:=tpointerconstnode;
cstringconstnode:=tstringconstnode;
csetconstnode:=tsetconstnode;
cnilnode:=tnilnode;
cguidconstnode:=tguidconstnode;
end. end.

View File

@ -205,18 +205,18 @@ interface
tonnodeclass = class of tonnode; tonnodeclass = class of tonnode;
var var
cwhilerepeatnode : twhilerepeatnodeclass; cwhilerepeatnode : twhilerepeatnodeclass=twhilerepeatnode;
cifnode : tifnodeclass; cifnode : tifnodeclass = tifnode;
cfornode : tfornodeclass; cfornode : tfornodeclass = tfornode;
cexitnode : texitnodeclass; cexitnode : texitnodeclass = texitnode;
cbreaknode : tbreaknodeclass; cgotonode : tgotonodeclass = tgotonode;
ccontinuenode : tcontinuenodeclass; clabelnode : tlabelnodeclass = tlabelnode;
cgotonode : tgotonodeclass; craisenode : traisenodeclass = traisenode;
clabelnode : tlabelnodeclass; ctryexceptnode : ttryexceptnodeclass = ttryexceptnode;
craisenode : traisenodeclass; ctryfinallynode : ttryfinallynodeclass = ttryfinallynode;
ctryexceptnode : ttryexceptnodeclass; connode : tonnodeclass = tonnode;
ctryfinallynode : ttryfinallynodeclass; cbreaknode : tbreaknodeclass = tbreaknode;
connode : tonnodeclass; ccontinuenode : tcontinuenodeclass = tcontinuenode;
// for-in loop helpers // for-in loop helpers
function create_type_for_in_loop(hloopvar, hloopbody, expr: tnode): tnode; function create_type_for_in_loop(hloopvar, hloopbody, expr: tnode): tnode;
@ -2105,16 +2105,4 @@ implementation
docompare := false; docompare := false;
end; end;
begin
cwhilerepeatnode:=twhilerepeatnode;
cifnode:=tifnode;
cfornode:=tfornode;
cexitnode:=texitnode;
cgotonode:=tgotonode;
clabelnode:=tlabelnode;
craisenode:=traisenode;
ctryexceptnode:=ttryexceptnode;
ctryfinallynode:=ttryfinallynode;
connode:=tonnode;
end. end.

View File

@ -75,7 +75,7 @@ interface
tinlinenodeclass = class of tinlinenode; tinlinenodeclass = class of tinlinenode;
var var
cinlinenode : tinlinenodeclass; cinlinenode : tinlinenodeclass = tinlinenode;
function geninlinenode(number : byte;is_const:boolean;l : tnode) : tinlinenode; function geninlinenode(number : byte;is_const:boolean;l : tnode) : tinlinenode;
@ -3224,6 +3224,4 @@ implementation
result := loop; result := loop;
end; end;
begin
cinlinenode:=tinlinenode;
end. end.

View File

@ -134,12 +134,12 @@ interface
trttinodeclass = class of trttinode; trttinodeclass = class of trttinode;
var var
cloadnode : tloadnodeclass; cloadnode : tloadnodeclass = tloadnode;
cassignmentnode : tassignmentnodeclass; cassignmentnode : tassignmentnodeclass = tassignmentnode;
carrayconstructorrangenode : tarrayconstructorrangenodeclass; carrayconstructorrangenode : tarrayconstructorrangenodeclass = tarrayconstructorrangenode;
carrayconstructornode : tarrayconstructornodeclass; carrayconstructornode : tarrayconstructornodeclass = tarrayconstructornode;
ctypenode : ttypenodeclass; ctypenode : ttypenodeclass = ttypenode;
crttinode : trttinodeclass; crttinode : trttinodeclass = trttinode;
{ Current assignment node } { Current assignment node }
aktassignmentnode : tassignmentnode; aktassignmentnode : tassignmentnode;
@ -1187,12 +1187,4 @@ implementation
(rttitype = trttinode(p).rttitype); (rttitype = trttinode(p).rttitype);
end; end;
begin
cloadnode:=tloadnode;
cassignmentnode:=tassignmentnode;
carrayconstructorrangenode:=tarrayconstructorrangenode;
carrayconstructornode:=tarrayconstructornode;
ctypenode:=ttypenode;
crttinode:=trttinode;
end. end.

View File

@ -79,10 +79,10 @@ interface
tnotnodeclass = class of tnotnode; tnotnodeclass = class of tnotnode;
var var
cmoddivnode : tmoddivnodeclass; cmoddivnode : tmoddivnodeclass = tmoddivnode;
cshlshrnode : tshlshrnodeclass; cshlshrnode : tshlshrnodeclass = tshlshrnode;
cunaryminusnode : tunaryminusnodeclass; cunaryminusnode : tunaryminusnodeclass = tunaryminusnode;
cnotnode : tnotnodeclass; cnotnode : tnotnodeclass = tnotnode;
implementation implementation
@ -938,9 +938,4 @@ implementation
end; end;
{$endif} {$endif}
begin
cmoddivnode:=tmoddivnode;
cshlshrnode:=tshlshrnode;
cunaryminusnode:=tunaryminusnode;
cnotnode:=tnotnode;
end. end.

View File

@ -117,13 +117,13 @@ interface
twithnodeclass = class of twithnode; twithnodeclass = class of twithnode;
var var
cloadvmtaddrnode : tloadvmtaddrnodeclass; cloadvmtaddrnode : tloadvmtaddrnodeclass= tloadvmtaddrnode;
cloadparentfpnode : tloadparentfpnodeclass; caddrnode : taddrnodeclass= taddrnode;
caddrnode : taddrnodeclass; cderefnode : tderefnodeclass= tderefnode;
cderefnode : tderefnodeclass; csubscriptnode : tsubscriptnodeclass= tsubscriptnode;
csubscriptnode : tsubscriptnodeclass; cvecnode : tvecnodeclass= tvecnode;
cvecnode : tvecnodeclass; cwithnode : twithnodeclass= twithnode;
cwithnode : twithnodeclass; cloadparentfpnode : tloadparentfpnodeclass = tloadparentfpnode;
function is_big_untyped_addrnode(p: tnode): boolean; function is_big_untyped_addrnode(p: tnode): boolean;
@ -1016,11 +1016,4 @@ implementation
not (nf_typedaddr in p.flags) and (taddrnode(p).left.resultdef.size > 1); not (nf_typedaddr in p.flags) and (taddrnode(p).left.resultdef.size > 1);
end; end;
begin
cloadvmtaddrnode := tloadvmtaddrnode;
caddrnode := taddrnode;
cderefnode := tderefnode;
csubscriptnode := tsubscriptnode;
cvecnode := tvecnode;
cwithnode := twithnode;
end. end.

View File

@ -110,10 +110,10 @@ interface
tcasenodeclass = class of tcasenode; tcasenodeclass = class of tcasenode;
var var
csetelementnode : tsetelementnodeclass; csetelementnode : tsetelementnodeclass = tsetelementnode;
cinnode : tinnodeclass; cinnode : tinnodeclass = tinnode;
crangenode : trangenodeclass; crangenode : trangenodeclass = trangenode;
ccasenode : tcasenodeclass; ccasenode : tcasenodeclass = tcasenode;
{ counts the labels } { counts the labels }
function case_count_labels(root : pcaselabel) : longint; function case_count_labels(root : pcaselabel) : longint;
@ -1017,9 +1017,4 @@ implementation
insertlabel(labels); insertlabel(labels);
end; end;
begin
csetelementnode:=tsetelementnode;
cinnode:=tinnode;
crangenode:=trangenode;
ccasenode:=tcasenode;
end. end.