This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Improve diagnostics for PR60042
- From: Richard Biener <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 5 Feb 2014 10:01:35 +0100 (CET)
- Subject: [PATCH] Improve diagnostics for PR60042
- Authentication-results: sourceware.org; auth=none
The following improves dumping / messages for vectorizer runtime
alias checks.
Bootstrap / regtest running on x86_64-unknown-linux-gnu. I'll consider
this "documentation" and thus appropriate at this stage.
Richard.
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.
Index: gcc/tree-vect-loop.c
===================================================================
*** gcc/tree-vect-loop.c (revision 207497)
--- gcc/tree-vect-loop.c (working copy)
*************** vect_analyze_loop_2 (loop_vec_info loop_
*** 1723,1730 ****
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! "too long list of versioning for alias "
! "run-time tests.\n");
return false;
}
--- 1723,1732 ----
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! "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;
}
Index: gcc/tree-vect-data-refs.c
===================================================================
*** gcc/tree-vect-data-refs.c (revision 207497)
--- gcc/tree-vect-data-refs.c (working copy)
*************** vect_prune_runtime_alias_test_list (loop
*** 2901,2906 ****
--- 2923,2946 ----
&& 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--);
*************** vect_prune_runtime_alias_test_list (loop
*** 2908,2925 ****
}
}
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 true;
}
--- 2948,2959 ----
}
}
+ 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))
! return false;
return true;
}