modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/980526-2.c (about)

     1  typedef unsigned int dev_t;
     2  typedef unsigned int kdev_t;
     3  
     4  static inline kdev_t to_kdev_t(int dev)
     5  {
     6  	int major, minor;
     7  	
     8  	if (sizeof(kdev_t) == 16)
     9  		return (kdev_t)dev;
    10  	major = (dev >> 8);
    11  	minor = (dev & 0xff);
    12  	return ((( major ) << 22 ) | (  minor )) ;
    13  
    14  }
    15  
    16  void do_mknod(const char * filename, int mode, kdev_t dev)
    17  {
    18  	if (dev==0x15800078)
    19  		exit(0);
    20  	else
    21  		abort();
    22  }
    23  
    24  
    25  char * getname(const char * filename)
    26  {
    27  	register unsigned int a1,a2,a3,a4,a5,a6,a7,a8,a9;
    28  	a1 = (unsigned int)(filename) *5 + 1;
    29  	a2 = (unsigned int)(filename) *6 + 2;
    30  	a3 = (unsigned int)(filename) *7 + 3;
    31  	a4 = (unsigned int)(filename) *8 + 4;
    32  	a5 = (unsigned int)(filename) *9 + 5;
    33  	a6 = (unsigned int)(filename) *10 + 5;
    34  	a7 = (unsigned int)(filename) *11 + 5;
    35  	a8 = (unsigned int)(filename) *12 + 5;
    36  	a9 = (unsigned int)(filename) *13 + 5;
    37  	return (char *)(a1*a2+a3*a4+a5*a6+a7*a8+a9);
    38  }
    39  
    40  int sys_mknod(const char * filename, int mode, dev_t dev)
    41  {
    42  	int error;
    43  	char * tmp;
    44  
    45  	tmp = getname(filename);
    46  	error = ((long)( tmp )) ;
    47  	do_mknod(tmp,mode,to_kdev_t(dev));
    48  	return error;
    49  }
    50  
    51  int main(void)
    52  {
    53  	if (sizeof (int) != 4)
    54  	  exit (0);
    55  
    56  	return sys_mknod("test",1,0x12345678);
    57  }