powerpc targets, long double implementation, and c++ programs

Edmar Wienskoski edmar@freescale.com
Fri Sep 8 20:15:00 GMT 2006


Ok. I am starting to see the whole picture now.
So the whole thing appears to work with --disable-shared, just because 
the way the linker
loads symbols in presence of libgcc_s.so versus libgcc.a.

Follow up question:
The e500 abi actualy defines long double to be 128bits floats.
On rs6000.c, rs6000_init_libfuncs links to __gcc_qadd becasue of 
TARGET_HARD_FLOAT
shouldn't that be TARGET_HARD_FLOAT && TARGET_FPRS
and also have:
diff -u t-fprules-softfp~ t-fprules-softfp
--- t-fprules-softfp~   2006-08-09 14:20:24.000000000 -0500
+++ t-fprules-softfp    2006-09-06 12:39:17.000000000 -0500
@@ -1,4 +1,4 @@
-softfp_float_modes := sf df
+softfp_float_modes := sf df tf
 softfp_int_modes := si di
 softfp_extensions := sfdf
 softfp_truncations := dfsf

Would that be right ?

Thanks
Edmar



David Edelsohn wrote:

>	Soft-float implementation of long double support is in development
>but not complete.  Long double requires double precision registers, so it
>only will work with e500 double.  It also requires floating point
>multiply-subtract (fmsub), which e500 double does not appear to
>implement.  This is why long double has been disabled for e500 by testing
>for __NO_FPRS__.  The soft-float support requires emulating fmsub, so it
>might work on e500 as well at that point.
>
>	http://gcc.gnu.org/ml/gcc-patches/2006-03/msg01298.html is the
>patch that disabled this.  This was in response to PR 26607 reported by
>you.
>
>	The __lttf2 references occur similarly because the cmptf2 pattern
>checks for TARGET_FPRS.  That could be relaxed for e500 double.
>
>David
>
>
>  
>



More information about the Gcc mailing list