This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]