This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

IA-64 structure passing


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]