mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 06:49:23 +02:00
* implemented r30870 for all platforms: pass dyn. array parameters like pointer parameters so typically in a register
git-svn-id: trunk@30878 -
This commit is contained in:
parent
9b987fde93
commit
b4fc11fe06
@ -163,6 +163,9 @@ unit cpupara;
|
|||||||
filedef:
|
filedef:
|
||||||
getparaloc:=LOC_REGISTER;
|
getparaloc:=LOC_REGISTER;
|
||||||
arraydef:
|
arraydef:
|
||||||
|
if is_dynamic_array(p) then
|
||||||
|
getparaloc:=LOC_REGISTER
|
||||||
|
else
|
||||||
getparaloc:=LOC_REFERENCE;
|
getparaloc:=LOC_REFERENCE;
|
||||||
setdef:
|
setdef:
|
||||||
if is_smallset(p) then
|
if is_smallset(p) then
|
||||||
|
@ -99,6 +99,9 @@ unit cpupara;
|
|||||||
filedef:
|
filedef:
|
||||||
getparaloc:=LOC_REGISTER;
|
getparaloc:=LOC_REGISTER;
|
||||||
arraydef:
|
arraydef:
|
||||||
|
if is_dynamic_array(p) then
|
||||||
|
getparaloc:=LOC_REGISTER
|
||||||
|
else
|
||||||
getparaloc:=LOC_REFERENCE;
|
getparaloc:=LOC_REFERENCE;
|
||||||
setdef:
|
setdef:
|
||||||
if is_smallset(p) then
|
if is_smallset(p) then
|
||||||
|
@ -629,7 +629,8 @@ unit cpupara;
|
|||||||
if (parareg<=high(parasupregs)) and
|
if (parareg<=high(parasupregs)) and
|
||||||
(paralen<=sizeof(aint)) and
|
(paralen<=sizeof(aint)) and
|
||||||
(not(hp.vardef.typ in [floatdef,recorddef,arraydef]) or
|
(not(hp.vardef.typ in [floatdef,recorddef,arraydef]) or
|
||||||
pushaddr) and
|
pushaddr or
|
||||||
|
is_dynamic_array(hp.vardef)) and
|
||||||
(not(vo_is_parentfp in hp.varoptions) or
|
(not(vo_is_parentfp in hp.varoptions) or
|
||||||
not(po_delphi_nested_cc in p.procoptions)) then
|
not(po_delphi_nested_cc in p.procoptions)) then
|
||||||
begin
|
begin
|
||||||
|
@ -165,6 +165,9 @@ unit cpupara;
|
|||||||
filedef:
|
filedef:
|
||||||
result:=LOC_REGISTER;
|
result:=LOC_REGISTER;
|
||||||
arraydef:
|
arraydef:
|
||||||
|
if is_dynamic_array(p) then
|
||||||
|
getparaloc:=LOC_REGISTER
|
||||||
|
else
|
||||||
result:=LOC_REFERENCE;
|
result:=LOC_REFERENCE;
|
||||||
setdef:
|
setdef:
|
||||||
if is_smallset(p) then
|
if is_smallset(p) then
|
||||||
|
@ -146,6 +146,9 @@ begin
|
|||||||
filedef:
|
filedef:
|
||||||
result := LOC_REGISTER;
|
result := LOC_REGISTER;
|
||||||
arraydef:
|
arraydef:
|
||||||
|
if is_dynamic_array(p) then
|
||||||
|
getparaloc:=LOC_REGISTER
|
||||||
|
else
|
||||||
result := LOC_REFERENCE;
|
result := LOC_REFERENCE;
|
||||||
setdef:
|
setdef:
|
||||||
if is_smallset(p) then
|
if is_smallset(p) then
|
||||||
|
Loading…
Reference in New Issue
Block a user