This is the mail archive of the gcc-bugs@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]

bug in gcc-3.3 [long double comparison is broken]


* the exact version of GCC, system type, options given when GCC was configured/built:
% gcc -v 
Reading specs from /opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/specs
Configured with: /opt/build/gcc-3.3/configure --enable-nls --with-included-gettext --enable-shared --enable-threads --with-local-prefix=/opt/TWWfsw/gcc33 --prefix=/opt/TWWfsw/gcc33 
Thread model: single 
gcc version 3.3 (TWW) 

* the complete command line that triggers the bug; 

gcc -O1 bug.c (or higher optimization level)

* the compiler output (error messages, warnings, etc.);

No output. 

* the preprocessed file (*.i*) that triggers the bug:

# 1 "bug.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "bug.c"
# 1 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 1 3 4
# 14 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
# 1 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdarg.h" 1 3 4
# 43 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 15 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 2 3 4
# 62 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
# 1 "/usr/include/standards.h" 1 3 4
# 63 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 2 3 4
# 90 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
typedef unsigned long size_t;
# 106 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
typedef long fpos_t;
# 146 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
# 1 "/usr/include/sys/seek.h" 1 3 4
# 147 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 2 3 4

typedef struct {
        int _cnt;
        unsigned int _flag2;
 unsigned char *_ptr;
        unsigned char *_base;
        int _bufsiz;
        short _flag;
        short _file;




        char *__newbase;
        void *_lock;
        unsigned char *_bufendp;
} FILE;

extern FILE _iob[];
# 178 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
extern size_t fread (void *, size_t, size_t, FILE *);
extern size_t fwrite (const void *, size_t, size_t, FILE *);


extern int _flsbuf (int, FILE *);
extern int _filbuf (FILE *);
extern int ferror (FILE *);
extern int feof (FILE *);
extern void clearerr (FILE *);
extern int putchar (int);
extern int getchar (void);
extern int putc (int, FILE *);
extern int getc (FILE *);
extern int remove (const char *);
extern int rename (const char *, const char *);
extern FILE *tmpfile (void);
extern char *tmpnam (char *);
extern int fclose (FILE *);
extern int fflush (FILE *);
extern FILE *fopen (const char *, const char *);
extern FILE *freopen (const char *, const char *, FILE *);
extern void setbuf (FILE *, char *);
extern int setvbuf (FILE *, char *, int, size_t);
extern int fprintf (FILE *, const char *, ...);
extern int fscanf (FILE *, const char *, ...);
extern int printf (const char *, ...);
extern int scanf (const char *, ...);
extern int sprintf (char *, const char *, ...);
extern int sscanf (const char *, const char *, ...);

extern int snprintf (char *, size_t, const char *, ...);
# 221 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
# 1 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/va_list.h" 1 3 4
# 10 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/va_list.h" 3 4
typedef __gnuc_va_list va_list;
# 222 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 2 3 4
extern int vfprintf (FILE *, const char *, __gnuc_va_list);
extern int vprintf (const char *, __gnuc_va_list);
extern int vsprintf (char *, const char *, __gnuc_va_list);

extern int vsnprintf (char *, size_t, const char*, __gnuc_va_list);
# 242 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
extern int fgetc (FILE *);
extern char *fgets (char *, int, FILE *);
extern int fputc (int, FILE *);
extern int fputs (const char *, FILE *);
extern char *gets (char *);
extern int puts (const char *);
extern int ungetc (int, FILE *);
extern int fseek (FILE *, long, int);
# 273 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
extern int fsetpos (FILE *, const fpos_t *);
extern int fgetpos (FILE *, fpos_t *);





extern long ftell (FILE *);
extern void rewind (FILE *);
extern void perror (const char *);
# 435 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
# 1 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 1 3 4
# 84 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef long int ptrdiff_t;
# 116 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef unsigned int wchar_t;
# 126 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef unsigned int wctype_t;
# 135 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
# 1 "/usr/include/time_t.h" 1 3 4
# 34 "/usr/include/time_t.h" 3 4
typedef int time_t;
# 136 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 2 3 4



typedef int clock_t;
# 157 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef long ssize_t;





typedef unsigned char uchar_t;
typedef unsigned short ushort_t;
typedef unsigned int uint_t;
typedef unsigned long ulong_t;
typedef volatile unsigned char vuchar_t;
typedef volatile unsigned short vushort_t;
typedef volatile unsigned int vuint_t;
typedef volatile unsigned long vulong_t;




typedef struct { long r[1]; } *physadr_t;




typedef struct label_t {
        long val[10];
} label_t;
# 251 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef int level_t;
typedef int daddr_t;
typedef long daddr64_t;
typedef char * caddr_t;
typedef long * qaddr_t;
typedef char * addr_t;
typedef uint_t ino_t;
typedef short cnt_t;
typedef int dev_t;
typedef int chan_t;






typedef long off_t;


typedef long t_scalar_t;
typedef unsigned long t_uscalar_t;
# 285 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef unsigned long rlim_t;
typedef int paddr_t;
typedef ushort_t nlink_t;



typedef int key_t;




typedef uint_t mode_t;







typedef uint_t uid_t;





typedef uint_t gid_t;




typedef void * mid_t;




typedef int pid_t;

typedef union cpid {
        struct {
                unsigned int pid:19;
                unsigned int nodeid:8;
                unsigned int seqnum:4;
                unsigned int signbit:1;
        } cluster_fields;
        pid_t ipid;
} cpid_t;






typedef char slab_t[12];

typedef ulong_t shmatt_t;
typedef ulong_t msgqnum_t;
typedef ulong_t msglen_t;



        typedef unsigned int wint_t;
# 354 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef unsigned long sigset_t;
# 371 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef struct __pthread_attr_t {
    long __valid;
    char* __name;
    unsigned long __arg;
    unsigned long __reserved[19];
} pthread_attr_t;

typedef struct __pthread_mutexattr_t {
    long __valid;
    unsigned long __reserved[15];
} pthread_mutexattr_t;

typedef struct __pthread_condattr_t {
    long __valid;
    unsigned long __reserved[13];
} pthread_condattr_t;

typedef struct __pthread_rwlockattr_t {
    long __valid;
    unsigned long __reserved[15];
} pthread_rwlockattr_t;
# 421 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef struct __pthread_t {
    void* __reserved1;
    void* __reserved2;
    unsigned short __size;
    unsigned char __version;
    unsigned char __reserved3;
    unsigned char __external;
    unsigned char __reserved4[2];
    unsigned char __creator;
    unsigned long __sequence;
    unsigned long __reserved5[2];
    void* __per_kt_area;
    void* __stack_base;
    void* __stack_reserve;
    void* __stack_yellow;
    void* __stack_guard;
    unsigned long __stack_size;
    void** __tsd_values;
    unsigned long __tsd_count;
    unsigned int __reserved6;
    unsigned int __reserved7;
    unsigned int __thread_flags;
    int __thd_errno;
    void* __stack_hiwater;
} *pthread_t, pthreadTeb_t;

typedef struct __pthread_mutex_t {
    unsigned int __lock;
    unsigned int __valid;
    char* __name;
    unsigned int __arg;
    unsigned int __depth;
    unsigned long __sequence;
    unsigned long __owner;
    void* __block;
} pthread_mutex_t;

typedef struct __pthread_cond_t {
    unsigned int __state;
    unsigned int __valid;
    char* __name;
    unsigned int __arg;
    unsigned int __reserved1;
    unsigned long __sequence;
    void* __block;
} pthread_cond_t;

typedef struct __pthread_rwlock_t {
    unsigned int __valid;
    unsigned int __flags;
    char* __name;
    unsigned int __arg;
    unsigned int __readers;
    unsigned int __rwaits;
    unsigned int __wwaits;
    unsigned long __sequence;
    unsigned long __wrid;
    void* __block;
    unsigned long __reserved1;
} pthread_rwlock_t;

typedef unsigned int pthread_key_t;

typedef struct __pthread_once_t {
    long __state;
    long __reserved[10];
} pthread_once_t;
# 497 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef long timer_t;
# 523 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef void (*sig_t) (int,void (*)(int));






typedef unsigned int cpuid_t;
enum { CPU_NONE=(-1) };
# 543 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef pid_t id_t;




typedef unsigned int useconds_t;
# 557 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
typedef uint_t major_t;
typedef uint_t minor_t;
typedef uint_t devs_t;
typedef uint_t unit_t;
# 580 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 3 4
# 1 "/usr/include/mach/machine/vm_types.h" 1 3 4
# 67 "/usr/include/mach/machine/vm_types.h" 3 4
typedef unsigned long vm_offset_t;
typedef unsigned long vm_size_t;
# 581 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 2 3 4




typedef uchar_t uchar;
typedef ushort_t ushort;
typedef uint_t uint;
typedef ulong_t ulong;

typedef physadr_t physadr;


typedef uchar_t u_char;
typedef ushort_t u_short;
typedef uint_t u_int;
typedef ulong_t u_long;
typedef vuchar_t vu_char;
typedef vushort_t vu_short;
typedef vuint_t vu_int;
typedef vulong_t vu_long;




typedef struct _quad { int val[2]; } quad;


typedef long swblk_t;
typedef u_long fixpt_t;

# 1 "/usr/include/sys/select.h" 1 3 4
# 50 "/usr/include/sys/select.h" 3 4
# 1 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 1 3 4
# 51 "/usr/include/sys/select.h" 2 3 4
# 164 "/usr/include/sys/select.h" 3 4
typedef int fd_mask;
# 187 "/usr/include/sys/select.h" 3 4
typedef struct fd_set {
        fd_mask fds_bits[((((unsigned)4096)+(((sizeof(fd_mask) * 8))-1))/((sizeof(fd_mask) * 8)))];
} fd_set;
# 240 "/usr/include/sys/select.h" 3 4
extern void bzero (void *, size_t);






struct timeval;
int select (int, fd_set *, fd_set *, fd_set *, struct timeval *);
# 612 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/types.h" 2 3 4





typedef unsigned char sa_family_t;


typedef unsigned int in_addr_t;

typedef unsigned short in_port_t;
# 436 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 2 3 4
# 453 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
extern int fileno (FILE *);
extern FILE *fdopen (int, const char *);
# 474 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
extern char *_Ecuserid (char *);
# 493 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
# 1 "/usr/include/getopt.h" 1 3 4
# 43 "/usr/include/getopt.h" 3 4
extern int getopt (int, char * const [], const char *);




extern char *optarg;
extern int optind;
extern int optopt;
extern int opterr;
# 494 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 2 3 4




extern char *ctermid (char *);
extern int getw (FILE *);
extern int pclose (FILE *);
extern int putw (int, FILE*);
extern FILE *popen (const char *, const char *);
extern char *tempnam (const char*, const char*);






# 1 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/limits.h" 1 3 4
# 86 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/limits.h" 3 4
# 1 "/usr/include/machine/machlimits.h" 1 3 4
# 87 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/limits.h" 2 3 4
# 152 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/limits.h" 3 4
# 1 "/usr/include/sys/syslimits.h" 1 3 4
# 153 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/limits.h" 2 3 4
# 249 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/limits.h" 3 4
# 1 "/usr/include/machine/machtime.h" 1 3 4
# 250 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/limits.h" 2 3 4
# 267 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/limits.h" 3 4
# 1 "/usr/include/sys/rt_limits.h" 1 3 4
# 268 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/sys/limits.h" 2 3 4
# 511 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 2 3 4
# 541 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdio.h" 3 4
extern void setbuffer (FILE *, char*, int);
extern void setlinebuf (FILE *);
# 2 "bug.c" 2
# 1 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdlib.h" 1 3 4
# 129 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdlib.h" 3 4
typedef struct

         div_t

                {
        int quot;
        int rem; } div_t;

typedef struct

        ldiv_t

                        {
        long int quot;
        long int rem; } ldiv_t;
# 160 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdlib.h" 3 4
extern int __getmbcurmax (void);




extern int mblen (const char *, size_t);
extern size_t mbstowcs (wchar_t *, const char *, size_t);
extern int mbtowc (wchar_t *, const char *, size_t);
extern size_t wcstombs (char *, const wchar_t *, size_t);
extern int wctomb (char *, wchar_t);


extern int rpmatch (const char *);

extern void *valloc (size_t );


extern double atof (const char *);
extern int atoi (const char *);
extern long int atol (const char *);
extern double strtod (const char *, char **);
extern float strtof (const char *, char **);
extern long int strtol (const char *, char **, int );
extern long double strtold (const char *, char **);
extern unsigned long int strtoul (const char *, char **, int );
extern int rand (void);
extern void srand (unsigned int );
extern void *calloc (size_t , size_t );
extern void free (void *);
extern void *malloc (size_t );
extern void *realloc (void *, size_t );
# 207 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdlib.h" 3 4
extern long a64l (const char *);
extern char * l64a (long);
extern int ttyslot (void);






extern char *ptsname (int);
# 234 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdlib.h" 3 4
extern void abort (void);
extern int atexit (void (*)(void));
extern void exit (int );
extern char *getenv (const char *);
extern int system (const char *);
extern void *bsearch (const void *, const void *, size_t , size_t , int(*)(const void *, const void *));
extern void qsort (void *, size_t , size_t ,int(*)(const void *, const void *));
extern int abs (int );
extern div_t div (int , int );
extern long int labs (long int );
extern ldiv_t ldiv (long int , long int );
# 266 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdlib.h" 3 4
extern int _Prand_r (unsigned int *);
# 300 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdlib.h" 3 4
extern double drand48 (void);
extern double erand48 (unsigned short []);
extern long jrand48 (unsigned short []);
extern void lcong48 (unsigned short []);
extern long lrand48 (void);
extern long mrand48 (void);
extern long nrand48 (unsigned short []);
extern unsigned short *seed48 (unsigned short []);
extern void srand48 (long);



extern int putenv (const char *);

extern void setkey (const char *);
# 341 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdlib.h" 3 4
extern char *initstate (unsigned int, char *, size_t);
extern char *setstate (const char *);
extern int grantpt (int);
extern int getsubopt (char **, char *const *, char **);




extern int random (void);
extern int srandom (unsigned int);

extern char *realpath (const char *, char *);
extern int unlockpt (int);
# 367 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdlib.h" 3 4
extern int clearenv (void);
extern char *getpass (const char *);




extern char *mktemp (char *);
extern int mkstemp (char *);
# 387 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/stdlib.h" 3 4
char *ecvt (double, int, int *, int *);
char *fcvt (double, int, int *, int *);
char *gcvt (double, int, char *);
# 3 "bug.c" 2
# 1 "/opt/TWWfsw/gcc33/lib/gcc-lib/alphaev56-dec-osf5.1/3.3/include/float.h" 1 3 4
# 4 "bug.c" 2

int
main ()
{
  long double d;
  d = 1.0; while (d < 1.18973149535723176508575932662800702e+4932L / 2.0) d += d;
  printf ("d=%1.30Le\n", d);
  if (d == (long double) 0.0)
    printf ("d equals 0.0\n");
}

Paul Zimmermann


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