This is the mail archive of the 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]

Re: IA64: roblem with OUTGOING_ARG

On Tue, 2003-11-18 at 22:55, Jim Wilson wrote:
> I'll agree that the sparc port is the definitive port for how register
> windows work, so that means the ia64 definition is wrong.  It needs to
> use AR_ARG_FIRST instead of GR_ARG_FIRST.  I'd also argue that
> regno_uninitialized is broken (for targets with register windows), and
> that the documentation needs to be fixed to clarify that these are
> output registers.

On further review, I see that the regno_uninitialized code is actually
for outgoing registers.  There is a VAR_DECL check before we get here,
and incoming args are PARM_DECL, so this can only be for outgoing
registers.  It was added by Kenner in 1997.  I don't understand why it
is there.  Maybe it is for an unusual Ada case.  Or maybe it is for the
case where an outgoing arg is set by pieces and flow can't tell that it
is fully set before the call.  Anyways, I am not going to worry about
this any further.

As for the documentation, it has since occurred to me that all of the
macros that use incoming argument registers have incoming in the name. 
I should have noticed that earlier.

I have checked in the attached patch.  This was tested with an ia64
linux (debian testing sarge) make bootstrap and make check.  The patch
fixes two builtin_apply testcase failures, which I hadn't expected.
Jim Wilson, GNU Tools Support,

Attachment: patch.function_arg_regno_p
Description: Text document

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