mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-10 02:28:22 +02:00
* remove is_single_reference
* revert loading of ref-to-ref para valu
This commit is contained in:
parent
f3df72d1b1
commit
5edffaf371
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user