glib-2.16.1 fails to compile in scannerapi.c and produces "internal compiler error". I've dramatically reduced the test case, here it is: - scannerapi.c - scannerapi.i - stderr - command used: gcc -v -save-temps -o scannerapi.o -c scannerapi.c >& stderr
----- scannerapi.c (start) ------------ #define myassert(n1, cmp, n2) do { signed long __n1 = (n1), \ __n2 = (n2); if (__n1 cmp __n2) ; else myassert_message \ (__FILE__, __PRETTY_FUNCTION__, #n1 " " #cmp " " #n2, __n1, \ #cmp, __n2); } while (0) void myassert_message ( char const *file, char const *func, char const *expr, long double g1, char const *cmp, long double g2 ) __attribute__((__noreturn__)); typedef struct { struct _GScanner *scanner; } SF; void test_scanner_tokens (void) { SF *fix; char buf[] = "1234567"; int const buflen = undeclared0(buf); char mytokbuf[] = "abcde"; int i; undeclared2 (fix->scanner, buf, buflen); myassert (undeclared3 (fix->scanner), ==, 1); undeclared5 (fix->scanner); myassert (undeclared1 (fix->scanner), ==, 0); myassert (undeclared4 (fix->scanner), ==, mytokbuf[0]); for (i = 1; i < 1; i++) { myassert (undeclared5 (fix->scanner), ==, mytokbuf[i]); }; myassert (undeclared5 (fix->scanner), ==, 0); return; } ----- scannerapi.c (end) ------------ ----- scannerapi.i (start) ------------ # 1 "scannerapi.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "scannerapi.c" void myassert_message ( char const *file, char const *func, char const *expr, long double g1, char const *cmp, long double g2 ) __attribute__((__noreturn__)); typedef struct { struct _GScanner *scanner; } SF; void test_scanner_tokens (void) { SF *fix; char buf[] = "1234567"; int const buflen = undeclared0(buf); char mytokbuf[] = "abcde"; int i; undeclared2 (fix->scanner, buf, buflen); do { signed long __n1 = (undeclared3 (fix->scanner)), __n2 = (1); if (__n1 == __n2) ; else myassert_message ("scannerapi.c", __PRETTY_FUNCTION__, "undeclared3 (fix->scanner)" " " "==" " " "1", __n1, "==", __n2); } while (0); undeclared5 (fix->scanner); do { signed long __n1 = (undeclared1 (fix->scanner)), __n2 = (0); if (__n1 == __n2) ; else myassert_message ("scannerapi.c", __PRETTY_FUNCTION__, "undeclared1 (fix->scanner)" " " "==" " " "0", __n1, "==", __n2); } while (0); do { signed long __n1 = (undeclared4 (fix->scanner)), __n2 = (mytokbuf[0]); if (__n1 == __n2) ; else myassert_message ("scannerapi.c", __PRETTY_FUNCTION__, "undeclared4 (fix->scanner)" " " "==" " " "mytokbuf[0]", __n1, "==", __n2); } while (0); for (i = 1; i < 1; i++) { do { signed long __n1 = (undeclared5 (fix->scanner)), __n2 = (mytokbuf[i]); if (__n1 == __n2) ; else myassert_message ("scannerapi.c", __PRETTY_FUNCTION__, "undeclared5 (fix->scanner)" " " "==" " " "mytokbuf[i]", __n1, "==", __n2); } while (0); }; do { signed long __n1 = (undeclared5 (fix->scanner)), __n2 = (0); if (__n1 == __n2) ; else myassert_message ("scannerapi.c", __PRETTY_FUNCTION__, "undeclared5 (fix->scanner)" " " "==" " " "0", __n1, "==", __n2); } while (0); return; } ----- scannerapi.i (end) ------------ ----- stderr (start) ------------ Using built-in specs. Target: sparc64-sun-solaris2.8 Configured with: /tmp/local/tmp/gcc/gcc-4.4.0/configure --prefix=/tmp/local/unixutil/gcc-4.4.0 --with-local-prefix=/usr/local/myplace --enable-languages=c,c++,fortran --with-gmp=/tmp/local/unixutil/gmpTMP --with-mpfr=/tmp/local/unixutil/mpfrTMP --with-cpu=v9 --build=sparc64-sun-solaris2.8 --disable-multilib Thread model: posix gcc version 4.4.0 (GCC) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'scannerapi.o' '-c' '-mcpu=v9' /tmp/local/unixutil/gcc-4.4.0/bin/../libexec/gcc/sparc64-sun-solaris2.8/4.4.0/cc1 -E -quiet -v -iprefix /tmp/local/unixutil/gcc-4.4.0/bin/../lib/gcc/sparc64-sun-solaris2.8/4.4.0/ -D__arch64__ -D__sparcv9 scannerapi.c -mcpu=v9 -fpch-preprocess -o scannerapi.i ignoring nonexistent directory "/tmp/local/unixutil/gcc-4.4.0/bin/../lib/gcc/sparc64-sun-solaris2.8/4.4.0/../../../../sparc64-sun-solaris2.8/include" ignoring nonexistent directory "/usr/local/myplace/include" ignoring duplicate directory "/tmp/local/unixutil/gcc-4.4.0/bin/../lib/gcc/../../lib/gcc/sparc64-sun-solaris2.8/4.4.0/include" ignoring duplicate directory "/tmp/local/unixutil/gcc-4.4.0/bin/../lib/gcc/../../lib/gcc/sparc64-sun-solaris2.8/4.4.0/include-fixed" ignoring nonexistent directory "/tmp/local/unixutil/gcc-4.4.0/bin/../lib/gcc/../../lib/gcc/sparc64-sun-solaris2.8/4.4.0/../../../../sparc64-sun-solaris2.8/include" #include "..." search starts here: #include <...> search starts here: /tmp/local/unixutil/gcc-4.4.0/bin/../lib/gcc/sparc64-sun-solaris2.8/4.4.0/include /tmp/local/unixutil/gcc-4.4.0/bin/../lib/gcc/sparc64-sun-solaris2.8/4.4.0/include-fixed /tmp/local/unixutil/gcc-4.4.0/bin/../lib/gcc/../../include /usr/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'scannerapi.o' '-c' '-mcpu=v9' /tmp/local/unixutil/gcc-4.4.0/bin/../libexec/gcc/sparc64-sun-solaris2.8/4.4.0/cc1 -fpreprocessed scannerapi.i -quiet -dumpbase scannerapi.c -mcpu=v9 -auxbase-strip scannerapi.o -version -o scannerapi.s GNU C (GCC) version 4.4.0 (sparc64-sun-solaris2.8) compiled by GNU C version 4.4.0, GMP version 4.3, MPFR version 2.4.1. warning: GMP header version 4.3 differs from library version 4.3.0. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 9ca553a0ebde423c17b189104de35a45 scannerapi.c: In function 'test_scanner_tokens': scannerapi.c:36: internal compiler error: Segmentation Fault Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. ----- stderr (end) ------------ -- Summary: preprocessor fails with myassertion Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: preprocessor AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: Denis dot Excoffier at airbus dot com GCC build triplet: sparc64-sun-solaris2.8 GCC host triplet: sparc64-sun-solaris2.8 GCC target triplet: sparc64-sun-solaris2.8 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39883