aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr96426.c10
-rw-r--r--gcc/tree-vect-generic.c6
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr96426.c b/gcc/testsuite/gcc.c-torture/compile/pr96426.c
new file mode 100644
index 0000000..bd573fe
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr96426.c
@@ -0,0 +1,10 @@
+/* PR middle-end/96426 */
+
+typedef long long V __attribute__((vector_size(16)));
+typedef double W __attribute__((vector_size(16)));
+
+void
+foo (V *v)
+{
+ __builtin_convertvector (*v, W);
+}
diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c
index fe6477c..6d5d651 100644
--- a/gcc/tree-vect-generic.c
+++ b/gcc/tree-vect-generic.c
@@ -1775,6 +1775,12 @@ expand_vector_conversion (gimple_stmt_iterator *gsi)
gimple *stmt = gsi_stmt (*gsi);
gimple *g;
tree lhs = gimple_call_lhs (stmt);
+ if (lhs == NULL_TREE)
+ {
+ g = gimple_build_nop ();
+ gsi_replace (gsi, g, false);
+ return;
+ }
tree arg = gimple_call_arg (stmt, 0);
tree ret_type = TREE_TYPE (lhs);
tree arg_type = TREE_TYPE (arg);