2021-01-26 19:22 CET

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0000721Frama-CPlug-in > Evapublic2014-02-12 16:59
Reporterregehr 
Assigned Topascal 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
Product VersionFrama-C Carbon-20110201 
Target VersionFixed in VersionFrama-C Nitrogen-20111001 
Summary0000721: Unsoundness in value analysis when bitfield initializer exceeds range (csmith)
DescriptionThe attached program, analyzed like this:

  toplevel.opt -val -slevel 25 foo_pp.c

causes Frama-C to emit this assertion:

   assert(*(unsigned int*)&g_115 == 9362872);

However, running the program gives the value of g_115 as 23992 at the end of execution.

This is on Ubuntu 10.10 on x86.
TagsNo tags attached.
Attached Files
  • c file icon foo_pp.c (56,338 bytes) 2011-02-13 23:14 -
    # 1 "foo.c"
    # 1 "foo.c" 1
    # 1 "<built-in>" 1
    # 1 "<built-in>" 3
    # 128 "<built-in>" 3
    # 1 "<command line>" 1
    # 1 "<built-in>" 2
    # 1 "foo.c" 2
    # 10 "foo.c"
    # 1 "/mnt/z/csmith/runtime/random_inc.h" 1
    # 51 "/mnt/z/csmith/runtime/random_inc.h"
    # 1 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/limits.h" 1 3 4
    # 38 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/limits.h" 3 4
    # 1 "/usr/include/limits.h" 1 3 4
    # 27 "/usr/include/limits.h" 3 4
    # 1 "/usr/include/features.h" 1 3 4
    # 322 "/usr/include/features.h" 3 4
    # 1 "/usr/include/bits/predefs.h" 1 3 4
    # 323 "/usr/include/features.h" 2 3 4
    # 355 "/usr/include/features.h" 3 4
    # 1 "/usr/include/sys/cdefs.h" 1 3 4
    # 353 "/usr/include/sys/cdefs.h" 3 4
    # 1 "/usr/include/bits/wordsize.h" 1 3 4
    # 354 "/usr/include/sys/cdefs.h" 2 3 4
    # 356 "/usr/include/features.h" 2 3 4
    # 387 "/usr/include/features.h" 3 4
    # 1 "/usr/include/gnu/stubs.h" 1 3 4
    
    
    
    # 1 "/usr/include/bits/wordsize.h" 1 3 4
    # 5 "/usr/include/gnu/stubs.h" 2 3 4
    
    
    # 1 "/usr/include/gnu/stubs-32.h" 1 3 4
    # 8 "/usr/include/gnu/stubs.h" 2 3 4
    # 388 "/usr/include/features.h" 2 3 4
    # 28 "/usr/include/limits.h" 2 3 4
    # 145 "/usr/include/limits.h" 3 4
    # 1 "/usr/include/bits/posix1_lim.h" 1 3 4
    # 157 "/usr/include/bits/posix1_lim.h" 3 4
    # 1 "/usr/include/bits/local_lim.h" 1 3 4
    # 39 "/usr/include/bits/local_lim.h" 3 4
    # 1 "/usr/include/linux/limits.h" 1 3 4
    # 40 "/usr/include/bits/local_lim.h" 2 3 4
    # 158 "/usr/include/bits/posix1_lim.h" 2 3 4
    # 146 "/usr/include/limits.h" 2 3 4
    
    
    
    # 1 "/usr/include/bits/posix2_lim.h" 1 3 4
    # 150 "/usr/include/limits.h" 2 3 4
    # 39 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/limits.h" 2 3 4
    # 52 "/mnt/z/csmith/runtime/random_inc.h" 2
    
    
    
    # 1 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/stdint.h" 1 3 4
    # 33 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/stdint.h" 3 4
    # 1 "/usr/include/stdint.h" 1 3 4
    # 27 "/usr/include/stdint.h" 3 4
    # 1 "/usr/include/bits/wchar.h" 1 3 4
    # 28 "/usr/include/stdint.h" 2 3 4
    # 1 "/usr/include/bits/wordsize.h" 1 3 4
    # 29 "/usr/include/stdint.h" 2 3 4
    
    
    
    
    
    
    
    
    typedef signed char int8_t;
    typedef short int int16_t;
    typedef int int32_t;
    
    
    
    __extension__
    typedef long long int int64_t;
    
    
    
    
    typedef unsigned char uint8_t;
    typedef unsigned short int uint16_t;
    
    typedef unsigned int uint32_t;
    
    
    
    
    
    __extension__
    typedef unsigned long long int uint64_t;
    
    
    
    
    
    
    typedef signed char int_least8_t;
    typedef short int int_least16_t;
    typedef int int_least32_t;
    
    
    
    __extension__
    typedef long long int int_least64_t;
    
    
    
    typedef unsigned char uint_least8_t;
    typedef unsigned short int uint_least16_t;
    typedef unsigned int uint_least32_t;
    
    
    
    __extension__
    typedef unsigned long long int uint_least64_t;
    
    
    
    
    
    
    typedef signed char int_fast8_t;
    
    
    
    
    
    typedef int int_fast16_t;
    typedef int int_fast32_t;
    __extension__
    typedef long long int int_fast64_t;
    
    
    
    typedef unsigned char uint_fast8_t;
    
    
    
    
    
    typedef unsigned int uint_fast16_t;
    typedef unsigned int uint_fast32_t;
    __extension__
    typedef unsigned long long int uint_fast64_t;
    # 126 "/usr/include/stdint.h" 3 4
    typedef int intptr_t;
    
    
    typedef unsigned int uintptr_t;
    # 138 "/usr/include/stdint.h" 3 4
    __extension__
    typedef long long int intmax_t;
    __extension__
    typedef unsigned long long int uintmax_t;
    # 34 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/stdint.h" 2 3 4
    # 56 "/mnt/z/csmith/runtime/random_inc.h" 2
    
    
    
    
    # 1 "/usr/include/assert.h" 1 3 4
    # 71 "/usr/include/assert.h" 3 4
    extern void __assert_fail (__const char *__assertion, __const char *__file,
          unsigned int __line, __const char *__function)
         __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
    
    
    extern void __assert_perror_fail (int __errnum, __const char *__file,
          unsigned int __line,
          __const char *__function)
         __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
    
    
    
    
    extern void __assert (const char *__assertion, const char *__file, int __line)
         __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
    # 61 "/mnt/z/csmith/runtime/random_inc.h" 2
    # 78 "/mnt/z/csmith/runtime/random_inc.h"
    # 1 "/mnt/z/csmith/runtime/platform_generic.h" 1
    # 40 "/mnt/z/csmith/runtime/platform_generic.h"
    # 1 "/usr/include/stdio.h" 1 3 4
    # 34 "/usr/include/stdio.h" 3 4
    # 1 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/stddef.h" 1 3 4
    # 29 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/stddef.h" 3 4
    typedef __typeof__(((int*)0)-((int*)0)) ptrdiff_t;
    
    
    typedef __typeof__(sizeof(int)) size_t;
    
    
    
    
    typedef int wchar_t;
    # 35 "/usr/include/stdio.h" 2 3 4
    
    # 1 "/usr/include/bits/types.h" 1 3 4
    # 28 "/usr/include/bits/types.h" 3 4
    # 1 "/usr/include/bits/wordsize.h" 1 3 4
    # 29 "/usr/include/bits/types.h" 2 3 4
    
    
    typedef unsigned char __u_char;
    typedef unsigned short int __u_short;
    typedef unsigned int __u_int;
    typedef unsigned long int __u_long;
    
    
    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;
    
    
    
    
    
    
    
    __extension__ typedef long long int __quad_t;
    __extension__ typedef unsigned long long int __u_quad_t;
    # 131 "/usr/include/bits/types.h" 3 4
    # 1 "/usr/include/bits/typesizes.h" 1 3 4
    # 132 "/usr/include/bits/types.h" 2 3 4
    
    
    __extension__ typedef __u_quad_t __dev_t;
    __extension__ typedef unsigned int __uid_t;
    __extension__ typedef unsigned int __gid_t;
    __extension__ typedef unsigned long int __ino_t;
    __extension__ typedef __u_quad_t __ino64_t;
    __extension__ typedef unsigned int __mode_t;
    __extension__ typedef unsigned int __nlink_t;
    __extension__ typedef long int __off_t;
    __extension__ typedef __quad_t __off64_t;
    __extension__ typedef int __pid_t;
    __extension__ typedef struct { int __val[2]; } __fsid_t;
    __extension__ typedef long int __clock_t;
    __extension__ typedef unsigned long int __rlim_t;
    __extension__ typedef __u_quad_t __rlim64_t;
    __extension__ typedef unsigned int __id_t;
    __extension__ typedef long int __time_t;
    __extension__ typedef unsigned int __useconds_t;
    __extension__ typedef long int __suseconds_t;
    
    __extension__ typedef int __daddr_t;
    __extension__ typedef long int __swblk_t;
    __extension__ typedef int __key_t;
    
    
    __extension__ typedef int __clockid_t;
    
    
    __extension__ typedef void * __timer_t;
    
    
    __extension__ typedef long int __blksize_t;
    
    
    
    
    __extension__ typedef long int __blkcnt_t;
    __extension__ typedef __quad_t __blkcnt64_t;
    
    
    __extension__ typedef unsigned long int __fsblkcnt_t;
    __extension__ typedef __u_quad_t __fsblkcnt64_t;
    
    
    __extension__ typedef unsigned long int __fsfilcnt_t;
    __extension__ typedef __u_quad_t __fsfilcnt64_t;
    
    __extension__ typedef int __ssize_t;
    
    
    
    typedef __off64_t __loff_t;
    typedef __quad_t *__qaddr_t;
    typedef char *__caddr_t;
    
    
    __extension__ typedef int __intptr_t;
    
    
    __extension__ typedef unsigned int __socklen_t;
    # 37 "/usr/include/stdio.h" 2 3 4
    
    
    
    
    
    
    
    
    struct _IO_FILE;
    
    
    
    typedef struct _IO_FILE FILE;
    # 65 "/usr/include/stdio.h" 3 4
    typedef struct _IO_FILE __FILE;
    # 75 "/usr/include/stdio.h" 3 4
    # 1 "/usr/include/libio.h" 1 3 4
    # 32 "/usr/include/libio.h" 3 4
    # 1 "/usr/include/_G_config.h" 1 3 4
    # 15 "/usr/include/_G_config.h" 3 4
    # 1 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/stddef.h" 1 3 4
    # 16 "/usr/include/_G_config.h" 2 3 4
    
    
    
    
    # 1 "/usr/include/wchar.h" 1 3 4
    # 83 "/usr/include/wchar.h" 3 4
    typedef struct
    {
      int __count;
      union
      {
    
        unsigned int __wch;
    
    
    
        char __wchb[4];
      } __value;
    } __mbstate_t;
    # 21 "/usr/include/_G_config.h" 2 3 4
    
    typedef struct
    {
      __off_t __pos;
      __mbstate_t __state;
    } _G_fpos_t;
    typedef struct
    {
      __off64_t __pos;
      __mbstate_t __state;
    } _G_fpos64_t;
    # 53 "/usr/include/_G_config.h" 3 4
    typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
    typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
    typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
    typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
    # 33 "/usr/include/libio.h" 2 3 4
    # 53 "/usr/include/libio.h" 3 4
    # 1 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/stdarg.h" 1 3 4
    # 30 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/stdarg.h" 3 4
    typedef __builtin_va_list va_list;
    # 48 "/mnt/z/z/compiler-install/llvm-gcc-r125433-install/bin/../lib/clang/2.9/include/stdarg.h" 3 4
    typedef __builtin_va_list __gnuc_va_list;
    # 54 "/usr/include/libio.h" 2 3 4
    # 170 "/usr/include/libio.h" 3 4
    struct _IO_jump_t; struct _IO_FILE;
    # 180 "/usr/include/libio.h" 3 4
    typedef void _IO_lock_t;
    
    
    
    
    
    struct _IO_marker {
      struct _IO_marker *_next;
      struct _IO_FILE *_sbuf;
    
    
    
      int _pos;
    # 203 "/usr/include/libio.h" 3 4
    };
    
    
    enum __codecvt_result
    {
      __codecvt_ok,
      __codecvt_partial,
      __codecvt_error,
      __codecvt_noconv
    };
    # 271 "/usr/include/libio.h" 3 4
    struct _IO_FILE {
      int _flags;
    
    
    
    
      char* _IO_read_ptr;
      char* _IO_read_end;
      char* _IO_read_base;
      char* _IO_write_base;
      char* _IO_write_ptr;
      char* _IO_write_end;
      char* _IO_buf_base;
      char* _IO_buf_end;
    
      char *_IO_save_base;
      char *_IO_backup_base;
      char *_IO_save_end;
    
      struct _IO_marker *_markers;
    
      struct _IO_FILE *_chain;
    
      int _fileno;
    
    
    
      int _flags2;
    
      __off_t _old_offset;
    
    
    
      unsigned short _cur_column;
      signed char _vtable_offset;
      char _shortbuf[1];
    
    
    
      _IO_lock_t *_lock;
    # 319 "/usr/include/libio.h" 3 4
      __off64_t _offset;
    # 328 "/usr/include/libio.h" 3 4
      void *__pad1;
      void *__pad2;
      void *__pad3;
      void *__pad4;
      size_t __pad5;
    
      int _mode;
    
      char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
    
    };
    
    
    typedef struct _IO_FILE _IO_FILE;
    
    
    struct _IO_FILE_plus;
    
    extern struct _IO_FILE_plus _IO_2_1_stdin_;
    extern struct _IO_FILE_plus _IO_2_1_stdout_;
    extern struct _IO_FILE_plus _IO_2_1_stderr_;
    # 364 "/usr/include/libio.h" 3 4
    typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
    
    
    
    
    
    
    
    typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
         size_t __n);
    
    
    
    
    
    
    
    typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
    
    
    typedef int __io_close_fn (void *__cookie);
    # 416 "/usr/include/libio.h" 3 4
    extern int __underflow (_IO_FILE *);
    extern int __uflow (_IO_FILE *);
    extern int __overflow (_IO_FILE *, int);
    # 460 "/usr/include/libio.h" 3 4
    extern int _IO_getc (_IO_FILE *__fp);
    extern int _IO_putc (int __c, _IO_FILE *__fp);
    extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
    extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
    
    extern int _IO_peekc_locked (_IO_FILE *__fp);
    
    
    
    
    
    extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
    extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
    extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
    # 490 "/usr/include/libio.h" 3 4
    extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
       __gnuc_va_list, int *__restrict);
    extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
        __gnuc_va_list);
    extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
    extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
    
    extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
    extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
    
    extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
    # 76 "/usr/include/stdio.h" 2 3 4
    
    
    
    
    typedef __gnuc_va_list va_list;
    # 91 "/usr/include/stdio.h" 3 4
    typedef __off_t off_t;
    # 103 "/usr/include/stdio.h" 3 4
    typedef __ssize_t ssize_t;
    
    
    
    
    
    
    
    typedef _G_fpos_t fpos_t;
    # 161 "/usr/include/stdio.h" 3 4
    # 1 "/usr/include/bits/stdio_lim.h" 1 3 4
    # 162 "/usr/include/stdio.h" 2 3 4
    
    
    
    extern struct _IO_FILE *stdin;
    extern struct _IO_FILE *stdout;
    extern struct _IO_FILE *stderr;
    
    
    
    
    
    
    
    extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
    
    extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
    
    
    
    
    extern int renameat (int __oldfd, __const char *__old, int __newfd,
           __const char *__new) __attribute__ ((__nothrow__));
    # 192 "/usr/include/stdio.h" 3 4
    extern FILE *tmpfile (void) ;
    # 206 "/usr/include/stdio.h" 3 4
    extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
    
    
    
    
    
    extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
    # 224 "/usr/include/stdio.h" 3 4
    extern char *tempnam (__const char *__dir, __const char *__pfx)
         __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
    # 234 "/usr/include/stdio.h" 3 4
    extern int fclose (FILE *__stream);
    
    
    
    
    extern int fflush (FILE *__stream);
    # 249 "/usr/include/stdio.h" 3 4
    extern int fflush_unlocked (FILE *__stream);
    # 269 "/usr/include/stdio.h" 3 4
    extern FILE *fopen (__const char *__restrict __filename,
          __const char *__restrict __modes) ;
    
    
    
    
    extern FILE *freopen (__const char *__restrict __filename,
            __const char *__restrict __modes,
            FILE *__restrict __stream) ;
    # 303 "/usr/include/stdio.h" 3 4
    extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
    # 316 "/usr/include/stdio.h" 3 4
    extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
      __attribute__ ((__nothrow__)) ;
    
    
    
    
    extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;
    
    
    
    
    
    
    extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
    
    
    
    extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
          int __modes, size_t __n) __attribute__ ((__nothrow__));
    
    
    
    
    
    extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
             size_t __size) __attribute__ ((__nothrow__));
    
    
    extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
    # 353 "/usr/include/stdio.h" 3 4
    extern int fprintf (FILE *__restrict __stream,
          __const char *__restrict __format, ...);
    
    
    
    
    extern int printf (__const char *__restrict __format, ...);
    
    extern int sprintf (char *__restrict __s,
          __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
    
    
    
    
    
    extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
           __gnuc_va_list __arg);
    
    
    
    
    extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
    
    extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
           __gnuc_va_list __arg) __attribute__ ((__nothrow__));
    
    
    
    
    
    extern int snprintf (char *__restrict __s, size_t __maxlen,
           __const char *__restrict __format, ...)
         __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
    
    extern int vsnprintf (char *__restrict __s, size_t __maxlen,
            __const char *__restrict __format, __gnuc_va_list __arg)
         __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
    # 414 "/usr/include/stdio.h" 3 4
    extern int vdprintf (int __fd, __const char *__restrict __fmt,
           __gnuc_va_list __arg)
         __attribute__ ((__format__ (__printf__, 2, 0)));
    extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
         __attribute__ ((__format__ (__printf__, 2, 3)));
    # 427 "/usr/include/stdio.h" 3 4
    extern int fscanf (FILE *__restrict __stream,
         __const char *__restrict __format, ...) ;
    
    
    
    
    extern int scanf (__const char *__restrict __format, ...) ;
    
    extern int sscanf (__const char *__restrict __s,
         __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
    # 445 "/usr/include/stdio.h" 3 4
    extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf") ;
    
    
    extern int scanf (__const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf") ;
    
    extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__));
    # 473 "/usr/include/stdio.h" 3 4
    extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
          __gnuc_va_list __arg)
         __attribute__ ((__format__ (__scanf__, 2, 0))) ;
    
    
    
    
    
    extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
         __attribute__ ((__format__ (__scanf__, 1, 0))) ;
    
    
    extern int vsscanf (__const char *__restrict __s,
          __const char *__restrict __format, __gnuc_va_list __arg)
         __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
    # 496 "/usr/include/stdio.h" 3 4
    extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")
    
    
    
         __attribute__ ((__format__ (__scanf__, 2, 0))) ;
    extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")
    
         __attribute__ ((__format__ (__scanf__, 1, 0))) ;
    extern int vsscanf (__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__))
    
    
    
         __attribute__ ((__format__ (__scanf__, 2, 0)));
    # 533 "/usr/include/stdio.h" 3 4
    extern int fgetc (FILE *__stream);
    extern int getc (FILE *__stream);
    
    
    
    
    
    extern int getchar (void);
    # 552 "/usr/include/stdio.h" 3 4
    extern int getc_unlocked (FILE *__stream);
    extern int getchar_unlocked (void);
    # 563 "/usr/include/stdio.h" 3 4
    extern int fgetc_unlocked (FILE *__stream);
    # 575 "/usr/include/stdio.h" 3 4
    extern int fputc (int __c, FILE *__stream);
    extern int putc (int __c, FILE *__stream);
    
    
    
    
    
    extern int putchar (int __c);
    # 596 "/usr/include/stdio.h" 3 4
    extern int fputc_unlocked (int __c, FILE *__stream);
    
    
    
    
    
    
    
    extern int putc_unlocked (int __c, FILE *__stream);
    extern int putchar_unlocked (int __c);
    
    
    
    
    
    
    extern int getw (FILE *__stream);
    
    
    extern int putw (int __w, FILE *__stream);
    # 624 "/usr/include/stdio.h" 3 4
    extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
              ;
    
    
    
    
    
    
    extern char *gets (char *__s) ;
    # 658 "/usr/include/stdio.h" 3 4
    extern __ssize_t __getdelim (char **__restrict __lineptr,
              size_t *__restrict __n, int __delimiter,
              FILE *__restrict __stream) ;
    extern __ssize_t getdelim (char **__restrict __lineptr,
            size_t *__restrict __n, int __delimiter,
            FILE *__restrict __stream) ;
    
    
    
    
    
    
    
    extern __ssize_t getline (char **__restrict __lineptr,
           size_t *__restrict __n,
           FILE *__restrict __stream) ;
    # 682 "/usr/include/stdio.h" 3 4
    extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
    
    
    
    
    
    extern int puts (__const char *__s);
    
    
    
    
    
    
    extern int ungetc (int __c, FILE *__stream);
    
    
    
    
    
    
    extern size_t fread (void *__restrict __ptr, size_t __size,
           size_t __n, FILE *__restrict __stream) ;
    
    
    
    
    extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
            size_t __n, FILE *__restrict __s);
    # 730 "/usr/include/stdio.h" 3 4
    extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
             size_t __n, FILE *__restrict __stream) ;
    extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
              size_t __n, FILE *__restrict __stream);
    # 742 "/usr/include/stdio.h" 3 4
    extern int fseek (FILE *__stream, long int __off, int __whence);
    
    
    
    
    extern long int ftell (FILE *__stream) ;
    
    
    
    
    extern void rewind (FILE *__stream);
    # 766 "/usr/include/stdio.h" 3 4
    extern int fseeko (FILE *__stream, __off_t __off, int __whence);
    
    
    
    
    extern __off_t ftello (FILE *__stream) ;
    # 791 "/usr/include/stdio.h" 3 4
    extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
    
    
    
    
    extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
    # 819 "/usr/include/stdio.h" 3 4
    extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
    
    extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
    
    extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
    
    
    
    
    extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
    extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
    extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
    # 839 "/usr/include/stdio.h" 3 4
    extern void perror (__const char *__s);
    
    
    
    
    
    
    
    # 1 "/usr/include/bits/sys_errlist.h" 1 3 4
    # 27 "/usr/include/bits/sys_errlist.h" 3 4
    extern int sys_nerr;
    extern __const char *__const sys_errlist[];
    # 847 "/usr/include/stdio.h" 2 3 4
    
    
    
    
    extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
    
    
    
    
    extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
    # 866 "/usr/include/stdio.h" 3 4
    extern FILE *popen (__const char *__command, __const char *__modes) ;
    
    
    
    
    
    extern int pclose (FILE *__stream);
    
    
    
    
    
    extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
    # 906 "/usr/include/stdio.h" 3 4
    extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
    
    
    
    extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
    
    
    extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
    # 41 "/mnt/z/csmith/runtime/platform_generic.h" 2
    
    
    static void
    platform_main_begin(void)
    {
    
    }
    
    static void
    platform_main_end(uint32_t crc)
    {
    
        Frama_C_dump_assert_each();
    
     printf ("checksum = %X\n", crc);
    }
    # 79 "/mnt/z/csmith/runtime/random_inc.h" 2
    # 96 "/mnt/z/csmith/runtime/random_inc.h"
    # 1 "/mnt/z/csmith/runtime/safe_math.h" 1
    # 13 "/mnt/z/csmith/runtime/safe_math.h"
    static int8_t
    (safe_unary_minus_func_int8_t_s)(int8_t si)
    {
      return
    
    
    
    
    
    
        -si;
    }
    
    static int8_t
    (safe_add_func_int8_t_s_s)(int8_t si1, int8_t si2)
    {
      return
    
    
    
    
    
    
        (si1 + si2);
    }
    
    static int8_t
    (safe_sub_func_int8_t_s_s)(int8_t si1, int8_t si2)
    {
      return
    
    
    
    
    
    
        (si1 - si2);
    }
    
    static int8_t
    (safe_mul_func_int8_t_s_s)(int8_t si1, int8_t si2)
    {
      return
    
    
    
    
    
    
        si1 * si2;
    }
    
    static int8_t
    (safe_mod_func_int8_t_s_s)(int8_t si1, int8_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-128)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 % si2);
    }
    
    static int8_t
    (safe_div_func_int8_t_s_s)(int8_t si1, int8_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-128)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 / si2);
    }
    
    static int8_t
    (safe_lshift_func_int8_t_s_s)(int8_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > ((127) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static int8_t
    (safe_lshift_func_int8_t_s_u)(int8_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32) || (left > ((127) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static int8_t
    (safe_rshift_func_int8_t_s_s)(int8_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static int8_t
    (safe_rshift_func_int8_t_s_u)(int8_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    static int16_t
    (safe_unary_minus_func_int16_t_s)(int16_t si)
    {
      return
    
    
    
    
    
    
        -si;
    }
    
    static int16_t
    (safe_add_func_int16_t_s_s)(int16_t si1, int16_t si2)
    {
      return
    
    
    
    
    
    
        (si1 + si2);
    }
    
    static int16_t
    (safe_sub_func_int16_t_s_s)(int16_t si1, int16_t si2)
    {
      return
    
    
    
    
    
    
        (si1 - si2);
    }
    
    static int16_t
    (safe_mul_func_int16_t_s_s)(int16_t si1, int16_t si2)
    {
      return
    
    
    
    
    
    
        si1 * si2;
    }
    
    static int16_t
    (safe_mod_func_int16_t_s_s)(int16_t si1, int16_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-32767 -1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 % si2);
    }
    
    static int16_t
    (safe_div_func_int16_t_s_s)(int16_t si1, int16_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-32767 -1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 / si2);
    }
    
    static int16_t
    (safe_lshift_func_int16_t_s_s)(int16_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > ((32767) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static int16_t
    (safe_lshift_func_int16_t_s_u)(int16_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32) || (left > ((32767) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static int16_t
    (safe_rshift_func_int16_t_s_s)(int16_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static int16_t
    (safe_rshift_func_int16_t_s_u)(int16_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    static int32_t
    (safe_unary_minus_func_int32_t_s)(int32_t si)
    {
      return
    
    
        (si==(-2147483647 -1)) ?
        ((si)) :
    
    
        -si;
    }
    
    static int32_t
    (safe_add_func_int32_t_s_s)(int32_t si1, int32_t si2)
    {
      return
    
    
        (((si1>0) && (si2>0) && (si1 > ((2147483647)-si2))) || ((si1<0) && (si2<0) && (si1 < ((-2147483647 -1)-si2)))) ?
        ((si1)) :
    
    
        (si1 + si2);
    }
    
    static int32_t
    (safe_sub_func_int32_t_s_s)(int32_t si1, int32_t si2)
    {
      return
    
    
        (((si1^si2) & (((si1 ^ ((si1^si2) & (~(2147483647))))-si2)^si2)) < 0) ?
        ((si1)) :
    
    
        (si1 - si2);
    }
    
    static int32_t
    (safe_mul_func_int32_t_s_s)(int32_t si1, int32_t si2)
    {
      return
    
    
        (((si1 > 0) && (si2 > 0) && (si1 > ((2147483647) / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < ((-2147483647 -1) / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < ((-2147483647 -1) / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < ((2147483647) / si1)))) ?
        ((si1)) :
    
    
        si1 * si2;
    }
    
    static int32_t
    (safe_mod_func_int32_t_s_s)(int32_t si1, int32_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-2147483647 -1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 % si2);
    }
    
    static int32_t
    (safe_div_func_int32_t_s_s)(int32_t si1, int32_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-2147483647 -1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 / si2);
    }
    
    static int32_t
    (safe_lshift_func_int32_t_s_s)(int32_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > ((2147483647) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static int32_t
    (safe_lshift_func_int32_t_s_u)(int32_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32) || (left > ((2147483647) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static int32_t
    (safe_rshift_func_int32_t_s_s)(int32_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static int32_t
    (safe_rshift_func_int32_t_s_u)(int32_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    
    static int64_t
    (safe_unary_minus_func_int64_t_s)(int64_t si)
    {
      return
    
    
        (si==(-9223372036854775807LL -1)) ?
        ((si)) :
    
    
        -si;
    }
    
    static int64_t
    (safe_add_func_int64_t_s_s)(int64_t si1, int64_t si2)
    {
      return
    
    
        (((si1>0) && (si2>0) && (si1 > ((9223372036854775807LL)-si2))) || ((si1<0) && (si2<0) && (si1 < ((-9223372036854775807LL -1)-si2)))) ?
        ((si1)) :
    
    
        (si1 + si2);
    }
    
    static int64_t
    (safe_sub_func_int64_t_s_s)(int64_t si1, int64_t si2)
    {
      return
    
    
        (((si1^si2) & (((si1 ^ ((si1^si2) & (~(9223372036854775807LL))))-si2)^si2)) < 0) ?
        ((si1)) :
    
    
        (si1 - si2);
    }
    
    static int64_t
    (safe_mul_func_int64_t_s_s)(int64_t si1, int64_t si2)
    {
      return
    
    
        (((si1 > 0) && (si2 > 0) && (si1 > ((9223372036854775807LL) / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < ((-9223372036854775807LL -1) / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < ((-9223372036854775807LL -1) / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < ((9223372036854775807LL) / si1)))) ?
        ((si1)) :
    
    
        si1 * si2;
    }
    
    static int64_t
    (safe_mod_func_int64_t_s_s)(int64_t si1, int64_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-9223372036854775807LL -1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 % si2);
    }
    
    static int64_t
    (safe_div_func_int64_t_s_s)(int64_t si1, int64_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-9223372036854775807LL -1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 / si2);
    }
    
    static int64_t
    (safe_lshift_func_int64_t_s_s)(int64_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > ((9223372036854775807LL) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static int64_t
    (safe_lshift_func_int64_t_s_u)(int64_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32) || (left > ((9223372036854775807LL) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static int64_t
    (safe_rshift_func_int64_t_s_s)(int64_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static int64_t
    (safe_rshift_func_int64_t_s_u)(int64_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    
    
    
    
    static uint8_t
    (safe_unary_minus_func_uint8_t_u)(uint8_t ui)
    {
      return -ui;
    }
    
    static uint8_t
    (safe_add_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2)
    {
      return ui1 + ui2;
    }
    
    static uint8_t
    (safe_sub_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2)
    {
      return ui1 - ui2;
    }
    
    static uint8_t
    (safe_mul_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2)
    {
      return ((unsigned int)ui1) * ((unsigned int)ui2);
    }
    
    static uint8_t
    (safe_mod_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 % ui2);
    }
    
    static uint8_t
    (safe_div_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 / ui2);
    }
    
    static uint8_t
    (safe_lshift_func_uint8_t_u_s)(uint8_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32) || (left > ((255) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static uint8_t
    (safe_lshift_func_uint8_t_u_u)(uint8_t left, unsigned int right)
    {
      return
    
        ((((unsigned int)right) >= 32) || (left > ((255) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static uint8_t
    (safe_rshift_func_uint8_t_u_s)(uint8_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static uint8_t
    (safe_rshift_func_uint8_t_u_u)(uint8_t left, unsigned int right)
    {
      return
    
        (((unsigned int)right) >= 32) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    static uint16_t
    (safe_unary_minus_func_uint16_t_u)(uint16_t ui)
    {
      return -ui;
    }
    
    static uint16_t
    (safe_add_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2)
    {
      return ui1 + ui2;
    }
    
    static uint16_t
    (safe_sub_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2)
    {
      return ui1 - ui2;
    }
    
    static uint16_t
    (safe_mul_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2)
    {
      return ((unsigned int)ui1) * ((unsigned int)ui2);
    }
    
    static uint16_t
    (safe_mod_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 % ui2);
    }
    
    static uint16_t
    (safe_div_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 / ui2);
    }
    
    static uint16_t
    (safe_lshift_func_uint16_t_u_s)(uint16_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32) || (left > ((65535) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static uint16_t
    (safe_lshift_func_uint16_t_u_u)(uint16_t left, unsigned int right)
    {
      return
    
        ((((unsigned int)right) >= 32) || (left > ((65535) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static uint16_t
    (safe_rshift_func_uint16_t_u_s)(uint16_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static uint16_t
    (safe_rshift_func_uint16_t_u_u)(uint16_t left, unsigned int right)
    {
      return
    
        (((unsigned int)right) >= 32) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    static uint32_t
    (safe_unary_minus_func_uint32_t_u)(uint32_t ui)
    {
      return -ui;
    }
    
    static uint32_t
    (safe_add_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2)
    {
      return ui1 + ui2;
    }
    
    static uint32_t
    (safe_sub_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2)
    {
      return ui1 - ui2;
    }
    
    static uint32_t
    (safe_mul_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2)
    {
      return ((unsigned int)ui1) * ((unsigned int)ui2);
    }
    
    static uint32_t
    (safe_mod_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 % ui2);
    }
    
    static uint32_t
    (safe_div_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 / ui2);
    }
    
    static uint32_t
    (safe_lshift_func_uint32_t_u_s)(uint32_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32) || (left > ((4294967295U) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static uint32_t
    (safe_lshift_func_uint32_t_u_u)(uint32_t left, unsigned int right)
    {
      return
    
        ((((unsigned int)right) >= 32) || (left > ((4294967295U) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static uint32_t
    (safe_rshift_func_uint32_t_u_s)(uint32_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static uint32_t
    (safe_rshift_func_uint32_t_u_u)(uint32_t left, unsigned int right)
    {
      return
    
        (((unsigned int)right) >= 32) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    
    static uint64_t
    (safe_unary_minus_func_uint64_t_u)(uint64_t ui)
    {
      return -ui;
    }
    
    static uint64_t
    (safe_add_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2)
    {
      return ui1 + ui2;
    }
    
    static uint64_t
    (safe_sub_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2)
    {
      return ui1 - ui2;
    }
    
    static uint64_t
    (safe_mul_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2)
    {
      return ((unsigned long long int)ui1) * ((unsigned long long int)ui2);
    }
    
    static uint64_t
    (safe_mod_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 % ui2);
    }
    
    static uint64_t
    (safe_div_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 / ui2);
    }
    
    static uint64_t
    (safe_lshift_func_uint64_t_u_s)(uint64_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32) || (left > ((18446744073709551615ULL) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static uint64_t
    (safe_lshift_func_uint64_t_u_u)(uint64_t left, unsigned int right)
    {
      return
    
        ((((unsigned int)right) >= 32) || (left > ((18446744073709551615ULL) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static uint64_t
    (safe_rshift_func_uint64_t_u_s)(uint64_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static uint64_t
    (safe_rshift_func_uint64_t_u_u)(uint64_t left, unsigned int right)
    {
      return
    
        (((unsigned int)right) >= 32) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    # 97 "/mnt/z/csmith/runtime/random_inc.h" 2
    # 11 "foo.c" 2
    
    volatile uint64_t csmith_sink_ = 0;
    
    long __undefined;
    
    
    struct S0 {
       signed f0 : (((57)>(sizeof(int)*8))?((57)%(sizeof(int)*8)):(57));
       signed f1 : (((55)>(sizeof(int)*8))?((55)%(sizeof(int)*8)):(55));
       const unsigned f2 : (((51)>(sizeof(int)*8))?((51)%(sizeof(int)*8)):(51));
       signed f3 : (((55)>(sizeof(int)*8))?((55)%(sizeof(int)*8)):(55));
       unsigned f4 : (((54)>(sizeof(int)*8))?((54)%(sizeof(int)*8)):(54));
       unsigned f5 : (((47)>(sizeof(int)*8))?((47)%(sizeof(int)*8)):(47));
       unsigned f6 : (((58)>(sizeof(int)*8))?((58)%(sizeof(int)*8)):(58));
       const signed f7 : (((43)>(sizeof(int)*8))?((43)%(sizeof(int)*8)):(43));
       unsigned f8 : (((45)>(sizeof(int)*8))?((45)%(sizeof(int)*8)):(45));
    };
    
    
    int32_t g_2 = -1L;
    int8_t g_30 = -6L;
    uint32_t g_105 = 1L;
    uint32_t g_115 = 0L;
    int32_t g_116 = 0xC67607BBL;
    struct S0 g_120 = {-59422054,-90435338,1250586654,-104614084,832350836,9362872,670156235,-167606,689247421};
    int32_t g_213 = 0x902EFDF3L;
    int16_t g_294 = 1L;
    
    
    
    uint64_t func_1(void);
    int32_t func_14(int32_t p_15);
    int32_t func_16(int32_t p_17, int64_t p_18, uint32_t p_19, uint16_t p_20, uint32_t p_21);
    int32_t func_24( const uint8_t p_25, int32_t p_26, int32_t p_27, int64_t p_28, uint8_t p_29);
    int32_t func_38(uint32_t p_39, int8_t p_40, int32_t p_41);
     const int32_t func_48(uint32_t p_49, struct S0 p_50, int16_t p_51, int8_t p_52);
    int32_t func_79(int16_t p_80, int32_t p_81);
    struct S0 func_88(int8_t p_89);
    int32_t func_99(uint16_t p_100, int64_t p_101, uint64_t p_102, uint8_t p_103);
    int32_t func_111(int64_t p_112, uint32_t p_113);
    # 59 "foo.c"
    uint64_t func_1(void)
    {
        int64_t l_9 = 0x4981FF29ACD40988LL;
        struct S0 l_341 = {-282075620,-149402920,867949404,-166653106,1947485974,2110398993,1012503990,-2352815,1810850730};
        for (g_2 = -24; (g_2 <= 0); g_2 = safe_sub_func_int16_t_s_s (g_2, 1))
        {
            int64_t l_308 = -4L;
            int32_t l_315 = -1L;
            int16_t l_330 = 0x13B3L;
            if (g_2)
            {
                uint8_t l_307 = 0x0AL;
                int32_t l_309 = 0xB2597998L;
                if ((((safe_add_func_int64_t_s_s (0L, ((g_2 > (safe_add_func_uint8_t_u_u (l_9, g_2))) <= 1L))) > (safe_sub_func_int8_t_s_s ((g_2 || (0x0D68F985L < (g_2 > l_9))), ((safe_sub_func_int64_t_s_s ((g_2 | g_2), func_14(l_307))) != ((l_307 && g_294) || 2L))))) != l_308))
                {
                    int64_t l_323 = 0x6AD0AE36DBBD370ALL;
    lbl_316:
                    l_309 |= l_9;
                    for (g_2 = -11; (g_2 != 24); g_2 = safe_add_func_int64_t_s_s (g_2, 1))
                    {
                        uint32_t l_312 = 2L;
                        l_312 ^= g_105;
                    }
                    if ((safe_div_func_uint64_t_u_u ((!l_315), g_2)))
                    {
                        uint32_t l_320 = 0x26B157E5L;
                        if (g_120.f2)
                            goto lbl_316;
                        for (g_115 = 0; (g_115 < -17); g_115 = safe_sub_func_uint16_t_u_u (g_115, 2))
                        {
                            uint32_t l_319 = 0x199B3750L;
                            l_319 = 2L;
                            g_120.f3 = (l_320 | l_320);
                        }
                    }
                    else
                    {
                        int64_t l_326 = 0x4E3854A16A100968LL;
                        uint64_t l_329 = 0xD2E82F85C9947E1CLL;
                        int32_t l_331 = 1L;
                        g_120.f3 = func_24(g_116, g_120.f8, l_315, (safe_add_func_int32_t_s_s (l_323, (safe_rshift_func_uint16_t_u_u (l_326, -1L)))), g_120.f4);
                        l_331 = ((safe_mul_func_int16_t_s_s (g_120.f8, 0x26348B1DL)) | ((9L <= ((func_16(l_329, g_120.f7, l_315, g_115, g_120.f4) != (g_120.f8 & l_308)) & (l_330 | (g_120.f4 && g_120.f6)))) && l_309));
                        g_120.f3 = (((4L >= l_309) > (safe_sub_func_uint16_t_u_u ((safe_add_func_int8_t_s_s (1L, ((g_120.f0 | l_9) ^ (g_120.f0 != l_323)))), l_329))) > (g_115 && func_99(func_38(g_120.f2, func_99(l_308, g_120.f6, g_120.f4, (g_120.f5 && l_309)), l_329), g_213, l_307, l_329)));
                    }
                }
                else
                {
                    for (g_116 = 0; (g_116 != 0); g_116 = safe_sub_func_int32_t_s_s (g_116, 1))
                    {
                        return g_116;
                    }
                    return l_307;
                }
            }
            else
            {
                int8_t l_342 = 3L;
                if ((g_120.f5 | ((safe_rshift_func_int8_t_s_u ((safe_unary_minus_func_int16_t_s (g_115)), 0x20149C64L)) < func_99(g_120.f1, func_48(l_9, l_341, l_342, l_342), g_120.f5, l_330))))
                {
                    int64_t l_353 = -7L;
    lbl_357:
                    for (g_105 = 0; (g_105 <= 23); g_105 = safe_add_func_uint32_t_u_u (g_105, 1))
                    {
                        uint8_t l_354 = 8L;
                        for (g_2 = 0; (g_2 <= -25); g_2 = safe_add_func_uint16_t_u_u (g_2, 2))
                        {
                            g_120.f1 = (safe_mul_func_uint16_t_u_u ((safe_rshift_func_int16_t_s_s ((g_116 || (safe_lshift_func_int16_t_s_u (0xAA1E9C32L, 0xD9FBA2D4L))), l_353)), (0L || l_354)));
                            g_120.f0 = l_341.f6;
                        }
                        for (g_115 = -16; (g_115 != 0); g_115 = safe_sub_func_int16_t_s_s (g_115, 0))
                        {
                            g_2 = g_120.f0;
                            if (g_120.f2)
                                goto lbl_357;
                        }
                        return l_354;
                    }
                    for (g_213 = 1; (g_213 >= -21); g_213 = safe_sub_func_uint32_t_u_u (g_213, 4))
                    {
                        if (l_341.f7)
                            goto lbl_357;
                        g_120.f1 = l_353;
                    }
                }
                else
                {
                    g_120.f0 = g_120.f6;
                    return l_342;
                }
            }
        }
        g_2 &= (g_115 != g_120.f6);
        for (g_30 = 0; (g_30 >= 0); g_30 = safe_add_func_uint64_t_u_u (g_30, 1))
        {
            uint16_t l_362 = -1L;
            l_362 = g_2;
        }
        g_120.f1 = (safe_add_func_int16_t_s_s (((safe_mul_func_int8_t_s_s (0xFFBABD68L, l_341.f5)) > func_111(g_120.f5, g_120.f0)), g_120.f2));
        return l_341.f1;
    }
    
    
    
    
    
    
    
    int32_t func_14(int32_t p_15)
    {
        uint32_t l_303 = 0x4744A534L;
        int32_t l_304 = 0xE5AF4E9BL;
        p_15 = (!(p_15 <= (1L != g_2)));
        l_304 = (func_16(0x213B5F93L, 0x1A74C5E4DCB4F3F1LL, g_120.f8, p_15, g_294) ^ func_99(p_15, g_294, l_303, l_303));
        p_15 = (safe_div_func_int32_t_s_s (func_79(p_15, g_120.f7), 0x3BF90D25L));
        return p_15;
    }
    
    
    
    
    
    
    
    int32_t func_16(int32_t p_17, int64_t p_18, uint32_t p_19, uint16_t p_20, uint32_t p_21)
    {
         const int32_t l_295 = 0x1DF76A9FL;
        int64_t l_300 = -1L;
        g_120.f1 = (safe_div_func_int16_t_s_s (func_24(l_295, p_17, g_120.f2, (+l_295), ((func_99(func_79(p_19, g_120.f5), 0xFC40FA6E5D1AB092LL, func_99(l_295, l_295, g_30, l_295), g_120.f7) | g_120.f8) != (safe_mul_func_uint8_t_u_u (((p_20 > l_295) ^ (safe_sub_func_uint32_t_u_u (g_120.f7, l_300))), func_38(p_20, l_295, -4L))))), ((!0L) && (~(-1L != func_99(l_300, g_120.f5, (safe_add_func_int16_t_s_s (g_120.f4, g_294)), p_17))))));
        return l_300;
    }
    
    
    
    
    
    
    
    int32_t func_24( const uint8_t p_25, int32_t p_26, int32_t p_27, int64_t p_28, uint8_t p_29)
    {
        int32_t l_31 = 0L;
        uint32_t l_43 = 8L;
        uint64_t l_69 = 1L;
        struct S0 l_291 = {-154704865,-126900205,34333187,-46761683,827615334,796879025,386651485,-1459367,2147349101};
    lbl_32:
        g_30 = p_28;
        if (l_31)
        {
            uint64_t l_35 = 0x4353EA3A7221EBC5LL;
    lbl_36:
            if (p_28)
                goto lbl_32;
            if (g_2)
            {
                if ((p_26 != (safe_lshift_func_uint8_t_u_u (-8L, l_35))))
                {
                    if (g_2)
                        goto lbl_36;
                    return p_27;
                }
                else
                {
                    if (l_31)
                        goto lbl_32;
                    return p_28;
                }
            }
            else
            {
                int16_t l_37 = -1L;
                struct S0 l_62 = {-2936538,-51703155,1722981813,-43821101,1977143839,308819526,1185867001,-2241198,1577116708};
                int64_t l_74 = 0x9E2962DE1B453F47LL;
                uint8_t l_281 = -4L;
                if (l_31)
                {
                    int32_t l_63 = 0x57DCCC76L;
                    if (((-1L > ((p_28 | ((l_37 & g_2) & (p_27 && g_30))) != (~p_26))) & func_38(l_43, (((safe_add_func_uint8_t_u_u ((safe_sub_func_int64_t_s_s (g_2, p_27)), func_48(p_26, l_62, l_35, p_29))) == l_63) || l_31), (0x8915D489L == g_30))))
                    {
                        return g_30;
                    }
                    else
                    {
                        uint64_t l_66 = 1L;
                        g_120.f0 = (safe_lshift_func_uint16_t_u_u (l_66, ((l_62.f6 == (((safe_mod_func_int8_t_s_s (g_2, l_69)) >= (safe_sub_func_uint8_t_u_u (p_27, l_66))) ^ (safe_rshift_func_int16_t_s_s ((g_30 >= p_27), (l_62.f1 < p_25))))) ^ func_38(g_30, l_74, (safe_mul_func_uint8_t_u_u (((p_25 > p_26) != l_62.f2), (safe_add_func_uint32_t_u_u (func_79(l_43, p_29), (safe_sub_func_uint16_t_u_u (g_120.f7, g_120.f4))))))))));
                        return l_63;
                    }
                }
                else
                {
                    return l_281;
                }
            }
        }
        else
        {
            int32_t l_284 = -1L;
            for (g_105 = -23; (g_105 <= 25); g_105 = safe_add_func_int64_t_s_s (g_105, 0))
            {
                g_120.f0 &= func_99(g_213, p_26, l_284, p_29);
                if (g_2)
                    break;
            }
            p_27 = (safe_div_func_uint64_t_u_u (((+(func_111(p_26, p_25) != ((l_43 || p_28) >= (g_30 & g_120.f5)))) >= g_120.f6), 0xD4E24FC9L));
        }
        g_120.f3 = (l_43 < l_31);
        l_291.f0 = (p_29 ^ ((((p_28 ^ (l_69 ^ p_29)) == g_120.f1) != func_99(l_31, (safe_mul_func_uint16_t_u_u (0x75CEE96CL, (safe_mod_func_int32_t_s_s (p_29, l_31)))), (p_26 == func_48(l_31, l_291, p_27, p_27)), (g_116 ^ func_99(p_26, g_2, l_69, p_28)))) > (0x06015CD3L == ((safe_add_func_int64_t_s_s (g_120.f1, g_120.f3)) != g_294))));
        return g_294;
    }
    
    
    
    
    
    
    
    int32_t func_38(uint32_t p_39, int8_t p_40, int32_t p_41)
    {
        int64_t l_42 = 0xDC630DE2FD17BA7DLL;
        p_41 = l_42;
        return l_42;
    }
    
    
    
    
    
    
    
     const int32_t func_48(uint32_t p_49, struct S0 p_50, int16_t p_51, int8_t p_52)
    {
         const uint64_t l_57 = 1L;
        for (p_52 = 0; (p_52 < -18); p_52 = safe_sub_func_uint32_t_u_u (p_52, 1))
        {
            uint32_t l_58 = 0x8784865EL;
            int32_t l_61 = 5L;
            l_61 |= func_38(g_2, (safe_mul_func_uint16_t_u_u (l_57, ((l_58 ^ 0x8BF51449L) != 0xBE4A9FF1L))), (safe_lshift_func_int8_t_s_s (-1L, 7L)));
        }
        return p_50.f1;
    }
    
    
    
    
    
    
    
    int32_t func_79(int16_t p_80, int32_t p_81)
    {
        int16_t l_84 = -1L;
         const uint8_t l_214 = 0xF4L;
        struct S0 l_242 = {157369709,19655370,1742552889,122449506,1194135673,1246422807,1697545360,-1535771,1540399715};
        uint16_t l_272 = -3L;
        for (p_81 = 0; (p_81 >= 0); p_81 = safe_add_func_int8_t_s_s (p_81, 2))
        {
            int64_t l_87 = 0x482A8E6F95D92507LL;
            uint16_t l_212 = 1L;
            int32_t l_223 = 8L;
            g_213 = ((p_80 ^ ((+func_38(p_81, l_84, p_81)) || (((safe_rshift_func_uint16_t_u_s (g_30, l_84)) < p_80) && func_48(l_87, func_88(g_120.f8), p_80, (p_80 >= l_212))))) && -9L);
            if (l_212)
                break;
            if (((+l_214) && g_120.f2))
            {
                return g_120.f5;
            }
            else
            {
                for (p_80 = -7; (p_80 == 11); p_80 = safe_add_func_int8_t_s_s (p_80, 7))
                {
                    return p_81;
                }
                g_120.f0 = (safe_sub_func_int16_t_s_s ((safe_mul_func_int8_t_s_s (l_84, (0xCBFF400BL <= ((safe_sub_func_uint16_t_u_u (func_99(g_115, p_80, g_120.f0, l_223), (safe_div_func_uint32_t_u_u (p_81, g_120.f7)))) ^ func_48(g_2, g_120, (p_80 > g_120.f4), p_81))))), (safe_mul_func_uint16_t_u_u (5L, ((safe_div_func_uint64_t_u_u (((safe_lshift_func_uint16_t_u_s (g_120.f1, 0xB726C377L)) || (safe_sub_func_int32_t_s_s (l_212, g_115))), 0x512477A0L)) | g_115)))));
                p_81 = p_81;
                if (l_212)
                    continue;
            }
            if (l_212)
                break;
        }
        g_120.f1 = ((safe_lshift_func_int8_t_s_s (func_48(p_81, g_120, (safe_mul_func_uint16_t_u_u ((safe_div_func_int16_t_s_s ((l_84 | p_80), l_214)), l_84)), 0L), func_38(func_99((safe_lshift_func_int8_t_s_u (8L, 5L)), p_80, ((g_120.f7 ^ g_120.f0) <= 0xF4BB7FEAL), func_38(l_214, p_80, g_120.f1)), 0x35L, -6L))) > (func_48(l_84, l_242, l_242.f0, l_242.f4) | g_105));
        for (g_115 = 0; (g_115 <= 3); g_115 = safe_sub_func_uint16_t_u_u (g_115, 2))
        {
            uint32_t l_255 = 0x6BB3E926L;
            p_81 = ((!((p_80 <= (p_80 & (safe_mul_func_int8_t_s_s (g_120.f7, p_80)))) > (safe_lshift_func_int16_t_s_s (-3L, 0x741E8B38L)))) == (l_242.f4 || (safe_mul_func_int16_t_s_s ((safe_add_func_int32_t_s_s ((safe_mul_func_int8_t_s_s ((l_84 ^ g_120.f4), p_81)), func_48(l_255, g_120, l_242.f5, func_99(l_255, g_120.f6, g_120.f2, g_105)))), ((+(safe_div_func_uint64_t_u_u (g_105, g_120.f1))) && (safe_sub_func_int64_t_s_s (-1L, (safe_add_func_int8_t_s_s (g_120.f5, p_80)))))))));
            if (g_120.f3)
            {
    lbl_278:
                l_242.f1 = p_81;
                g_120.f1 = -1L;
                if (g_2)
                    break;
                if ((safe_unary_minus_func_int16_t_s ((safe_sub_func_int64_t_s_s ((safe_mul_func_uint8_t_u_u ((((safe_div_func_int32_t_s_s (g_120.f3, g_120.f2)) || 0x46A1A6AEL) || p_81), p_80)), 0x737E1BAFL)))))
                {
                    for (g_115 = 0; (g_115 == 0); g_115 = safe_sub_func_int32_t_s_s (g_115, 1))
                    {
                        uint16_t l_271 = 9L;
                        if (l_271)
                            break;
                        if ((func_99(l_271, 0x40898BEAC2537462LL, l_242.f1, l_272) != g_213))
                        {
                            return l_255;
                        }
                        else
                        {
                            int32_t l_277 = 0x9841E669L;
                            g_120.f0 ^= (safe_lshift_func_int8_t_s_s (func_38(func_38(l_255, (p_81 < (safe_add_func_int16_t_s_s ((g_120.f3 > p_80), g_120.f1))), -1L), g_105, p_81), 0xA580E2C1L));
                            g_120.f0 = (((1L ^ g_115) ^ l_277) < p_80);
                        }
                    }
                }
                else
                {
                    if (g_120.f1)
                        goto lbl_278;
                }
            }
            else
            {
                return p_80;
            }
            g_120.f1 = g_120.f4;
        }
        return p_81;
    }
    
    
    
    
    
    
    
    struct S0 func_88(int8_t p_89)
    {
        int16_t l_92 = 3L;
        int32_t l_93 = 7L;
        struct S0 l_98 = {49396301,176118181,67006196,-32756758,1729724073,169529492,1762062287,2394281,1878675034};
        uint16_t l_104 = -1L;
        int32_t l_211 = 0xB6AC6256L;
    lbl_106:
        l_93 = (safe_sub_func_uint16_t_u_u (l_92, (~l_92)));
        g_105 = (safe_lshift_func_int8_t_s_u (((g_2 & ((-1L <= l_92) && ((~l_92) > (g_2 != l_92)))) && (safe_rshift_func_uint16_t_u_s (((l_93 && func_48(p_89, l_98, l_98.f5, p_89)) <= func_99((p_89 < p_89), l_104, p_89, 0x31L)), 0xE16D896CL))), l_92));
        if (l_92)
            goto lbl_106;
        l_98.f0 = (safe_add_func_uint32_t_u_u (-1L, (safe_add_func_uint8_t_u_u ((func_111(-8L, ((g_120.f3 >= g_120.f3) && func_48(l_98.f6, g_120, p_89, g_116))) < ((safe_mul_func_uint16_t_u_u ((safe_lshift_func_uint16_t_u_u (p_89, 3L)), (g_120.f5 & g_120.f2))) > (safe_lshift_func_uint16_t_u_u (g_30, (p_89 || l_211))))), g_2))));
        return l_98;
    }
    
    
    
    
    
    
    
    int32_t func_99(uint16_t p_100, int64_t p_101, uint64_t p_102, uint8_t p_103)
    {
        return g_2;
    }
    
    
    
    
    
    
    
    int32_t func_111(int64_t p_112, uint32_t p_113)
    {
        int16_t l_114 = 0x0B13L;
        struct S0 l_170 = {-49486352,98037472,643731003,179020800,2064868596,2032643430,2121448643,-2872390,1366167737};
        uint64_t l_204 = 0x326FF569DE83E9DELL;
        if (func_99(p_112, p_112, l_114, (l_114 ^ l_114)))
        {
            g_115 = p_112;
            if (l_114)
                goto lbl_203;
    lbl_117:
            g_116 &= (0x99130DA5L <= ((-4L || g_30) == g_105));
        }
        else
        {
             const int16_t l_121 = 0L;
            struct S0 l_133 = {-228109339,-170095282,1655021825,-22010662,270760623,1797062898,542062490,785208,827877996};
            int64_t l_158 = 7L;
            if (p_112)
                goto lbl_117;
            if ((~(safe_rshift_func_uint8_t_u_u ((g_115 ^ (func_48(p_113, g_120, (l_121 & p_112), g_120.f6) | ((p_112 && g_2) <= g_105))), 0L))))
            {
                struct S0 l_126 = {-277506572,-112390587,1358706360,-23674840,1559578989,1323846076,1587296507,1259291,1547991673};
                l_133.f0 = ((safe_mul_func_uint16_t_u_u (0xB9E22A41L, (safe_mod_func_int16_t_s_s ((func_48(0L, l_126, l_126.f3, g_120.f2) != l_114), (safe_mod_func_int32_t_s_s (func_48(g_120.f8, l_126, l_121, (l_121 >= l_126.f5)), g_120.f1)))))) ^ (safe_mod_func_int64_t_s_s (l_121, func_99((func_99(l_126.f5, p_113, l_126.f2, (~l_121)) | l_121), p_113, g_115, (safe_lshift_func_uint8_t_u_u (func_48(g_120.f1, l_133, l_114, p_112), -9L))))));
                return l_126.f0;
            }
            else
            {
                int64_t l_139 = 0x9B7AB548CD50E3CELL;
                int32_t l_178 = 0xA2D5331AL;
                struct S0 l_193 = {-144575066,163885187,657262498,162937252,619829615,920009196,1298434155,-18800,1778872192};
                int32_t l_194 = 1L;
                for (g_115 = 15; (g_115 > -26); g_115 = safe_sub_func_int16_t_s_s (g_115, 9))
                {
                    if (g_120.f6)
                        break;
                    return g_120.f1;
                }
                for (g_115 = 0; (g_115 >= 4); g_115 = safe_sub_func_uint32_t_u_u (g_115, 1))
                {
                    uint8_t l_147 = 2L;
                    int32_t l_163 = -8L;
                    if (g_120.f1)
                    {
                        uint32_t l_138 = 0xE5B6355DL;
                        int64_t l_140 = 0xA0D7201B9F6C78DDLL;
                        g_120.f3 = l_138;
                        if (l_139)
                            continue;
                        return l_140;
                    }
                    else
                    {
                        int16_t l_183 = 0x8058L;
                        int32_t l_199 = 2L;
                        for (l_139 = 0; (l_139 == 0); l_139 = safe_sub_func_uint32_t_u_u (l_139, 5))
                        {
                            int16_t l_162 = 0x3D13L;
                            g_120.f0 = (safe_add_func_uint8_t_u_u ((safe_div_func_uint16_t_u_u (((l_147 > p_113) < (0xDBDA42F3L ^ (safe_add_func_int64_t_s_s (p_112, (~l_114))))), (safe_add_func_int16_t_s_s (p_113, g_115)))), (safe_lshift_func_uint8_t_u_s (4L, ((safe_lshift_func_uint8_t_u_u ((safe_rshift_func_uint16_t_u_u (func_38(g_120.f7, p_113, g_105), 0L)), g_120.f7)) || g_120.f1)))));
                            l_163 |= ((func_38(p_113, l_139, l_158) >= l_139) && (safe_mul_func_int16_t_s_s ((safe_unary_minus_func_uint8_t_u (l_139)), l_162)));
                            l_178 = (!((safe_add_func_int16_t_s_s ((safe_mul_func_uint8_t_u_u ((safe_sub_func_int32_t_s_s (g_120.f7, (g_120.f1 == g_2))), func_48(g_120.f6, l_170, -9L, p_112))), (safe_rshift_func_int8_t_s_s ((-8L & (~g_120.f6)), (+(safe_rshift_func_uint8_t_u_u (g_115, g_120.f7))))))) & (safe_sub_func_int32_t_s_s ((l_139 < ((safe_unary_minus_func_uint16_t_u (p_113)) | (+l_162))), ((g_116 | g_120.f0) != -1L)))));
                        }
                        for (l_163 = 0; (l_163 >= 0); l_163 = safe_sub_func_int8_t_s_s (l_163, 2))
                        {
                            int32_t l_192 = 0x49A46C97L;
                            l_199 = func_99(g_120.f2, func_99((1L > (((g_105 < g_120.f2) | (p_113 <= p_113)) != -1L)), (safe_mod_func_uint32_t_u_u ((~l_183), p_112)), p_112, g_115), (safe_lshift_func_int16_t_s_u ((safe_div_func_int16_t_s_s (func_38(p_113, (safe_lshift_func_uint16_t_u_s ((safe_mul_func_int16_t_s_s (l_192, g_120.f3)), func_48(p_112, l_193, g_120.f0, p_113))), (l_194 != (safe_mod_func_uint16_t_u_u (l_192, g_120.f2)))), (l_192 != (safe_mul_func_uint16_t_u_u (p_112, (g_120.f4 < g_120.f0)))))), func_48(p_113, g_120, 3L, g_120.f4))), p_113);
                        }
                        if (l_193.f2)
                            goto lbl_200;
                    }
    lbl_200:
                    l_193.f0 = g_105;
                    l_133.f3 = l_163;
                }
            }
            g_120.f1 = (((safe_mul_func_uint16_t_u_u (p_112, g_120.f6)) < p_112) <= p_113);
        }
    lbl_203:
        g_120.f1 = 1L;
        return l_204;
    }
    
    
    
    
    
    int main (void)
    {
        int print_hash_value = 0;
        platform_main_begin();
        func_1();
        csmith_sink_ = g_2;
        csmith_sink_ = g_30;
        csmith_sink_ = g_105;
        csmith_sink_ = g_115;
        csmith_sink_ = g_116;
        csmith_sink_ = g_120.f0;
        csmith_sink_ = g_120.f1;
        csmith_sink_ = g_120.f2;
        csmith_sink_ = g_120.f3;
        csmith_sink_ = g_120.f4;
        csmith_sink_ = g_120.f5;
        csmith_sink_ = g_120.f6;
        csmith_sink_ = g_120.f7;
        csmith_sink_ = g_120.f8;
        csmith_sink_ = g_213;
        csmith_sink_ = g_294;
        platform_main_end(0);
        return 0;
    }
    
    c file icon foo_pp.c (56,338 bytes) 2011-02-13 23:14 +

-Relationships
+Relationships

-Notes

~0001490

pascal (reporter)

This test reveals an issue when passing bitfields in argument to functions. But this issue may not be the one causing the incorrect analysis, it's just the first one I noticed.

~0001492

pascal (reporter)

In 11872 no alarm is emitted and the predicted value of g_115 is still the same (different from gcc -m32), so it's indeed a soundness issue other than the first one that caught my eye.

~0001535

pascal (reporter)

The first correctness problem that, with 12189, happens in this program, can be reproduced with the program below.

struct t1 { unsigned int a:2; int b:4; int c:22;} h;

struct t1 ini = { 14, -55, 99999 } ;

main() { Frama_C_dump_each(); return 0; }

~0004826

pascal (reporter)

Fix committed to stable/neon branch.
+Notes

-Issue History
Date Modified Username Field Change
2011-02-13 23:14 regehr New Issue
2011-02-13 23:14 regehr Status new => assigned
2011-02-13 23:14 regehr Assigned To => pascal
2011-02-13 23:14 regehr File Added: foo_pp.c
2011-02-13 23:50 pascal Note Added: 0001490
2011-02-13 23:50 pascal Status assigned => acknowledged
2011-02-14 01:06 svn
2011-02-14 01:09 pascal Note Added: 0001492
2011-02-14 01:11 pascal Status acknowledged => confirmed
2011-03-04 16:50 pascal Note Added: 0001535
2011-03-04 16:54 pascal Product Version Frama-C GIT, precise the release id => Frama-C Carbon-20110201
2011-03-04 16:54 pascal Summary possible unsoundness in r11870 => Unsoundness in value analysis when bitfield initializer exceeds range (csmith)
2011-03-04 17:58 svn
2011-03-04 17:58 svn Status confirmed => resolved
2011-03-04 17:58 svn Resolution open => fixed
2011-10-10 14:13 signoles Fixed in Version => Frama-C Nitrogen-20111001
2011-10-10 14:14 signoles Status resolved => closed
2013-12-19 01:12 pascal Source_changeset_attached => framac master 45f30f4f
2013-12-19 01:12 pascal Source_changeset_attached => framac master 2495456d
2014-02-12 16:54 pascal Source_changeset_attached => framac stable/neon 45f30f4f
2014-02-12 16:54 pascal Source_changeset_attached => framac stable/neon 2495456d
2014-02-12 16:59 pascal Note Added: 0004826
2014-02-12 16:59 pascal Status closed => resolved
2018-01-12 14:26 signoles Category Plug-in > value analysis => Plug-in > Eva
+Issue History