This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
IA-64 structure passing
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Mon, 18 Mar 2002 19:25:12 +0100
- Subject: IA-64 structure passing
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
Hi!
PR 5977 and 5911 show that IA-64 structure passing was broken by
http://gcc.gnu.org/ml/gcc-patches/2002-03/msg00056.html
patch.
I've tried today to fix this by the patch below, but it didn't
even bootstrap.
Wouldn't it be possible to assume argument pointer to be only 8 bytes
aligned if current_function_pretend_args_size != 0 and 16 bytes otherwise?
--- gcc/config/ia64/ia64.h.jj Tue Jan 22 14:15:18 2002
+++ gcc/config/ia64/ia64.h Tue Jan 22 14:15:18 2002
@@ -1087,7 +1087,7 @@ enum reg_class
/* Offset from the argument pointer register to the first
argument's address.
On some machines it may depend on the data type of the function. */
-#define FIRST_PARM_OFFSET(FUNDECL) 0
+#define FIRST_PARM_OFFSET(FUNDECL) (- current_function_pretend_args_size)
/* A C expression whose value is RTL representing the value of the return
address for the frame COUNT steps up from the current frame, after the
Jakub