summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/unsorted/cp.c
blob: 04b1420cb308e4c0a2fedb3680e77fe2409a4f1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
struct _obstack_chunk
{
  char  *limit;
  struct _obstack_chunk *prev;
  char	contents[4];
};

struct obstack
{
  long	chunk_size;
  struct _obstack_chunk* chunk;
  char	*object_base;
  char	*next_free;
  char	*chunk_limit;
  int	temp;
  int   alignment_mask;
  struct _obstack_chunk *(*chunkfun) ();
  void (*freefun) ();
};

struct fooalign {char x; double d;};
union fooround {long x; double d;};

void
_obstack_begin (h, size, alignment, chunkfun, freefun)
     struct obstack *h;
     int size;
     int alignment;
     void *  (*chunkfun) ();
     void (*freefun) ();
{
  register struct _obstack_chunk* chunk;

  if (alignment == 0)
    alignment = ((char *)&((struct fooalign *) 0)->d - (char *)0);
  if (size == 0)
    {
      int extra = 4;
      if (extra < (sizeof (union fooround)))
	extra = (sizeof (union fooround));
    }
}