|
@@ -28,7 +28,7 @@ interface
|
|
uses
|
|
uses
|
|
cclasses,globals,
|
|
cclasses,globals,
|
|
node,nbas,
|
|
node,nbas,
|
|
- symdef,procinfo;
|
|
|
|
|
|
+ symdef,procinfo,optdfa;
|
|
|
|
|
|
type
|
|
type
|
|
tcgprocinfo = class(tprocinfo)
|
|
tcgprocinfo = class(tprocinfo)
|
|
@@ -46,6 +46,7 @@ interface
|
|
final_asmnode : tasmnode;
|
|
final_asmnode : tasmnode;
|
|
{ list to store the procinfo's of the nested procedures }
|
|
{ list to store the procinfo's of the nested procedures }
|
|
nestedprocs : tlinkedlist;
|
|
nestedprocs : tlinkedlist;
|
|
|
|
+ dfabuilder : TDFABuilder;
|
|
constructor create(aparent:tprocinfo);override;
|
|
constructor create(aparent:tprocinfo);override;
|
|
destructor destroy;override;
|
|
destructor destroy;override;
|
|
procedure printproc;
|
|
procedure printproc;
|
|
@@ -105,7 +106,6 @@ implementation
|
|
optbase,
|
|
optbase,
|
|
opttail,
|
|
opttail,
|
|
optcse,
|
|
optcse,
|
|
- optdfa,
|
|
|
|
optutils
|
|
optutils
|
|
{$if defined(arm) or defined(powerpc) or defined(powerpc64)}
|
|
{$if defined(arm) or defined(powerpc) or defined(powerpc64)}
|
|
,aasmcpu
|
|
,aasmcpu
|
|
@@ -771,18 +771,19 @@ implementation
|
|
pi_needs_implicit_finally,pi_has_implicit_finally,pi_has_stackparameter,
|
|
pi_needs_implicit_finally,pi_has_implicit_finally,pi_has_stackparameter,
|
|
pi_needs_stackframe])=[]) then
|
|
pi_needs_stackframe])=[]) then
|
|
begin
|
|
begin
|
|
- createdfainfo(code);
|
|
|
|
|
|
+ dfabuilder:=TDFABuilder.Create;
|
|
|
|
+ dfabuilder.createdfainfo(code);
|
|
{ when life info is available, we can give more sophisticated warning about unintialized
|
|
{ when life info is available, we can give more sophisticated warning about unintialized
|
|
variables }
|
|
variables }
|
|
|
|
|
|
{ iterate through life info of the first node }
|
|
{ iterate through life info of the first node }
|
|
- for i:=0 to nodemap.count-1 do
|
|
|
|
|
|
+ for i:=0 to dfabuilder.nodemap.count-1 do
|
|
begin
|
|
begin
|
|
if DFASetIn(code.optinfo^.life,i) then
|
|
if DFASetIn(code.optinfo^.life,i) then
|
|
- case tnode(nodemap[i]).nodetype of
|
|
|
|
|
|
+ case tnode(dfabuilder.nodemap[i]).nodetype of
|
|
loadn:
|
|
loadn:
|
|
begin
|
|
begin
|
|
- varsym:=tabstractnormalvarsym(tloadnode(nodemap[i]).symtableentry);
|
|
|
|
|
|
+ varsym:=tabstractnormalvarsym(tloadnode(dfabuilder.nodemap[i]).symtableentry);
|
|
|
|
|
|
{ Give warning/note for living locals }
|
|
{ Give warning/note for living locals }
|
|
if assigned(varsym.owner) and
|
|
if assigned(varsym.owner) and
|
|
@@ -1100,6 +1101,8 @@ implementation
|
|
tg:=nil;
|
|
tg:=nil;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+ dfabuilder.free;
|
|
|
|
+
|
|
{ restore symtablestack }
|
|
{ restore symtablestack }
|
|
remove_from_symtablestack;
|
|
remove_from_symtablestack;
|
|
|
|
|