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

     1  /* PR target/85095 */
     2  
     3  __attribute__((noipa)) unsigned long
     4  f1 (unsigned long a, unsigned long b)
     5  {
     6    unsigned long i = __builtin_add_overflow (a, b, &a);
     7    return a + i;
     8  }
     9  
    10  __attribute__((noipa)) unsigned long
    11  f2 (unsigned long a, unsigned long b)
    12  {
    13    unsigned long i = __builtin_add_overflow (a, b, &a);
    14    return a - i;
    15  }
    16  
    17  __attribute__((noipa)) unsigned long
    18  f3 (unsigned int a, unsigned int b)
    19  {
    20    unsigned int i = __builtin_add_overflow (a, b, &a);
    21    return a + i;
    22  }
    23  
    24  __attribute__((noipa)) unsigned long
    25  f4 (unsigned int a, unsigned int b)
    26  {
    27    unsigned int i = __builtin_add_overflow (a, b, &a);
    28    return a - i;
    29  }
    30  
    31  int
    32  main ()
    33  {
    34    if (f1 (16UL, -18UL) != -2UL
    35        || f1 (16UL, -17UL) != -1UL
    36        || f1 (16UL, -16UL) != 1UL
    37        || f1 (16UL, -15UL) != 2UL
    38        || f2 (24UL, -26UL) != -2UL
    39        || f2 (24UL, -25UL) != -1UL
    40        || f2 (24UL, -24UL) != -1UL
    41        || f2 (24UL, -23UL) != 0UL
    42        || f3 (32U, -34U) != -2U
    43        || f3 (32U, -33U) != -1U
    44        || f3 (32U, -32U) != 1U
    45        || f3 (32U, -31U) != 2U
    46        || f4 (35U, -37U) != -2U
    47        || f4 (35U, -36U) != -1U
    48        || f4 (35U, -35U) != -1U
    49        || f4 (35U, -34U) != 0U)
    50      __builtin_abort ();
    51    return 0;
    52  }