|
@@ -51,7 +51,8 @@ interface
|
|
|
|
|
|
tlabelsym = class(tstoredsym)
|
|
tlabelsym = class(tstoredsym)
|
|
used,
|
|
used,
|
|
- defined : boolean;
|
|
|
|
|
|
+ defined,
|
|
|
|
+ nonlocal : boolean;
|
|
{ points to the matching node, only valid resultdef pass is run and
|
|
{ points to the matching node, only valid resultdef pass is run and
|
|
the goto<->label relation in the node tree is created, should
|
|
the goto<->label relation in the node tree is created, should
|
|
be a tnode }
|
|
be a tnode }
|
|
@@ -390,6 +391,7 @@ implementation
|
|
inherited create(labelsym,n);
|
|
inherited create(labelsym,n);
|
|
used:=false;
|
|
used:=false;
|
|
defined:=false;
|
|
defined:=false;
|
|
|
|
+ nonlocal:=false;
|
|
code:=nil;
|
|
code:=nil;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -399,6 +401,7 @@ implementation
|
|
inherited ppuload(labelsym,ppufile);
|
|
inherited ppuload(labelsym,ppufile);
|
|
code:=nil;
|
|
code:=nil;
|
|
used:=false;
|
|
used:=false;
|
|
|
|
+ nonlocal:=false;
|
|
defined:=true;
|
|
defined:=true;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -420,7 +423,10 @@ implementation
|
|
if not(defined) then
|
|
if not(defined) then
|
|
begin
|
|
begin
|
|
defined:=true;
|
|
defined:=true;
|
|
- current_asmdata.getjumplabel(asmblocklabel);
|
|
|
|
|
|
+ if nonlocal then
|
|
|
|
+ current_asmdata.getglobaljumplabel(asmblocklabel)
|
|
|
|
+ else
|
|
|
|
+ current_asmdata.getjumplabel(asmblocklabel);
|
|
end;
|
|
end;
|
|
result:=asmblocklabel.name;
|
|
result:=asmblocklabel.name;
|
|
end;
|
|
end;
|