This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Problem in locate_and_pad_parm
- To: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- Subject: Re: Problem in locate_and_pad_parm
- From: Jim Wilson <wilson at cygnus dot com>
- Date: Thu, 19 Oct 2000 14:08:40 -0700
- cc: gcc at gcc dot gnu dot org
>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