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
This commit is contained in:
Jakub Jelinek 2007-09-23 11:44:23 +02:00 committed by Jakub Jelinek
parent d2af6a68d8
commit 97aaae90c4
3 changed files with 63 additions and 0 deletions

View File

@ -7,6 +7,12 @@
attributes. attributes.
* g++.dg/ext/va-arg-pack-len-2.C: New test. * 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 PR middle-end/28755
* gcc.dg/pr28755.c: New test. * gcc.dg/pr28755.c: New test.

View File

@ -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);
}

View File

@ -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);
}