mirror of git://gcc.gnu.org/git/gcc.git
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 | ||