mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-08 15:26:21 +02:00
* patch by Christo Crause: reg. allocation information if non-volatile registers
are used for parameter passing as it is might happen on avr, resolves #36079 git-svn-id: trunk@43390 -
This commit is contained in:
parent
ee5fe9ef79
commit
fabe4cc067
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -17847,6 +17847,7 @@ tests/webtbs/tw35955.pp svneol=native#text/pascal
|
|||||||
tests/webtbs/tw35965.pp svneol=native#text/pascal
|
tests/webtbs/tw35965.pp svneol=native#text/pascal
|
||||||
tests/webtbs/tw35982.pp svneol=native#text/pascal
|
tests/webtbs/tw35982.pp svneol=native#text/pascal
|
||||||
tests/webtbs/tw36013.pp svneol=native#text/pascal
|
tests/webtbs/tw36013.pp svneol=native#text/pascal
|
||||||
|
tests/webtbs/tw36079.pp svneol=native#text/pascal
|
||||||
tests/webtbs/tw3612.pp svneol=native#text/plain
|
tests/webtbs/tw3612.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw36156.pp svneol=native#text/plain
|
tests/webtbs/tw36156.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw36157.pp svneol=native#text/plain
|
tests/webtbs/tw36157.pp svneol=native#text/plain
|
||||||
|
@ -1054,8 +1054,6 @@ implementation
|
|||||||
begin
|
begin
|
||||||
reorder_parameters;
|
reorder_parameters;
|
||||||
pushparas;
|
pushparas;
|
||||||
{ free the resources allocated for the parameters }
|
|
||||||
freeparas;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if callref then
|
if callref then
|
||||||
@ -1091,8 +1089,6 @@ implementation
|
|||||||
begin
|
begin
|
||||||
reorder_parameters;
|
reorder_parameters;
|
||||||
pushparas;
|
pushparas;
|
||||||
{ free the resources allocated for the parameters }
|
|
||||||
freeparas;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
cg.alloccpuregisters(current_asmdata.CurrAsmList,R_INTREGISTER,regs_to_save_int);
|
cg.alloccpuregisters(current_asmdata.CurrAsmList,R_INTREGISTER,regs_to_save_int);
|
||||||
@ -1157,8 +1153,6 @@ implementation
|
|||||||
begin
|
begin
|
||||||
reorder_parameters;
|
reorder_parameters;
|
||||||
pushparas;
|
pushparas;
|
||||||
{ free the resources allocated for the parameters }
|
|
||||||
freeparas;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if callref then
|
if callref then
|
||||||
@ -1186,6 +1180,10 @@ implementation
|
|||||||
extra_post_call_code;
|
extra_post_call_code;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ free the resources allocated for the parameters }
|
||||||
|
if assigned(left) then
|
||||||
|
freeparas;
|
||||||
|
|
||||||
{ Need to remove the parameters from the stack? }
|
{ Need to remove the parameters from the stack? }
|
||||||
if procdefinition.proccalloption in clearstack_pocalls then
|
if procdefinition.proccalloption in clearstack_pocalls then
|
||||||
begin
|
begin
|
||||||
|
18
tests/webtbs/tw36079.pp
Normal file
18
tests/webtbs/tw36079.pp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{ %OPT=-O- -O1 }
|
||||||
|
program tshlshr;
|
||||||
|
|
||||||
|
procedure test(value, required: int64);
|
||||||
|
begin
|
||||||
|
if value <> required then
|
||||||
|
halt(1)
|
||||||
|
else
|
||||||
|
halt(0);
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
longres : longint;
|
||||||
|
|
||||||
|
begin
|
||||||
|
longres := 32768;
|
||||||
|
test(longres, 32768);
|
||||||
|
end.
|
Loading…
Reference in New Issue
Block a user