modernc.org/cc@v1.0.1/testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/20040409-1.c (about)

     1  #include <limits.h>
     2  
     3  extern void abort ();
     4  
     5  int test1(int x)
     6  {
     7    return x ^ INT_MIN;
     8  }
     9  
    10  unsigned int test1u(unsigned int x)
    11  {
    12    return x ^ (unsigned int)INT_MIN;
    13  }
    14  
    15  int test2(int x)
    16  {
    17    return x + INT_MIN;
    18  }
    19  
    20  unsigned int test2u(unsigned int x)
    21  {
    22    return x + (unsigned int)INT_MIN;
    23  }
    24  
    25  int test3(int x)
    26  {
    27    return x - INT_MIN;
    28  }
    29  
    30  unsigned int test3u(unsigned int x)
    31  {
    32    return x - (unsigned int)INT_MIN;
    33  }
    34  
    35  int test4(int x)
    36  {
    37    int y = INT_MIN;
    38    return x ^ y;
    39  }
    40  
    41  unsigned int test4u(unsigned int x)
    42  {
    43    unsigned int y = (unsigned int)INT_MIN;
    44    return x ^ y;
    45  }
    46  
    47  int test5(int x)
    48  {
    49    int y = INT_MIN;
    50    return x + y;
    51  }
    52  
    53  unsigned int test5u(unsigned int x)
    54  {
    55    unsigned int y = (unsigned int)INT_MIN;
    56    return x + y;
    57  }
    58  
    59  int test6(int x)
    60  {
    61    int y = INT_MIN;
    62    return x - y;
    63  }
    64  
    65  unsigned int test6u(unsigned int x)
    66  {
    67    unsigned int y = (unsigned int)INT_MIN;
    68    return x - y;
    69  }
    70  
    71  
    72  
    73  void test(int a, int b)
    74  {
    75    if (test1(a) != b)
    76      abort();
    77    if (test2(a) != b)
    78      abort();
    79    if (test3(a) != b)
    80      abort();
    81    if (test4(a) != b)
    82      abort();
    83    if (test5(a) != b)
    84      abort();
    85    if (test6(a) != b)
    86      abort();
    87  }
    88  
    89  void testu(unsigned int a, unsigned int b)
    90  {
    91    if (test1u(a) != b)
    92      abort();
    93    if (test2u(a) != b)
    94      abort();
    95    if (test3u(a) != b)
    96      abort();
    97    if (test4u(a) != b)
    98      abort();
    99    if (test5u(a) != b)
   100      abort();
   101    if (test6u(a) != b)
   102      abort();
   103  }
   104  
   105  
   106  int main()
   107  {
   108  #if INT_MAX == 2147483647
   109    test(0x00000000,0x80000000);
   110    test(0x80000000,0x00000000);
   111    test(0x12345678,0x92345678);
   112    test(0x92345678,0x12345678);
   113    test(0x7fffffff,0xffffffff);
   114    test(0xffffffff,0x7fffffff);
   115  
   116    testu(0x00000000,0x80000000);
   117    testu(0x80000000,0x00000000);
   118    testu(0x12345678,0x92345678);
   119    testu(0x92345678,0x12345678);
   120    testu(0x7fffffff,0xffffffff);
   121    testu(0xffffffff,0x7fffffff);
   122  #endif
   123  
   124  #if INT_MAX == 32767
   125    test(0x0000,0x8000);
   126    test(0x8000,0x0000);
   127    test(0x1234,0x9234);
   128    test(0x9234,0x1234);
   129    test(0x7fff,0xffff);
   130    test(0xffff,0x7fff);
   131  
   132    testu(0x0000,0x8000);
   133    testu(0x8000,0x0000);
   134    testu(0x1234,0x9234);
   135    testu(0x9234,0x1234);
   136    testu(0x7fff,0xffff);
   137    testu(0xffff,0x7fff);
   138  #endif
   139  
   140    return 0;
   141  }
   142