This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: array bounds violation in caller-save.c : duplicate hard regs check added


dj@greed pts/0 ~/m32c/gcc/rl78-elf/gcc
$ ./cc1 -quiet -O3 qsort.i 
DJERR: DUPLICATE HARD REG 12
../../../../../src/newlib/libc/search/qsort.c: In function 'qsort':
../../../../../src/newlib/libc/search/qsort.c:222:1: internal compiler error: in setup_save_areas, at caller-save.c:574
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.


# 1 "../../../../../src/newlib/libc/search/qsort.c"
# 1 "/greed/dj/m32c/newlib/rl78-elf/rl78-elf/newlib/libc/search//"
# 1 "<command-line>"
# 1 "../../../../../src/newlib/libc/search/qsort.c"
# 77 "../../../../../src/newlib/libc/search/qsort.c"
# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/_ansi.h" 1 3 4
# 15 "/greed/dj/m32c/newlib/src/newlib/libc/include/_ansi.h" 3 4
# 1 "/greed/dj/m32c/newlib/rl78-elf/rl78-elf/newlib/targ-include/newlib.h" 1 3 4
# 16 "/greed/dj/m32c/newlib/src/newlib/libc/include/_ansi.h" 2 3 4
# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/config.h" 1 3 4



# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/machine/ieeefp.h" 1 3 4
# 5 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/config.h" 2 3 4
# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/features.h" 1 3 4
# 6 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/config.h" 2 3 4
# 17 "/greed/dj/m32c/newlib/src/newlib/libc/include/_ansi.h" 2 3 4
# 78 "../../../../../src/newlib/libc/search/qsort.c" 2
# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/stdlib.h" 1 3 4
# 10 "/greed/dj/m32c/newlib/src/newlib/libc/include/stdlib.h" 3 4
# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/machine/ieeefp.h" 1 3 4
# 11 "/greed/dj/m32c/newlib/src/newlib/libc/include/stdlib.h" 2 3 4
# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/_ansi.h" 1 3 4
# 12 "/greed/dj/m32c/newlib/src/newlib/libc/include/stdlib.h" 2 3 4



# 1 "/greed/dj/m32c/install/lib/gcc/rl78-elf/4.8.0/include/stddef.h" 1 3 4
# 213 "/greed/dj/m32c/install/lib/gcc/rl78-elf/4.8.0/include/stddef.h" 3 4
typedef unsigned int size_t;
# 325 "/greed/dj/m32c/install/lib/gcc/rl78-elf/4.8.0/include/stddef.h" 3 4
typedef long int wchar_t;
# 16 "/greed/dj/m32c/newlib/src/newlib/libc/include/stdlib.h" 2 3 4

# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/reent.h" 1 3 4
# 14 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/reent.h" 3 4
# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/_types.h" 1 3 4
# 12 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/_types.h" 3 4
# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/machine/_types.h" 1 3 4






# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/machine/_default_types.h" 1 3 4
# 26 "/greed/dj/m32c/newlib/src/newlib/libc/include/machine/_default_types.h" 3 4
typedef signed char __int8_t ;
typedef unsigned char __uint8_t ;




typedef signed int __int16_t;
typedef unsigned int __uint16_t;
# 46 "/greed/dj/m32c/newlib/src/newlib/libc/include/machine/_default_types.h" 3 4
typedef __int16_t __int_least16_t;
typedef __uint16_t __uint_least16_t;
# 62 "/greed/dj/m32c/newlib/src/newlib/libc/include/machine/_default_types.h" 3 4
typedef signed long __int32_t;
typedef unsigned long __uint32_t;
# 76 "/greed/dj/m32c/newlib/src/newlib/libc/include/machine/_default_types.h" 3 4
typedef __int32_t __int_least32_t;
typedef __uint32_t __uint_least32_t;
# 99 "/greed/dj/m32c/newlib/src/newlib/libc/include/machine/_default_types.h" 3 4
typedef signed long long __int64_t;
typedef unsigned long long __uint64_t;
# 8 "/greed/dj/m32c/newlib/src/newlib/libc/include/machine/_types.h" 2 3 4
# 13 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/_types.h" 2 3 4
# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/lock.h" 1 3 4





typedef int _LOCK_T;
typedef int _LOCK_RECURSIVE_T;
# 14 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/_types.h" 2 3 4


typedef long _off_t;







typedef short __dev_t;




typedef unsigned short __uid_t;


typedef unsigned short __gid_t;



__extension__ typedef long long _off64_t;







typedef long _fpos_t;
# 58 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/_types.h" 3 4
typedef long _ssize_t;




# 1 "/greed/dj/m32c/install/lib/gcc/rl78-elf/4.8.0/include/stddef.h" 1 3 4
# 354 "/greed/dj/m32c/install/lib/gcc/rl78-elf/4.8.0/include/stddef.h" 3 4
typedef unsigned int wint_t;
# 64 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/_types.h" 2 3 4



typedef struct
{
  int __count;
  union
  {
    wint_t __wch;
    unsigned char __wchb[4];
  } __value;
} _mbstate_t;



typedef _LOCK_RECURSIVE_T _flock_t;




typedef void *_iconv_t;
# 15 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/reent.h" 2 3 4






typedef unsigned long __ULong;
# 37 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/reent.h" 3 4
struct _reent;






struct _Bigint
{
  struct _Bigint *_next;
  int _k, _maxwds, _sign, _wds;
  __ULong _x[1];
};


struct __tm
{
  int __tm_sec;
  int __tm_min;
  int __tm_hour;
  int __tm_mday;
  int __tm_mon;
  int __tm_year;
  int __tm_wday;
  int __tm_yday;
  int __tm_isdst;
};







struct _on_exit_args {
 void * _fnargs[32];
 void * _dso_handle[32];

 __ULong _fntypes;


 __ULong _is_cxa;
};
# 89 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/reent.h" 3 4
struct _atexit {
 struct _atexit *_next;
 int _ind;

 void (*_fns[32])(void);
        struct _on_exit_args _on_exit_args;
};
# 105 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/reent.h" 3 4
struct __sbuf {
 unsigned char *_base;
 int _size;
};
# 169 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/reent.h" 3 4
struct __sFILE {
  unsigned char *_p;
  int _r;
  int _w;
  short _flags;
  short _file;
  struct __sbuf _bf;
  int _lbfsize;






  void * _cookie;

  int (* _read) (struct _reent *, void *, char *, int)
                     ;
  int (* _write) (struct _reent *, void *, const char *, int)
                            ;
  _fpos_t (* _seek) (struct _reent *, void *, _fpos_t, int);
  int (* _close) (struct _reent *, void *);


  struct __sbuf _ub;
  unsigned char *_up;
  int _ur;


  unsigned char _ubuf[3];
  unsigned char _nbuf[1];


  struct __sbuf _lb;


  int _blksize;
  int _offset;


  struct _reent *_data;



  _flock_t _lock;

  _mbstate_t _mbstate;
  int _flags2;
};
# 273 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/reent.h" 3 4
typedef struct __sFILE __FILE;



struct _glue
{
  struct _glue *_next;
  int _niobs;
  __FILE *_iobs;
};
# 305 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/reent.h" 3 4
struct _rand48 {
  unsigned short _seed[3];
  unsigned short _mult[3];
  unsigned short _add;




};
# 580 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/reent.h" 3 4
struct _reent
{
  int _errno;




  __FILE *_stdin, *_stdout, *_stderr;

  int _inc;
  char _emergency[25];

  int _current_category;
  const char *_current_locale;

  int __sdidinit;

  void (* __cleanup) (struct _reent *);


  struct _Bigint *_result;
  int _result_k;
  struct _Bigint *_p5s;
  struct _Bigint **_freelist;


  int _cvtlen;
  char *_cvtbuf;

  union
    {
      struct
        {
          unsigned int _unused_rand;
          char * _strtok_last;
          char _asctime_buf[26];
          struct __tm _localtime_buf;
          int _gamma_signgam;
          __extension__ unsigned long long _rand_next;
          struct _rand48 _r48;
          _mbstate_t _mblen_state;
          _mbstate_t _mbtowc_state;
          _mbstate_t _wctomb_state;
          char _l64a_buf[8];
          char _signal_buf[24];
          int _getdate_err;
          _mbstate_t _mbrlen_state;
          _mbstate_t _mbrtowc_state;
          _mbstate_t _mbsrtowcs_state;
          _mbstate_t _wcrtomb_state;
          _mbstate_t _wcsrtombs_state;
   int _h_errno;
        } _reent;



      struct
        {

          unsigned char * _nextf[30];
          unsigned int _nmalloc[30];
        } _unused;
    } _new;


  struct _atexit *_atexit;
  struct _atexit _atexit0;


  void (**(_sig_func))(int);




  struct _glue __sglue;
  __FILE __sf[3];
};
# 818 "/greed/dj/m32c/newlib/src/newlib/libc/include/sys/reent.h" 3 4
extern struct _reent *_impure_ptr ;
extern struct _reent *const _global_impure_ptr ;

void _reclaim_reent (struct _reent *);
# 18 "/greed/dj/m32c/newlib/src/newlib/libc/include/stdlib.h" 2 3 4
# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/machine/stdlib.h" 1 3 4
# 19 "/greed/dj/m32c/newlib/src/newlib/libc/include/stdlib.h" 2 3 4

# 1 "/greed/dj/m32c/newlib/src/newlib/libc/include/alloca.h" 1 3 4
# 21 "/greed/dj/m32c/newlib/src/newlib/libc/include/stdlib.h" 2 3 4








typedef struct
{
  int quot;
  int rem;
} div_t;

typedef struct
{
  long quot;
  long rem;
} ldiv_t;


typedef struct
{
  long long int quot;
  long long int rem;
} lldiv_t;
# 58 "/greed/dj/m32c/newlib/src/newlib/libc/include/stdlib.h" 3 4
int __locale_mb_cur_max (void);



void abort (void) __attribute__ ((noreturn));
int abs (int);
int atexit (void (*__func)(void));
double atof (const char *__nptr);

float atoff (const char *__nptr);

int atoi (const char *__nptr);
int _atoi_r (struct _reent *, const char *__nptr);
long atol (const char *__nptr);
long _atol_r (struct _reent *, const char *__nptr);
void * bsearch (const void * __key, const void * __base, size_t __nmemb, size_t __size, int (* _compar) (const void *, const void *))



                                                         ;
void * calloc (size_t __nmemb, size_t __size) ;
div_t div (int __numer, int __denom);
void exit (int __status) __attribute__ ((noreturn));
void free (void *) ;
char * getenv (const char *__string);
char * _getenv_r (struct _reent *, const char *__string);
char * _findenv (const char *, int *);
char * _findenv_r (struct _reent *, const char *, int *);

extern char *suboptarg;
int getsubopt (char **, char * const *, char **);

long labs (long);
ldiv_t ldiv (long __numer, long __denom);
void * malloc (size_t __size) ;
int mblen (const char *, size_t);
int _mblen_r (struct _reent *, const char *, size_t, _mbstate_t *);
int mbtowc (wchar_t *, const char *, size_t);
int _mbtowc_r (struct _reent *, wchar_t *, const char *, size_t, _mbstate_t *);
int wctomb (char *, wchar_t);
int _wctomb_r (struct _reent *, char *, wchar_t, _mbstate_t *);
size_t mbstowcs (wchar_t *, const char *, size_t);
size_t _mbstowcs_r (struct _reent *, wchar_t *, const char *, size_t, _mbstate_t *);
size_t wcstombs (char *, const wchar_t *, size_t);
size_t _wcstombs_r (struct _reent *, char *, const wchar_t *, size_t, _mbstate_t *);


char * mkdtemp (char *);
int mkostemp (char *, int);
int mkostemps (char *, int, int);
int mkstemp (char *);
int mkstemps (char *, int);
char * mktemp (char *) __attribute__ ((__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead")));

char * _mkdtemp_r (struct _reent *, char *);
int _mkostemp_r (struct _reent *, char *, int);
int _mkostemps_r (struct _reent *, char *, int, int);
int _mkstemp_r (struct _reent *, char *);
int _mkstemps_r (struct _reent *, char *, int);
char * _mktemp_r (struct _reent *, char *) __attribute__ ((__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead")));

void qsort (void * __base, size_t __nmemb, size_t __size, int(*_compar)(const void *, const void *));
int rand (void);
void * realloc (void * __r, size_t __size) ;

void * reallocf (void * __r, size_t __size);

void srand (unsigned __seed);
double strtod (const char *__n, char **__end_PTR);
double _strtod_r (struct _reent *,const char *__n, char **__end_PTR);
float strtof (const char *__n, char **__end_PTR);






long strtol (const char *__n, char **__end_PTR, int __base);
long _strtol_r (struct _reent *,const char *__n, char **__end_PTR, int __base);
unsigned long strtoul (const char *__n, char **__end_PTR, int __base);
unsigned long _strtoul_r (struct _reent *,const char *__n, char **__end_PTR, int __base);

int system (const char *__string);


long a64l (const char *__input);
char * l64a (long __input);
char * _l64a_r (struct _reent *,long __input);
int on_exit (void (*__func)(int, void *),void * __arg);
void _Exit (int __status) __attribute__ ((noreturn));
int putenv (char *__string);
int _putenv_r (struct _reent *, char *__string);
void * _reallocf_r (struct _reent *, void *, size_t);
int setenv (const char *__string, const char *__value, int __overwrite);
int _setenv_r (struct _reent *, const char *__string, const char *__value, int __overwrite);

char * gcvt (double,int,char *);
char * gcvtf (float,int,char *);
char * fcvt (double,int,int *,int *);
char * fcvtf (float,int,int *,int *);
char * ecvt (double,int,int *,int *);
char * ecvtbuf (double, int, int*, int*, char *);
char * fcvtbuf (double, int, int*, int*, char *);
char * ecvtf (float,int,int *,int *);
char * dtoa (double, int, int, int *, int*, char**);
int rand_r (unsigned *__seed);

double drand48 (void);
double _drand48_r (struct _reent *);
double erand48 (unsigned short [3]);
double _erand48_r (struct _reent *, unsigned short [3]);
long jrand48 (unsigned short [3]);
long _jrand48_r (struct _reent *, unsigned short [3]);
void lcong48 (unsigned short [7]);
void _lcong48_r (struct _reent *, unsigned short [7]);
long lrand48 (void);
long _lrand48_r (struct _reent *);
long mrand48 (void);
long _mrand48_r (struct _reent *);
long nrand48 (unsigned short [3]);
long _nrand48_r (struct _reent *, unsigned short [3]);
unsigned short *
       seed48 (unsigned short [3]);
unsigned short *
       _seed48_r (struct _reent *, unsigned short [3]);
void srand48 (long);
void _srand48_r (struct _reent *, long);
long long atoll (const char *__nptr);
long long _atoll_r (struct _reent *, const char *__nptr);
long long llabs (long long);
lldiv_t lldiv (long long __numer, long long __denom);
long long strtoll (const char *__n, char **__end_PTR, int __base);
long long _strtoll_r (struct _reent *, const char *__n, char **__end_PTR, int __base);
unsigned long long strtoull (const char *__n, char **__end_PTR, int __base);
unsigned long long _strtoull_r (struct _reent *, const char *__n, char **__end_PTR, int __base);


void cfree (void *);
int unsetenv (const char *__string);
int _unsetenv_r (struct _reent *, const char *__string);
# 206 "/greed/dj/m32c/newlib/src/newlib/libc/include/stdlib.h" 3 4
char * _dtoa_r (struct _reent *, double, int, int, int *, int*, char**);

void * _malloc_r (struct _reent *, size_t) ;
void * _calloc_r (struct _reent *, size_t, size_t) ;
void _free_r (struct _reent *, void *) ;
void * _realloc_r (struct _reent *, void *, size_t) ;
void _mstats_r (struct _reent *, char *);

int _system_r (struct _reent *, const char *);

void __eprintf (const char *, const char *, unsigned int, const char *);








# 79 "../../../../../src/newlib/libc/search/qsort.c" 2





static inline char *med3 (char *, char *, char *, int (*)());
static inline void swapfunc (char *, char *, int, int);
# 106 "../../../../../src/newlib/libc/search/qsort.c"
static inline void
swapfunc(char *a , char *b , int n , int swaptype)




{
 if(swaptype <= 1)
  { long i = (n) / sizeof (long); register long *pi = (long *) (a); register long *pj = (long *) (b); do { register long t = *pi; *pi++ = *pj; *pj++ = t; } while (--i > 0); }
 else
  { long i = (n) / sizeof (char); register char *pi = (char *) (a); register char *pj = (char *) (b); do { register char t = *pi; *pi++ = *pj; *pj++ = t; } while (--i > 0); }
}
# 129 "../../../../../src/newlib/libc/search/qsort.c"
static inline char *
med3(char *a , char *b , char *c , int (*cmp)())




{
 return cmp(a, b) < 0 ?
        (cmp(b, c) < 0 ? b : (cmp(a, c) < 0 ? c : a ))
              :(cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c ));
}

void
qsort(void *a , size_t n , size_t es , int (*cmp)())




{
 char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
 int d, r, swaptype, swap_cnt;

loop: swaptype = ((char *)a - (char *)0) % sizeof(long) || es % sizeof(long) ? 2 : es == sizeof(long)? 0 : 1;;
 swap_cnt = 0;
 if (n < 7) {
  for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es)
   for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0;
        pl -= es)
    if (swaptype == 0) { long t = *(long *)(pl); *(long *)(pl) = *(long *)(pl - es); *(long *)(pl - es) = t; } else swapfunc(pl, pl - es, es, swaptype);
  return;
 }
 pm = (char *) a + (n / 2) * es;
 if (n > 7) {
  pl = a;
  pn = (char *) a + (n - 1) * es;
  if (n > 40) {
   d = (n / 8) * es;
   pl = med3(pl, pl + d, pl + 2 * d, cmp);
   pm = med3(pm - d, pm, pm + d, cmp);
   pn = med3(pn - 2 * d, pn - d, pn, cmp);
  }
  pm = med3(pl, pm, pn, cmp);
 }
 if (swaptype == 0) { long t = *(long *)(a); *(long *)(a) = *(long *)(pm); *(long *)(pm) = t; } else swapfunc(a, pm, es, swaptype);
 pa = pb = (char *) a + es;

 pc = pd = (char *) a + (n - 1) * es;
 for (;;) {
  while (pb <= pc && (r = cmp(pb, a)) <= 0) {
   if (r == 0) {
    swap_cnt = 1;
    if (swaptype == 0) { long t = *(long *)(pa); *(long *)(pa) = *(long *)(pb); *(long *)(pb) = t; } else swapfunc(pa, pb, es, swaptype);
    pa += es;
   }
   pb += es;
  }
  while (pb <= pc && (r = cmp(pc, a)) >= 0) {
   if (r == 0) {
    swap_cnt = 1;
    if (swaptype == 0) { long t = *(long *)(pc); *(long *)(pc) = *(long *)(pd); *(long *)(pd) = t; } else swapfunc(pc, pd, es, swaptype);
    pd -= es;
   }
   pc -= es;
  }
  if (pb > pc)
   break;
  if (swaptype == 0) { long t = *(long *)(pb); *(long *)(pb) = *(long *)(pc); *(long *)(pc) = t; } else swapfunc(pb, pc, es, swaptype);
  swap_cnt = 1;
  pb += es;
  pc -= es;
 }
 if (swap_cnt == 0) {
  for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es)
   for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0;
        pl -= es)
    if (swaptype == 0) { long t = *(long *)(pl); *(long *)(pl) = *(long *)(pl - es); *(long *)(pl - es) = t; } else swapfunc(pl, pl - es, es, swaptype);
  return;
 }

 pn = (char *) a + n * es;
 r = (pa - (char *)a) < (pb - pa) ? pa - (char *)a : pb - pa;
 if ((r) > 0) swapfunc(a, pb - r, r, swaptype);
 r = (pd - pc) < (pn - pd - es) ? pd - pc : pn - pd - es;
 if ((r) > 0) swapfunc(pb, pn - r, r, swaptype);
 if ((r = pb - pa) > es)
  qsort(a, r / es, es, cmp);
 if ((r = pd - pc) > es) {

  a = pn - r;
  n = r / es;
  goto loop;
 }

}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]