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