https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99929
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-10 branch has been updated by Richard Sandiford <rsand...@gcc.gnu.org>: https://gcc.gnu.org/g:2c3a699b91dac954271c9fd96416128fc39cb3f9 commit r10-9760-g2c3a699b91dac954271c9fd96416128fc39cb3f9 Author: Richard Sandiford <richard.sandif...@arm.com> Date: Fri Apr 23 17:17:12 2021 +0100 Check for matching CONST_VECTOR encodings [PR99929] PR99929 is one of those âhow did we get away with this for so longâ bugs: the equality routines weren't checking whether two variable-length CONST_VECTORs had the same encoding. This meant that: { 1, 0, 0, 0, 0, 0, ... } would appear to be equal to: { 1, 0, 1, 0, 1, 0, ... } since both are represented using the elements { 1, 0 }. gcc/ PR rtl-optimization/99929 * rtl.h (same_vector_encodings_p): New function. * cse.c (exp_equiv_p): Check that CONST_VECTORs have the same encoding. * cselib.c (rtx_equal_for_cselib_1): Likewise. * jump.c (rtx_renumbered_equal_p): Likewise. * lra-constraints.c (operands_match_p): Likewise. * reload.c (operands_match_p): Likewise. * rtl.c (rtx_equal_p_cb, rtx_equal_p): Likewise. gcc/testsuite/ * gcc.target/aarch64/sve/pr99929_1.c: New file. * gcc.target/aarch64/sve/pr99929_2.c: Likewise. (cherry picked from commit a87d3f964df31d4fbceb822c6d293e85c117d992)