ICE compiling glibc on i686 with current CVS version
Andreas Jaeger
aj@suse.de
Tue Dec 7 01:56:00 GMT 1999
Since a week or so, I get an ICE running make check in the current
glibc development version.
I've made a smaller testcase out of it. Compiling the file gives:
/opt/gcc-2.96/bin/gcc tester2.i -c -O2 -o tester.o -Wall
tester2.i: In function `test_stpcpy':
tester2.i:34: Unrecognizable insn:
(insn 222 220 224 (parallel[
(set (reg:SI 92)
(neg:SI (symbol_ref:SI ("one"))))
(clobber (reg:CC 17 flags))
] ) -1 (nil)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil)))
tester2.i:34: Internal compiler error in `extract_insn', at recog.c:2043
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/faq.html#bugreport > for instructions.
I'm running:
GNU C version 2.96 19991206 (experimental) (i686-pc-linux-gnu)
compiled by GNU C version 2.96 19991206 (experimental).
on i686, Linux 2.2.13, glibc 2.1.2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
typedef unsigned short int __uint16_t;
typedef unsigned int __uint32_t;
typedef unsigned int size_t;
extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src);
extern char *__stpcpy_small (char *, __uint16_t, __uint16_t,
__uint32_t, __uint32_t, size_t);
extern void *__mempcpy_small (void *, char, char, char, char,
__uint16_t, __uint16_t, __uint32_t,
__uint32_t, size_t);
extern void *__mempcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n) ;
extern void check (int thing, int number);
extern void equal (const char *a, const char *b, int number);
char one[50];
void
test_stpcpy (void)
{
check (((__extension__ (__builtin_constant_p ( "abcdefghi" ) ? (((size_t)(const void *)(( "abcdefghi" ) + 1) - (size_t)(const void *)( "abcdefghi" ) == 1) && strlen ( "abcdefghi" ) + 1 <= 8 ? __stpcpy_small ( one , __extension__ (((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 0 + 1] << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 0 ]) , __extension__ (((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 4 + 1] << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 4 ]) , __extension__ (((((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 0 + 3] << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 0 ]) , __extension__ (((((__const unsigned ch!
ar *) (__const char *) ( "abcdefghi" ))[ 4 + 3] << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 4 ]) , strlen ( "abcdefghi" ) + 1) : ((char *) (__extension__ (__builtin_constant_p ( "abcdefghi" ) && __builtin_constant_p ( strlen ( "abcdefghi" ) + 1 ) && ((size_t)(const void *)(( "abcdefghi" ) + 1) - (size_t)(const void *)( "abcdefghi" ) == 1) && strlen ( "abcdefghi" ) + 1 <= 8 ? __mempcpy_small ( one , ((char *) ( "abcdefghi" ))[0], ((char *) ( "abcdefghi" ))[2], ((char *) ( "abcdefghi" ))[4], ((char *) ( "abcdefghi" ))[6], __extension__ (((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 0 + 1] << 8 | ((__const unsigned char *) (__const char *) ( "abcdef!
ghi" ))[ 0 ]) , __extension__ (((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 4 + 1] << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 4 ]) , __extension__ (((((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 0 + 3] << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 0 ]) , __extension__ (((((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 4 + 3] << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ( "abcdefghi" ))[ 4 ]) , strlen ( "abcdefghi" ) + 1 ) : __mempcpy ( !
one , "abcdefghi" , strlen ( "abcdefghi" ) + 1 ))) - 1)) : __stpcpy ( one , "abcdefghi" ))) - one) == 9, 17);
equal (one, "abcdefghi", 18);
check (((__extension__ (__builtin_constant_p ( "x" ) ? (((size_t)(const void *)(( "x" ) + 1) - (size_t)(const void *)( "x" ) == 1) && strlen ( "x" ) + 1 <= 8 ? __stpcpy_small ( one , __extension__ (((__const unsigned char *) (__const char *) ( "x" ))[ 0 + 1] << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 0 ]) , __extension__ (((__const unsigned char *) (__const char *) ( "x" ))[ 4 + 1] << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 4 ]) , __extension__ (((((__const unsigned char *) (__const char *) ( "x" ))[ 0 + 3] << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 0 ]) , __extension__ (((((__const unsigned char *) (__const char *) ( "x" ))[ 4 + 3] << 8 | ((__const unsigned char *) (__const cha!
r *) ( "x" ))[ 4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 4 ]) , strlen ( "x" ) + 1) : ((char *) (__extension__ (__builtin_constant_p ( "x" ) && __builtin_constant_p ( strlen ( "x" ) + 1 ) && ((size_t)(const void *)(( "x" ) + 1) - (size_t)(const void *)( "x" ) == 1) && strlen ( "x" ) + 1 <= 8 ? __mempcpy_small ( one , ((char *) ( "x" ))[0], ((char *) ( "x" ))[2], ((char *) ( "x" ))[4], ((char *) ( "x" ))[6], __extension__ (((__const unsigned char *) (__const char *) ( "x" ))[ 0 + 1] << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 0 ]) , __extension__ (((__const unsigned char *) (__const char *) ( "x" ))[ 4 + 1] << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 4 ]) , __extension__ (((((__const unsigne!
d char *) (__const char *) ( "x" ))[ 0 + 3] << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 0 ]) , __extension__ (((((__const unsigned char *) (__const char *) ( "x" ))[ 4 + 3] << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ( "x" ))[ 4 ]) , strlen ( "x" ) + 1 ) : __mempcpy ( one , "x" , strlen ( "x" ) + 1 ))) - 1)) : __stpcpy ( one , "x" ))) - one) == 1, 19);
equal (one, "x", 20);
equal (one+2, "cdefghi", 21);
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jan, is this a problem of one of your ix86 patches?
Andreas
--
Andreas Jaeger
SuSE Labs aj@suse.de
private aj@arthur.rhein-neckar.de
More information about the Gcc-bugs
mailing list