[VECT] pr97929 fix

This addresses pr97929. The case for WIDEN_PLUS and WIDEN_MINUS were
missing in vect_get_smallest_scalar_type.

gcc/ChangeLog:

	PR tree-optimization/97929
	* tree-vect-data-refs.c (vect_get_smallest_scalar_type): Add
	WIDEN_PLUS/WIDEN_MINUS case.

gcc/testsuite/ChangeLog:

	* gcc.dg/vect/pr97929.c: New test.
This commit is contained in:
Joel Hutton 2020-12-10 11:55:18 +00:00
parent 703d2ac06f
commit f5b902a9af
2 changed files with 12 additions and 0 deletions

View File

@ -0,0 +1,10 @@
/* { dg-do compile } */
#include <stdint.h>
#define ARR_SIZE 1024
extern void foo (int32_t *bar, int16_t a)
{
for( int i = 0; i < ARR_SIZE;i++)
{
bar[i] = a + 1;
}
}

View File

@ -136,6 +136,8 @@ vect_get_smallest_scalar_type (stmt_vec_info stmt_info,
|| gimple_assign_rhs_code (assign) == WIDEN_SUM_EXPR
|| gimple_assign_rhs_code (assign) == WIDEN_MULT_EXPR
|| gimple_assign_rhs_code (assign) == WIDEN_LSHIFT_EXPR
|| gimple_assign_rhs_code (assign) == WIDEN_PLUS_EXPR
|| gimple_assign_rhs_code (assign) == WIDEN_MINUS_EXPR
|| gimple_assign_rhs_code (assign) == FLOAT_EXPR))
{
tree rhs_type = TREE_TYPE (gimple_assign_rhs1 (assign));