annotate gcc/testsuite/gcc.dg/pr82916.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* PR bootstrap/82916 */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 /* { dg-do run } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 /* { dg-options "-O2 -fno-tree-dse" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 struct A { struct A *next; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 struct C
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 int *of;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 struct C *parent, *prev, *next;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 int depth;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 int min;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 struct C *min_occ;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 __attribute__((noipa)) struct C *
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 foo (int *node)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 struct A *p = __builtin_malloc (sizeof (struct C));
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 if (!p)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 p->next = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 /* Originally placement new. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 struct C *nw = (struct C *)(void *)p;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 nw->of = node;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 nw->parent = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 nw->prev = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 nw->next = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 nw->depth = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 nw->min_occ = nw;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 nw->min = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 return nw;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 main ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 int o;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 struct C *p = foo (&o);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 if (p)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 if (p->of != &o || p->parent || p->prev || p->next || p->depth
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 || p->min || p->min_occ != p)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 __builtin_free (p);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 }