On Tue, Aug 6, 2013 at 1:46 PM, Nathan Sidwell <nat...@acm.org> wrote:
> Hi,
> i386elf.h defines:
>
> /* The ELF ABI for the i386 says that records and unions are returned
>    in memory.  */
>
> #define SUBTARGET_RETURN_IN_MEMORY(TYPE, FNTYPE) \
>         (TYPE_MODE (TYPE) == BLKmode \
>          || (VECTOR_MODE_P (TYPE_MODE (TYPE)) && int_size_in_bytes (TYPE) ==
> 8))
>
> and as such differs from the regular i86 return mechanism.  Notice that the
> comment doesn't match the code:
> *) some structs/unions are non BLKmode
> *) some vectors can be BLKmode, some might not be -- the vector mode check
> appears to be an attempt to catch DImode vectors.
>
> Basing your ABI on the internal modes used by the compiler is not, IMHO, a
> sensible design choice.
>
> This code doesn't appear at first glance to cope with transparent_union.  In
> fact it looks pretty bitrotted.
>
> Is it best just to junk the different behaviour at this point?

Yes and yes :-)

-- Gaby

Reply via email to