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]
Other format: [Raw text]

Re: split_complex_* flaw


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


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