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

     1  #include <stdio.h>
     2  #include <stdlib.h>
     3  
     4  typedef struct {
     5    unsigned short a;
     6    unsigned short b;
     7  } foo_t;
     8  
     9  void a1 (unsigned long offset) {}
    10  
    11  volatile foo_t *
    12  f ()
    13  {
    14    volatile foo_t *foo_p = (volatile foo_t *)malloc (sizeof (foo_t));
    15  
    16    a1((unsigned long)foo_p-30);
    17    if (foo_p->a & 0xf000)
    18      printf("%d\n", foo_p->a);
    19    foo_p->b = 0x0100;
    20    a1 ((unsigned long)foo_p + 2);
    21    a1 ((unsigned long)foo_p - 30);
    22    return foo_p;
    23  }
    24  
    25  main ()
    26  {
    27    volatile foo_t *foo_p;
    28  
    29    foo_p = f ();
    30    if (foo_p->b != 0x0100)
    31      abort ();
    32    exit (0);
    33  }