aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr68529-1.c20
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr68529-2.c23
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr68529-3.c47
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" } } */