int i;
location_t loc = gimple_location (gsi_stmt (*gsi));
- if (nunits == 1)
- /* Do not diagnose decomposing single element vectors. */
+ if (nunits == 1
+ || warning_suppressed_p (gsi_stmt (*gsi),
+ OPT_Wvector_operation_performance))
+ /* Do not diagnose decomposing single element vectors or when
+ decomposing vectorizer produced operations. */
;
else if (ret_type || !parallel_p)
warning_at (loc, OPT_Wvector_operation_performance,
else
{
/* Use a single scalar operation with a mode no wider than word_mode. */
+ if (!warning_suppressed_p (gsi_stmt (*gsi),
+ OPT_Wvector_operation_performance))
+ warning_at (loc, OPT_Wvector_operation_performance,
+ "vector operation will be expanded with a "
+ "single scalar operation");
scalar_int_mode mode
= int_mode_for_size (tree_to_uhwi (TYPE_SIZE (type)), 0).require ();
compute_type = lang_hooks.types.type_for_mode (mode, 1);
result = f (gsi, compute_type, a, b, bitsize_zero_node,
TYPE_SIZE (compute_type), code, type);
- warning_at (loc, OPT_Wvector_operation_performance,
- "vector operation will be expanded with a "
- "single scalar operation");
}
return result;
if (TYPE_PRECISION (ret_inner_type) != 1)
ret_inner_type = build_nonstandard_integer_type (1, 1);
- warning_at (loc, OPT_Wvector_operation_performance,
- "vector operation will be expanded piecewise");
+ if (!warning_suppressed_p (gsi_stmt (*gsi),
+ OPT_Wvector_operation_performance))
+ warning_at (loc, OPT_Wvector_operation_performance,
+ "vector operation will be expanded piecewise");
for (i = 0; i < nunits;
i++, index = int_const_binop (PLUS_EXPR, index, part_width))
{
/* TODO: try and find a smaller vector type. */
- warning_at (loc, OPT_Wvector_operation_performance,
- "vector condition will be expanded piecewise");
+ if (!warning_suppressed_p (stmt, OPT_Wvector_operation_performance))
+ warning_at (loc, OPT_Wvector_operation_performance,
+ "vector condition will be expanded piecewise");
if (!a_is_comparison
&& VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (a))
}
else if (can_vec_perm_var_p (TYPE_MODE (vect_type)))
return;
-
- warning_at (loc, OPT_Wvector_operation_performance,
- "vector shuffling operation will be expanded piecewise");
+
+ if (!warning_suppressed_p (stmt, OPT_Wvector_operation_performance))
+ warning_at (loc, OPT_Wvector_operation_performance,
+ "vector shuffling operation will be expanded piecewise");
vec_alloc (v, elements);
bool constant_p = true;
location_t loc = gimple_location (gsi_stmt (*gsi));
if (compute_type != arg_type)
- warning_at (loc, OPT_Wvector_operation_performance,
- "vector operation will be expanded piecewise");
+ {
+ if (!warning_suppressed_p (gsi_stmt (*gsi),
+ OPT_Wvector_operation_performance))
+ warning_at (loc, OPT_Wvector_operation_performance,
+ "vector operation will be expanded piecewise");
+ }
else
{
nunits = 1;