]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gcc.dg/pr101419.c
Update copyright years.
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / pr101419.c
CommitLineData
dddb6ffd
JJ
1/* PR tree-optimization/101419 */
2/* { dg-do compile } */
3/* { dg-options "-O2" } */
4
5typedef __SIZE_TYPE__ size_t;
6void baz (int, int) __attribute__((__warning__("detected overflow")));
7
8union U {
9 int i;
10 char c;
11};
12
13static void
14foo (union U *u)
15{
16 if (__builtin_object_size (&u->c, 1) < sizeof (u->c))
17 baz (__builtin_object_size (&u->c, 1), sizeof (u->c)); /* { dg-bogus "detected overflow" } */
18 __builtin_memset (&u->c, 0, sizeof (u->c));
19
20 if (__builtin_object_size (&u->i, 1) < sizeof (u->i))
21 baz (__builtin_object_size (&u->i, 1), sizeof (u->i)); /* { dg-bogus "detected overflow" } */
22 __builtin_memset (&u->i, 0, sizeof (u->i));
23}
24
25void
26bar (union U *u)
27{
28 int i, j;
29 for (i = 0; i < 1; i++)
30 {
31 foo (u);
32 for (j = 0; j < 2; j++)
33 asm volatile ("");
34 }
35}
36
37static void
38qux (void *p, size_t q)
39{
40 if (__builtin_object_size (p, 1) < q)
41 baz (__builtin_object_size (p, 1), q); /* { dg-bogus "detected overflow" } */
42 __builtin_memset (p, 0, q);
43}
44
45static void
46corge (union U *u)
47{
48 qux (&u->c, sizeof (u->c));
49 qux (&u->i, sizeof (u->i));
50}
51
52void
53garply (union U *u)
54{
55 int i, j;
56 for (i = 0; i < 1; i++)
57 {
58 corge (u);
59 for (j = 0; j < 2; j++)
60 asm volatile ("");
61 }
62}