This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: split_complex_* flaw
- From: Ian Lance Taylor <ian at wasabisystems dot com>
- To: David Edelsohn <dje at watson dot ibm dot com>
- Cc: Alan Modra <amodra at bigpond dot net dot au>, Richard Henderson <rth at redhat dot com>, gcc at gcc dot gnu dot org, Aldy Hernandez <aldyh at redhat dot com>
- Date: 01 Feb 2004 09:25:03 -0500
- Subject: Re: split_complex_* flaw
- References: <20040131104133.GC5080@bubble.modra.org><200402010343.i113hkT33526@makai.watson.ibm.com>
David Edelsohn <dje@watson.ibm.com> writes:
> Which symptom are we concerned about? On AIX and PPC64 Linux, the
> parameter save area is GPR register images. GPRs are doublewords for
> PPC64, so all parameter save area slots are doublewords. Float and
> _Complex float arguments only occupy half of the slot, but the slot still
> is a doubleword.
>
> A pointer to a complex float is a pointer to a pair of packed,
> adjacent floats occupying a doubleword, but the stack image is two
> doublewords.
As you know, I originally wrote the PPC64 Linux ABI to be calling
convention compatible with the 64-bit AIX ABI. I think that any
differences between the calling convention on AIX and Linux are the
result of independent evolution, or are mistakes.
The AIX documentation I was working from said this:
- Other scalar values, such as FORTRAN complex numbers, are mapped
to the number of doublewords required by their size.
I copied that directly into the PPC64 Linux ABI. That says pretty
clearly to me that complex float is represented as a single
doubleword, since that is all that the size requires.
So, did AIX change, or was the ABI documentation incorrect?
Ian