diff options
author | Richard Biener <rguenther@suse.de> | 2020-11-30 10:41:36 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-11-30 13:27:56 +0100 |
commit | 4bcded23eb87c55a1a3fcd23d5629a0c35aee4ba (patch) | |
tree | 75d6722f676cffbd3dc356396dc6f6037827dbcb | |
parent | 5877c544c18259e6f8a07ec99e22bbfe8c6d64a6 (diff) | |
download | gcc-4bcded23eb87c55a1a3fcd23d5629a0c35aee4ba.zip gcc-4bcded23eb87c55a1a3fcd23d5629a0c35aee4ba.tar.gz gcc-4bcded23eb87c55a1a3fcd23d5629a0c35aee4ba.tar.bz2 |
tree-optimization/98048 - fix vector lowering of ABSU_EXPR
This makes sure to use the correct type for the LHS of the scalar
replacement statement.
20220-11-30 Richard Biener <rguenther@suse.de>
PR tree-optimization/98048
* tree-vect-generic.c (expand_vector_operations_1): Use the
correct type for the scalar LHS replacement.
* gcc.dg/vect/pr98048.c: New testcase.
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/pr98048.c | 14 | ||||
-rw-r--r-- | gcc/tree-vect-generic.c | 2 |
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/pr98048.c b/gcc/testsuite/gcc.dg/vect/pr98048.c new file mode 100644 index 0000000..e61a376 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr98048.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ + +extern short var_0; +extern int var_3; +extern int arr_277[]; +int a(int b, int c) { return b < c ? b : c; } +int e; +void test() +{ + e = var_0; + for (int d = 0; d < 9; d++) + if (var_3) + arr_277[d] = a(var_0, -var_0); +} diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c index 23bc1cb..55cf0d9 100644 --- a/gcc/tree-vect-generic.c +++ b/gcc/tree-vect-generic.c @@ -2089,7 +2089,7 @@ expand_vector_operations_1 (gimple_stmt_iterator *gsi, if (op >= FIRST_NORM_OPTAB && op <= LAST_NORM_OPTAB && optab_handler (op, TYPE_MODE (TREE_TYPE (type))) != CODE_FOR_nothing) { - tree slhs = make_ssa_name (TREE_TYPE (srhs1)); + tree slhs = make_ssa_name (TREE_TYPE (TREE_TYPE (lhs))); gimple *repl = gimple_build_assign (slhs, code, srhs1, srhs2); gsi_insert_before (gsi, repl, GSI_SAME_STMT); gimple_assign_set_rhs_from_tree (gsi, |