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

Reply via email to