From e0f546342f4b4976c2b7c48c6739a2d8c187b9ed Mon Sep 17 00:00:00 2001 From: jakub Date: Sat, 2 Feb 2002 00:16:39 +0000 Subject: [PATCH] * gcc.dg/20020201-2.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49421 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/20020201-2.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/20020201-2.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 56d0268..c58eb79 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2002-02-02 Jakub Jelinek + + * gcc.dg/20020201-2.c: New test. + 2002-02-02 Neil Booth * gcc.dg/bitfld-1.c: Update. diff --git a/gcc/testsuite/gcc.dg/20020201-2.c b/gcc/testsuite/gcc.dg/20020201-2.c new file mode 100644 index 0000000..2a13c8d --- /dev/null +++ b/gcc/testsuite/gcc.dg/20020201-2.c @@ -0,0 +1,30 @@ +/* This testcase caused ICE because gcc was not able to add instructions + on edge from ENTRY block successor to itself. */ +/* { dg-do compile } */ +/* { dg-options "-O3 -fssa" } */ + +struct A { int a1; int a2; }; +struct B { long int b[32]; }; + +extern int bar (struct B *, struct A *); + +int +foo (struct B x) +{ + struct A a, b; + struct B c; + int d; + + while (1) + { + a.a1 = 0; + a.a2 = 0; + b = a; + c = x; + d = bar (&c, &b); + if (d >= 0) + return d; + } + + return 0; +} -- 2.7.4