OSDN Git Service

* tree-predcom.c (tree_predictive_commoning_loop): Bail out when
authorabel <abel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Jan 2012 13:11:50 +0000 (13:11 +0000)
committerabel <abel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Jan 2012 13:11:50 +0000 (13:11 +0000)
        compute_data_dependences_for_loop returns false.
        * tree-parloops.c (loop_parallel_p): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183518 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-parloops.c
gcc/tree-predcom.c

index d252a5a..af7119b 100644 (file)
@@ -1,3 +1,9 @@
+2012-01-25  Andrey Belevantsev  <abel@ispras.ru>
+
+       * tree-predcom.c (tree_predictive_commoning_loop): Bail out when
+       compute_data_dependences_for_loop returns false.
+       * tree-parloops.c (loop_parallel_p): Likewise.
+
 2012-01-25  Richard Guenther  <rguenther@suse.de>
 
        * tree.h (get_pointer_alignment_1): Declare.
index 339ddcc..c5b7655 100644 (file)
@@ -387,8 +387,14 @@ loop_parallel_p (struct loop *loop, struct obstack * parloop_obstack)
   datarefs = VEC_alloc (data_reference_p, heap, 10);
   dependence_relations = VEC_alloc (ddr_p, heap, 10 * 10);
   loop_nest = VEC_alloc (loop_p, heap, 3);
-  compute_data_dependences_for_loop (loop, true, &loop_nest, &datarefs,
-                                    &dependence_relations);
+  if (! compute_data_dependences_for_loop (loop, true, &loop_nest, &datarefs,
+                                          &dependence_relations))
+    {
+      if (dump_file && (dump_flags & TDF_DETAILS))
+       fprintf (dump_file, "  FAILED: cannot analyze data dependencies\n");
+      ret = false;
+      goto end;
+    }
   if (dump_file && (dump_flags & TDF_DETAILS))
     dump_data_dependence_relations (dump_file, dependence_relations);
 
@@ -405,6 +411,7 @@ loop_parallel_p (struct loop *loop, struct obstack * parloop_obstack)
     fprintf (dump_file,
             "  FAILED: data dependencies exist across iterations\n");
 
+ end:
   VEC_free (loop_p, heap, loop_nest);
   free_dependence_relations (dependence_relations);
   free_data_refs (datarefs);
index 751bdeb..6419878 100644 (file)
@@ -2476,8 +2476,17 @@ tree_predictive_commoning_loop (struct loop *loop)
   datarefs = VEC_alloc (data_reference_p, heap, 10);
   dependences = VEC_alloc (ddr_p, heap, 10);
   loop_nest = VEC_alloc (loop_p, heap, 3);
-  compute_data_dependences_for_loop (loop, true, &loop_nest, &datarefs,
-                                    &dependences);
+  if (! compute_data_dependences_for_loop (loop, true, &loop_nest, &datarefs,
+                                          &dependences))
+    {
+      if (dump_file && (dump_flags & TDF_DETAILS))
+       fprintf (dump_file, "Cannot analyze data dependencies\n");
+      VEC_free (loop_p, heap, loop_nest);
+      free_data_refs (datarefs);
+      free_dependence_relations (dependences);
+      return false;
+    }
+
   if (dump_file && (dump_flags & TDF_DETAILS))
     dump_data_dependence_relations (dump_file, dependences);