diff --git a/.gitattributes b/.gitattributes index efd8712d7a..ecfcdcb4f4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -17847,6 +17847,7 @@ tests/webtbs/tw35955.pp svneol=native#text/pascal tests/webtbs/tw35965.pp svneol=native#text/pascal tests/webtbs/tw35982.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/tw36156.pp svneol=native#text/plain tests/webtbs/tw36157.pp svneol=native#text/plain diff --git a/compiler/ncgcal.pas b/compiler/ncgcal.pas index 62b2c8f363..db47ceab8c 100644 --- a/compiler/ncgcal.pas +++ b/compiler/ncgcal.pas @@ -1054,8 +1054,6 @@ implementation begin reorder_parameters; pushparas; - { free the resources allocated for the parameters } - freeparas; end; if callref then @@ -1091,8 +1089,6 @@ implementation begin reorder_parameters; pushparas; - { free the resources allocated for the parameters } - freeparas; end; cg.alloccpuregisters(current_asmdata.CurrAsmList,R_INTREGISTER,regs_to_save_int); @@ -1157,8 +1153,6 @@ implementation begin reorder_parameters; pushparas; - { free the resources allocated for the parameters } - freeparas; end; if callref then @@ -1186,6 +1180,10 @@ implementation extra_post_call_code; end; + { free the resources allocated for the parameters } + if assigned(left) then + freeparas; + { Need to remove the parameters from the stack? } if procdefinition.proccalloption in clearstack_pocalls then begin diff --git a/tests/webtbs/tw36079.pp b/tests/webtbs/tw36079.pp new file mode 100644 index 0000000000..4f8abd48d0 --- /dev/null +++ b/tests/webtbs/tw36079.pp @@ -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. \ No newline at end of file