mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-14 14:59:32 +02:00
* 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:
parent
15846bf3d1
commit
769eb3f604
@ -642,9 +642,9 @@ interface
|
||||
{ array with all class types for tais }
|
||||
aiclass : taiclassarray;
|
||||
|
||||
{ target specific tais }
|
||||
cai_align : tai_align_class;
|
||||
cai_cpu : tai_cpu_class;
|
||||
{ target specific tais, possibly overwritten in target specific aasmcpu }
|
||||
cai_align : tai_align_class = tai_align_abstract;
|
||||
cai_cpu : tai_cpu_class = tai_cpu_abstract;
|
||||
|
||||
{ hook to notify uses of registers }
|
||||
add_reg_instruction_hook : tadd_reg_instruction_proc;
|
||||
@ -2405,11 +2405,4 @@ implementation
|
||||
ppufile.putbyte(byte(use_op));
|
||||
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.
|
||||
|
@ -85,7 +85,7 @@ interface
|
||||
{ the virtual constructor allows to assign }
|
||||
{ another class type to caddnode => processor }
|
||||
{ specific node types can be created }
|
||||
caddnode : taddnodeclass;
|
||||
caddnode : taddnodeclass = taddnode;
|
||||
|
||||
implementation
|
||||
|
||||
@ -2806,6 +2806,4 @@ implementation
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
begin
|
||||
caddnode:=taddnode;
|
||||
end.
|
||||
|
@ -194,14 +194,14 @@ type
|
||||
ttempdeletenodeclass = class of ttempdeletenode;
|
||||
|
||||
var
|
||||
cnothingnode : tnothingnodeclass;
|
||||
cerrornode : terrornodeclass;
|
||||
casmnode : tasmnodeclass;
|
||||
cstatementnode : tstatementnodeclass;
|
||||
cblocknode : tblocknodeclass;
|
||||
ctempcreatenode : ttempcreatenodeclass;
|
||||
ctemprefnode : ttemprefnodeclass;
|
||||
ctempdeletenode : ttempdeletenodeclass;
|
||||
cnothingnode : tnothingnodeclass = tnothingnode;
|
||||
cerrornode : terrornodeclass = terrornode;
|
||||
casmnode : tasmnodeclass = tasmnode;
|
||||
cstatementnode : tstatementnodeclass = tstatementnode;
|
||||
cblocknode : tblocknodeclass = tblocknode;
|
||||
ctempcreatenode : ttempcreatenodeclass = ttempcreatenode;
|
||||
ctemprefnode : ttemprefnodeclass = ttemprefnode;
|
||||
ctempdeletenode : ttempdeletenodeclass = ttempdeletenode;
|
||||
|
||||
{ Create a blocknode and statement node for multiple statements
|
||||
generated internally by the parser }
|
||||
@ -1127,13 +1127,4 @@ implementation
|
||||
tempinfo^.typedef.GetTypeName,'", tempinfo = $',hexstr(ptrint(tempinfo),sizeof(ptrint)*2));
|
||||
end;
|
||||
|
||||
begin
|
||||
cnothingnode:=tnothingnode;
|
||||
cerrornode:=terrornode;
|
||||
casmnode:=tasmnode;
|
||||
cstatementnode:=tstatementnode;
|
||||
cblocknode:=tblocknode;
|
||||
ctempcreatenode:=ttempcreatenode;
|
||||
ctemprefnode:=ttemprefnode;
|
||||
ctempdeletenode:=ttempdeletenode;
|
||||
end.
|
||||
|
@ -224,8 +224,8 @@ interface
|
||||
function translate_disp_call(selfnode,parametersnode,putvalue : tnode;methodname : ansistring;dispid : longint;resultdef : tdef) : tnode;
|
||||
|
||||
var
|
||||
ccallnode : tcallnodeclass;
|
||||
ccallparanode : tcallparanodeclass;
|
||||
ccallnode : tcallnodeclass = tcallnode;
|
||||
ccallparanode : tcallparanodeclass = tcallparanode;
|
||||
|
||||
{ Current callnode, this is needed for having a link
|
||||
between the callparanodes and the callnode they belong to }
|
||||
@ -3803,8 +3803,4 @@ implementation
|
||||
{$endif DEBUGINLINE}
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
ccallnode:=tcallnode;
|
||||
ccallparanode:=tcallparanode;
|
||||
end.
|
||||
|
@ -219,9 +219,9 @@ interface
|
||||
tisnodeclass = class of tisnode;
|
||||
|
||||
var
|
||||
ctypeconvnode : ttypeconvnodeclass;
|
||||
casnode : tasnodeclass;
|
||||
cisnode : tisnodeclass;
|
||||
ctypeconvnode : ttypeconvnodeclass = ttypeconvnode;
|
||||
casnode : tasnodeclass = tasnode;
|
||||
cisnode : tisnodeclass=tisnode;
|
||||
|
||||
procedure inserttypeconv(var p:tnode;def:tdef);
|
||||
procedure inserttypeconv_explicit(var p:tnode;def:tdef);
|
||||
@ -3601,9 +3601,4 @@ implementation
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
ctypeconvnode:=ttypeconvnode;
|
||||
casnode:=tasnode;
|
||||
cisnode:=tisnode;
|
||||
end.
|
||||
|
@ -178,14 +178,14 @@ interface
|
||||
tguidconstnodeclass = class of tguidconstnode;
|
||||
|
||||
var
|
||||
cdataconstnode : tdataconstnodeclass;
|
||||
crealconstnode : trealconstnodeclass;
|
||||
cordconstnode : tordconstnodeclass;
|
||||
cpointerconstnode : tpointerconstnodeclass;
|
||||
cstringconstnode : tstringconstnodeclass;
|
||||
csetconstnode : tsetconstnodeclass;
|
||||
cguidconstnode : tguidconstnodeclass;
|
||||
cnilnode : tnilnodeclass;
|
||||
crealconstnode : trealconstnodeclass = trealconstnode;
|
||||
cordconstnode : tordconstnodeclass = tordconstnode;
|
||||
cpointerconstnode : tpointerconstnodeclass = tpointerconstnode;
|
||||
cstringconstnode : tstringconstnodeclass = tstringconstnode;
|
||||
csetconstnode : tsetconstnodeclass = tsetconstnode;
|
||||
cguidconstnode : tguidconstnodeclass = tguidconstnode;
|
||||
cnilnode : tnilnodeclass=tnilnode;
|
||||
cdataconstnode : tdataconstnodeclass = tdataconstnode;
|
||||
|
||||
function genintconstnode(v : TConstExprInt) : tordconstnode;
|
||||
function genenumnode(v : tenumsym) : tordconstnode;
|
||||
@ -1220,13 +1220,4 @@ implementation
|
||||
(guid2string(value) = guid2string(tguidconstnode(p).value));
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
crealconstnode:=trealconstnode;
|
||||
cordconstnode:=tordconstnode;
|
||||
cpointerconstnode:=tpointerconstnode;
|
||||
cstringconstnode:=tstringconstnode;
|
||||
csetconstnode:=tsetconstnode;
|
||||
cnilnode:=tnilnode;
|
||||
cguidconstnode:=tguidconstnode;
|
||||
end.
|
||||
|
@ -205,18 +205,18 @@ interface
|
||||
tonnodeclass = class of tonnode;
|
||||
|
||||
var
|
||||
cwhilerepeatnode : twhilerepeatnodeclass;
|
||||
cifnode : tifnodeclass;
|
||||
cfornode : tfornodeclass;
|
||||
cexitnode : texitnodeclass;
|
||||
cbreaknode : tbreaknodeclass;
|
||||
ccontinuenode : tcontinuenodeclass;
|
||||
cgotonode : tgotonodeclass;
|
||||
clabelnode : tlabelnodeclass;
|
||||
craisenode : traisenodeclass;
|
||||
ctryexceptnode : ttryexceptnodeclass;
|
||||
ctryfinallynode : ttryfinallynodeclass;
|
||||
connode : tonnodeclass;
|
||||
cwhilerepeatnode : twhilerepeatnodeclass=twhilerepeatnode;
|
||||
cifnode : tifnodeclass = tifnode;
|
||||
cfornode : tfornodeclass = tfornode;
|
||||
cexitnode : texitnodeclass = texitnode;
|
||||
cgotonode : tgotonodeclass = tgotonode;
|
||||
clabelnode : tlabelnodeclass = tlabelnode;
|
||||
craisenode : traisenodeclass = traisenode;
|
||||
ctryexceptnode : ttryexceptnodeclass = ttryexceptnode;
|
||||
ctryfinallynode : ttryfinallynodeclass = ttryfinallynode;
|
||||
connode : tonnodeclass = tonnode;
|
||||
cbreaknode : tbreaknodeclass = tbreaknode;
|
||||
ccontinuenode : tcontinuenodeclass = tcontinuenode;
|
||||
|
||||
// for-in loop helpers
|
||||
function create_type_for_in_loop(hloopvar, hloopbody, expr: tnode): tnode;
|
||||
@ -2105,16 +2105,4 @@ implementation
|
||||
docompare := false;
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
cwhilerepeatnode:=twhilerepeatnode;
|
||||
cifnode:=tifnode;
|
||||
cfornode:=tfornode;
|
||||
cexitnode:=texitnode;
|
||||
cgotonode:=tgotonode;
|
||||
clabelnode:=tlabelnode;
|
||||
craisenode:=traisenode;
|
||||
ctryexceptnode:=ttryexceptnode;
|
||||
ctryfinallynode:=ttryfinallynode;
|
||||
connode:=tonnode;
|
||||
end.
|
||||
|
@ -75,7 +75,7 @@ interface
|
||||
tinlinenodeclass = class of tinlinenode;
|
||||
|
||||
var
|
||||
cinlinenode : tinlinenodeclass;
|
||||
cinlinenode : tinlinenodeclass = tinlinenode;
|
||||
|
||||
function geninlinenode(number : byte;is_const:boolean;l : tnode) : tinlinenode;
|
||||
|
||||
@ -3224,6 +3224,4 @@ implementation
|
||||
result := loop;
|
||||
end;
|
||||
|
||||
begin
|
||||
cinlinenode:=tinlinenode;
|
||||
end.
|
||||
|
@ -134,12 +134,12 @@ interface
|
||||
trttinodeclass = class of trttinode;
|
||||
|
||||
var
|
||||
cloadnode : tloadnodeclass;
|
||||
cassignmentnode : tassignmentnodeclass;
|
||||
carrayconstructorrangenode : tarrayconstructorrangenodeclass;
|
||||
carrayconstructornode : tarrayconstructornodeclass;
|
||||
ctypenode : ttypenodeclass;
|
||||
crttinode : trttinodeclass;
|
||||
cloadnode : tloadnodeclass = tloadnode;
|
||||
cassignmentnode : tassignmentnodeclass = tassignmentnode;
|
||||
carrayconstructorrangenode : tarrayconstructorrangenodeclass = tarrayconstructorrangenode;
|
||||
carrayconstructornode : tarrayconstructornodeclass = tarrayconstructornode;
|
||||
ctypenode : ttypenodeclass = ttypenode;
|
||||
crttinode : trttinodeclass = trttinode;
|
||||
|
||||
{ Current assignment node }
|
||||
aktassignmentnode : tassignmentnode;
|
||||
@ -1187,12 +1187,4 @@ implementation
|
||||
(rttitype = trttinode(p).rttitype);
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
cloadnode:=tloadnode;
|
||||
cassignmentnode:=tassignmentnode;
|
||||
carrayconstructorrangenode:=tarrayconstructorrangenode;
|
||||
carrayconstructornode:=tarrayconstructornode;
|
||||
ctypenode:=ttypenode;
|
||||
crttinode:=trttinode;
|
||||
end.
|
||||
|
@ -79,10 +79,10 @@ interface
|
||||
tnotnodeclass = class of tnotnode;
|
||||
|
||||
var
|
||||
cmoddivnode : tmoddivnodeclass;
|
||||
cshlshrnode : tshlshrnodeclass;
|
||||
cunaryminusnode : tunaryminusnodeclass;
|
||||
cnotnode : tnotnodeclass;
|
||||
cmoddivnode : tmoddivnodeclass = tmoddivnode;
|
||||
cshlshrnode : tshlshrnodeclass = tshlshrnode;
|
||||
cunaryminusnode : tunaryminusnodeclass = tunaryminusnode;
|
||||
cnotnode : tnotnodeclass = tnotnode;
|
||||
|
||||
implementation
|
||||
|
||||
@ -938,9 +938,4 @@ implementation
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
begin
|
||||
cmoddivnode:=tmoddivnode;
|
||||
cshlshrnode:=tshlshrnode;
|
||||
cunaryminusnode:=tunaryminusnode;
|
||||
cnotnode:=tnotnode;
|
||||
end.
|
||||
|
@ -117,13 +117,13 @@ interface
|
||||
twithnodeclass = class of twithnode;
|
||||
|
||||
var
|
||||
cloadvmtaddrnode : tloadvmtaddrnodeclass;
|
||||
cloadparentfpnode : tloadparentfpnodeclass;
|
||||
caddrnode : taddrnodeclass;
|
||||
cderefnode : tderefnodeclass;
|
||||
csubscriptnode : tsubscriptnodeclass;
|
||||
cvecnode : tvecnodeclass;
|
||||
cwithnode : twithnodeclass;
|
||||
cloadvmtaddrnode : tloadvmtaddrnodeclass= tloadvmtaddrnode;
|
||||
caddrnode : taddrnodeclass= taddrnode;
|
||||
cderefnode : tderefnodeclass= tderefnode;
|
||||
csubscriptnode : tsubscriptnodeclass= tsubscriptnode;
|
||||
cvecnode : tvecnodeclass= tvecnode;
|
||||
cwithnode : twithnodeclass= twithnode;
|
||||
cloadparentfpnode : tloadparentfpnodeclass = tloadparentfpnode;
|
||||
|
||||
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);
|
||||
end;
|
||||
|
||||
begin
|
||||
cloadvmtaddrnode := tloadvmtaddrnode;
|
||||
caddrnode := taddrnode;
|
||||
cderefnode := tderefnode;
|
||||
csubscriptnode := tsubscriptnode;
|
||||
cvecnode := tvecnode;
|
||||
cwithnode := twithnode;
|
||||
end.
|
||||
|
@ -110,10 +110,10 @@ interface
|
||||
tcasenodeclass = class of tcasenode;
|
||||
|
||||
var
|
||||
csetelementnode : tsetelementnodeclass;
|
||||
cinnode : tinnodeclass;
|
||||
crangenode : trangenodeclass;
|
||||
ccasenode : tcasenodeclass;
|
||||
csetelementnode : tsetelementnodeclass = tsetelementnode;
|
||||
cinnode : tinnodeclass = tinnode;
|
||||
crangenode : trangenodeclass = trangenode;
|
||||
ccasenode : tcasenodeclass = tcasenode;
|
||||
|
||||
{ counts the labels }
|
||||
function case_count_labels(root : pcaselabel) : longint;
|
||||
@ -1017,9 +1017,4 @@ implementation
|
||||
insertlabel(labels);
|
||||
end;
|
||||
|
||||
begin
|
||||
csetelementnode:=tsetelementnode;
|
||||
cinnode:=tinnode;
|
||||
crangenode:=trangenode;
|
||||
ccasenode:=tcasenode;
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user