aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2020-11-30 10:41:36 +0100
committerRichard Biener <rguenther@suse.de>2020-11-30 13:27:56 +0100
commit4bcded23eb87c55a1a3fcd23d5629a0c35aee4ba (patch)
tree75d6722f676cffbd3dc356396dc6f6037827dbcb
parent5877c544c18259e6f8a07ec99e22bbfe8c6d64a6 (diff)
downloadgcc-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.c14
-rw-r--r--gcc/tree-vect-generic.c2
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,