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:
parent
d2af6a68d8
commit
97aaae90c4
@ -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.
|
||||
|
||||
|
34
gcc/testsuite/gcc.c-torture/compile/20070905-1.c
Normal file
34
gcc/testsuite/gcc.c-torture/compile/20070905-1.c
Normal 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);
|
||||
}
|
23
gcc/testsuite/gcc.dg/pr32975.c
Normal file
23
gcc/testsuite/gcc.dg/pr32975.c
Normal 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);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user