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