diff options
author | Josef Zlomek <zlomekj@suse.cz> | 2004-02-14 20:43:18 +0100 |
---|---|---|
committer | Josef Zlomek <zlomek@gcc.gnu.org> | 2004-02-14 19:43:18 +0000 |
commit | 33421d69494241aad4603601502a50f50fb1d2dd (patch) | |
tree | c1bbc54245e9d51f5e96f25dfcb2e996f82d9c85 /gcc | |
parent | 5852680bfc7da3ad2688f08453ba6ba5fa689853 (diff) | |
download | gcc-33421d69494241aad4603601502a50f50fb1d2dd.zip gcc-33421d69494241aad4603601502a50f50fb1d2dd.tar.gz gcc-33421d69494241aad4603601502a50f50fb1d2dd.tar.bz2 |
* gcc.c-torture/compile/20040214-2.c: New test.
From-SVN: r77821
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20040214-2.c | 57 |
2 files changed, 61 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b9613ad..9148423 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-02-14 Josef Zlomek <zlomekj@suse.cz> + + * gcc.c-torture/compile/20040214-2.c: New test. + 2004-02-14 Andrew Pinski <pinskia@physics.uc.edu> 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 0000000..352d5a5 --- /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); +} |