Problem in locate_and_pad_parm
Richard Kenner
kenner@vlsi1.ultra.nyu.edu
Thu Oct 19 03:42:00 GMT 2000
The definition of MUST_PASS_IN_STACK is seriously broken.
I'm certainly quite willing to believe that, since it represented the state of
the compiler quite a while ago: I don't think anybody changed it since
I first defined it and the compiler has gotten more capable.
Do you know exactly which cases are now supported?
Unfortunately, changing MUST_PASS_IN_STACK is problematic. There are
a lot of ports whose ABI is defined by the code that gcc happens to
emit for them. If we change MUST_PASS_IN_STACK, then we are
implicitly changing the ABI for all of those ports.
True, but I suspect it's the case that such ports were never obeying
the system ABI in those areas, so it would make them better: at least
that's my guess based on the cases I knew about.
Thus the simplest fix here is to just let a few ports override
MUST_PASS_IN_STACK.
No question it's the *simplest*, but that doesn't make it the right way.
Long term, it would be nice if we rewrote the parameter passing stuff from
scratch, as we have too many macros that interact in confusing ways, but it
will likely to a long time before someone tries that.
True, but this is one major soucre of confusion that it would be good to fix
properly in the meantime.
More information about the Gcc
mailing list