[Bug other/59927] [4.9 Regression] ICE sorry, unimplemented: ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jan 24 15:07:00 GMT 2014


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).



More information about the Gcc-bugs mailing list