On Mon, Oct 17, 2011 at 8:23 AM, Razya Ladelsky <ra...@il.ibm.com> wrote:
> This patch fixes the failures described in
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49960
> It also fixes bzips when run with autopar enabled.
>
> In both cases the self dependences are not handled correctly.
> In the first case, a non affine access is analyzed:
> in the second, the distance vector is not calculated correctly (the
> distance vector considered for for self dependences is always (0,0,...))
>
> As  a result, the loops get wrongfully parallelized.
>
> The patch avoids the special handling of  self dependences, and analyzes
> all dependences in the same way. Specific adjustments
> and support for the self dependence cases were made.

Can you elaborate on

@@ -3119,8 +3135,11 @@ add_other_self_distances (struct data_dependence_r
            {
              if (DDR_NUM_SUBSCRIPTS (ddr) != 1)
                {
-                 DDR_ARE_DEPENDENT (ddr) = chrec_dont_know;
-                 return;
+                 if (DDR_NUM_SUBSCRIPTS (ddr) != 2 || !integer_zerop 
(DR_ACCESS_FN
(DDR_A (ddr), 1)))
+                   {
+                     DDR_ARE_DEPENDENT (ddr) = chrec_dont_know;
+                     return;
+                   }
                }

              access_fun = DR_ACCESS_FN (DDR_A (ddr), 0);

?  It needed a comment before, and now so even more.

The rest of the patch is ok, I suppose the above hunk is to enhance
something, not
to fix the bug?

Thanks,
Richard.

> Bootstrap and testsuite pass successfully for ppc64-redhat-linux.
>
> OK for trunk?
> Thank you,
> Razya
>
>
> ChangeLog:
>
>        PR tree-optimization/49960
>        * tree-data-ref.c (compute_self_dependence): Remove.
>             (initialize_data_dependence_relation): Add intializations.
> Remove compute_self_dependence.
>             (add_other_self_distances): Add support for two dimensions if
> the second is zero.
>             (compute_affine_dependence): Remove the !DDR_SELF_REFERENCE
> condition.
>             (compute_all_dependences): Remove call to
> compute_self_dependence. Add call to compute_affine_dependence
>
> testsuite/ChangeLog:
>
>        PR tree-optimization/49660
>        * gcc.dg/autopar/pr49660.c: New test.
>           * gcc.dg/autopar/pr49660-1.c: New test.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

Reply via email to