[Bug c/39500] autopar fails to parallel
nemokingdom at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Mar 19 02:46:00 GMT 2009
------- Comment #4 from nemokingdom at gmail dot com 2009-03-19 02:46 -------
(In reply to comment #3)
> I will take care of this one.
>
I add test case for this situation.
Index: testsuite/gcc.dg/autopar/pr39500-1.c
===================================================================
--- testsuite/gcc.dg/autopar/pr39500-1.c (revision 0)
+++ testsuite/gcc.dg/autopar/pr39500-1.c (revision 0)
@@ -0,0 +1,29 @@
+/* pr39500: autopar fails to parallel */
+/* origin: nemokingdom@gmail.com(LiFeng)*/
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details
-fdump-tree-final_cleanup" } */
+
+void abort (void);
+
+int main(void)
+{
+ int i;
+ int x[100];
+
+ for (i = 0; i < 100; i++)
+ x[i] = x[i+100];
+
+ for (i = 0; i < 100; i++)
+ {
+ if (x[i] != x[i+100])
+ abort ();
+ }
+
+ return 0;
+}
+
+/* Check that the first loop in parloop got parallelized. */
+
+/* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 1
"parloops" } } */
+/* { dg-final { cleanup-tree-dump "parloops" } } */
+/* { dg-final { cleanup-tree-dump "final_cleanup" } } */
Index: testsuite/gcc.dg/autopar/pr39500-2.c
===================================================================
--- testsuite/gcc.dg/autopar/pr39500-2.c (revision 0)
+++ testsuite/gcc.dg/autopar/pr39500-2.c (revision 0)
@@ -0,0 +1,21 @@
+/* pr39500: autopar fails to parallel */
+/* origin: nemokingdom@gmail.com(LiFeng)*/
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details
-fdump-tree-final_cleanup" } */
+
+int main(void)
+{
+ int i;
+ int x[100];
+
+ for (i = 0; i < 101; i++)
+ x[i] = x[i+100];
+
+ return 0;
+}
+
+/* Check that the first loop in parloop got parallelized. */
+
+/* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 0
"parloops" } } */
+/* { dg-final { cleanup-tree-dump "parloops" } } */
+/* { dg-final { cleanup-tree-dump "final_cleanup" } } */
Index: tree-data-ref.c
===================================================================
--- tree-data-ref.c (revision 144648)
+++ tree-data-ref.c (working copy)
@@ -2302,7 +2302,7 @@
/* If the overlap occurs outside of the bounds of the
loop, there is no dependence. */
- if (x1 > niter || y1 > niter)
+ if (x1 >= niter || y1 >= niter)
{
*overlaps_a = conflict_fn_no_dependence ();
*overlaps_b = conflict_fn_no_dependence ();
--
nemokingdom at gmail dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|middle-end |c
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39500
More information about the Gcc-bugs
mailing list