aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJosef Zlomek <zlomekj@suse.cz>2004-02-14 20:43:18 +0100
committerJosef Zlomek <zlomek@gcc.gnu.org>2004-02-14 19:43:18 +0000
commit33421d69494241aad4603601502a50f50fb1d2dd (patch)
treec1bbc54245e9d51f5e96f25dfcb2e996f82d9c85 /gcc
parent5852680bfc7da3ad2688f08453ba6ba5fa689853 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20040214-2.c57
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);
+}