Another low-hanging fruit in the toplevel libgcc move is crtfastmath.

The following patch moves the various crtfastmath.c files over to libgcc
and removes the remnants of the gcc side of the configuration.

Unfortunately, one piece needs to stay behind: crtfastmath.o must remain
in gcc/config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): If I remove just
crtfastmath.o, the libgcc Makefile detects a mismatch between the
extra_parts lists of gcc and libgcc.  If I remove the whole variable,
the *-*-linux* default from config.gcc kicks in and we get another
mismatch ;-(

There's one other question here: alpha/t-crtfm uses
-frandom-seed=gcc-crtfastmath with this comment:

# FIXME drow/20061228 - I have preserved this -frandom-seed option
# while migrating this rule from the GCC directory, but I do not
# know why it is necessary if no other crt file uses it.

Is there any particular reason to either keep this or not to use it in
the generic file?  This way, only i386 needs to stay separate with its
use of -msse -minline-all-stringops.

Bootstrapped without regressions on i386-pc-solaris2.11 and
x86_64-unknown-linux-gnu.

Ok for mainline?

        Rainer


2011-07-10  Rainer Orth  <r...@cebitec.uni-bielefeld.de>

        gcc:
        * config/alpha/crtfastmath.c: Move to ../libgcc/config/alpha.
        * config/alpha/t-crtfm: Remove.
        * config/i386/crtfastmath.c: Move to ../libgcc/config/i386.
        * config/i386/t-crtfm: Remove.
        * config/ia64/crtfastmath.c: Move to ../libgcc/config/ia64.
        * config/mips/crtfastmath.c: Move to ../libgcc/config/mips.
        * config/sparc/crtfastmath.c: Move to ../libgcc/config/sparc.
        * config/sparc/t-crtfm: Remove.

        * config.gcc (alpha*-*-linux*): Remove alpha/t-crtfm from tmake_file.
        (alpha*-*-freebsd*): Likewise.
        (i[34567]86-*-darwin*): Remove i386/t-crtfm from tmake_file.
        (x86_64-*-darwin*): Likewise.
        (i[34567]86-*-linux*): Likewise.
        (x86_64-*-linux*): Likewise.
        (x86_64-*-mingw*): Likewise.
        (ia64*-*-elf*): Remove crtfastmath.o from extra_parts.
        (ia64*-*-freebsd*): Likewise.
        (ia64*-*-linux*): Likewise.
        (mips64*-*-linux*): Likewise.
        (mips*-*-linux*): Likewise.
        (sparc-*-linux*): Remove sparc/t-crtfm from tmake_file.
        (sparc64-*-linux*): Likewise.
        (sparc64-*-freebsd*): Likewise.

        libgcc:
        * config/alpha/crtfastmath.c: New file.
        * config/i386/crtfastmath.c: New file.
        * config/ia64/crtfastmath.c: New file.
        * config/mips/crtfastmath.c: New file.
        * config/sparc/crtfastmath.c: New file.

        * config/t-crtfm (crtfastmath.o): Use $(srcdir) to refer to
        crtfastmath.c.
        * config/alpha/t-crtfm: Likewise.
        * config/i386/t-crtfm: Likewise.
        * config/ia64/t-ia64 (crtfastmath.o): Remove.

        * config.host (alpha*-*-freebsd*): Add alpha/t-crtfm to tmake_file.
        Add crtfastmath.o to extra_parts.
        (i[34567]86-*-darwin*): Add i386/t-crtfm to tmake_file.
        Add crtfastmath.o to extra_parts.
        (x86_64-*-darwin*): Likewise.
        (x86_64-*-mingw*): Likewise.
        (ia64*-*-elf*): Add t-crtfm to tmake_file.
        (ia64*-*-freebsd*): Likewise.
        (ia64*-*-linux*): Likewise.
        (sparc64-*-freebsd*): Add t-crtfm to tmake_file.
        Add crtfastmath.o to extra_parts.

diff --git a/gcc/config.gcc b/gcc/config.gcc
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -756,13 +756,13 @@ alpha*-*-linux*)
        tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h 
glibc-stdint.h"
        extra_options="${extra_options} alpha/elf.opt"
        target_cpu_default="MASK_GAS"
-       tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee 
alpha/t-linux"
+       tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee alpha/t-linux"
        ;;
 alpha*-*-freebsd*)
        tm_file="${tm_file} ${fbsd_tm_file} alpha/elf.h alpha/freebsd.h"
        extra_options="${extra_options} alpha/elf.opt"
        target_cpu_default="MASK_GAS"
-       tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee"
+       tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee"
        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
        ;;
 alpha*-*-netbsd*)
@@ -1208,12 +1208,12 @@ i[34567]86-*-darwin*)
        need_64bit_isa=yes
        # Baseline choice for a machine that allows m64 support.
        with_cpu=${with_cpu:-core2}
-       tmake_file="${tmake_file} t-slibgcc-dummy i386/t-crtpc i386/t-crtfm"
+       tmake_file="${tmake_file} t-slibgcc-dummy i386/t-crtpc"
        libgcc_tm_file="$libgcc_tm_file i386/darwin-lib.h"
        ;;
 x86_64-*-darwin*)
        with_cpu=${with_cpu:-core2}
-       tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc-dummy 
i386/t-crtpc i386/t-crtfm"
+       tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc-dummy 
i386/t-crtpc"
        tm_file="${tm_file} ${cpu_type}/darwin64.h"
        libgcc_tm_file="$libgcc_tm_file i386/darwin-lib.h"
        ;;
@@ -1311,7 +1311,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfree
        i[34567]86-*-kopensolaris*-gnu) tm_file="${tm_file} i386/gnu-user.h 
kopensolaris-gnu.h i386/kopensolaris-gnu.h" ;;
        i[34567]86-*-gnu*) tm_file="$tm_file i386/gnu-user.h gnu.h i386/gnu.h";;
        esac
-       tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc i386/t-crtfm"
+       tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc"
        ;;
 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h 
glibc-stdint.h \
@@ -1323,7 +1323,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu
        x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h 
i386/kfreebsd-gnu64.h" ;;
        x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
        esac
-       tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc 
i386/t-crtfm"
+       tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc"
        x86_multilibs="${with_multilib_list}"
        if test "$x86_multilibs" = "default"; then
                x86_multilibs="m64,m32"
@@ -1560,13 +1560,6 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
            ;;
        esac
        case ${target} in
-               x86_64-*-mingw*)
-                       tmake_file="${tmake_file} i386/t-crtfm"
-                       ;;
-               *)
-                       ;;
-       esac
-       case ${target} in
                *mingw32crt*)
                        tm_file="${tm_file} i386/crtdll.h"
                        ;;
@@ -1599,19 +1592,19 @@ ia64*-*-elf*)
        then
                target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
        fi
-       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
+       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
        ;;
 ia64*-*-freebsd*)
        tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h 
ia64/freebsd.h"
        target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
        tmake_file="${tmake_file} ia64/t-ia64"
-       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
+       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
        ;;
 ia64*-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h 
ia64/sysv4.h ia64/linux.h"
        tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
        target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
-       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
+       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
        ;;
 ia64*-*-hpux*)
        tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/hpux.h"
@@ -1851,7 +1844,6 @@ mips64*-*-linux* | mipsisa64*-*-linux*)
                        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=65"
                        ;;
        esac
-       extra_parts="$extra_parts crtfastmath.o"
        gnu_ld=yes
        gas=yes
        test x$with_llsc != x || with_llsc=yes
@@ -1866,7 +1858,6 @@ mips*-*-linux*)                           # Linux MIPS, 
either 
         mipsisa32*)
                tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32"
         esac
-       extra_parts="$extra_parts crtfastmath.o"
        test x$with_llsc != x || with_llsc=yes
        ;;
 mips*-*-openbsd*)
@@ -2491,7 +2482,6 @@ sparc-*-linux*)
        else
                tm_file="${tm_file} sparc/linux.h"
        fi
-       tmake_file="${tmake_file} sparc/t-crtfm"
        ;;
 sparc-*-netbsdelf*)
        tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h netbsd.h 
netbsd-elf.h sparc/netbsd-elf.h"
@@ -2526,12 +2516,11 @@ sparc64-*-rtems*)
 sparc64-*-linux*)
        tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h 
gnu-user.h linux.h glibc-stdint.h sparc/linux64.h"
        extra_options="${extra_options} sparc/long-double-switch.opt"
-       tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
+       tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64"
        ;;
 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
        tm_file="${tm_file} ${fbsd_tm_file} dbxelf.h elfos.h sparc/sysv4.h 
sparc/freebsd.h"
        extra_options="${extra_options} sparc/long-double-switch.opt"
-       tmake_file="${tmake_file} sparc/t-crtfm"
        case "x$with_cpu" in
                xultrasparc) ;;
                x) with_cpu=ultrasparc ;;
diff --git a/gcc/config/alpha/t-crtfm b/gcc/config/alpha/t-crtfm
deleted file mode 100644
--- a/gcc/config/alpha/t-crtfm
+++ /dev/null
@@ -1,5 +0,0 @@
-EXTRA_PARTS += crtfastmath.o
-
-$(T)crtfastmath.o: $(srcdir)/config/alpha/crtfastmath.c $(GCC_PASSES)
-       $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -frandom-seed=gcc-crtfastmath -c \
-               -o $(T)crtfastmath.o $(srcdir)/config/alpha/crtfastmath.c
diff --git a/gcc/config/i386/t-crtfm b/gcc/config/i386/t-crtfm
deleted file mode 100644
--- a/gcc/config/i386/t-crtfm
+++ /dev/null
@@ -1,8 +0,0 @@
-EXTRA_PARTS += crtfastmath.o
-
-$(T)crtfastmath.o: $(srcdir)/config/i386/crtfastmath.c \
-  $(srcdir)/config/i386/cpuid.h $(GCC_PASSES)
-       $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(MULTILIB_CFLAGS) \
-               -msse -minline-all-stringops -c \
-               $(srcdir)/config/i386/crtfastmath.c \
-               -o $(T)crtfastmath$(objext)
diff --git a/gcc/config/sparc/t-crtfm b/gcc/config/sparc/t-crtfm
deleted file mode 100644
--- a/gcc/config/sparc/t-crtfm
+++ /dev/null
@@ -1,4 +0,0 @@
-EXTRA_PARTS += crtfastmath.o
-
-$(T)crtfastmath.o: $(srcdir)/config/sparc/crtfastmath.c $(GCC_PASSES)
-       $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) $(LIBGCC2_CFLAGS) -c -o 
$(T)crtfastmath.o $(srcdir)/config/sparc/crtfastmath.c
diff --git a/libgcc/config.host b/libgcc/config.host
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -240,6 +240,8 @@ alpha*-*-linux*)
        md_unwind_header=alpha/linux-unwind.h
        ;;
 alpha*-*-freebsd*)
+       tmake_file="${tmake_file} alpha/t-crtfm"
+       extra_parts="$extra_parts crtfastmath.o"
        ;;
 alpha*-*-netbsd*)
        ;;
@@ -379,9 +381,12 @@ hppa[12]*-*-hpux11*)
        md_unwind_header=pa/hpux-unwind.h
        ;;
 i[34567]86-*-darwin*)
+       tmake_file="$tmake_file i386/t-crtfm"
+       extra_parts="$extra_parts crtfastmath.o"
        ;;
 x86_64-*-darwin*)
-       tmake_file="t-darwin ${cpu_type}/t-darwin64 t-slibgcc-darwin"
+       tmake_file="t-darwin ${cpu_type}/t-darwin64 i386/t-crtfm 
t-slibgcc-darwin"
+       extra_parts="$extra_parts crtfastmath.o"
        ;;
 i[34567]86-*-elf*)
        ;;
@@ -453,21 +458,22 @@ i[34567]86-*-mingw*)
        md_unwind_header=i386/w32-unwind.h
        ;;
 x86_64-*-mingw*)
-       tmake_file=t-dfprules
+       tmake_file="t-dfprules i386/t-crtfm"
+       extra_parts="$extra_parts crtfastmath.o"
        ;;
 i[34567]86-*-interix3*)
        ;;
 ia64*-*-elf*)
        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
-       tmake_file="ia64/t-ia64 ia64/t-eh-ia64"
+       tmake_file="ia64/t-ia64 t-crtfm ia64/t-eh-ia64"
        ;;
 ia64*-*-freebsd*)
        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
-       tmake_file="ia64/t-ia64 ia64/t-eh-ia64"
+       tmake_file="ia64/t-ia64 t-crtfm ia64/t-eh-ia64"
        ;;
 ia64*-*-linux*)
        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
-       tmake_file="ia64/t-ia64 t-softfp-tf ia64/t-softfp t-softfp 
ia64/t-softfp-compat ia64/t-glibc ia64/t-eh-ia64 t-libunwind"
+       tmake_file="ia64/t-ia64 t-crtfm t-softfp-tf ia64/t-softfp t-softfp 
ia64/t-softfp-compat ia64/t-glibc ia64/t-eh-ia64 t-libunwind"
        if test x$with_system_libunwind != xyes ; then
                tmake_file="${tmake_file} t-libunwind-elf 
ia64/t-glibc-libunwind"
        fi
@@ -764,6 +770,8 @@ sparc64-*-rtems*)
 sparc-wrs-vxworks)
        ;;
 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
+       tmake_file="$tmake_file t-crtfm"
+       extra_parts=crtfastmath.o
        ;;
 sparc64-*-linux*)              # 64-bit SPARC's running GNU/Linux
        extra_parts="$extra_parts crtfastmath.o"
diff --git a/gcc/config/alpha/crtfastmath.c b/libgcc/config/alpha/crtfastmath.c
rename from gcc/config/alpha/crtfastmath.c
rename to libgcc/config/alpha/crtfastmath.c
diff --git a/libgcc/config/alpha/t-crtfm b/libgcc/config/alpha/t-crtfm
--- a/libgcc/config/alpha/t-crtfm
+++ b/libgcc/config/alpha/t-crtfm
@@ -1,5 +1,5 @@
 # FIXME drow/20061228 - I have preserved this -frandom-seed option
 # while migrating this rule from the GCC directory, but I do not
 # know why it is necessary if no other crt file uses it.
-crtfastmath.o: $(gcc_srcdir)/config/alpha/crtfastmath.c
+crtfastmath.o: $(srcdir)/config/alpha/crtfastmath.c
        $(gcc_compile) -frandom-seed=gcc-crtfastmath -c $<
diff --git a/gcc/config/i386/crtfastmath.c b/libgcc/config/i386/crtfastmath.c
rename from gcc/config/i386/crtfastmath.c
rename to libgcc/config/i386/crtfastmath.c
diff --git a/libgcc/config/i386/t-crtfm b/libgcc/config/i386/t-crtfm
--- a/libgcc/config/i386/t-crtfm
+++ b/libgcc/config/i386/t-crtfm
@@ -1,4 +1,4 @@
 # This is an endfile, Use -minline-all-stringops to ensure
 # that __builtin_memset doesn't refer to the lib function memset().
-crtfastmath.o: $(gcc_srcdir)/config/i386/crtfastmath.c
+crtfastmath.o: $(srcdir)/config/i386/crtfastmath.c
        $(gcc_compile) -msse -minline-all-stringops -c $<
diff --git a/gcc/config/ia64/crtfastmath.c b/libgcc/config/ia64/crtfastmath.c
rename from gcc/config/ia64/crtfastmath.c
rename to libgcc/config/ia64/crtfastmath.c
diff --git a/libgcc/config/ia64/t-ia64 b/libgcc/config/ia64/t-ia64
--- a/libgcc/config/ia64/t-ia64
+++ b/libgcc/config/ia64/t-ia64
@@ -13,6 +13,3 @@ crtbeginS.o: $(gcc_srcdir)/config/ia64/c
 crtendS.o: $(gcc_srcdir)/config/ia64/crtend.asm
        $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
                -o $@ -DSHARED $(gcc_srcdir)/config/ia64/crtend.asm
-
-crtfastmath.o: $(gcc_srcdir)/config/ia64/crtfastmath.c
-       $(gcc_compile) -c $(gcc_srcdir)/config/ia64/crtfastmath.c
diff --git a/gcc/config/mips/crtfastmath.c b/libgcc/config/mips/crtfastmath.c
rename from gcc/config/mips/crtfastmath.c
rename to libgcc/config/mips/crtfastmath.c
diff --git a/gcc/config/sparc/crtfastmath.c b/libgcc/config/sparc/crtfastmath.c
rename from gcc/config/sparc/crtfastmath.c
rename to libgcc/config/sparc/crtfastmath.c
diff --git a/libgcc/config/t-crtfm b/libgcc/config/t-crtfm
--- a/libgcc/config/t-crtfm
+++ b/libgcc/config/t-crtfm
@@ -1,2 +1,2 @@
-crtfastmath.o: $(gcc_srcdir)/config/$(cpu_type)/crtfastmath.c
+crtfastmath.o: $(srcdir)/config/$(cpu_type)/crtfastmath.c
        $(gcc_compile) -c $<


-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

Reply via email to