This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/46194] [4.5 Regression] gcc.dg/graphite/block-0.c FAILs with -ftree-parallelize-loops


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46194

--- Comment #16 from Sebastian Pop <spop at gcc dot gnu.org> 2011-04-19 16:24:44 UTC ---
The patch produces these fails on the 4.5 branch:

FAIL: gcc.dg/tree-ssa/ltrans-1.c scan-tree-dump-times ltrans "converted loop
nest to perfect loop nest" 1
FAIL: gcc.dg/tree-ssa/ltrans-1.c scan-tree-dump-times ltrans "transformed loop"
1
FAIL: gfortran.dg/ltrans-7.f90  -O  scan-tree-dump-times ltrans "transformed
loop" 1

It looks like the change was needed to make the loop interchange
possible on these examples.  In 4.6, Graphite is taking care of
the interchange cases and so we don't exercise the corner cases of
the multivariate data dependence test.

The patch removes this case:
-         /* The dependence is carried by the outermost loop.  Example:
-            | loop_1
-            |   A[{4, +, 1}_1]
-            |   loop_2
-            |     A[{5, +, 1}_2]
-            |   endloop_2
-            | endloop_1
-            In this case, the dependence is carried by loop_1.  */

because we use the information that the dependence is carried
by the outermost loop to wrongly infer that the innermost loop
does not carry dependences, leading to the parallelization of the
innermost loop:

+  for (i = 0; i < N; i++)
+    for (j = 0; j < N; j++)
+      a[j] = a[i] + 1;
+/* This loop cannot be parallelized due to a dependence.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]