1#include <stdio.h>
2#include <stdlib.h>
3
4typedef struct {
5  unsigned short a;
6  unsigned short b;
7} foo_t;
8
9void a1 (unsigned long offset) {}
10
11volatile foo_t *
12f ()
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
25main ()
26{
27  volatile foo_t *foo_p;
28
29  foo_p = f ();
30  if (foo_p->b != 0x0100)
31    abort ();
32  exit (0);
33}
34