OSDN Git Service

PR target/47935
[pf3gnuchains/gcc-fork.git] / gcc / graphite-interchange.c
index b90c4e7..934839a 100644 (file)
@@ -446,20 +446,18 @@ memory_strides_in_loop (lst_p loop, graphite_dim_t depth, mpz_t strides)
    profitable to interchange the loops at DEPTH1 and DEPTH2.  */
 
 static bool
-lst_interchange_profitable_p (lst_p loop1, lst_p loop2)
+lst_interchange_profitable_p (lst_p nest, int depth1, int depth2)
 {
   mpz_t d1, d2;
   bool res;
 
-  gcc_assert (loop1 && loop2
-             && LST_LOOP_P (loop1) && LST_LOOP_P (loop2)
-             && lst_depth (loop1) < lst_depth (loop2));
+  gcc_assert (depth1 < depth2);
 
   mpz_init (d1);
   mpz_init (d2);
 
-  memory_strides_in_loop (loop1, lst_depth (loop1), d1);
-  memory_strides_in_loop (loop2, lst_depth (loop2), d2);
+  memory_strides_in_loop (nest, depth1, d1);
+  memory_strides_in_loop (nest, depth2, d2);
 
   res = mpz_cmp (d1, d2) < 0;
 
@@ -592,12 +590,12 @@ lst_try_interchange_loops (scop_p scop, lst_p loop1, lst_p loop2)
 
   lst_p before = NULL, nest = NULL, after = NULL;
 
-  if (!lst_interchange_profitable_p (loop1, loop2))
-    return false;
-
   if (!lst_perfectly_nested_p (loop1, loop2))
     lst_perfect_nestify (loop1, loop2, &before, &nest, &after);
 
+  if (!lst_interchange_profitable_p (loop2, depth1, depth2))
+    return false;
+
   lst_apply_interchange (loop2, depth1, depth2);
 
   /* Sync the transformed LST information and the PBB scatterings