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 000000000000..bd573fe53660 --- /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 fe6477c85925..6d5d65195ae6 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);