aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-02-05 10:28:26 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-02-05 10:28:26 +0000
commitd55d9ed0aedfa9c6e5344b47379078f0a05dbb05 (patch)
tree8de24760e84b908a9863a5ca49e627d41e971b6d
parentc70da878e56cbac6eeb924fa9bc32576714d1c03 (diff)
downloadgcc-d55d9ed0aedfa9c6e5344b47379078f0a05dbb05.zip
gcc-d55d9ed0aedfa9c6e5344b47379078f0a05dbb05.tar.gz
gcc-d55d9ed0aedfa9c6e5344b47379078f0a05dbb05.tar.bz2
tree-vect-loop.c (vect_analyze_loop_2): Be more informative when not vectorizing because of too many alias checks.
2014-02-05 Richard Biener <rguenther@suse.de> * tree-vect-loop.c (vect_analyze_loop_2): Be more informative when not vectorizing because of too many alias checks. * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Add more verboseness, avoid duplicate MSG_MISSED_OPTIMIZATION. From-SVN: r207499
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-vect-data-refs.c32
-rw-r--r--gcc/tree-vect-loop.c6
3 files changed, 33 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f609d3f..7604ccf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2014-02-05 Richard Biener <rguenther@suse.de>
+
+ * tree-vect-loop.c (vect_analyze_loop_2): Be more informative
+ when not vectorizing because of too many alias checks.
+ * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list):
+ Add more verboseness, avoid duplicate MSG_MISSED_OPTIMIZATION.
+
2014-02-05 Nick Clifton <nickc@redhat.com>
* config/mn10300/mn10300.c (mn10300_hard_regno_mode_ok): Do not
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index d018add..fa96be9 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -2901,6 +2901,24 @@ vect_prune_runtime_alias_test_list (loop_vec_info loop_vinfo)
&& diff - (HOST_WIDE_INT) TREE_INT_CST_LOW (dr_a1->seg_len) <
min_seg_len_b))
{
+ if (dump_enabled_p ())
+ {
+ dump_printf_loc (MSG_NOTE, vect_location,
+ "merging ranges for ");
+ dump_generic_expr (MSG_NOTE, TDF_SLIM,
+ DR_REF (dr_a1->dr));
+ dump_printf (MSG_NOTE, ", ");
+ dump_generic_expr (MSG_NOTE, TDF_SLIM,
+ DR_REF (dr_b1->dr));
+ dump_printf (MSG_NOTE, " and ");
+ dump_generic_expr (MSG_NOTE, TDF_SLIM,
+ DR_REF (dr_a2->dr));
+ dump_printf (MSG_NOTE, ", ");
+ dump_generic_expr (MSG_NOTE, TDF_SLIM,
+ DR_REF (dr_b2->dr));
+ dump_printf (MSG_NOTE, "\n");
+ }
+
dr_a1->seg_len = size_binop (PLUS_EXPR,
dr_a2->seg_len, size_int (diff));
comp_alias_ddrs.ordered_remove (i--);
@@ -2908,18 +2926,12 @@ vect_prune_runtime_alias_test_list (loop_vec_info loop_vinfo)
}
}
+ dump_printf_loc (MSG_NOTE, vect_location,
+ "improved number of alias checks from %d to %d\n",
+ may_alias_ddrs.length (), comp_alias_ddrs.length ());
if ((int) comp_alias_ddrs.length () >
PARAM_VALUE (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS))
- {
- if (dump_enabled_p ())
- {
- dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
- "disable versioning for alias - max number of "
- "generated checks exceeded.\n");
- }
-
- return false;
- }
+ return false;
return true;
}
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index eb7ecb6..ab4d06f 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -1723,8 +1723,10 @@ vect_analyze_loop_2 (loop_vec_info loop_vinfo)
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
- "too long list of versioning for alias "
- "run-time tests.\n");
+ "number of versioning for alias "
+ "run-time tests exceeds %d "
+ "(--param vect-max-version-for-alias-checks)\n",
+ PARAM_VALUE (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS));
return false;
}