aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@arm.com>2016-10-31 09:27:31 +0000
committerBin Cheng <amker@gcc.gnu.org>2016-10-31 09:27:31 +0000
commit2c6a05b15083a92a3813783be0e86f0224ec2ba3 (patch)
treeacaa86f17331a427175b816bc5f885d94970ca0e
parent0b56e9adf84be945617a8026a334dd6f14c1c679 (diff)
downloadgcc-2c6a05b15083a92a3813783be0e86f0224ec2ba3.zip
gcc-2c6a05b15083a92a3813783be0e86f0224ec2ba3.tar.gz
gcc-2c6a05b15083a92a3813783be0e86f0224ec2ba3.tar.bz2
tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Skip unnecessary data dependence check after visited store stmt.
* tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Skip unnecessary data dependence check after visited store stmt. From-SVN: r241696
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-vect-data-refs.c20
2 files changed, 15 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f29b9b5..49698e6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-31 Bin Cheng <bin.cheng@arm.com>
+
+ * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Skip
+ unnecessary data dependence check after visited store stmt.
+
2016-10-30 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/71915
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index c99fa406..9346cfe 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -583,6 +583,7 @@ vect_slp_analyze_node_dependences (slp_instance instance, slp_tree node,
if (!dr_b)
return false;
+ bool dependent = false;
/* If we run into a store of this same instance (we've just
marked those) then delay dependence checking until we run
into the last store because this is where it will have
@@ -599,22 +600,21 @@ vect_slp_analyze_node_dependences (slp_instance instance, slp_tree node,
= STMT_VINFO_DATA_REF (vinfo_for_stmt (store));
ddr_p ddr = initialize_data_dependence_relation
(dr_a, store_dr, vNULL);
- if (vect_slp_analyze_data_ref_dependence (ddr))
- {
- free_dependence_relation (ddr);
- return false;
- }
+ dependent = vect_slp_analyze_data_ref_dependence (ddr);
free_dependence_relation (ddr);
+ if (dependent)
+ break;
}
}
-
- ddr_p ddr = initialize_data_dependence_relation (dr_a, dr_b, vNULL);
- if (vect_slp_analyze_data_ref_dependence (ddr))
+ else
{
+ ddr_p ddr = initialize_data_dependence_relation (dr_a,
+ dr_b, vNULL);
+ dependent = vect_slp_analyze_data_ref_dependence (ddr);
free_dependence_relation (ddr);
- return false;
}
- free_dependence_relation (ddr);
+ if (dependent)
+ return false;
}
}
return true;