From cc7cea1a5ddc3826950a8bed4599cca2e804dc21 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Mon, 22 May 2006 10:42:55 +0000 Subject: [PATCH] * always extend parameters < sizeof(aint) to sizeof(aint) for darwin/x86 git-svn-id: trunk@3628 - --- compiler/i386/cpupara.pas | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/compiler/i386/cpupara.pas b/compiler/i386/cpupara.pas index ec380be435..1229b6b75a 100644 --- a/compiler/i386/cpupara.pas +++ b/compiler/i386/cpupara.pas @@ -407,7 +407,17 @@ unit cpupara; else begin paralen:=push_size(hp.varspez,hp.vartype.def,p.proccalloption); - paracgsize:=def_cgsize(hp.vartype.def); + { darwin/x86 requires that parameters < sizeof(aint) are sign/ } + { zero extended to sizeof(aint) } + if (target_info.system = system_i386_darwin) and + (side = callerside) and + (paralen < sizeof(aint)) then + begin + paralen := sizeof(aint); + paracgsize:=OS_INT; + end + else + paracgsize:=def_cgsize(hp.vartype.def); end; hp.paraloc[side].reset; hp.paraloc[side].size:=paracgsize;