27 lines
503 B
C
27 lines
503 B
C
/* { 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 ());
|
|
}
|