mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-12-22 18:45:10 +08:00
bc1b3a8840
Continuing the cleanups of libgcc soft-fp configuration for powerpc*-*-linux* in preparation for implementing TARGET_ATOMIC_ASSIGN_EXPAND_FENV for soft-float and e500, this patch optimizes the choice of which functions to build for the e500 cases. For e500v2, use of hardfp is generally right, except that calls to __unordsf2 and __unorddf2 are actually generated by GCC from __builtin_isunordered and so they need to be implemented with soft-fp to avoid recursively calling themselves. For e500v1, hardfp is right for SFmode (except for __unordsf2) but soft-fp for DFmode (and when using soft-fp, as usual it's best for the conversions between DFmode and integers all to come directly from soft-fp rather than some coming from libgcc2.c). Thus, new variables hardfp_exclusions and softfp_extras are added that configurations using t-hardfp and t-softfp can use to achieve the desired effect of selectively mixing the two sources of functions. Tested with no regressions for crosses to powerpc-linux-gnuspe (both e500v1 and e500v2); also checked that the same set of symbols and versions is exported from shared libgcc before and after the patch. * config/t-hardfp (hardfp_exclusions): Document new variable for user to define. (hardfp_func_list): Exclude functions from $(hardfp_exclusions). * config/t-softfp (softfp_extras): Document new variable for user to define. (softfp_func_list): Add functions from $(softfp_extras). * config/rs6000/t-e500v1-fp, config/rs6000/t-e500v2-fp: New files. * config.host (powerpc*-*-linux*): For e500v1, use rs6000/t-e500v1-fp and t-hardfp; do not use t-softfp-sfdf and t-softfp-excl. For e500v2, use t-hardfp-sfdf, rs6000/t-e500v2-fp and t-hardfp; do not use t-softfp-sfdf and t-softfp-excl. From-SVN: r216835 |
||
---|---|---|
.. | ||
aix-unwind.h | ||
aixinitfini.c | ||
crtcxa.c | ||
crtresfpr.S | ||
crtresgpr.S | ||
crtrestvr.S | ||
crtresxfpr.S | ||
crtresxgpr.S | ||
crtsavevr.S | ||
crtsavfpr.S | ||
crtsavgpr.S | ||
cxa_atexit.c | ||
cxa_finalize.c | ||
darwin-asm.h | ||
darwin-crt2.c | ||
darwin-fallback.c | ||
darwin-fpsave.S | ||
darwin-gpsave.S | ||
darwin-tramp.S | ||
darwin-unwind.h | ||
darwin-vecsave.S | ||
darwin-world.S | ||
e500crtres32gpr.S | ||
e500crtres64gpr.S | ||
e500crtres64gprctr.S | ||
e500crtrest32gpr.S | ||
e500crtrest64gpr.S | ||
e500crtresx32gpr.S | ||
e500crtresx64gpr.S | ||
e500crtsav32gpr.S | ||
e500crtsav64gpr.S | ||
e500crtsav64gprctr.S | ||
e500crtsavg32gpr.S | ||
e500crtsavg64gpr.S | ||
e500crtsavg64gprctr.S | ||
eabi-ci.S | ||
eabi-cn.S | ||
eabi.S | ||
exit.h | ||
freebsd-unwind.h | ||
gthr-aix.h | ||
ibm-ldouble-format | ||
ibm-ldouble.c | ||
libgcc-aix-cxa.ver | ||
libgcc-darwin.10.4.ver | ||
libgcc-darwin.10.5.ver | ||
libgcc-glibc.ver | ||
libgcc-ibm-ldouble.ver | ||
linux-unwind.h | ||
ppc64-fp.c | ||
sfp-machine.h | ||
sol-ci.S | ||
sol-cn.S | ||
t-aix-cxa | ||
t-crtstuff | ||
t-darwin | ||
t-darwin64 | ||
t-e500v1-fp | ||
t-e500v2-fp | ||
t-freebsd | ||
t-freebsd64 | ||
t-ibm-ldouble | ||
t-linux | ||
t-lynx | ||
t-netbsd | ||
t-ppc64-fp | ||
t-ppccomm | ||
t-savresfgpr | ||
t-slibgcc-aix | ||
tramp.S |