tree-optimization/104114 - avoid diagnosing V1mode lowering

Message ID 4pr5s53p-15o-7pp-o6n9-1q525r778rr4@fhfr.qr
State Committed
Commit ad4188f8385f86cc04806fb0e26c7da1f5f655b8
Headers
Series tree-optimization/104114 - avoid diagnosing V1mode lowering |

Commit Message

Richard Biener Jan. 19, 2022, 1:04 p.m. UTC
  Currently we diagnose vector lowering of V1mode operations that
are not natively supported into V_C_E, scalar op plus CTOR with
-Wvector-operation-performance but that's hardly useful behavior
even though the way we lower things can be improved.

The following disables the diagnostics for the cases the vect.exp
testsuite runs into, on x86 that are vect-cond-11.c and
vect-singleton_1.c.

Bootstrap / regtest pending on x86_64-unknown-linux-gnu.

Comments?

Thanks,
Richard.

2022-01-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/104114
	* tree-vect-generic.c (expand_vector_piecewise): Do not diagnose
	single element vector decomposition.
---
 gcc/tree-vect-generic.cc | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
  

Comments

Richard Sandiford Jan. 19, 2022, 4:40 p.m. UTC | #1
Richard Biener via Gcc-patches <gcc-patches@gcc.gnu.org> writes:
> Currently we diagnose vector lowering of V1mode operations that
> are not natively supported into V_C_E, scalar op plus CTOR with
> -Wvector-operation-performance but that's hardly useful behavior
> even though the way we lower things can be improved.
>
> The following disables the diagnostics for the cases the vect.exp
> testsuite runs into, on x86 that are vect-cond-11.c and
> vect-singleton_1.c.
>
> Bootstrap / regtest pending on x86_64-unknown-linux-gnu.
>
> Comments?

Makes sense to me FWIW.

Thanks,
Richard

> Thanks,
> Richard.
>
> 2022-01-19  Richard Biener  <rguenther@suse.de>
>
> 	PR tree-optimization/104114
> 	* tree-vect-generic.c (expand_vector_piecewise): Do not diagnose
> 	single element vector decomposition.
> ---
>  gcc/tree-vect-generic.cc | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/tree-vect-generic.cc b/gcc/tree-vect-generic.cc
> index 5814a71a5bb..f4fc7d16119 100644
> --- a/gcc/tree-vect-generic.cc
> +++ b/gcc/tree-vect-generic.cc
> @@ -317,7 +317,10 @@ expand_vector_piecewise (gimple_stmt_iterator *gsi, elem_op_func f,
>    int i;
>    location_t loc = gimple_location (gsi_stmt (*gsi));
>  
> -  if (ret_type || !parallel_p)
> +  if (nunits == 1)
> +    /* Do not diagnose decomposing single element vectors.  */
> +    ;
> +  else if (ret_type || !parallel_p)
>      warning_at (loc, OPT_Wvector_operation_performance,
>  		"vector operation will be expanded piecewise");
>    else
  

Patch

diff --git a/gcc/tree-vect-generic.cc b/gcc/tree-vect-generic.cc
index 5814a71a5bb..f4fc7d16119 100644
--- a/gcc/tree-vect-generic.cc
+++ b/gcc/tree-vect-generic.cc
@@ -317,7 +317,10 @@  expand_vector_piecewise (gimple_stmt_iterator *gsi, elem_op_func f,
   int i;
   location_t loc = gimple_location (gsi_stmt (*gsi));
 
-  if (ret_type || !parallel_p)
+  if (nunits == 1)
+    /* Do not diagnose decomposing single element vectors.  */
+    ;
+  else if (ret_type || !parallel_p)
     warning_at (loc, OPT_Wvector_operation_performance,
 		"vector operation will be expanded piecewise");
   else