mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-04 19:10:18 +02:00
* fixed for callparatemp
This commit is contained in:
parent
ff431f21ae
commit
c8978e3440
@ -807,9 +807,21 @@ implementation
|
|||||||
|
|
||||||
if assigned(left) then
|
if assigned(left) then
|
||||||
begin
|
begin
|
||||||
|
{$ifdef callparatemp}
|
||||||
|
{ process object (may contain a call) }
|
||||||
|
secondpass(left);
|
||||||
|
if codegenerror then
|
||||||
|
exit;
|
||||||
|
{$endif callparatemp}
|
||||||
{ multiple parameters? }
|
{ multiple parameters? }
|
||||||
if assigned(right) then
|
if assigned(right) then
|
||||||
begin
|
begin
|
||||||
|
{$ifdef callparatemp}
|
||||||
|
{ process address (in case it contains a call) }
|
||||||
|
secondpass(right);
|
||||||
|
if codegenerror then
|
||||||
|
exit;
|
||||||
|
{$endif callparatemp}
|
||||||
{ push frame }
|
{ push frame }
|
||||||
if assigned(frametree) then
|
if assigned(frametree) then
|
||||||
begin
|
begin
|
||||||
@ -820,10 +832,12 @@ implementation
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
cg.a_param_const(exprasmlist,OS_INT,0,paramanager.getintparaloc(exprasmlist,3));
|
cg.a_param_const(exprasmlist,OS_INT,0,paramanager.getintparaloc(exprasmlist,3));
|
||||||
|
{$ifndef callparatemp}
|
||||||
{ push address }
|
{ push address }
|
||||||
secondpass(right);
|
secondpass(right);
|
||||||
if codegenerror then
|
if codegenerror then
|
||||||
exit;
|
exit;
|
||||||
|
{$endif not callparatemp}
|
||||||
cg.a_param_loc(exprasmlist,right.location,paramanager.getintparaloc(exprasmlist,2));
|
cg.a_param_loc(exprasmlist,right.location,paramanager.getintparaloc(exprasmlist,2));
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@ -839,10 +853,12 @@ implementation
|
|||||||
{ push current address }
|
{ push current address }
|
||||||
cg.a_paramaddr_ref(exprasmlist,href2,paramanager.getintparaloc(exprasmlist,2));
|
cg.a_paramaddr_ref(exprasmlist,href2,paramanager.getintparaloc(exprasmlist,2));
|
||||||
end;
|
end;
|
||||||
|
{$ifndef callparatemp}
|
||||||
{ push object }
|
{ push object }
|
||||||
secondpass(left);
|
secondpass(left);
|
||||||
if codegenerror then
|
if codegenerror then
|
||||||
exit;
|
exit;
|
||||||
|
{$endif not callparatemp}
|
||||||
cg.a_param_loc(exprasmlist,left.location,paramanager.getintparaloc(exprasmlist,1));
|
cg.a_param_loc(exprasmlist,left.location,paramanager.getintparaloc(exprasmlist,1));
|
||||||
cg.a_call_name(exprasmlist,'FPC_RAISEEXCEPTION');
|
cg.a_call_name(exprasmlist,'FPC_RAISEEXCEPTION');
|
||||||
paramanager.freeintparaloc(exprasmlist,3);
|
paramanager.freeintparaloc(exprasmlist,3);
|
||||||
@ -1427,7 +1443,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.70 2003-06-09 12:23:30 peter
|
Revision 1.71 2003-06-09 14:38:52 jonas
|
||||||
|
* fixed for callparatemp
|
||||||
|
|
||||||
|
Revision 1.70 2003/06/09 12:23:30 peter
|
||||||
* init/final of procedure data splitted from genentrycode
|
* init/final of procedure data splitted from genentrycode
|
||||||
* use asmnode getposition to insert final at the correct position
|
* use asmnode getposition to insert final at the correct position
|
||||||
als for the implicit try...finally
|
als for the implicit try...finally
|
||||||
|
Loading…
Reference in New Issue
Block a user