summaryrefslogtreecommitdiff
path: root/gcc/tree-predcom.c
diff options
context:
space:
mode:
authorabel <abel@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-25 13:11:50 +0000
committerabel <abel@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-25 13:11:50 +0000
commit713f1f148ae226c627dbe7efd26e04c3b7fc1b3d (patch)
tree5fd391bdadd032d481ad489b30f553a206beaccc /gcc/tree-predcom.c
parent92355c312b1aa91a71bb0a0f85291c9ced93a4b3 (diff)
downloadgcc-713f1f148ae226c627dbe7efd26e04c3b7fc1b3d.tar.gz
* tree-predcom.c (tree_predictive_commoning_loop): Bail out when
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
Diffstat (limited to 'gcc/tree-predcom.c')
-rw-r--r--gcc/tree-predcom.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c
index 751bdebfa8a..64198788967 100644
--- a/gcc/tree-predcom.c
+++ b/gcc/tree-predcom.c
@@ -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);