* remove is_single_reference

* revert loading of ref-to-ref para valu
This commit is contained in:
peter 2005-02-15 21:39:48 +00:00
parent f3df72d1b1
commit 5edffaf371
3 changed files with 33 additions and 23 deletions

View File

@ -705,7 +705,8 @@ implementation
must contain a valid size field }
if (ppn.tempcgpara.size=OS_NO) and
not(ppn.tempcgpara.is_single_reference(tmpparaloc)) then
((tmpparaloc^.loc<>LOC_REFERENCE) or
assigned(tmpparaloc^.next)) then
internalerror(200501281);
reference_reset_base(href,callerparaloc^.reference.index,callerparaloc^.reference.offset);
{ copy parameters in case they were moved to a temp. location because we've a fixed stack }
@ -1225,7 +1226,11 @@ begin
end.
{
$Log$
Revision 1.200 2005-02-14 17:13:06 peter
Revision 1.201 2005-02-15 21:39:48 peter
* remove is_single_reference
* revert loading of ref-to-ref para valu
Revision 1.200 2005/02/14 17:13:06 peter
* truncate log
Revision 1.199 2005/01/30 21:51:57 jonas

View File

@ -1337,8 +1337,8 @@ implementation
hreflo,
hrefhi,
href : treference;
{$ifdef sparc}
sizeleft : aint;
{$ifdef sparc}
tempref : treference;
{$endif sparc}
begin
@ -1376,22 +1376,28 @@ implementation
if not paramanager.param_use_paraloc(currpara.paraloc[calleeside]) then
begin
href:=currpara.localloc.reference;
if (currpara.paraloc[calleeside].is_single_reference(paraloc)) then
sizeleft:=currpara.paraloc[calleeside].intsize;
while assigned(paraloc) do
begin
unget_para(paraloc^);
gen_load_ref(paraloc^,href,currpara.paraloc[calleeside].intsize);
end
else
begin
while assigned(paraloc) do
if (paraloc^.size=OS_NO) then
begin
unget_para(paraloc^);
if (paraloc^.size = OS_NO) then
{ Can only be a reference that contains the rest
of the parameter }
if (paraloc^.loc<>LOC_REFERENCE) or
assigned(paraloc^.next) then
internalerror(2005013010);
gen_load_ref(paraloc^,href,sizeleft);
inc(href.offset,sizeleft);
sizeleft:=0;
end
else
begin
gen_load_ref(paraloc^,href,tcgsize2size[paraloc^.size]);
inc(href.offset,TCGSize2Size[paraloc^.size]);
paraloc:=paraloc^.next;
dec(sizeleft,TCGSize2Size[paraloc^.size]);
end;
paraloc:=paraloc^.next;
end;
end;
end;
@ -2401,7 +2407,11 @@ implementation
end.
{
$Log$
Revision 1.261 2005-02-15 19:16:04 peter
Revision 1.262 2005-02-15 21:39:48 peter
* remove is_single_reference
* revert loading of ref-to-ref para valu
Revision 1.261 2005/02/15 19:16:04 peter
* fix passing of 64bit values when using -Or
Revision 1.260 2005/02/14 17:13:06 peter

View File

@ -63,7 +63,6 @@ unit parabase;
procedure reset;
function getcopy:tcgpara;
procedure check_simple_location;
function is_single_reference(l: pcgparalocation): boolean;
function add_location:pcgparalocation;
procedure get_location(var newloc:tlocation);
end;
@ -177,14 +176,6 @@ implementation
end;
function tcgpara.is_single_reference(l: pcgparalocation): boolean;
begin
result :=
(l^.loc = LOC_REFERENCE) and
not assigned(l^.next);
end;
procedure tcgpara.check_simple_location;
begin
if not assigned(location) then
@ -261,7 +252,11 @@ end.
{
$Log$
Revision 1.11 2005-02-14 17:13:07 peter
Revision 1.12 2005-02-15 21:39:48 peter
* remove is_single_reference
* revert loading of ref-to-ref para valu
Revision 1.11 2005/02/14 17:13:07 peter
* truncate log
Revision 1.10 2005/01/30 21:51:57 jonas