This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Problem in locate_and_pad_parm


>Do you know exactly which cases are now supported?

Loading BLKmode values into registers has been supported for years.

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

I don't think you understood what I wrote.  The system ABI *is* gcc for many
ports.  If you change the code that gcc emits, then you are changing the ABI.
This will cause a lot of trouble for a lot of people.

>No question it's the *simplest*, but that doesn't make it the right way.

I believe it is the right way, because other changes have too much risk of
breaking gcc for too many people.

I'd argue that defining MUST_PASS_IN_STACK in the first place was a mistake.
We should never pass an argument on the stack just because gcc doesn't know
how to handle it.  We pass an argument on the stack only if the ABI says that
the argument should be passed on the stack.  Unfortunately, we are now stuck
with it.  We have so many ports whose ABI is defined by gcc that it would be
very risky to change the default now.  Better is to override the macro in
those ports where we know that it is wrong on a case by case basis.  That
way we don't risk breaking anything unless we know that it was wrong to
begin with.  Also, we can warn people that the ABI is changing for that port
and deal with any problems that may arise.

Jim

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]