diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr111003.c b/gcc/testsuite/gcc.dg/tree-ssa/pr111003.c new file mode 100644 index 0000000000000000000000000000000000000000..a520765dd9fea477a3c8d3b9dfe6085f5b168eb5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr111003.c @@ -0,0 +1,34 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -fdump-tree-optimized" } */ + +static int c, d, e, f; +static short g; +static int *h = &c; +void foo(void); +short(a)(); +static unsigned b(unsigned char j, int l) { return j > l ? j : j << l; } +static int *i(); +static void k(int j, unsigned char l) { + i(); + g = f; + f = g; + for (; g;) { + int m = 0; + d = a(); + for (; d;) { + if (l) + if (!(j >= -639457069 && j <= -639457069)) + if (m) + foo(); // This call should be elided + m = !(10 != (l ^ b(j, 6))) & (0 > e); + } + } +} +static int *i() { + for (; e; e = a(e, 6)) + ; + return h; +} +int main() { k(c, c); } + +/* { dg-final { scan-tree-dump-not "foo" "optimized" } } */