Endless (?) loop with simple program compiled by gcc 2.95 -O
Andreas Jaeger
aj@arthur.rhein-neckar.de
Thu Jun 3 08:39:00 GMT 1999
The following simple test program compiles for ever:
#define INIT
#define GETC() 0
#define PEEKC() 0
#define UNGETC(c)
#define ERROR(val)
#define RETURN(val) 0
#include<regexp.h>
int main (void) {return 0;}
My system: glibc 2.1.1, gcc-2.95 19990602, Linux 2.3.5, i486.
I tried several combinations of compile flags:
* without any everything is ok
* -O99 works
* -O endless loop
* -O2 works
Calling cc1 directly from gdb and interrupting it, I get the following
information:
(gdb) r regexp-test.i -dumpbase regexp-test.c -O1 -o regexp-test.s
strtod strtol strtoul strtoq strtouq strtoll strtoull atof atoi atol atoll __strcpy_small __strcspn_c1 __strcspn_c2 __strcspn_c3 __strspn_c1 __strspn_c2 __strspn_c3 __strpbrk_c2 __strpbrk_c3 __strtok_r_1c __strsep_1c __strsep_2c __strsep_3c __strsep_g compile
Program received signal SIGINT, Interrupt.
0x80def7c in delete_insn (insn=0x8277434)
at ../../gcc-2_95-branch/gcc/jump.c:4073
../../gcc-2_95-branch/gcc/jump.c:4073: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0 0x80def7c in delete_insn (insn=0x8277434)
at ../../gcc-2_95-branch/gcc/jump.c:4073
#1 0x80ec77d in cse_insn (insn=0x8277314, libcall_insn=0x0)
at ../../gcc-2_95-branch/gcc/cse.c:7488
#2 0x80eeaae in cse_basic_block (from=0x827acb4, to=0x827ae4c,
next_branch=0xbffff370, around_loop=1)
at ../../gcc-2_95-branch/gcc/cse.c:8953
#3 0x80ee85b in cse_main (f=0x8279a70, nregs=57, after_loop=0, file=0x0)
at ../../gcc-2_95-branch/gcc/cse.c:8818
#4 0x804c330 in rest_of_compilation (decl=0x8275eb0)
at ../../gcc-2_95-branch/gcc/toplev.c:3871
#5 0x818a7dc in finish_function (nested=0)
at ../../gcc-2_95-branch/gcc/c-decl.c:7268
#6 0x817b9da in yyparse () at c-parse.y:349
#7 0x804b451 in compile_file (name=0xbffffc1d "regexp-test.i")
at ../../gcc-2_95-branch/gcc/toplev.c:3265
#8 0x804e70b in main (argc=7, argv=0xbffffa94)
at ../../gcc-2_95-branch/gcc/toplev.c:5441
#9 0x4002f588 in __libc_start_main (main=0x804d780 <main>, argc=7,
argv=0xbffffa94, init=0x8048d70 <_init>, fini=0x8197e90 <_fini>,
rtld_fini=0x40009a70 <_dl_fini>, stack_end=0xbffffa8c)
at ../sysdeps/generic/libc-start.c:78
Andreas
P.S. Here's the regexp-test.i file to reproduce this:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 1 "regexp-test.c"
# 1 "/usr/include/regexp.h" 1 3
# 1 "/usr/include/features.h" 1 3
# 137 "/usr/include/features.h" 3
# 195 "/usr/include/features.h" 3
# 1 "/usr/include/sys/cdefs.h" 1 3
# 71 "/usr/include/sys/cdefs.h" 3
# 103 "/usr/include/sys/cdefs.h" 3
# 249 "/usr/include/features.h" 2 3
# 1 "/usr/include/gnu/stubs.h" 1 3
# 277 "/usr/include/features.h" 2 3
# 31 "/usr/include/regexp.h" 2 3
# 1 "/usr/include/alloca.h" 1 3
# 1 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 1 3
# 19 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 61 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 131 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
typedef unsigned int size_t;
# 271 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 283 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 317 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 25 "/usr/include/alloca.h" 2 3
extern void * alloca (size_t __size) ;
# 32 "/usr/include/regexp.h" 2 3
# 1 "/usr/include/regex.h" 1 3
typedef long int s_reg_t;
typedef unsigned long int active_reg_t;
typedef unsigned long int reg_syntax_t;
extern reg_syntax_t re_syntax_options;
typedef enum
{
REG_NOERROR = 0,
REG_NOMATCH,
REG_BADPAT,
REG_ECOLLATE,
REG_ECTYPE,
REG_EESCAPE,
REG_ESUBREG,
REG_EBRACK,
REG_EPAREN,
REG_EBRACE,
REG_BADBR,
REG_ERANGE,
REG_ESPACE,
REG_BADRPT,
REG_EEND,
REG_ESIZE,
REG_ERPAREN
} reg_errcode_t;
struct re_pattern_buffer
{
unsigned char *buffer;
unsigned long int allocated;
unsigned long int used;
reg_syntax_t syntax;
char *fastmap;
char * translate;
size_t re_nsub;
unsigned can_be_null : 1;
unsigned regs_allocated : 2;
unsigned fastmap_accurate : 1;
unsigned no_sub : 1;
unsigned not_bol : 1;
unsigned not_eol : 1;
unsigned newline_anchor : 1;
};
typedef struct re_pattern_buffer regex_t;
typedef int regoff_t;
struct re_registers
{
unsigned num_regs;
regoff_t *start;
regoff_t *end;
};
typedef struct
{
regoff_t rm_so;
regoff_t rm_eo;
} regmatch_t;
extern reg_syntax_t re_set_syntax (reg_syntax_t syntax) ;
extern const char *re_compile_pattern
(const char *pattern, size_t length,
struct re_pattern_buffer *buffer) ;
extern int re_compile_fastmap (struct re_pattern_buffer *buffer) ;
extern int re_search
(struct re_pattern_buffer *buffer, const char *string,
int length, int start, int range, struct re_registers *regs) ;
extern int re_search_2
(struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
int start, int range, struct re_registers *regs, int stop) ;
extern int re_match
(struct re_pattern_buffer *buffer, const char *string,
int length, int start, struct re_registers *regs) ;
extern int re_match_2
(struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
int start, struct re_registers *regs, int stop) ;
extern void re_set_registers
(struct re_pattern_buffer *buffer, struct re_registers *regs,
unsigned num_regs, regoff_t *starts, regoff_t *ends) ;
extern int regcomp (regex_t *__preg, const char *__pattern,
int __cflags) ;
extern int regexec (const regex_t *__preg,
const char *__string, size_t __nmatch,
regmatch_t __pmatch[], int __eflags) ;
extern size_t regerror (int __errcode, const regex_t *__preg,
char *__errbuf, size_t __errbuf_size) ;
extern void regfree (regex_t *__preg) ;
# 33 "/usr/include/regexp.h" 2 3
# 1 "/usr/include/stdlib.h" 1 3
# 1 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 1 3
# 19 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 61 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 131 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 188 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
typedef long int wchar_t;
# 283 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 317 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 33 "/usr/include/stdlib.h" 2 3
typedef struct
{
int quot;
int rem;
} div_t;
typedef struct
{
long int quot;
long int rem;
} ldiv_t;
# 65 "/usr/include/stdlib.h" 3
extern size_t __ctype_get_mb_cur_max (void) ;
extern double atof (__const char *__nptr) ;
extern int atoi (__const char *__nptr) ;
extern long int atol (__const char *__nptr) ;
__extension__ extern long long int atoll (__const char *__nptr) ;
extern double strtod (__const char *__restrict __nptr,
char **__restrict __endptr) ;
extern long int strtol (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) ;
extern unsigned long int strtoul (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base) ;
__extension__
extern long long int strtoq (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) ;
__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base) ;
__extension__
extern long long int strtoll (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) ;
__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base) ;
# 190 "/usr/include/stdlib.h" 3
extern double __strtod_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __group) ;
extern float __strtof_internal (__const char *__restrict __nptr,
char **__restrict __endptr, int __group) ;
extern long double __strtold_internal (__const char *
__restrict __nptr,
char **__restrict __endptr,
int __group) ;
extern long int __strtol_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group) ;
extern unsigned long int __strtoul_internal (__const char *
__restrict __nptr,
char **__restrict __endptr,
int __base, int __group) ;
__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group) ;
__extension__
extern unsigned long long int __strtoull_internal (__const char *
__restrict __nptr,
char **
__restrict __endptr,
int __base,
int __group) ;
extern __inline double
strtod (__const char *__restrict __nptr, char **__restrict __endptr)
{
return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
strtol (__const char *__restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtoul_internal (__nptr, __endptr, __base, 0);
}
# 271 "/usr/include/stdlib.h" 3
__extension__ extern __inline long long int
strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline long long int
strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
extern __inline double
atof (__const char *__nptr)
{
return strtod (__nptr, (char **) ((void *)0) );
}
extern __inline int
atoi (__const char *__nptr)
{
return (int) strtol (__nptr, (char **) ((void *)0) , 10);
}
extern __inline long int
atol (__const char *__nptr)
{
return strtol (__nptr, (char **) ((void *)0) , 10);
}
__extension__ extern __inline long long int
atoll (__const char *__nptr)
{
return strtoll (__nptr, (char **) ((void *)0) , 10);
}
extern char *l64a (long int __n) ;
extern long int a64l (__const char *__s) ;
# 1 "/usr/include/sys/types.h" 1 3
# 1 "/usr/include/bits/types.h" 1 3
# 1 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 1 3
# 19 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 61 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 131 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 188 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 271 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 283 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 317 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 29 "/usr/include/bits/types.h" 2 3
typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;
__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef long long int __quad_t;
# 48 "/usr/include/bits/types.h" 3
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;
typedef __quad_t *__qaddr_t;
typedef __u_quad_t __dev_t;
typedef __u_int __uid_t;
typedef __u_int __gid_t;
typedef __u_long __ino_t;
typedef __u_int __mode_t;
typedef __u_int __nlink_t;
typedef long int __off_t;
typedef __quad_t __loff_t;
typedef int __pid_t;
typedef int __ssize_t;
typedef long int __rlim_t;
typedef __quad_t __rlim64_t;
typedef __u_int __id_t;
typedef struct
{
int __val[2];
} __fsid_t;
typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef long int __swblk_t;
typedef long int __clock_t;
typedef unsigned long int __fd_mask;
typedef struct
{
__fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask)) ];
} __fd_set;
typedef int __key_t;
typedef unsigned short int __ipc_pid_t;
typedef long int __blkcnt_t;
typedef __quad_t __blkcnt64_t;
typedef __u_long __fsblkcnt_t;
typedef __u_quad_t __fsblkcnt64_t;
typedef __u_long __fsfilcnt_t;
typedef __u_quad_t __fsfilcnt64_t;
typedef __u_long __ino64_t;
typedef __loff_t __off64_t;
typedef int __t_scalar_t;
typedef unsigned int __t_uscalar_t;
typedef int __intptr_t;
# 30 "/usr/include/sys/types.h" 2 3
typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;
typedef __loff_t loff_t;
typedef __ino_t ino_t;
typedef __dev_t dev_t;
typedef __gid_t gid_t;
typedef __mode_t mode_t;
typedef __nlink_t nlink_t;
typedef __uid_t uid_t;
typedef __off_t off_t;
typedef __pid_t pid_t;
typedef __id_t id_t;
typedef __ssize_t ssize_t;
typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;
typedef __key_t key_t;
# 1 "/usr/include/time.h" 1 3
# 51 "/usr/include/time.h" 3
# 62 "/usr/include/time.h" 3
typedef __time_t time_t;
# 89 "/usr/include/time.h" 3
# 279 "/usr/include/time.h" 3
# 121 "/usr/include/sys/types.h" 2 3
# 1 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 1 3
# 19 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 61 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 131 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 188 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 271 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 283 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 317 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 124 "/usr/include/sys/types.h" 2 3
typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 158 "/usr/include/sys/types.h" 3
typedef int int8_t __attribute__ ((__mode__ ( __QI__ ))) ;
typedef int int16_t __attribute__ ((__mode__ ( __HI__ ))) ;
typedef int int32_t __attribute__ ((__mode__ ( __SI__ ))) ;
typedef int int64_t __attribute__ ((__mode__ ( __DI__ ))) ;
typedef unsigned int u_int8_t __attribute__ ((__mode__ ( __QI__ ))) ;
typedef unsigned int u_int16_t __attribute__ ((__mode__ ( __HI__ ))) ;
typedef unsigned int u_int32_t __attribute__ ((__mode__ ( __SI__ ))) ;
typedef unsigned int u_int64_t __attribute__ ((__mode__ ( __DI__ ))) ;
typedef int register_t __attribute__ ((__mode__ (__word__)));
# 1 "/usr/include/endian.h" 1 3
# 1 "/usr/include/bits/endian.h" 1 3
# 35 "/usr/include/endian.h" 2 3
# 190 "/usr/include/sys/types.h" 2 3
# 1 "/usr/include/sys/select.h" 1 3
# 1 "/usr/include/bits/select.h" 1 3
# 36 "/usr/include/bits/select.h" 3
# 56 "/usr/include/bits/select.h" 3
# 72 "/usr/include/bits/select.h" 3
# 31 "/usr/include/sys/select.h" 2 3
# 1 "/usr/include/bits/sigset.h" 1 3
typedef int __sig_atomic_t;
typedef struct
{
unsigned long int __val[(1024 / (8 * sizeof (unsigned long int))) ];
} __sigset_t;
# 125 "/usr/include/bits/sigset.h" 3
# 34 "/usr/include/sys/select.h" 2 3
# 1 "/usr/include/time.h" 1 3
# 51 "/usr/include/time.h" 3
# 62 "/usr/include/time.h" 3
# 73 "/usr/include/time.h" 3
struct timespec
{
long int tv_sec;
long int tv_nsec;
};
# 279 "/usr/include/time.h" 3
# 38 "/usr/include/sys/select.h" 2 3
struct timeval;
typedef __fd_mask fd_mask;
typedef __fd_set fd_set;
extern int __select (int __nfds, __fd_set *__readfds,
__fd_set *__writefds, __fd_set *__exceptfds,
struct timeval *__timeout) ;
extern int select (int __nfds, __fd_set *__readfds,
__fd_set *__writefds, __fd_set *__exceptfds,
struct timeval *__timeout) ;
# 91 "/usr/include/sys/select.h" 3
# 193 "/usr/include/sys/types.h" 2 3
# 1 "/usr/include/sys/sysmacros.h" 1 3
# 196 "/usr/include/sys/types.h" 2 3
typedef __blkcnt_t blkcnt_t;
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;
# 339 "/usr/include/stdlib.h" 2 3
extern int32_t random (void) ;
extern void srandom (unsigned int __seed) ;
extern void * initstate (unsigned int __seed, void * __statebuf,
size_t __statelen) ;
extern void * setstate (void * __statebuf) ;
struct random_data
{
int32_t *fptr;
int32_t *rptr;
int32_t *state;
int rand_type;
int rand_deg;
int rand_sep;
int32_t *end_ptr;
};
extern int random_r (struct random_data *__restrict __buf,
int32_t *__restrict __result) ;
extern int srandom_r (unsigned int __seed, struct random_data *__buf) ;
extern int initstate_r (unsigned int __seed,
void * __restrict __statebuf,
size_t __statelen,
struct random_data *__restrict __buf) ;
extern int setstate_r (void * __restrict __statebuf,
struct random_data *__restrict __buf) ;
extern int rand (void) ;
extern void srand (unsigned int __seed) ;
extern int rand_r (unsigned int *__seed) ;
extern double drand48 (void) ;
extern double erand48 (unsigned short int __xsubi[3]) ;
extern long int lrand48 (void) ;
extern long int nrand48 (unsigned short int __xsubi[3]) ;
extern long int mrand48 (void) ;
extern long int jrand48 (unsigned short int __xsubi[3]) ;
extern void srand48 (long int __seedval) ;
extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ;
extern void lcong48 (unsigned short int __param[7]) ;
struct drand48_data
{
unsigned short int x[3];
unsigned short int a[3];
unsigned short int c;
unsigned short int old_x[3];
int init;
};
extern int drand48_r (struct drand48_data *__restrict __buffer,
double *__restrict __result) ;
extern int erand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
double *__restrict __result) ;
extern int lrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result) ;
extern int nrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result) ;
extern int mrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result) ;
extern int jrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result) ;
extern int srand48_r (long int __seedval, struct drand48_data *__buffer) ;
extern int seed48_r (unsigned short int __seed16v[3],
struct drand48_data *__buffer) ;
extern int lcong48_r (unsigned short int __param[7],
struct drand48_data *__buffer) ;
extern void * malloc (size_t __size) ;
extern void * calloc (size_t __nmemb, size_t __size) ;
extern void * realloc (void * __ptr, size_t __size) ;
extern void free (void * __ptr) ;
extern void cfree (void * __ptr) ;
extern void * valloc (size_t __size) ;
extern void abort (void) __attribute__ ((__noreturn__));
extern int atexit (void (*__func) (void)) ;
extern int __on_exit (void (*__func) (int __status, void * __arg),
void * __arg) ;
extern int on_exit (void (*__func) (int __status, void * __arg),
void * __arg) ;
extern void exit (int __status) __attribute__ ((__noreturn__));
extern char *getenv (__const char *__name) ;
extern char *__secure_getenv (__const char *__name) ;
extern int putenv (__const char *__string) ;
extern int setenv (__const char *__name, __const char *__value,
int __replace) ;
extern void unsetenv (__const char *__name) ;
extern int clearenv (void) ;
extern char *mktemp (char *__template) ;
extern int mkstemp (char *__template) ;
extern int system (__const char *__command) ;
extern char *realpath (__const char *__restrict __name,
char *__restrict __resolved) ;
typedef int (*__compar_fn_t) (__const void * , __const void * ) ;
extern void * bsearch (__const void * __key, __const void * __base,
size_t __nmemb, size_t __size,
__compar_fn_t __compar) ;
extern void qsort (void * __base, size_t __nmemb, size_t __size,
__compar_fn_t __compar) ;
extern int abs (int __x) __attribute__ ((__const__));
extern long int labs (long int __x) __attribute__ ((__const__));
extern div_t div (int __numer, int __denom) __attribute__ ((__const__));
extern ldiv_t ldiv (long int __numer, long int __denom)
__attribute__ ((__const__));
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) ;
extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) ;
extern char *gcvt (double __value, int __ndigit, char *__buf) ;
extern char *qecvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign) ;
extern char *qfcvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf) ;
extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) ;
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) ;
extern int qecvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len) ;
extern int qfcvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len) ;
extern int mblen (__const char *__s, size_t __n) ;
extern int mbtowc (wchar_t *__restrict __pwc,
__const char *__restrict __s, size_t __n) ;
extern int wctomb (char *__s, wchar_t __wchar) ;
extern size_t mbstowcs (wchar_t *__restrict __pwcs,
__const char *__restrict __s, size_t __n) ;
extern size_t wcstombs (char *__restrict __s,
__const wchar_t *__restrict __pwcs, size_t __n) ;
extern int rpmatch (__const char *__response) ;
# 732 "/usr/include/stdlib.h" 3
# 756 "/usr/include/stdlib.h" 3
# 766 "/usr/include/stdlib.h" 3
# 34 "/usr/include/regexp.h" 2 3
# 1 "/usr/include/string.h" 1 3
# 1 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 1 3
# 19 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 61 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 131 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 188 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 271 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 283 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 317 "/opt/gcc-2.95/lib/gcc-lib/i486-pc-linux-gnu/gcc-2.95/include/stddef.h" 3
# 33 "/usr/include/string.h" 2 3
extern void * memcpy (void * __restrict __dest,
__const void * __restrict __src, size_t __n) ;
extern void * memmove (void * __dest, __const void * __src,
size_t __n) ;
extern void * memccpy (void * __dest, __const void * __src,
int __c, size_t __n) ;
extern void * memset (void * __s, int __c, size_t __n) ;
extern int memcmp (__const void * __s1, __const void * __s2,
size_t __n) ;
extern void * memchr (__const void * __s, int __c, size_t __n) ;
extern char *strcpy (char *__restrict __dest,
__const char *__restrict __src) ;
extern char *strncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
extern char *strcat (char *__restrict __dest,
__const char *__restrict __src) ;
extern char *strncat (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
extern int strcmp (__const char *__s1, __const char *__s2) ;
extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) ;
extern int strcoll (__const char *__s1, __const char *__s2) ;
extern size_t strxfrm (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
# 107 "/usr/include/string.h" 3
extern char *__strdup (__const char *__s) ;
extern char *strdup (__const char *__s) ;
# 143 "/usr/include/string.h" 3
extern char *strchr (__const char *__s, int __c) ;
extern char *strrchr (__const char *__s, int __c) ;
extern size_t strcspn (__const char *__s, __const char *__reject) ;
extern size_t strspn (__const char *__s, __const char *__accept) ;
extern char *strpbrk (__const char *__s, __const char *__accept) ;
extern char *strstr (__const char *__haystack, __const char *__needle) ;
extern char *strtok (char *__restrict __s,
__const char *__restrict __delim) ;
extern char *__strtok_r (char *__restrict __s,
__const char *__restrict __delim,
char **__restrict __save_ptr) ;
extern char *strtok_r (char *__restrict __s,
__const char *__restrict __delim,
char **__restrict __save_ptr) ;
# 203 "/usr/include/string.h" 3
extern size_t strlen (__const char *__s) ;
extern char *strerror (int __errnum) ;
extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen) ;
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ;
extern void __bzero (void * __s, size_t __n) ;
extern void bcopy (__const void * __src, void * __dest, size_t __n) ;
extern void bzero (void * __s, size_t __n) ;
extern int bcmp (__const void * __s1, __const void * __s2, size_t __n) ;
extern char *index (__const char *__s, int __c) ;
extern char *rindex (__const char *__s, int __c) ;
extern int __ffs (int __i) __attribute__ ((const));
extern int ffs (int __i) __attribute__ ((const));
extern int __strcasecmp (__const char *__s1, __const char *__s2) ;
extern int strcasecmp (__const char *__s1, __const char *__s2) ;
extern int strncasecmp (__const char *__s1, __const char *__s2,
size_t __n) ;
# 277 "/usr/include/string.h" 3
extern char *strsep (char **__restrict __stringp,
__const char *__restrict __delim) ;
# 319 "/usr/include/string.h" 3
# 1 "/usr/include/bits/string.h" 1 3
# 1833 "/usr/include/bits/string.h" 3
# 343 "/usr/include/string.h" 2 3
# 1 "/usr/include/bits/string2.h" 1 3
# 73 "/usr/include/bits/string2.h" 3
# 88 "/usr/include/bits/string2.h" 3
# 163 "/usr/include/bits/string2.h" 3
# 328 "/usr/include/bits/string2.h" 3
extern void * __rawmemchr (const void * __s, int __c);
extern __inline char *__strcpy_small (char *, __uint16_t, __uint16_t,
__uint32_t, __uint32_t, size_t);
extern __inline char *
__strcpy_small (char *__dest,
__uint16_t __src0_2, __uint16_t __src4_2,
__uint32_t __src0_4, __uint32_t __src4_4,
size_t __srclen)
{
switch (__srclen)
{
case 1:
*__dest = '\0';
break;
case 2:
*((__uint16_t *) __dest) = __src0_2;
break;
case 3:
*((__uint16_t *) __dest) = __src0_2;
*(__dest + 2) = '\0';
break;
case 4:
*((__uint32_t *) __dest) = __src0_4;
break;
case 5:
*((__uint32_t *) __dest) = __src0_4;
*(__dest + 4) = '\0';
break;
case 6:
*((__uint32_t *) __dest) = __src0_4;
*((__uint16_t *) (__dest + 4)) = __src4_2;
break;
case 7:
*((__uint32_t *) __dest) = __src0_4;
*((__uint16_t *) (__dest + 4)) = __src4_2;
*(__dest + 6) = '\0';
break;
case 8:
*((__uint32_t *) __dest) = __src0_4;
*((__uint32_t *) (__dest + 4)) = __src4_4;
break;
}
return __dest;
}
# 471 "/usr/include/bits/string2.h" 3
# 618 "/usr/include/bits/string2.h" 3
# 633 "/usr/include/bits/string2.h" 3
# 654 "/usr/include/bits/string2.h" 3
# 687 "/usr/include/bits/string2.h" 3
# 714 "/usr/include/bits/string2.h" 3
# 736 "/usr/include/bits/string2.h" 3
# 761 "/usr/include/bits/string2.h" 3
# 793 "/usr/include/bits/string2.h" 3
extern __inline size_t __strcspn_c1 (__const char *__s, char __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, char __reject)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject)
++__result;
return __result;
}
extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1,
char __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, char __reject1, char __reject2)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2)
++__result;
return __result;
}
extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1,
char __reject2, char __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, char __reject1, char __reject2,
char __reject3)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2 && __s[__result] != __reject3)
++__result;
return __result;
}
# 848 "/usr/include/bits/string2.h" 3
extern __inline size_t __strspn_c1 (__const char *__s, char __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, char __accept)
{
register size_t __result = 0;
while (__s[__result] == __accept)
++__result;
return __result;
}
extern __inline size_t __strspn_c2 (__const char *__s, char __accept1,
char __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, char __accept1, char __accept2)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2)
++__result;
return __result;
}
extern __inline size_t __strspn_c3 (__const char *__s, char __accept1,
char __accept2, char __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2
|| __s[__result] == __accept3)
++__result;
return __result;
}
# 903 "/usr/include/bits/string2.h" 3
extern __inline char *__strpbrk_c2 (__const char *__s, char __accept1,
char __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, char __accept1, char __accept2)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
extern __inline char *__strpbrk_c3 (__const char *__s, char __accept1,
char __accept2, char __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, char __accept1, char __accept2,
char __accept3)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
&& *__s != __accept3)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 941 "/usr/include/bits/string2.h" 3
# 954 "/usr/include/bits/string2.h" 3
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
char *__result;
if (__s == ((void *)0) )
__s = *__nextp;
while (*__s == __sep)
++__s;
if (*__s == '\0')
__result = ((void *)0) ;
else
{
__result = __s;
while (*__s != '\0' && *__s != __sep)
++__s;
if (*__s == '\0')
*__nextp = __s;
else
{
*__s = '\0';
*__nextp = __s + 1;
}
}
return __result;
}
# 1013 "/usr/include/bits/string2.h" 3
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
register char *__retval = *__s;
if (__retval == ((void *)0) )
return *__s = ((void *)0) ;
if (*__retval == __reject)
*(*__s)++ = '\0';
else
if ((*__s = (__extension__ (__builtin_constant_p ( __reject ) && ( __reject ) == '\0' ? (char *) __rawmemchr ( __retval , __reject ) : strchr ( __retval , __reject ))) ) != ((void *)0) )
*(*__s)++ = '\0';
else
*__s = ((void *)0) ;
return __retval;
}
extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
register char *__retval = *__s;
if (__retval == ((void *)0) )
return *__s = ((void *)0) ;
if (*__retval == __reject1 || *__retval == __reject2)
*(*__s)++ = '\0';
else
{
register char *__cp = __retval;
while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2)
++__cp;
if (*__cp != '\0')
{
*__s = __cp;
*(*__s)++ = '\0';
}
else
*__s = ((void *)0) ;
}
return __retval;
}
extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
register char *__retval = *__s;
if (__retval == ((void *)0) )
return *__s = ((void *)0) ;
if (*__retval == __reject1 || *__retval == __reject2
|| *__retval == __reject3)
*(*__s)++ = '\0';
else
{
register char *__cp = __retval;
while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2
&& *__cp != __reject3)
++__cp;
if (*__cp != '\0')
{
*__s = __cp;
*(*__s)++ = '\0';
}
else
*__s = ((void *)0) ;
}
return __retval;
}
extern __inline char *__strsep_g (char **__s, __const char *__reject);
extern __inline char *
__strsep_g (char **__s, __const char *__reject)
{
register char *__retval = *__s;
if (__retval == ((void *)0) || *__retval == '\0')
return ((void *)0) ;
if ((*__s = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p ( __reject ) && ((size_t)(const void *)(( __reject ) + 1) - (size_t)(const void *)( __reject ) == 1) ? ((__a0 = ((__const char *) ( __reject ))[0], __a0 == '\0') ? ((void *)0) : ((__a1 = ((__const char *) ( __reject ))[1], __a1 == '\0') ? (__extension__ (__builtin_constant_p ( __a0 ) && ( __a0 ) == '\0' ? (char *) __rawmemchr ( __retval , __a0 ) : strchr ( __retval , __a0 ))) : ((__a2 = ((__const char *) ( __reject ))[2], __a2 == '\0') ? __strpbrk_c2 ( __retval , __a0, __a1) : (((__const char *) ( __reject ))[3] == '\0' ? __strpbrk_c3 ( __retval , __a0, __a1, __a2) : strpbrk ( __retval , __reject ))))) : strpbrk ( __retval , __reject )); }) ) != ((void *)0) )
*(*__s)++ = '\0';
return __retval;
}
# 1122 "/usr/include/bits/string2.h" 3
# 1148 "/usr/include/bits/string2.h" 3
# 346 "/usr/include/string.h" 2 3
# 35 "/usr/include/regexp.h" 2 3
extern char *loc1;
extern char *loc2;
extern char *locs;
char *
compile (char *__restrict instring, char *__restrict expbuf,
__const char *__restrict endbuf, int eof)
{
char *__input_buffer = ((void *)0) ;
size_t __input_size = 0;
size_t __current_size = 0;
int __ch;
int __error;
regex_t *__expr_ptr;
const size_t __req = __alignof__ (regex_t *);
expbuf += __req;
expbuf -= (expbuf - ((char *) 0)) % __req;
if (endbuf < expbuf + sizeof (regex_t))
{
;
}
__expr_ptr = (regex_t *) expbuf;
__expr_ptr->buffer = expbuf + sizeof (regex_t);
__expr_ptr->allocated = endbuf - (char *) __expr_ptr->buffer;
while ((__ch = (0 )) != eof)
{
if (__ch == '\0' || __ch == '\n')
{
;
break;
}
if (__current_size + 1 >= __input_size)
{
size_t __new_size = __input_size ? 2 * __input_size : 128;
char *__new_room = (char *) __builtin_alloca ( __new_size ) ;
if (__new_room + __new_size == __input_buffer)
{
__input_size += __new_size;
__input_buffer = (char *) memcpy (__new_room, __input_buffer,
__current_size);
}
else if (__input_buffer + __input_size == __new_room)
__input_size += __new_size;
else
{
__input_size = __new_size;
__input_buffer = (char *) memcpy (__new_room, __input_buffer,
__current_size);
}
}
__input_buffer[__current_size++] = __ch;
}
__input_buffer[__current_size++] = '\0';
__error = regcomp (__expr_ptr, __input_buffer, ((1 << 1) << 1) );
if (__error != 0)
switch (__error)
{
case REG_BADPAT:
case REG_ECOLLATE:
case REG_ECTYPE:
case REG_EESCAPE:
case REG_BADRPT:
case REG_EEND:
case REG_ERPAREN:
default:
0 ;
case REG_ESUBREG:
0 ;
case REG_EBRACK:
0 ;
case REG_EPAREN:
0 ;
case REG_EBRACE:
0 ;
case REG_BADBR:
0 ;
case REG_ERANGE:
0 ;
case REG_ESPACE:
case REG_ESIZE:
;
}
0 ;
}
extern int step (__const char *__restrict __string,
__const char *__restrict __expbuf) ;
extern int advance (__const char *__restrict __string,
__const char *__restrict __expbuf) ;
# 7 "regexp-test.c" 2
int main (void) {return 0;}
--
Andreas Jaeger aj@arthur.rhein-neckar.de jaeger@informatik.uni-kl.de
for pgp-key finger ajaeger@aixd1.rhrk.uni-kl.de
More information about the Gcc-bugs
mailing list