From: Josef Zlomek Date: Sat, 14 Feb 2004 19:43:18 +0000 (+0100) Subject: * gcc.c-torture/compile/20040214-2.c: New test. X-Git-Tag: releases/gcc-4.0.0~10113 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33421d69494241aad4603601502a50f50fb1d2dd;p=thirdparty%2Fgcc.git * gcc.c-torture/compile/20040214-2.c: New test. From-SVN: r77821 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b9613ad8cf54..91484231857a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-02-14 Josef Zlomek + + * gcc.c-torture/compile/20040214-2.c: New test. + 2004-02-14 Andrew Pinski PR c++/14116 diff --git a/gcc/testsuite/gcc.c-torture/compile/20040214-2.c b/gcc/testsuite/gcc.c-torture/compile/20040214-2.c new file mode 100644 index 000000000000..352d5a5d7641 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20040214-2.c @@ -0,0 +1,57 @@ +/* http://gcc.gnu.org/ml/gcc-patches/2004-02/msg01307.html */ + +typedef struct xdef xdef; +struct xdef +{ + char xtyp; + xdef *next; + int y; +}; + +extern void b (); +extern void *foo (void *bar); +extern void *foo2 (void *bar1, void *bar2); +extern void *qwe; + +static void +c (xdef * xp) +{ + b (xp); +} +static void +a (xdef ** xpp) +{ + xdef *xp; + xp = *xpp; + + foo (xp); + xp = foo2 (xp, qwe); + b (xp->next); + foo (xp); + if (xp->y) + { + foo (xp); + if (xp) + { + xdef *p = foo2 (xp, qwe); + foo2 (xp, p); + xp = foo (p); + } + else + { + foo2 (foo(*xpp), *xpp); + } + } + *xpp = foo2 (xpp, qwe); +} + +void +b (xdef ** xpp) +{ + xdef *xp = *xpp; + if (!xp) + return; + if (xp->xtyp == 0) + a (xpp); + c (xp); +}