diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/compile/20020109-1.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20020109-1.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020109-1.c b/gcc/testsuite/gcc.c-torture/compile/20020109-1.c new file mode 100644 index 000000000..532fe6de2 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20020109-1.c @@ -0,0 +1,23 @@ +/* This testcase ICEd when 2 different successors of a basic block + were successfully threaded and try_forward_edges was not expecting + that. */ + +typedef struct A +{ + struct A *s, *t; + unsigned int u; +} A; + +void bar (A *); + +void +foo (A *x, A *y, A *z) +{ + while (y + && (((y && y->t && y->t->u) ? y : z)->t + == ((x && x->t && x->t->u) ? x : z)->t)) + y = y->s; + + if (y) + bar (y); +} |