Joey Ye <joey.ye@intel.com>
PR target/34001
* config/i386/i386.c (function_arg_32): Don't pass aggregate
arguments in ECX/EDX for fastcall.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130488
138bc75d-0d04-0410-961f-
82ee72b054a4
+2007-11-27 H.J. Lu <hongjiu.lu@intel.com>
+ Joey Ye <joey.ye@intel.com>
+
+ PR target/34001
+ * config/i386/i386.c (function_arg_32): Don't pass aggregate
+ arguments in ECX/EDX for fastcall.
+
2007-11-28 Rask Ingemann Lambertsen <rask@sygehus.dk>
* config/i386/linux.h (CRT_GET_RFIB_DATA): Add Intel syntax inline
2007-11-28 Rask Ingemann Lambertsen <rask@sygehus.dk>
* config/i386/linux.h (CRT_GET_RFIB_DATA): Add Intel syntax inline
int regno = cum->regno;
/* Fastcall allocates the first two DWORD (SImode) or
int regno = cum->regno;
/* Fastcall allocates the first two DWORD (SImode) or
- smaller arguments to ECX and EDX. */
+ smaller arguments to ECX and EDX if it isn't an
+ aggregate type . */
- if (mode == BLKmode || mode == DImode)
+ if (mode == BLKmode
+ || mode == DImode
+ || (type && AGGREGATE_TYPE_P (type)))
break;
/* ECX not EAX is the first allocated register. */
break;
/* ECX not EAX is the first allocated register. */