From a2a2c12d8bf544052df4403f0864afd11e6b0ba4 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 9 Jan 2002 19:26:46 +0100 Subject: [PATCH] * gcc.c-torture/compile/20020109-1.c: New test. From-SVN: r48685 --- gcc/testsuite/ChangeLog | 4 ++++ .../gcc.c-torture/compile/20020109-1.c | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/compile/20020109-1.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 443bfa0f7ca..356557cdb29 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2002-01-09 Jakub Jelinek + + * gcc.c-torture/compile/20020109-1.c: New test. + 2002-01-08 Kazu Hirata * gcc.c-torture/execute/20020108-1.c: New test. 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 00000000000..532fe6de2d5 --- /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); +} -- 2.30.2