mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-10 16:45:56 +02:00
* fixed copy_value_on_stack() for AIX abi
+ added support for passing empty record parameters
This commit is contained in:
parent
20361e7eb8
commit
8654fac06c
@ -44,7 +44,7 @@ unit cpupara;
|
||||
function create_varargs_paraloc_info(p : tabstractprocdef; varargspara:tvarargsparalist):longint;override;
|
||||
procedure create_funcretloc_info(p : tabstractprocdef; side: tcallercallee);
|
||||
|
||||
// function copy_value_on_stack(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean; override;
|
||||
function copy_value_on_stack(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean; override;
|
||||
private
|
||||
procedure init_values(var curintreg, curfloatreg, curmmreg: tsuperregister; var cur_stack_offset: aword);
|
||||
function create_paraloc_info_intern(p : tabstractprocdef; side: tcallercallee; paras:tparalist;
|
||||
@ -216,14 +216,14 @@ unit cpupara;
|
||||
curmmreg:=RS_M1;
|
||||
end;
|
||||
|
||||
{
|
||||
|
||||
function tppcparamanager.copy_value_on_stack(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean;
|
||||
begin
|
||||
result := false;
|
||||
if (target_info.abi <> abi_powerpc_aix) then
|
||||
result := inherited copy_value_on_stack(varspez,def,calloption);
|
||||
end;
|
||||
}
|
||||
|
||||
|
||||
procedure tppcparamanager.create_funcretloc_info(p : tabstractprocdef; side: tcallercallee);
|
||||
var
|
||||
@ -450,6 +450,14 @@ unit cpupara;
|
||||
odd(nextintreg-RS_R3) then
|
||||
inc(nextintreg);
|
||||
{$endif not cpu64bit}
|
||||
if (paralen = 0) then
|
||||
if (paradef.deftype = recorddef) then
|
||||
begin
|
||||
paraloc:=hp.paraloc[side].add_location;
|
||||
paraloc^.loc := LOC_VOID;
|
||||
end
|
||||
else
|
||||
internalerror(2005011310);
|
||||
{ can become < 0 for e.g. 3-byte records }
|
||||
while (paralen > 0) do
|
||||
begin
|
||||
@ -649,7 +657,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.81 2005-01-10 21:50:05 jonas
|
||||
Revision 1.82 2005-01-13 19:32:08 jonas
|
||||
* fixed copy_value_on_stack() for AIX abi
|
||||
+ added support for passing empty record parameters
|
||||
|
||||
Revision 1.81 2005/01/10 21:50:05 jonas
|
||||
+ support for passing records in registers under darwin
|
||||
* tcgpara now also has an intsize field, which contains the size in
|
||||
bytes of the whole parameter
|
||||
|
Loading…
Reference in New Issue
Block a user