|
@@ -142,6 +142,7 @@ implementation
|
|
function tloadnode.det_resulttype:tnode;
|
|
function tloadnode.det_resulttype:tnode;
|
|
var
|
|
var
|
|
p1 : tnode;
|
|
p1 : tnode;
|
|
|
|
+ p : pprocinfo;
|
|
begin
|
|
begin
|
|
result:=nil;
|
|
result:=nil;
|
|
{ optimize simple with loadings }
|
|
{ optimize simple with loadings }
|
|
@@ -175,6 +176,20 @@ implementation
|
|
case symtableentry.typ of
|
|
case symtableentry.typ of
|
|
funcretsym :
|
|
funcretsym :
|
|
begin
|
|
begin
|
|
|
|
+ { find the main funcret for the function }
|
|
|
|
+ p:=procinfo;
|
|
|
|
+ while assigned(p) do
|
|
|
|
+ begin
|
|
|
|
+ if assigned(p^.procdef.funcretsym) and
|
|
|
|
+ ((tfuncretsym(symtableentry)=p^.procdef.resultfuncretsym) or
|
|
|
|
+ (tfuncretsym(symtableentry)=p^.procdef.funcretsym)) then
|
|
|
|
+ begin
|
|
|
|
+ symtableentry:=p^.procdef.funcretsym;
|
|
|
|
+ break;
|
|
|
|
+ end;
|
|
|
|
+ p:=p^.parent;
|
|
|
|
+ end;
|
|
|
|
+ { generate funcretnode }
|
|
p1:=cfuncretnode.create(symtableentry);
|
|
p1:=cfuncretnode.create(symtableentry);
|
|
resulttypepass(p1);
|
|
resulttypepass(p1);
|
|
{ if it's refered as absolute then we need to have the
|
|
{ if it's refered as absolute then we need to have the
|
|
@@ -781,7 +796,10 @@ begin
|
|
end.
|
|
end.
|
|
{
|
|
{
|
|
$Log$
|
|
$Log$
|
|
- Revision 1.23 2001-08-26 13:36:41 florian
|
|
|
|
|
|
+ Revision 1.24 2001-08-30 15:48:34 jonas
|
|
|
|
+ * fix from Peter for getting correct symtableentry for funcret loads
|
|
|
|
+
|
|
|
|
+ Revision 1.23 2001/08/26 13:36:41 florian
|
|
* some cg reorganisation
|
|
* some cg reorganisation
|
|
* some PPC updates
|
|
* some PPC updates
|
|
|
|
|