http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59927

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Reduced testcase:

typedef unsigned int (__attribute__ ((ms_abi)) *F) (long);

void
foo (F f)
{
  f (0);
}

or even:

extern void bar (int) __attribute__ ((ms_abi));
void
foo (void)
{
  bar (0);
}


Why do you need ACCUMULATE_OUTGOING_ARGS in the non-ms_abi caller of a ms_abi
function though?  There is no SEH involved there... I see the subsequent ICE is
about the stack pointer delta not being sufficiently aligned, but it is unclear
if it is because of i386.c bug in the ms_abi support, or calls.c bug.
Changing ACCUMULATE_OUTGOING_ARGS on the fly if we notice that the current
function calls or might call a ms_abi function would be both weird and not sure
where the target would have a chance to see the calls to decide that prior to
expansion (and, changing that while already in expansion is too late).

Reply via email to