diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr68529-1.c | 20 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr68529-2.c | 23 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr68529-3.c | 47 |
3 files changed, 90 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr68529-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr68529-1.c new file mode 100644 index 0000000..9dcc22f --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr68529-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-loop-distribution -ftree-loop-distribute-patterns -fdump-tree-ldist-details" } */ + +void bar(char *s); +int foo() +{ + char c[10000] = {}; + unsigned short nchar = 9999; + + while(nchar-- != 0) + { + c[nchar] = 'A'; + } + + bar (c); + return 0; +} + +/* { dg-final { scan-tree-dump "distributed: split to 0 loops and 1 library calls" "ldist" } } */ +/* { dg-final { scan-tree-dump "generated memset" "ldist" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr68529-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr68529-2.c new file mode 100644 index 0000000..6d57618 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr68529-2.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-loop-distribution -ftree-loop-distribute-patterns -fdump-tree-ldist-details" } */ + +void bar(char *s); +int foo(unsigned short l) +{ + char c[10000] = {}; + unsigned short nchar = 9999; + + if (nchar <= l) + return -1; + + while(nchar-- != l) + { + c[nchar] = 'A'; + } + + bar (c); + return 0; +} + +/* { dg-final { scan-tree-dump "distributed: split to 0 loops and 1 library calls" "ldist" } } */ +/* { dg-final { scan-tree-dump "generated memset" "ldist" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr68529-3.c b/gcc/testsuite/gcc.dg/tree-ssa/pr68529-3.c new file mode 100644 index 0000000..583b4a6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr68529-3.c @@ -0,0 +1,47 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-loop-distribution -ftree-loop-distribute-patterns -fdump-tree-ldist-details" } */ + +void bar(char *s); +int foo1(unsigned short l) +{ + char c[10000] = {}; + unsigned short nchar = 9999; + + while(nchar-- != l) + { + c[nchar] = 'A'; + } + + bar (c); + return 0; +} + +int foo2() +{ + char c[100000] = {}; + unsigned short nchar; + + for (nchar = 0; nchar != 1000; --nchar) + { + c[nchar] = 'A'; + } + + bar (c); + return 0; +} + +int foo3() +{ + char c[100000] = {}; + unsigned short nchar; + + for (nchar = 0; nchar != 1000; nchar += 3) + { + c[nchar] = 'A'; + } + + bar (c); + return 0; +} + +/* { dg-final { scan-tree-dump-times "failed: evolution of offset is not affine" 3 "ldist" } } */ |