Are pretend arguments included in the outgoing argument region ?

William Tambe tambewilliam@gmail.com
Wed Aug 14 03:32:00 GMT 2019


On Tue, Aug 13, 2019 at 9:44 PM Jeff Law <law@redhat.com> wrote:
>
> On 8/13/19 7:41 PM, William Tambe wrote:
> > Are pretend arguments included in the outgoing argument region ?
> > In other words, when ACCUMULATE_OUTGOING_ARGS is nonzero, does
> > crtl->outgoing_args_size include crtl->args.pretend_args_size ?
> >
> I think it varies depending on the target's ABI.
> OUTGOING_REG_PARM_STACK_SPACE, STACK_PARMS_IN_REG_PARM_AREA,
> REG_PARM_STACK_SPACE, etc likely come into play here.
>
> It may be better for you to describe the ABI you're working with.
> There's a reasonable chance it'll line up with an existing port's ABI
> and you can crib from that existing port.  Make sure to describe how
> varargs/stdarg is supposed to work, whether or not you have arguments
> passed partially in registers and partially in memory,

The ABI I am working with pass arguments through registers where
NUM_ARG_REGS is the number of registers used to pass arguments.

Given the following #define, is it enough to assume that pretend
arguments will be included in the outgoing argument region and that
crtl->outgoing_args_size will include crtl->args.pretend_args_size ?

#define ACCUMULATE_OUTGOING_ARGS 1
#define REG_PARM_STACK_SPACE(F) (NUM_ARG_REGS*UNITS_PER_WORD)
#define OUTGOING_REG_PARM_STACK_SPACE(FNTYPE) 1
#define STACK_PARMS_IN_REG_PARM_AREA

>
> jeff



More information about the Gcc-help mailing list