diff --git a/gcc/match.pd b/gcc/match.pd index 88f2e37a2b89..d3af36f8de3e 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -8121,6 +8121,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..d47a026c3ce6 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/torture/pr121772.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-fchecking" } */ +#include +int16_t f(int16x4_t b) { + return vaddvq_s16(vcombine_s16(b, vdup_n_s16 (0))); +}