blob: de1d5bb6240340805d95d3b4c6acd06f32020292 (
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
|
/* { dg-do compile } */
/* { dg-options "-O2 -fno-tree-dce -fno-tree-ccp -fno-tree-copy-prop -fno-tree-dominator-opts" } */
/* This caused the compiler to enter an infinite loop if copies are not
fully propagated. The options are to disable copy propagation and
thus expose the bug. */
int foo (void);
struct A {
struct B {
struct B *n;
} *p;
};
static inline void baz (struct A *a)
{
a->p = a->p->n;
}
void bar (struct A a)
{
while (foo ())
baz (&a);
while (foo ());
}
|