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: powerpc targets, long double implementation, and c++ programs


>>>>> Edmar Wienskoski writes:

Edmar> Second, is the long double ABI problem. In the past gcc always generated function calls to _q_* functions. (Per ABI Chapter 5)
Edmar> For this code:
Edmar> long double foo (long double x, long double y){ return x + y; }
Edmar> gcc-4.0, target powerpc-eabise and
Edmar> gcc-4.0, target powerpc-*-linux-gnuspe with -mlong-double-128 option
Edmar> both generates a call to _q_add.
Edmar> The same code with gcc-4.2, both targets generates a call to __gcc_qadd.

Edmar> If there is an intention to change the E500 ABI, then somebody has to step forward and actually change the document (With all the administrative burden that cames with it..).

	The PowerPC Linux ABI uses IBM long double format.  The PowerPC
SVR4 Supplement defines IEEE long double, but no library actually
implemented the _q_* functions or at least it was not generally available.

	If Freescale wants users who configure with powerpc-*-linux-gnuspe
to be compatible with the rest of PowerPC GNU+Linux, it needs to accept
IBM long double.  This is defined in the PowerPC Linux ABI, regardless of
SVR4.  IEEE long double also is not very efficient on PowerPC and few
people (if any) could use it because of the lack of library support.  An
unimplemented ABI is not very useful, except in theory.

David



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