2 /* { dg-options "-O2" } */
4 typedef __SIZE_TYPE__
size_t;
5 extern void *malloc (size_t);
6 extern void abort (void);
18 const size_t s
= sizeof (struct A
);
19 const size_t o
= __builtin_offsetof (struct A
, buf
);
20 struct A
*a
= malloc (s
);
21 struct A
*b
= malloc (o
+ 212);
22 if (__builtin_object_size (a
->buf
, 0) != s
- o
)
24 if (__builtin_object_size (a
->buf
, 1) != sizeof (a
->buf
))
26 if (__builtin_object_size (a
->buf
, 2) != s
- o
)
28 if (__builtin_object_size (a
->buf
, 3) != sizeof (a
->buf
))
30 if (__builtin_object_size (&a
->buf
[0], 0) != s
- o
)
32 if (__builtin_object_size (&a
->buf
[0], 1) != sizeof (a
->buf
))
34 if (__builtin_object_size (&a
->buf
[0], 2) != s
- o
)
36 if (__builtin_object_size (&a
->buf
[0], 3) != sizeof (a
->buf
))
38 if (__builtin_object_size (&a
->buf
[6], 0) != s
- o
- 6)
40 if (__builtin_object_size (&a
->buf
[6], 1) != sizeof (a
->buf
) - 6)
42 if (__builtin_object_size (&a
->buf
[6], 2) != s
- o
- 6)
44 if (__builtin_object_size (&a
->buf
[6], 3) != sizeof (a
->buf
) - 6)
46 if (__builtin_object_size (b
->buf
, 0) != 212)
48 if (__builtin_object_size (b
->buf
, 1) != 212)
50 if (__builtin_object_size (b
->buf
, 2) != 212)
52 if (__builtin_object_size (b
->buf
, 3) != 212)
54 if (__builtin_object_size (&b
->buf
[0], 0) != 212)
56 if (__builtin_object_size (&b
->buf
[0], 1) != 212)
58 if (__builtin_object_size (&b
->buf
[0], 2) != 212)
60 if (__builtin_object_size (&b
->buf
[0], 3) != 212)
62 if (__builtin_object_size (&b
->buf
[28], 0) != 212 - 28)
64 if (__builtin_object_size (&b
->buf
[28], 1) != 212 - 28)
66 if (__builtin_object_size (&b
->buf
[28], 2) != 212 - 28)
68 if (__builtin_object_size (&b
->buf
[28], 3) != 212 - 28)