This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: gcc compile-time performance (on sparc solaris)
- From: Brad Lucier <lucier at math dot purdue dot edu>
- To: gcc at gcc dot gnu dot org
- Cc: lucier at math dot purdue dot edu (Brad Lucier)
- Date: Sun, 19 May 2002 23:44:26 -0500 (EST)
- Subject: Re: gcc compile-time performance (on sparc solaris)
>
> David and Gaby have reported large (outrageous?) bootstrap times on
> sparc solaris for 3.2, which I, for one, am not seeing. For example,
> on a 4-processor 500 MHz UltraII with 4 GB of memory, here are the
> file times for a build of 3.2, even with checking enabled:
>
> banach-383% ls -lrt
> total 8475
> -rw-r--r-- 1 lucier 94 May 17 20:40 mh-frag
> -rw-r--r-- 1 lucier 67250 May 17 20:40 Makefile
> -rwxr-xr-x 1 lucier 278 May 17 20:40 config.status*
> -rw-r--r-- 1 lucier 15342 May 17 20:42 config.cache
> drwxr-xr-x 3 lucier 1536 May 17 20:42 libiberty/
> drwxr-xr-x 2 lucier 512 May 17 20:42 zlib/
> drwxr-xr-x 2 lucier 512 May 17 21:22 fastjar/
> drwxr-xr-x 11 lucier 512 May 17 21:54 sparcv9-sun-solaris2.8/
> -rw-r--r-- 1 lucier 8476127 May 18 00:12 build.log
> drwxr-xr-x 15 lucier 6656 May 18 00:12 gcc/
> -rw-r--r-- 1 lucier 58156 May 18 02:19 check.log
> -rw-r--r-- 1 lucier 1505 May 18 02:19 warning.log
> -rwxr-xr-x 1 lucier 33354 May 18 02:19 mail-report-with-warnings.log*
>
> So it's less than 6 hours, make bootstrap and make check, with libgcj, witout
> ada. That's slow (enable-checking accounts for about an hour of it), but
> I doubt that sparc linux could do it 20 times faster.
Well, I tried to use bash 2.0.4 as CONFIG_SHELL, as someone suggested, and
I rebootstrapped with Mark's changes to the java compiler to build and test
everything except ada.
And things went slower :-(
-rw-r--r-- 1 lucier 94 May 19 12:19 mh-frag
-rw-r--r-- 1 lucier 67258 May 19 12:19 Makefile
-rwxr-xr-x 1 lucier 278 May 19 12:19 config.status*
-rw-r--r-- 1 lucier 14896 May 19 12:22 config.cache
drwxr-xr-x 3 lucier 1536 May 19 12:22 libiberty/
drwxr-xr-x 2 lucier 512 May 19 12:22 zlib/
drwxr-xr-x 2 lucier 512 May 19 13:02 fastjar/
drwxr-xr-x 11 lucier 512 May 19 13:45 sparcv9-sun-solaris2.8/
-rw-r--r-- 1 lucier 8500383 May 19 16:44 build.log
drwxr-xr-x 15 lucier 6656 May 19 16:44 gcc/
-rw-r--r-- 1 lucier 58550 May 19 19:05 check.log
-rw-r--r-- 1 lucier 1427 May 19 19:05 warning.log
-rwxr-xr-x 1 lucier 34119 May 19 19:05 mail-report-with-warnings.log*
Some side notes.
Still, some parts of the build used /bin/sh as the shell:
/bin/sh ../../gcc/move-if-change tmp-check.h tree-check.h
/bin/sh ../../gcc/move-if-change tmp-preds.h tm-preds.h
/bin/sh ../../gcc/move-if-change tmp-mlib.h multilib.h
/bin/sh ../../gcc/move-if-change tmp-genrtl.h genrtl.h
/bin/sh ../../gcc/move-if-change tmp-genrtl.c genrtl.c
/bin/sh ../../gcc/move-if-change tmp-constants.h insn-constants.h
/bin/sh ../../gcc/move-if-change tmp-flags.h insn-flags.h
/bin/sh ../../gcc/move-if-change tmp-config.h insn-config.h
/bin/sh ../../gcc/move-if-change tmp-codes.h insn-codes.h
/bin/sh ../../gcc/move-if-change tmp-attr.h insn-attr.h
/bin/sh ../../gcc/move-if-change tmp-opinit.c insn-opinit.c
/bin/sh ../../gcc/move-if-change tmp-output.c insn-output.c
/bin/sh ../../gcc/move-if-change tmp-emit.c insn-emit.c
/bin/sh ../../gcc/move-if-change tmp-peep.c insn-peep.c
/bin/sh ../../gcc/move-if-change tmp-recog.c insn-recog.c
etc.
The fortran library build seemed to ignore CONFIG_SHELL:
/bin/sh ../libtool --mode=compile /export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/xgcc -B/export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/ -B/usr/local/sparcv9-sun-solaris2.8/bin/ -B/usr/local/sparcv9-sun-solaris2.8/lib/ -isystem /usr/local/sparcv9-sun-solaris2.8/include -c -DSkip_f2c_Undefs -I. -I../../../../libf2c/libU77 -I../../../../libf2c/libU77/../libI77 -I.. -I../../../../libf2c/libU77/.. -DHAVE_CONFIG_H -g ../../../../libf2c/libU77/getgid_.c
/bin/sh ../libtool --mode=compile /export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/xgcc -B/export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/ -B/usr/local/sparcv9-sun-solaris2.8/bin/ -B/usr/local/sparcv9-sun-solaris2.8/lib/ -isystem /usr/local/sparcv9-sun-solaris2.8/include -c -DSkip_f2c_Undefs -DAllow_TYQUAD -I. -I../../../../libf2c/libI77 -I.. -I../../../../libf2c/libI77/.. -DHAVE_CONFIG_H -g ../../../../libf2c/libI77/dolio.c
etc.
Configures are slow on solaris, and they seem to be run mainly serially
during the build, and many things are checked over and over again:
banach-572% grep '^checking' build.log | sort | uniq -c | sort +nr
30 checking build system type... sparcv9-sun-solaris2.8
26 checking for a BSD compatible install... /local/bin/bash /export/u3/lucier/programs/gcc/gcc-3.2/install-sh -c
26 checking for objdir... .libs
26 checking for ranlib... (cached) true
26 checking host system type... sparcv9-sun-solaris2.8
24 checking command to parse /usr/ccs/bin/nm output... failed
24 checking dynamic linker characteristics... solaris2.8 ld.so
24 checking how to hardcode library paths into programs... immediate
24 checking if libtool supports shared libraries... yes
24 checking whether stripping libraries is possible... no
24 checking whether to build static libraries... yes
24 checking whether we are using GNU C... (cached) yes
22 checking whether to build shared libraries... yes
20 checking if /export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/xgcc supports -fno-rtti -fno-exceptions ... yes
20 checking whether make sets ${MAKE}... (cached) yes
18 checking if /export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/xgcc supports -c -o file.o... (cached) yes
18 checking whether the linker (/usr/ccs/bin/ld) supports shared libraries... yes
16 checking for unistd.h... (cached) yes
16 checking whether to enable maintainer-specific portions of Makefiles... no
14 checking for /export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/xgcc option to produce PIC... -fPIC -DPIC
14 checking for /usr/ccs/bin/ld option to reload object files... (cached) -r
14 checking for ANSI C header files... (cached) yes
14 checking for object suffix... (cached) o
14 checking for strip... (cached) strip
14 checking how to recognise dependant libraries... (cached) pass_all
14 checking if /export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/xgcc PIC flag -fPIC -DPIC works... (cached) yes
14 checking whether ln -s works... (cached) yes
12 checking for BSD-compatible nm... (cached) /usr/ccs/bin/nm
12 checking for Cygwin environment... (cached) no
12 checking for dlfcn.h... (cached) yes
12 checking for gcc... (cached) /export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/xgcc -B/export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/ -B/usr/local/sparcv9-sun-solaris2.8/bin/ -B/usr/local/sparcv9-sun-solaris2.8/lib/ -isystem /usr/local/sparcv9-sun-solaris2.8/include
12 checking for gcc... (cached) /export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/xgcc -B/export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/ -B/usr/local/sparcv9-sun-solaris2.8/bin/ -B/usr/local/sparcv9-sun-solaris2.8/lib/ -isystem /usr/local/sparcv9-sun-solaris2.8/include -m32
12 checking for ld used by GCC... (cached) /usr/ccs/bin/ld
12 checking for mingw32 environment... (cached) no
12 checking for working aclocal... missing
12 checking for working autoconf... found
12 checking for working autoheader... found
12 checking for working automake... missing
12 checking for working makeinfo... found
12 checking if the linker (/usr/ccs/bin/ld) is GNU ld... (cached) no
12 checking target system type... sparcv9-sun-solaris2.8
12 checking whether -lc should be explicitly linked in... (cached) yes
12 checking whether /export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/xgcc -B/export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/ -B/usr/local/sparcv9-sun-solaris2.8/bin/ -B/usr/local/sparcv9-sun-solaris2.8/lib/ -isystem /usr/local/sparcv9-sun-solaris2.8/include -m32 accepts -g... (cached) yes
12 checking whether /export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/xgcc -B/export/u3/lucier/programs/gcc/gcc-3.2/objdir-sparcv9/gcc/ -B/usr/local/sparcv9-sun-solaris2.8/bin/ -B/usr/local/sparcv9-sun-solaris2.8/lib/ -isystem /usr/local/sparcv9-sun-solaris2.8/include accepts -g... (cached) yes
12 checking whether build environment is sane... yes
etc.
Do all these things need to be checked so many times during the build?
Brad