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