|
@@ -128,27 +128,36 @@ unit cpupara;
|
|
end;
|
|
end;
|
|
{ Only vs_const, vs_value here }
|
|
{ Only vs_const, vs_value here }
|
|
case def.deftype of
|
|
case def.deftype of
|
|
- variantdef,
|
|
|
|
|
|
+ variantdef :
|
|
|
|
+ begin
|
|
|
|
+ { Win32 stdcall passes small records on the stack for call by
|
|
|
|
+ value }
|
|
|
|
+ if (target_info.system=system_i386_win32) and
|
|
|
|
+ (calloption=pocall_stdcall) and
|
|
|
|
+ (varspez=vs_value) and
|
|
|
|
+ (def.size<=16) then
|
|
|
|
+ result:=false
|
|
|
|
+ end;
|
|
formaldef :
|
|
formaldef :
|
|
result:=true;
|
|
result:=true;
|
|
recorddef :
|
|
recorddef :
|
|
begin
|
|
begin
|
|
- { Win32 passes small records on the stack for call by
|
|
|
|
|
|
+ { Win32 stdcall passes small records on the stack for call by
|
|
value }
|
|
value }
|
|
if (target_info.system=system_i386_win32) and
|
|
if (target_info.system=system_i386_win32) and
|
|
- (calloption in [pocall_stdcall,pocall_cdecl,pocall_cppdecl]) and
|
|
|
|
|
|
+ (calloption=pocall_stdcall) and
|
|
(varspez=vs_value) and
|
|
(varspez=vs_value) and
|
|
- (def.size<=8) then
|
|
|
|
|
|
+ (def.size<=16) then
|
|
result:=false
|
|
result:=false
|
|
else
|
|
else
|
|
result:=not(calloption in [pocall_cdecl,pocall_cppdecl]) and (def.size>sizeof(aint));
|
|
result:=not(calloption in [pocall_cdecl,pocall_cppdecl]) and (def.size>sizeof(aint));
|
|
end;
|
|
end;
|
|
arraydef :
|
|
arraydef :
|
|
begin
|
|
begin
|
|
- { Win32 passes arrays on the stack for call by
|
|
|
|
|
|
+ { Win32 stdcall passes arrays on the stack for call by
|
|
value }
|
|
value }
|
|
if (target_info.system=system_i386_win32) and
|
|
if (target_info.system=system_i386_win32) and
|
|
- (calloption in [pocall_stdcall,pocall_cdecl,pocall_cppdecl]) and
|
|
|
|
|
|
+ (calloption=pocall_stdcall) and
|
|
(varspez=vs_value) and
|
|
(varspez=vs_value) and
|
|
(tarraydef(def).highrange>=tarraydef(def).lowrange) then
|
|
(tarraydef(def).highrange>=tarraydef(def).lowrange) then
|
|
result:=false
|
|
result:=false
|
|
@@ -630,7 +639,10 @@ begin
|
|
end.
|
|
end.
|
|
{
|
|
{
|
|
$Log$
|
|
$Log$
|
|
- Revision 1.66 2005-02-14 17:13:09 peter
|
|
|
|
|
|
+ Revision 1.67 2005-02-14 19:42:02 peter
|
|
|
|
+ win32 stdcall fixes needed for tw3650
|
|
|
|
+
|
|
|
|
+ Revision 1.66 2005/02/14 17:13:09 peter
|
|
* truncate log
|
|
* truncate log
|
|
|
|
|
|
Revision 1.65 2005/02/03 20:04:49 peter
|
|
Revision 1.65 2005/02/03 20:04:49 peter
|