[Bug bootstrap/38788] New: gcc 4.4.0 20090109 - Configure with "--enable-intermodule" breaks build

rob1weld at aol dot com gcc-bugzilla@gcc.gnu.org
Fri Jan 9 21:09:00 GMT 2009


I'm building gcc 4.4.0 20090109 on i386-pc-solaris2.11 (OpenSolaris 2008.11)
using gcc version 4.4.0 20090104. I added "--enable-intermodule" to my list
of configure options and 


# prev-gcc/xgcc -v
Using built-in specs.
Target: i386-pc-solaris2.11
Configured with: ../gcc_trunk/configure
--enable-languages=ada,c,c++,fortran,java,objc,obj-c++
--enable-shared --disable-static --enable-decimal-float --with-long-double-128
--enable-nls --with-included-gettext --enable-gather-detailed-mem-stats
--with-stabs --enable-debug -enable-largefile --enable-symvers
--without-system-zlib --enable-gtk-cairo --enable-qt-peer --enable-xmlj
--enable-gconf-peer --enable-gjdoc --enable-java-awt=gtk,xlib,qt,x
--enable-gc-debug --enable-libgcj-multifile --enable-libgcj-debug
--enable-objc-gc --enable-libstdcxx-debug --enable-stage1-checking
--enable-checking=release --enable-intermodule --without-system-libunwind
--with-gnu-as --with-as=/usr/local/bin/as --with-gnu-ld
--with-ld=/usr/local/bin/ld
Thread model: posix
gcc version 4.4.0 20090109 (experimental) (GCC) 

# gmake
...
/bin/sh ../../gcc_trunk/gcc/../move-if-change tmp-mlib.h multilib.h
echo timestamp > s-mlib
lsf="../../gcc_trunk/gcc/ada/gcc-interface/lang-specs.h
../../gcc_trunk/gcc/cp/lang-specs.h ../../gcc_trunk/gcc/fortran/lang-specs.h
../../gcc_trunk/gcc/java/lang-specs.h ../../gcc_trunk/gcc/objc/lang-specs.h
../../gcc_trunk/gcc/objcp/lang-specs.h"; for f in $lsf; do \
            echo "#include \"$f\""; \
        done | sed 's|../../gcc_trunk/gcc/||' > tmp-specs.h
/bin/sh ../../gcc_trunk/gcc/../move-if-change tmp-specs.h specs.h
echo timestamp > s-specs
/usr/share/src/gcc_build/./prev-gcc/xgcc -B/usr/share/src/gcc_build/./prev-gcc/
-B/usr/local/i386-pc-solaris2.11/bin/ -c  -g -O2 -fprofile-generate -DIN_GCC  
-W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual
-Wold-style-definition -Wc++-compat -Wmissing-format-attribute -pedantic
-Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror  
-DHAVE_CONFIG_H -I. -I. -I../../gcc_trunk/gcc -I../../gcc_trunk/gcc/.
-I../../gcc_trunk/gcc/../include -I./../intl
-I../../gcc_trunk/gcc/../libcpp/include  -I../../gcc_trunk/gcc/../libdecnumber
-I../../gcc_trunk/gcc/../libdecnumber/dpd -I../libdecnumber 
-DCLOOG_PPL_BACKEND  -fexceptions ../../gcc_trunk/gcc/c-pretty-print.c -o
c-pretty-print.o
/usr/share/src/gcc_build/./prev-gcc/xgcc -B/usr/share/src/gcc_build/./prev-gcc/
-B/usr/local/i386-pc-solaris2.11/bin/  -g -O2 -fprofile-generate -DIN_GCC   -W
-Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual
-Wold-style-definition -Wc++-compat -Wmissing-format-attribute -pedantic
-Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror  
-DHAVE_CONFIG_H -I. -I. -I../../gcc_trunk/gcc -I../../gcc_trunk/gcc/.
-I../../gcc_trunk/gcc/../include -I./../intl
-I../../gcc_trunk/gcc/../libcpp/include  -I../../gcc_trunk/gcc/../libdecnumber
-I../../gcc_trunk/gcc/../libdecnumber/dpd -I../libdecnumber 
-DCLOOG_PPL_BACKEND  -fexceptions \
          -DTARGET_NAME=\"i386-pc-solaris2.11\" \
          -DLOCALEDIR=\"/usr/local/share/locale\" \
          -c insn-attrtab.c insn-automata.c (HUGE LIST) ...
../../gcc_trunk/gcc/config/i386/i386.c -o libbackend.o  \
          -DBASEVER="\"4.4.0\"" -DDATESTAMP="\" 20090109\"" \
          -DREVISION= \
          -DDEVPHASE="\" (experimental)\"" -DPKGVERSION="\"(GCC) \"" \
          -DBUGURL="\"<http://gcc.gnu.org/bugs.html>\"" -combine
cc1: warnings being treated as errors
../../gcc_trunk/gcc/bitmap.c: In function 'bitmap_obstack_alloc_stat':
../../gcc_trunk/gcc/bitmap.c:359: error: request for implicit conversion from
'void *' to 'struct bitmap_head_def *' not permitted in C++
../../gcc_trunk/gcc/bitmap.c: In function 'bitmap_obstack_free':
../../gcc_trunk/gcc/bitmap.c:394: error: request for implicit conversion from
'void *' to 'struct bitmap_element *' not permitted in C++
../../gcc_trunk/gcc/dfp.c: In function 'encode_decimal32':
../../gcc_trunk/gcc/dfp.c:142: error: dereferencing type-punned pointer will
break strict-aliasing rules
../../gcc_trunk/gcc/dfp.c: In function 'decode_decimal32':
../../gcc_trunk/gcc/dfp.c:158: error: dereferencing type-punned pointer will
break strict-aliasing rules
../../gcc_trunk/gcc/dfp.c: In function 'encode_decimal64':
../../gcc_trunk/gcc/dfp.c:182: error: dereferencing type-punned pointer will
break strict-aliasing rules
../../gcc_trunk/gcc/dfp.c:188: error: dereferencing type-punned pointer will
break strict-aliasing rules
../../gcc_trunk/gcc/dfp.c: In function 'decode_decimal64':
../../gcc_trunk/gcc/dfp.c:207: error: dereferencing type-punned pointer will
break strict-aliasing rules
../../gcc_trunk/gcc/dfp.c:212: error: dereferencing type-punned pointer will
break strict-aliasing rules
../../gcc_trunk/gcc/dfp.c: In function 'encode_decimal128':
../../gcc_trunk/gcc/dfp.c:238: error: dereferencing type-punned pointer will
break strict-aliasing rules
../../gcc_trunk/gcc/dfp.c:248: error: dereferencing type-punned pointer will
break strict-aliasing rules
../../gcc_trunk/gcc/dfp.c: In function 'decode_decimal128':
../../gcc_trunk/gcc/dfp.c:267: error: dereferencing type-punned pointer will
break strict-aliasing rules
../../gcc_trunk/gcc/dfp.c:274: error: dereferencing type-punned pointer will
break strict-aliasing rules
../../gcc_trunk/gcc/dominance.c: In function 'iterate_fix_dominators':
../../gcc_trunk/gcc/dominance.c:1324: error: request for implicit conversion
from 'void *' to 'bitmap' not permitted in C++

cc1: out of memory allocating 12 bytes after a total of 347045888 bytes
gmake[3]: *** [libbackend.o] Error 1
gmake[3]: Leaving directory `/usr/share/src/gcc_build/gcc'
gmake[2]: *** [all-stageprofile-gcc] Error 2
gmake[2]: Leaving directory `/usr/share/src/gcc_build'
gmake[1]: *** [stageprofile-bubble] Error 2
gmake[1]: Leaving directory `/usr/share/src/gcc_build'
gmake: *** [all] Error 2

It seems there is little chance of "--enable-intermodule" configure option
working with the "-Werror" gcc option unless _all_ the files pass the
"-Werror" tests. 

It may be that "--enable-intermodule" would exceed the memory of any
reasonable Operating System (and it's hardware) and thus the configure 
option "--enable-intermodule" is not even a usable option. 

In it's current implementation within gcc it can only crash the build,
eventually, for most people. I can see it failing if it gets as far as 
Java. Don't tell us "all you need is 128G of memory to compile it...".


One way to fix this would be to allow a parameter to the gcc/configure
"--enable-intermodule" option that would specify memory available. 

The program could make a simple tree of files, chop it in half and retry 
the two parts if memory usage exceeded the desired amount. This would also 
allow use of the feature without bringing the System to it's knees.


Another possibility would be to add an "--exclude-from-intermodule=" option.
This could take either a single file, an "@file" list, or wildcards. The
list would consist of file to be excluded from being added to the "intermodule
list" and would simply be compiled normally.


Another possibility would be to add an "--assign-to-intermodule-1=" option.
This could take either a single file, an "@file" list, or wildcards. The
list would consist of file to be added to the "intermodule list" number one.
The user could add other files to "--assign-to-intermodule-2=", etc., and
any files excountered without an "--assign-to-intermodule-x=" option would
simply be compiled normally.


As it stands the "--enable-intermodule" is too likely to run into an "-Werror"
_or_ run the user out of memory, _most_ of the time. This makes it of limited
use in this situation. We should make it more usable (bring it up to "usable").

Rob


-- 
           Summary: gcc 4.4.0 20090109 - Configure with "--enable-
                    intermodule" breaks build
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: bootstrap
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rob1weld at aol dot com
 GCC build triplet: i386-pc-solaris2.11
  GCC host triplet: i386-pc-solaris2.11
GCC target triplet: i386-pc-solaris2.11


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38788



More information about the Gcc-bugs mailing list