aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoel Hutton <joel.hutton@arm.com>2020-12-10 11:55:18 +0000
committerJoel Hutton <joel.hutton@arm.com>2020-12-10 11:58:23 +0000
commitf5b902a9af9d1cce6c540c7f71e02e22e45c23ef (patch)
tree692772c73abdef8a9de93968e67e3dfa3b186805 /gcc
parent703d2ac06fbd228294b0db8d5fcc9a6a894487cc (diff)
downloadgcc-f5b902a9af9d1cce6c540c7f71e02e22e45c23ef.zip
gcc-f5b902a9af9d1cce6c540c7f71e02e22e45c23ef.tar.gz
gcc-f5b902a9af9d1cce6c540c7f71e02e22e45c23ef.tar.bz2
[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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr97929.c10
-rw-r--r--gcc/tree-vect-data-refs.c2
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/pr97929.c b/gcc/testsuite/gcc.dg/vect/pr97929.c
new file mode 100644
index 0000000..a027b31
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr97929.c
@@ -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;
+ }
+}
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 18e36c8..1370170 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -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));