mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 06:49:13 +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 }
|
must contain a valid size field }
|
||||||
|
|
||||||
if (ppn.tempcgpara.size=OS_NO) and
|
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);
|
internalerror(200501281);
|
||||||
reference_reset_base(href,callerparaloc^.reference.index,callerparaloc^.reference.offset);
|
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 }
|
{ copy parameters in case they were moved to a temp. location because we've a fixed stack }
|
||||||
@ -1225,7 +1226,11 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* truncate log
|
||||||
|
|
||||||
Revision 1.199 2005/01/30 21:51:57 jonas
|
Revision 1.199 2005/01/30 21:51:57 jonas
|
||||||
|
@ -1337,8 +1337,8 @@ implementation
|
|||||||
hreflo,
|
hreflo,
|
||||||
hrefhi,
|
hrefhi,
|
||||||
href : treference;
|
href : treference;
|
||||||
{$ifdef sparc}
|
|
||||||
sizeleft : aint;
|
sizeleft : aint;
|
||||||
|
{$ifdef sparc}
|
||||||
tempref : treference;
|
tempref : treference;
|
||||||
{$endif sparc}
|
{$endif sparc}
|
||||||
begin
|
begin
|
||||||
@ -1376,22 +1376,28 @@ implementation
|
|||||||
if not paramanager.param_use_paraloc(currpara.paraloc[calleeside]) then
|
if not paramanager.param_use_paraloc(currpara.paraloc[calleeside]) then
|
||||||
begin
|
begin
|
||||||
href:=currpara.localloc.reference;
|
href:=currpara.localloc.reference;
|
||||||
if (currpara.paraloc[calleeside].is_single_reference(paraloc)) then
|
sizeleft:=currpara.paraloc[calleeside].intsize;
|
||||||
|
while assigned(paraloc) do
|
||||||
begin
|
begin
|
||||||
unget_para(paraloc^);
|
unget_para(paraloc^);
|
||||||
gen_load_ref(paraloc^,href,currpara.paraloc[calleeside].intsize);
|
if (paraloc^.size=OS_NO) then
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
while assigned(paraloc) do
|
|
||||||
begin
|
begin
|
||||||
unget_para(paraloc^);
|
{ Can only be a reference that contains the rest
|
||||||
if (paraloc^.size = OS_NO) then
|
of the parameter }
|
||||||
|
if (paraloc^.loc<>LOC_REFERENCE) or
|
||||||
|
assigned(paraloc^.next) then
|
||||||
internalerror(2005013010);
|
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]);
|
gen_load_ref(paraloc^,href,tcgsize2size[paraloc^.size]);
|
||||||
inc(href.offset,TCGSize2Size[paraloc^.size]);
|
inc(href.offset,TCGSize2Size[paraloc^.size]);
|
||||||
paraloc:=paraloc^.next;
|
dec(sizeleft,TCGSize2Size[paraloc^.size]);
|
||||||
end;
|
end;
|
||||||
|
paraloc:=paraloc^.next;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -2401,7 +2407,11 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* fix passing of 64bit values when using -Or
|
||||||
|
|
||||||
Revision 1.260 2005/02/14 17:13:06 peter
|
Revision 1.260 2005/02/14 17:13:06 peter
|
||||||
|
@ -63,7 +63,6 @@ unit parabase;
|
|||||||
procedure reset;
|
procedure reset;
|
||||||
function getcopy:tcgpara;
|
function getcopy:tcgpara;
|
||||||
procedure check_simple_location;
|
procedure check_simple_location;
|
||||||
function is_single_reference(l: pcgparalocation): boolean;
|
|
||||||
function add_location:pcgparalocation;
|
function add_location:pcgparalocation;
|
||||||
procedure get_location(var newloc:tlocation);
|
procedure get_location(var newloc:tlocation);
|
||||||
end;
|
end;
|
||||||
@ -177,14 +176,6 @@ implementation
|
|||||||
end;
|
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;
|
procedure tcgpara.check_simple_location;
|
||||||
begin
|
begin
|
||||||
if not assigned(location) then
|
if not assigned(location) then
|
||||||
@ -261,7 +252,11 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* truncate log
|
||||||
|
|
||||||
Revision 1.10 2005/01/30 21:51:57 jonas
|
Revision 1.10 2005/01/30 21:51:57 jonas
|
||||||
|
Loading…
Reference in New Issue
Block a user