Adjust structure parameter passing to match ABI change.
* config/ia64/ia64.c (ia64_function_arg): Use alignment not size when computing offset. From-SVN: r35401
This commit is contained in:
parent
003661ddec
commit
f9f45ccb5f
@ -1,3 +1,8 @@
|
||||
2000-07-31 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* config/ia64/ia64.c (ia64_function_arg): Use alignment not size
|
||||
when computing offset.
|
||||
|
||||
Mon Jul 31 20:35:50 2000 Denis Chertykov <denisc@overta.ru>
|
||||
|
||||
* genpeep.c (main): Handle DEFINE_PEEPHOLE2.
|
||||
|
@ -1542,8 +1542,14 @@ ia64_function_arg (cum, mode, type, named, incoming)
|
||||
int offset = 0;
|
||||
enum machine_mode hfa_mode = VOIDmode;
|
||||
|
||||
/* Arguments larger than 8 bytes start at the next even boundary. */
|
||||
if (words > 1 && (cum->words & 1))
|
||||
/* Integer and float arguments larger than 8 bytes start at the next even
|
||||
boundary. Aggregates larger than 8 bytes start at the next even boundary
|
||||
if the aggregate has 16 byte alignment. */
|
||||
/* ??? The ABI does not specify how to handle aggregates with alignment from
|
||||
9 to 15 bytes, or greater than 16. We handle them all as if they had
|
||||
16 byte alignment. Such aggregates can occur only if gcc extensions are
|
||||
used. */
|
||||
if ((TYPE_ALIGN (type) > 8 * BITS_PER_UNIT) && (cum->words & 1))
|
||||
offset = 1;
|
||||
|
||||
/* If all argument slots are used, then it must go on the stack. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user