* fixed passing of record parameters on win64

git-svn-id: trunk@4583 -
This commit is contained in:
florian 2006-09-09 16:33:15 +00:00
parent f5c45419d6
commit 24ae32c855

View File

@ -98,7 +98,10 @@ unit cpupara;
begin begin
if p.size<=16 then if p.size<=16 then
begin begin
{$warning TODO location depends on the fields} if (target_info.system=system_x86_64_win64) and
(p.size<=8) then
loc1:=LOC_REGISTER
else
loc1:=LOC_REFERENCE; loc1:=LOC_REFERENCE;
end end
else else
@ -107,12 +110,22 @@ unit cpupara;
objectdef: objectdef:
begin begin
if is_object(p) then if is_object(p) then
loc1:=LOC_REFERENCE begin
if (target_info.system=system_x86_64_win64) and
(p.size<=8) then
loc1:=LOC_REGISTER
else
loc1:=LOC_REFERENCE;
end
else else
loc1:=LOC_REGISTER; loc1:=LOC_REGISTER;
end; end;
arraydef: arraydef:
begin begin
if (target_info.system=system_x86_64_win64) and
(p.size<=8) then
loc1:=LOC_REGISTER
else
loc1:=LOC_REFERENCE; loc1:=LOC_REFERENCE;
end; end;
variantdef: variantdef: