This is the mail archive of the
mailing list for the GCC project.
Re: PATCH [mainline] apple-ppc-darwin passing
On Jun 25, 2004, at 5:40 AM, Alan Modra wrote:
On Thu, Jun 24, 2004 at 12:47:15PM -0700, Fariborz Jahanian wrote:
*************** emit_push_insn (rtx x, enum machine_mode
*** 3609,3614 ****
--- 3610,3627 ----
int args_offset = INTVAL (args_so_far);
+ if (mode == DFmode && reg && GET_CODE (reg) == PARALLEL)
+ /* Pattern for splitting up a DFmode part in GRP, part on stack
+ as well as fully in an FPR. */
Your fix to emit_push_insn looks good to me, except that you really
don't want the DFmode test here. There's nothing special about DFmode.
No there isn't. But I just wanted to check the condition which I knew
bug and protect against other cases of PARALLEL being gen'd. As you
out below, there maybe hackery on other platforms that I wanted to
and not breaking them. But thanks for your comments.
It just happens to be one of the reg types, of size different to
UNITS_PER_WORD, that you need to handle specially here. I came up with
with a similar patch, minus the DFmode test, when developing
The reason I didn't post the patch at that stage was that I wanted the
rs6000 backend fixes in first. Also, you need to verify that any other
backend emitting PARALLELs for arg passing doesn't have some hack in
function_arg_partial_nregs to work around the emit_push_insn bug. I
didn't go so far as to do this verification..
Oh, and I'm not qualified to review this patch, just commenting as
someone who has fiddled enough with the function arg machinery to be
reasonably familiar with this code.
IBM OzLabs - Linux Technology Centre