diff --git a/compiler/arm/cpupara.pas b/compiler/arm/cpupara.pas index 3b07404bbb..960a5cef8e 100644 --- a/compiler/arm/cpupara.pas +++ b/compiler/arm/cpupara.pas @@ -345,7 +345,7 @@ unit cpupara; { currently only support C-style array of const, there should be no location assigned to the vararg array itself } - if (p.proccalloption in [pocall_cdecl,pocall_cppdecl]) and + if (p.proccalloption in cstylearrayofconst) and is_array_of_const(paradef) then begin paraloc:=hp.paraloc[side].add_location; @@ -701,7 +701,7 @@ unit cpupara; init_values(curintreg,curfloatreg,curmmreg,cur_stack_offset,sparesinglereg); result:=create_paraloc_info_intern(p,callerside,p.paras,curintreg,curfloatreg,curmmreg,cur_stack_offset,sparesinglereg,true); - if (p.proccalloption in [pocall_cdecl,pocall_cppdecl]) then + if (p.proccalloption in cstylearrayofconst) then { just continue loading the parameters in the registers } result:=create_paraloc_info_intern(p,callerside,varargspara,curintreg,curfloatreg,curmmreg,cur_stack_offset,sparesinglereg,true) else diff --git a/compiler/avr/cpupara.pas b/compiler/avr/cpupara.pas index 763e7b3b7c..ed5ed2154c 100644 --- a/compiler/avr/cpupara.pas +++ b/compiler/avr/cpupara.pas @@ -260,7 +260,7 @@ unit cpupara; { currently only support C-style array of const, there should be no location assigned to the vararg array itself } - if (p.proccalloption in [pocall_cdecl,pocall_cppdecl]) and + if (p.proccalloption in cstylearrayofconst) and is_array_of_const(paradef) then begin paraloc:=hp.paraloc[side].add_location; @@ -478,7 +478,7 @@ unit cpupara; init_values(curintreg,curfloatreg,curmmreg,cur_stack_offset); result:=create_paraloc_info_intern(p,callerside,p.paras,curintreg,curfloatreg,curmmreg,cur_stack_offset); - if (p.proccalloption in [pocall_cdecl,pocall_cppdecl]) then + if (p.proccalloption in cstylearrayofconst) then { just continue loading the parameters in the registers } result:=create_paraloc_info_intern(p,callerside,varargspara,curintreg,curfloatreg,curmmreg,cur_stack_offset) else diff --git a/compiler/globtype.pas b/compiler/globtype.pas index 7709a03bfe..216d6135be 100644 --- a/compiler/globtype.pas +++ b/compiler/globtype.pas @@ -462,6 +462,8 @@ interface pocall_default = pocall_stdcall; {$endif} + cstylearrayofconst = [pocall_cdecl,pocall_cppdecl,pocall_mwpascal]; + modeswitchstr : array[tmodeswitch] of string[18] = ('','', '','','','','','', {$ifdef fpc_mode}'',{$endif} diff --git a/compiler/m68k/cpupara.pas b/compiler/m68k/cpupara.pas index b1447b0493..4157d20b72 100644 --- a/compiler/m68k/cpupara.pas +++ b/compiler/m68k/cpupara.pas @@ -285,7 +285,7 @@ unit cpupara; hp.paraloc[side].reset; { currently only support C-style array of const } - if (p.proccalloption in [pocall_cdecl,pocall_cppdecl]) and + if (p.proccalloption in cstylearrayofconst) and is_array_of_const(paradef) then begin {$ifdef DEBUG_CHARLIE} @@ -549,7 +549,7 @@ unit cpupara; init_values(curintreg,curfloatreg,cur_stack_offset); result:=create_paraloc_info_intern(p,callerside,p.paras,curintreg,curfloatreg,cur_stack_offset); - if (p.proccalloption in [pocall_cdecl,pocall_cppdecl]) then + if (p.proccalloption in cstylearrayofconst) then { just continue loading the parameters in the registers } result:=create_paraloc_info_intern(p,callerside,varargspara,curintreg,curfloatreg,cur_stack_offset) else diff --git a/compiler/mips/cpupara.pas b/compiler/mips/cpupara.pas index aed3873bf9..0e010d84a4 100644 --- a/compiler/mips/cpupara.pas +++ b/compiler/mips/cpupara.pas @@ -288,7 +288,7 @@ implementation paradef := hp.vardef; { currently only support C-style array of const } - if (p.proccalloption in [pocall_cdecl,pocall_cppdecl]) and + if (p.proccalloption in cstylearrayofconst) and is_array_of_const(paradef) then begin paraloc:=hp.paraloc[side].add_location; diff --git a/compiler/pdecsub.pas b/compiler/pdecsub.pas index 73ad84b958..b3312cf3fa 100644 --- a/compiler/pdecsub.pas +++ b/compiler/pdecsub.pas @@ -2175,7 +2175,7 @@ const handler : @pd_interrupt; pocall : pocall_oldfpccall; pooption : [po_interrupt]; - mutexclpocall : [pocall_internproc,pocall_cdecl,pocall_cppdecl,pocall_stdcall, + mutexclpocall : [pocall_internproc,pocall_cdecl,pocall_cppdecl,pocall_stdcall,pocall_mwpascal, pocall_pascal,pocall_far16,pocall_oldfpccall]; mutexclpotype : [potype_constructor,potype_destructor,potype_operator,potype_class_constructor,potype_class_destructor]; mutexclpo : [po_external,po_inline] diff --git a/compiler/powerpc/cpupara.pas b/compiler/powerpc/cpupara.pas index eb372c2e2b..049375f3d3 100644 --- a/compiler/powerpc/cpupara.pas +++ b/compiler/powerpc/cpupara.pas @@ -356,7 +356,7 @@ unit cpupara; end; hp.paraloc[side].reset; { currently only support C-style array of const } - if (p.proccalloption in [pocall_cdecl,pocall_cppdecl,pocall_mwpascal]) and + if (p.proccalloption in cstylearrayofconst) and is_array_of_const(paradef) then begin paraloc:=hp.paraloc[side].add_location; @@ -573,7 +573,7 @@ unit cpupara; firstfloatreg:=curfloatreg; result:=create_paraloc_info_intern(p,callerside,p.paras,curintreg,curfloatreg,curmmreg,cur_stack_offset, false); - if (p.proccalloption in [pocall_cdecl,pocall_cppdecl,pocall_mwpascal]) then + if (p.proccalloption in cstylearrayofconst) then { just continue loading the parameters in the registers } begin result:=create_paraloc_info_intern(p,callerside,varargspara,curintreg,curfloatreg,curmmreg,cur_stack_offset,true); diff --git a/compiler/sparc/cpupara.pas b/compiler/sparc/cpupara.pas index 8b9085397e..3d6cb21ad2 100644 --- a/compiler/sparc/cpupara.pas +++ b/compiler/sparc/cpupara.pas @@ -214,7 +214,7 @@ implementation paradef:=hp.vardef; { currently only support C-style array of const, there should be no location assigned to the vararg array itself } - if (p.proccalloption in [pocall_cdecl,pocall_cppdecl]) and + if (p.proccalloption in cstylearrayofconst) and is_array_of_const(paradef) then begin paraloc:=hp.paraloc[side].add_location;