IA-64 structure passing

Jakub Jelinek jakub@redhat.com
Mon Mar 18 10:26:00 GMT 2002


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



More information about the Gcc mailing list