If I add 4 more tree codes to tree.def, it causes a segmentation violation in building libstdc++ pre-compiled header files.
Here is the patch to add 4 more tree codes: --- gcc/tree.def.~1~ 2007-11-01 11:59:47.000000000 -0400 +++ gcc/tree.def 2008-01-28 16:01:36.000000000 -0500 @@ -682,6 +682,13 @@ DEFTREECODE (RSHIFT_EXPR, "rshift_expr", DEFTREECODE (LROTATE_EXPR, "lrotate_expr", tcc_binary, 2) DEFTREECODE (RROTATE_EXPR, "rrotate_expr", tcc_binary, 2) +/* Vector/vector shifts, where both arguments are vector types. This is only + used during the expansion of shifts and rotates. */ +DEFTREECODE (VLSHIFT_EXPR, "vlshift_expr", tcc_binary, 2) +DEFTREECODE (VRSHIFT_EXPR, "vrshift_expr", tcc_binary, 2) +DEFTREECODE (VLROTATE_EXPR, "vlrotate_expr", tcc_binary, 2) +DEFTREECODE (VRROTATE_EXPR, "vrrotate_expr", tcc_binary, 2) + /* Bitwise operations. Operands have same mode as result. */ DEFTREECODE (BIT_IOR_EXPR, "bit_ior_expr", tcc_binary, 2) DEFTREECODE (BIT_XOR_EXPR, "bit_xor_expr", tcc_binary, 2) Here is the file that segfaults: /data/fsf-build/bulldozer-gcc-test/./gcc/xgcc -shared-libgcc -B/data/fsf-build/bulldozer-gcc-test/./gcc -nostdinc++ -L/data/fsf-build/bulldozer-gcc-test/x86_64-unknown-linux-gnu/libstdc++-v3/src -L/data/fsf-build/bulldozer-gcc-test/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -B/proj/gcc/fsf-install/bulldozer-gcc-test/x86_64-unknown-linux-gnu/bin/ -B/proj/gcc/fsf-install/bulldozer-gcc-test/x86_64-unknown-linux-gnu/lib/ -isystem /proj/gcc/fsf-install/bulldozer-gcc-test/x86_64-unknown-linux-gnu/include -isystem /proj/gcc/fsf-install/bulldozer-gcc-test/x86_64-unknown-linux-gnu/sys-include -Winvalid-pch -x c++-header -g -O2 -D_GNU_SOURCE -I/data/fsf-build/bulldozer-gcc-test/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu -I/data/fsf-build/bulldozer-gcc-test/x86_64-unknown-linux-gnu/libstdc++-v3/include -I/proj/gcc/fsf-src/bulldozer-gcc-test/libstdc++-v3/libsupc++ -O0 -g /proj/gcc/fsf-src/bulldozer-gcc-test/libstdc++-v3/include/precompiled/stdc++.h -o x86_64-unknown-linux-gnu/bits/stdc++.h.gch/O0g.gch In file included from /data/fsf-build/bulldozer-gcc-test/x86_64-unknown-linux-gnu/libstdc++-v3/include/valarray:539, from /proj/gcc/fsf-src/bulldozer-gcc-test/libstdc++-v3/include/precompiled/stdc++.h:96: /data/fsf-build/bulldozer-gcc-test/x86_64-unknown-linux-gnu/libstdc++-v3/include/valarray: In instantiation of std::valarray<long unsigned int>: /data/fsf-build/bulldozer-gcc-test/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/valarray_after.h:59: instantiated from here /data/fsf-build/bulldozer-gcc-test/x86_64-unknown-linux-gnu/libstdc++-v3/include/valarray:117: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. -- Summary: Adding 4 more tree codes causes a crash in building libstdc++ pre-compiled headers Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: michael dot meissner at amd dot com GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35004