[LLVMbugs] incorrect conversion of cast-ulong-to-uint to 0

Vikram Adve vadve at cs.uiuc.edu
Mon May 26 15:33:10 PDT 2003


In the third argument to printf below (UL/ui), the denominator
is a cast of ulong to uint.  It is incorrectly converted to 0
producing a divide-by-zero in the bc file.

--Vikram


/*-------------------------------------------------------------------*
 * baddiv.c
 *-------------------------------------------------------------------*/

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>

/* Move the value here to prevent constant folding */
unsigned long getL()
{
  return (unsigned long) 0xafafafafc5c5b8a3;
}

void main(int argc, char** argv)
{
  unsigned long UL = getL();                   /* 0xafafafafc5c5b8a3 */
  unsigned int  ui = (unsigned int) UL;        /* 0xc5c5b8a3 = 3318069411 */
  printf("UL/ui = %ld\n", UL/ui);
}



/*-------------------------------------------------------------------*
 * baddiv.i produced by:
 *    /home/vadve/lattner/local/sparc/llvm-gcc/bin/gcc -D_GNU_SOURCE -O2 -Wall -S -save-temps baddiv.c 
 *-------------------------------------------------------------------*/

# 1 "baddiv.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "baddiv.c"
# 1 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdlib.h" 1 3 4
# 16 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdlib.h" 3 4
#pragma ident "@(#)stdlib.h	1.47	99/11/03 SMI" 

# 1 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/iso/stdlib_iso.h" 1 3 4
# 37 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/iso/stdlib_iso.h" 3 4
#pragma ident "@(#)stdlib_iso.h	1.2	99/12/21 SMI" 

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 13 "/usr/include/sys/feature_tests.h" 3 4
#pragma ident "@(#)feature_tests.h	1.18	99/07/26 SMI"

# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 9 "/usr/include/sys/isa_defs.h" 3 4
#pragma ident "@(#)isa_defs.h	1.20	99/05/04 SMI"
# 16 "/usr/include/sys/feature_tests.h" 2 3 4
# 40 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/iso/stdlib_iso.h" 2 3 4






extern unsigned char __ctype[];
# 57 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/iso/stdlib_iso.h" 3 4
typedef struct {
        int quot;
        int rem;
} div_t;

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




typedef unsigned long size_t;
# 92 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/iso/stdlib_iso.h" 3 4
typedef int wchar_t;
# 103 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/iso/stdlib_iso.h" 3 4
extern void abort(void);
extern int abs(int);
extern int atexit(void (*)(void));
extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern void *bsearch(const void *, const void *, size_t, size_t,
        int (*)(const void *, const void *));
extern void *calloc(size_t, size_t);
extern div_t div(int, int);
extern void exit(int);
extern void free(void *);
extern char *getenv(const char *);
extern long int labs(long);
extern ldiv_t ldiv(long, long);
extern void *malloc(size_t);
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 void qsort(void *, size_t, size_t,
        int (*)(const void *, const void *));
extern int rand(void);
extern void *realloc(void *, size_t);
extern void srand(unsigned int);
extern double strtod(const char *, char **);
extern long int strtol(const char *, char **, int);
extern unsigned long int strtoul(const char *, char **, int);
extern int system(const char *);
extern int wctomb(char *, wchar_t);
extern size_t wcstombs(char *, const wchar_t *, size_t);
# 19 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdlib.h" 2 3 4
# 68 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdlib.h" 3 4
typedef struct {
        long long quot;
        long long rem;
} lldiv_t;





typedef int uid_t;
# 100 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdlib.h" 3 4
#pragma redefine_extname mkstemp64 mkstemp
# 112 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdlib.h" 3 4
extern void _exithandle(void);




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(char *);
extern void setkey(const char *);
# 138 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdlib.h" 3 4
typedef long ssize_t;





extern void swab(const char *, char *, ssize_t);





extern int mkstemp(char *);




extern int mkstemp64(char *);





extern long a64l(const char *);
extern char *ecvt(double, int, int *, int *);
extern char *fcvt(double, int, int *, int *);
extern char *gcvt(double, int, char *);
extern int getsubopt(char **, char *const *, char **);
extern int grantpt(int);
extern char *initstate(unsigned, char *, size_t);
extern char *l64a(long);
extern char *mktemp(char *);
extern char *ptsname(int);
extern long random(void);
extern char *realpath(const char *, char *);
extern char *setstate(const char *);
extern void srandom(unsigned);
extern int ttyslot(void);
extern int unlockpt(int);
extern void *valloc(size_t);




extern int dup2(int, int);
extern char *qecvt(long double, int, int *, int *);
extern char *qfcvt(long double, int, int *, int *);
extern char *qgcvt(long double, int, char *);
extern char *getcwd(char *, size_t);
extern const char *getexecname(void);
extern char *getlogin(void);
extern int getopt(int, char *const *, const char *);
extern char *optarg;
extern int optind, opterr, optopt;
extern char *getpass(const char *);
extern char *getpassphrase(const char *);
extern int getpw(uid_t, char *);
extern int isatty(int);
extern void *memalign(size_t, size_t);
extern char *ttyname(int);


extern long long atoll(const char *);
extern long long llabs(long long);
extern lldiv_t lldiv(long long, long long);
extern char *lltostr(long long, char *);
extern long long strtoll(const char *, char **, int);
extern unsigned long long strtoull(const char *, char **, int);
extern char *ulltostr(unsigned long long, char *);
# 2 "baddiv.c" 2
# 1 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 1 3 4
# 14 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 3 4
# 1 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdarg.h" 1 3 4
# 43 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 15 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 2 3 4
# 34 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 3 4
#pragma ident "@(#)stdio.h	1.78	99/12/08 SMI" 

# 1 "/usr/include/iso/stdio_iso.h" 1 3 4
# 32 "/usr/include/iso/stdio_iso.h" 3 4
#pragma ident "@(#)stdio_iso.h	1.2	99/10/25 SMI"



# 1 "/usr/include/sys/va_list.h" 1 3 4
# 9 "/usr/include/sys/va_list.h" 3 4
#pragma ident "@(#)va_list.h	1.12	99/05/04 SMI"
# 26 "/usr/include/sys/va_list.h" 3 4
typedef void *__va_list;
# 37 "/usr/include/iso/stdio_iso.h" 2 3 4
# 1 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio_tag.h" 1 3 4
# 18 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio_tag.h" 3 4
#pragma ident "@(#)stdio_tag.h	1.3	98/04/20 SMI"
# 30 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio_tag.h" 3 4
typedef struct __FILE __FILE;
# 38 "/usr/include/iso/stdio_iso.h" 2 3 4
# 1 "/usr/include/stdio_impl.h" 1 3 4
# 9 "/usr/include/stdio_impl.h" 3 4
#pragma ident "@(#)stdio_impl.h	1.8	99/06/10 SMI"
# 30 "/usr/include/stdio_impl.h" 3 4
struct __FILE {
        long __pad[16];
};
# 39 "/usr/include/iso/stdio_iso.h" 2 3 4
# 75 "/usr/include/iso/stdio_iso.h" 3 4
typedef __FILE FILE;
# 88 "/usr/include/iso/stdio_iso.h" 3 4
typedef long fpos_t;
# 147 "/usr/include/iso/stdio_iso.h" 3 4
extern __FILE __iob[20];
# 164 "/usr/include/iso/stdio_iso.h" 3 4
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 vfprintf(FILE *, const char *, __va_list);
extern int vprintf(const char *, __va_list);
extern int vsprintf(char *, const char *, __va_list);
extern int fgetc(FILE *);
extern char *fgets(char *, int, FILE *);
extern int fputc(int, FILE *);
extern int fputs(const char *, FILE *);


extern int getc(FILE *);
extern int putc(int, FILE *);



extern int getchar(void);
extern int putchar(int);

extern char *gets(char *);
extern int puts(const char *);
extern int ungetc(int, FILE *);
extern size_t fread(void *, size_t, size_t, FILE *);
extern size_t fwrite(const void *, size_t, size_t, FILE *);
extern int fgetpos(FILE *, fpos_t *);
extern int fseek(FILE *, long, int);
extern int fsetpos(FILE *, const fpos_t *);
extern long ftell(FILE *);
extern void rewind(FILE *);


extern void clearerr(FILE *);
extern int feof(FILE *);
extern int ferror(FILE *);

extern void perror(const char *);
# 37 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 2 3 4
# 105 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 3 4
typedef long off_t;





typedef off_t off64_t;
# 121 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 3 4
typedef fpos_t fpos64_t;
# 151 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 3 4
extern unsigned char _sibuf[], _sobuf[];
# 200 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 3 4
#pragma redefine_extname fopen64 fopen
#pragma redefine_extname freopen64 freopen
#pragma redefine_extname tmpfile64 tmpfile
#pragma redefine_extname fgetpos64 fgetpos
#pragma redefine_extname fsetpos64 fsetpos

#pragma redefine_extname fseeko64 fseeko
#pragma redefine_extname ftello64 ftello
# 229 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 3 4
extern void setbuffer(FILE *, char *, size_t);
extern int setlinebuf(FILE *);





extern int snprintf(char *, size_t, const char *, ...);




extern int vsnprintf(char *, size_t, const char *, __gnuc_va_list);
# 250 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 3 4
extern FILE *fdopen(int, const char *);
extern char *ctermid(char *);
extern int fileno(FILE *);
# 276 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 3 4
extern FILE *popen(const char *, const char *);
extern char *cuserid(char *);
extern char *tempnam(const char *, const char *);
extern int getopt(int, char *const *, const char *);

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

extern char *optarg;
extern int optind, opterr, optopt;
extern int getw(FILE *);
extern int putw(int, FILE *);
extern int pclose(FILE *);







extern int fseeko(FILE *, off_t, int);
extern off_t ftello(FILE *);
# 305 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/stdio.h" 3 4
extern FILE *fopen64(const char *, const char *);
extern FILE *freopen64(const char *, const char *, FILE *);
extern FILE *tmpfile64(void);
extern int fgetpos64(FILE *, fpos64_t *);
extern int fsetpos64(FILE *, const fpos64_t *);
extern int fseeko64(FILE *, off64_t, int);
extern off64_t ftello64(FILE *);
# 3 "baddiv.c" 2
# 1 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 1 3 4
# 25 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
#pragma ident "@(#)types.h	1.68	02/06/10 SMI"







# 1 "/usr/include/sys/machtypes.h" 1 3 4
# 16 "/usr/include/sys/machtypes.h" 3 4
#pragma ident "@(#)machtypes.h	1.13	99/05/04 SMI"
# 33 "/usr/include/sys/machtypes.h" 3 4
typedef struct _label_t { long val[2]; } label_t;



typedef unsigned char lock_t;
# 34 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 2 3 4
# 45 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
# 1 "/usr/include/sys/int_types.h" 1 3 4
# 9 "/usr/include/sys/int_types.h" 3 4
#pragma ident "@(#)int_types.h	1.6	97/08/20 SMI"
# 62 "/usr/include/sys/int_types.h" 3 4
typedef char int8_t;





typedef short int16_t;
typedef int int32_t;

typedef long int64_t;






typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;

typedef unsigned long uint64_t;
# 94 "/usr/include/sys/int_types.h" 3 4
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
# 107 "/usr/include/sys/int_types.h" 3 4
typedef long intptr_t;
typedef unsigned long uintptr_t;
# 119 "/usr/include/sys/int_types.h" 3 4
typedef char int_least8_t;





typedef short int_least16_t;
typedef int int_least32_t;

typedef long int_least64_t;






typedef unsigned char uint_least8_t;
typedef unsigned short uint_least16_t;
typedef unsigned int uint_least32_t;

typedef unsigned long uint_least64_t;
# 46 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 2 3 4
# 62 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef long long longlong_t;
typedef unsigned long long u_longlong_t;
# 82 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef int32_t t_scalar_t;
typedef uint32_t t_uscalar_t;
# 92 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef unsigned char uchar_t;
typedef unsigned short ushort_t;
typedef unsigned int uint_t;
typedef unsigned long ulong_t;

typedef char *caddr_t;
typedef long daddr_t;
typedef short cnt_t;
# 112 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef long int ptrdiff_t;
# 127 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef ulong_t pfn_t;
typedef ulong_t pgcnt_t;
typedef long spgcnt_t;

typedef uchar_t use_t;
typedef short sysid_t;
typedef short index_t;
typedef void *timeout_id_t;
typedef void *bufcall_id_t;
# 165 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef ulong_t ino_t;
typedef long blkcnt_t;
typedef ulong_t fsblkcnt_t;
typedef ulong_t fsfilcnt_t;
# 178 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef ino_t ino64_t;
typedef blkcnt_t blkcnt64_t;
typedef fsblkcnt_t fsblkcnt64_t;
typedef fsfilcnt_t fsfilcnt64_t;
# 191 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef int blksize_t;







typedef enum { B_FALSE, B_TRUE } boolean_t;
# 210 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef int64_t pad64_t;
typedef uint64_t upad64_t;
# 223 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef longlong_t offset_t;
typedef u_longlong_t u_offset_t;
typedef u_longlong_t len_t;
typedef longlong_t diskaddr_t;
# 244 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef union {
        offset_t _f;
        struct {
                int32_t _u;
                int32_t _l;
        } _p;
} lloff_t;
# 264 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef union {
        diskaddr_t _f;
        struct {
                int32_t _u;
                int32_t _l;
        } _p;
} lldaddr_t;


typedef uint_t k_fltset_t;
# 285 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef int id_t;
# 294 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef uint_t useconds_t;



typedef long suseconds_t;






typedef uint_t major_t;
typedef uint_t minor_t;
# 315 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef short pri_t;
# 328 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef ushort_t o_mode_t;
typedef short o_dev_t;
typedef ushort_t o_uid_t;
typedef o_uid_t o_gid_t;
typedef short o_nlink_t;
typedef short o_pid_t;
typedef ushort_t o_ino_t;





typedef int key_t;

typedef uint_t mode_t;
# 356 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef uid_t gid_t;

typedef id_t taskid_t;
typedef id_t projid_t;






typedef uint_t pthread_t;
typedef uint_t pthread_key_t;

typedef struct _pthread_mutex {
        struct {
                uint16_t __pthread_mutex_flag1;
                uint8_t __pthread_mutex_flag2;
                uint8_t __pthread_mutex_ceiling;
                uint16_t __pthread_mutex_type;
                uint16_t __pthread_mutex_magic;
        } __pthread_mutex_flags;
        union {
                struct {
                        uint8_t __pthread_mutex_pad[8];
                } __pthread_mutex_lock64;
                struct {
                        uint32_t __pthread_ownerpid;
                        uint32_t __pthread_lockword;
                } __pthread_mutex_lock32;
                upad64_t __pthread_mutex_owner64;
        } __pthread_mutex_lock;
        upad64_t __pthread_mutex_data;
} pthread_mutex_t;

typedef struct _pthread_cond {
        struct {
                uint8_t __pthread_cond_flag[4];
                uint16_t __pthread_cond_type;
                uint16_t __pthread_cond_magic;
        } __pthread_cond_flags;
        upad64_t __pthread_cond_data;
} pthread_cond_t;




typedef struct _pthread_rwlock {
        int32_t __pthread_rwlock_readers;
        uint16_t __pthread_rwlock_type;
        uint16_t __pthread_rwlock_magic;
        upad64_t __pthread_rwlock_pad1[3];
        upad64_t __pthread_rwlock_pad2[2];
        upad64_t __pthread_rwlock_pad3[2];
} pthread_rwlock_t;




typedef struct _pthread_attr {
        void *__pthread_attrp;
} pthread_attr_t;




typedef struct _pthread_mutexattr {
        void *__pthread_mutexattrp;
} pthread_mutexattr_t;




typedef struct _pthread_condattr {
        void *__pthread_condattrp;
} pthread_condattr_t;




typedef struct _once {
        upad64_t __pthread_once_pad[4];
} pthread_once_t;





typedef struct _pthread_rwlockattr {
        void *__pthread_rwlockattrp;
} pthread_rwlockattr_t;

typedef ulong_t dev_t;


typedef uint_t nlink_t;
typedef int pid_t;
# 485 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef long time_t;




typedef long clock_t;




typedef int clockid_t;




typedef int timer_t;






typedef unsigned char unchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
# 561 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 3 4
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef struct _quad { int val[2]; } quad_t;
typedef quad_t quad;






# 1 "/usr/include/sys/select.h" 1 3 4
# 12 "/usr/include/sys/select.h" 3 4
#pragma ident "@(#)select.h	1.16	98/04/27 SMI" 




# 1 "/usr/include/sys/time.h" 1 3 4
# 22 "/usr/include/sys/time.h" 3 4
#pragma ident "@(#)time.h	2.66	01/01/17 SMI" 
# 49 "/usr/include/sys/time.h" 3 4
struct timeval {
        time_t tv_sec;
        suseconds_t tv_usec;
};
# 82 "/usr/include/sys/time.h" 3 4
struct timezone {
        int tz_minuteswest;
        int tz_dsttime;
};
# 100 "/usr/include/sys/time.h" 3 4
# 1 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 1 3 4
# 101 "/usr/include/sys/time.h" 2 3 4
# 155 "/usr/include/sys/time.h" 3 4
struct itimerval {
        struct timeval it_interval;
        struct timeval it_value;
};
# 203 "/usr/include/sys/time.h" 3 4
typedef longlong_t hrtime_t;
# 320 "/usr/include/sys/time.h" 3 4
int adjtime(struct timeval *, struct timeval *);
# 331 "/usr/include/sys/time.h" 3 4
int getitimer(int, struct itimerval *);
int utimes(const char *, const struct timeval *);



int setitimer(int, struct itimerval *, struct itimerval *);
# 369 "/usr/include/sys/time.h" 3 4
int settimeofday(struct timeval *, void *);

hrtime_t gethrtime(void);
hrtime_t gethrvtime(void);
# 389 "/usr/include/sys/time.h" 3 4
int gettimeofday(struct timeval *, void *);
# 410 "/usr/include/sys/time.h" 3 4
# 1 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/time.h" 1 3 4
# 16 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/time.h" 3 4
#pragma ident "@(#)time.h	1.39	99/08/10 SMI" 



# 1 "/usr/include/iso/time_iso.h" 1 3 4
# 28 "/usr/include/iso/time_iso.h" 3 4
#pragma ident "@(#)time_iso.h	1.1	99/08/09 SMI" 
# 69 "/usr/include/iso/time_iso.h" 3 4
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;
};




extern char *asctime(const struct tm *);
extern clock_t clock(void);
extern char *ctime(const time_t *);
extern double difftime(time_t, time_t);
extern struct tm *gmtime(const time_t *);
extern struct tm *localtime(const time_t *);
extern time_t mktime(struct tm *);
extern time_t time(time_t *);
extern size_t strftime(char *, size_t, const char *, const struct tm *);
# 21 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/time.h" 2 3 4
# 67 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/time.h" 3 4
extern char *strptime(const char *, const char *, struct tm *);
# 83 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/time.h" 3 4
# 1 "/usr/include/sys/time_impl.h" 1 3 4
# 15 "/usr/include/sys/time_impl.h" 3 4
#pragma ident "@(#)time_impl.h	1.5	99/10/05 SMI"
# 36 "/usr/include/sys/time_impl.h" 3 4
typedef struct timespec {
        time_t tv_sec;
        long tv_nsec;
} timespec_t;
# 60 "/usr/include/sys/time_impl.h" 3 4
typedef struct timespec timestruc_t;
# 79 "/usr/include/sys/time_impl.h" 3 4
typedef struct itimerspec {
        struct timespec it_interval;
        struct timespec it_value;
} itimerspec_t;
# 84 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/time.h" 2 3 4
# 98 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/time.h" 3 4
union sigval {
        int sival_int;
        void *sival_ptr;
};




struct sigevent {
        int sigev_notify;
        int sigev_signo;
        union sigval sigev_value;
        void (*sigev_notify_function)(union sigval);
        pthread_attr_t *sigev_notify_attributes;
        int __sigev_pad2;
};


extern int clock_getres(clockid_t, struct timespec *);
extern int clock_gettime(clockid_t, struct timespec *);
extern int clock_settime(clockid_t, const struct timespec *);
extern int timer_create(clockid_t, struct sigevent *, timer_t *);
extern int timer_delete(timer_t);
extern int timer_getoverrun(timer_t);
extern int timer_gettime(timer_t, struct itimerspec *);
extern int timer_settime(timer_t, int, const struct itimerspec *,
                struct itimerspec *);
extern int nanosleep(const struct timespec *, struct timespec *);




extern void tzset(void);

extern char *tzname[2];


extern long _sysconf(int);






extern long timezone;
extern int daylight;





extern int cftime(char *, char *, const time_t *);
extern int ascftime(char *, const char *, const struct tm *);
extern long altzone;




extern struct tm *getdate(const char *);






extern int getdate_err;
# 411 "/usr/include/sys/time.h" 2 3 4
# 423 "/usr/include/sys/time.h" 3 4
# 1 "/usr/include/sys/select.h" 1 3 4
# 424 "/usr/include/sys/time.h" 2 3 4
# 18 "/usr/include/sys/select.h" 2 3 4
# 45 "/usr/include/sys/select.h" 3 4
typedef long fd_mask;

typedef long fds_mask;
# 73 "/usr/include/sys/select.h" 3 4
typedef struct fd_set {



        long fds_bits[(((65536)+(((sizeof (fds_mask) * 8))-1))/((sizeof (fds_mask) * 8)))];
} fd_set;
# 97 "/usr/include/sys/select.h" 3 4
extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
# 574 "/home/vadve/lattner/local/sparc/llvm-gcc/lib/gcc-lib/sparcv9-sun-solaris2.8/3.4-llvm/include/sys/types.h" 2 3 4
# 4 "baddiv.c" 2


unsigned long getL()
{
  return (unsigned long) 0xafafafafc5c5b8a3;
}

void main(int argc, char** argv)
{
  unsigned long UL = getL();
  unsigned int ui = (unsigned int) UL;
  printf("UL/ui = %ld\n", UL/ui);
}



More information about the llvm-bugs mailing list