diff --git a/gcc/match.pd b/gcc/match.pd index dbbb7b512754..8107ee6ec83c 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -11085,6 +11085,7 @@ and, ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (@0)) : @0); tree elt = ctor_single_nonzero_element (ctor); } (if (elt + && types_match (type, TREE_TYPE (elt)) && !HONOR_SNANS (type) && !HONOR_SIGNED_ZEROS (type)) { elt; })))) diff --git a/gcc/testsuite/gcc.target/aarch64/torture/pr121772.c b/gcc/testsuite/gcc.target/aarch64/torture/pr121772.c new file mode 100644 index 000000000000..3b4cf4d7d189 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/torture/pr121772.c @@ -0,0 +1,5 @@ +/* { dg-do compile } */ +#include +int16_t f(int16x4_t b) { + return vaddvq_s16(vcombine_s16(b, vdup_n_s16 (0))); +}