OSDN Git Service

* c-common.c (c_common_reswords): Add _Static_assert for C.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / builtin-object-size-9.c
1 /* { dg-do run } */
2 /* { dg-options "-O2" } */
3
4 typedef __SIZE_TYPE__ size_t;
5 extern void *malloc (size_t);
6 extern void free (void *);
7 extern void abort (void);
8
9 union U
10 {
11   struct S { int a; int b; } s;
12   int t;
13 };
14
15 struct T
16 {
17   int c;
18   char d[1];
19 };
20
21 int
22 main (void)
23 {
24   union U *u = malloc (sizeof (struct S) + sizeof (struct T) + 6);
25   struct T *t = (struct T *) (&u->s + 1);
26   if (__builtin_object_size (t->d, 1)
27       != sizeof (struct T) + 6 - __builtin_offsetof (struct T, d))
28     abort ();
29   free (u);
30   return 0;
31 }