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

     1  /* This was failing on Alpha because the comparison (p != -1) was rewritten
     2     as (p+1 != 0) and p+1 isn't allowed to wrap for pointers.  */
     3  
     4  extern void abort(void);
     5  
     6  typedef __SIZE_TYPE__ size_t;
     7  
     8  int global;
     9  
    10  static void *foo(int p)
    11  {
    12    if (p == 0)
    13     {
    14        global++;
    15        return &global;
    16     }
    17  
    18    return (void *)(size_t)-1;
    19  }
    20  
    21  int bar(void)
    22  {
    23    void *p;
    24  
    25    p = foo(global);
    26    if (p != (void *)(size_t)-1)
    27      return 1;
    28  
    29    global++;
    30    return 0;
    31  }
    32  
    33  int main(void)
    34  {
    35    global = 1;
    36    if (bar () != 0)
    37      abort();
    38    
    39    return 0;
    40  }