From 97aaae90c4644cc9794b0a0db0662e7ba709d3ff Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 23 Sep 2007 11:44:23 +0200 Subject: [PATCH] re PR tree-optimization/32772 (error: found real variable when subvariables should have appeared) PR tree-optimization/32772 * gcc.c-torture/compile/20070905-1.c: New test. PR tree-optimization/32975 * gcc.dg/pr32975.c: New test. From-SVN: r128688 --- gcc/testsuite/ChangeLog | 6 ++++ .../gcc.c-torture/compile/20070905-1.c | 34 +++++++++++++++++++ gcc/testsuite/gcc.dg/pr32975.c | 23 +++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/compile/20070905-1.c create mode 100644 gcc/testsuite/gcc.dg/pr32975.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 294cf33e11d..7ed4cc7e5d4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -7,6 +7,12 @@ attributes. * g++.dg/ext/va-arg-pack-len-2.C: New test. + PR tree-optimization/32772 + * gcc.c-torture/compile/20070905-1.c: New test. + + PR tree-optimization/32975 + * gcc.dg/pr32975.c: New test. + PR middle-end/28755 * gcc.dg/pr28755.c: New test. diff --git a/gcc/testsuite/gcc.c-torture/compile/20070905-1.c b/gcc/testsuite/gcc.c-torture/compile/20070905-1.c new file mode 100644 index 00000000000..5953275b10f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20070905-1.c @@ -0,0 +1,34 @@ +/* PR tree-optimization/32772 */ + +struct S +{ + unsigned long bits[1]; +}; + +void f1 (int, unsigned long *); +int f2 (void); +int f3 (int, unsigned long *); +int f4 (int, unsigned long *); + +static inline __attribute__ ((always_inline)) +void baz (int x, volatile struct S *y) +{ + f1 (x, y->bits); +} + +static int +bar (int x, struct S *y) +{ + int n; + if (__builtin_constant_p (x) ? f3 (x, y->bits) : f4 (x, y->bits)) + baz (x, y); + for (n = f2 (); n < 8; n = f2 ()) + f3 (n, y->bits); +} + +void +foo (int x, int y) +{ + struct S m; + while ((y = bar (x, &m)) >= 0); +} diff --git a/gcc/testsuite/gcc.dg/pr32975.c b/gcc/testsuite/gcc.dg/pr32975.c new file mode 100644 index 00000000000..8ddb0d8d2f2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr32975.c @@ -0,0 +1,23 @@ +/* PR tree-optimization/32975 */ +/* { dg-do compile } */ +/* { dg-options "-O1 -finline-functions -fipa-cp" } */ + +static int +f0 (char *s0, char *s1) +{ + return __builtin_strlen (s0) > __builtin_strlen (s1); +} + +int +f1 (char *s, int j) +{ + if (f0 (s, "")) + return 1; + return j; +} + +void +f2 (char *s) +{ + f1 (s, 0); +} -- 2.30.2