https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92768
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The vector builder calls operand_equal_p, which in turn does: case REAL_CST: if (real_identical (&TREE_REAL_CST (arg0), &TREE_REAL_CST (arg1))) return true; if (!HONOR_SIGNED_ZEROS (arg0)) { /* If we do not distinguish between signed and unsigned zero, consider them equal. */ if (real_zerop (arg0) && real_zerop (arg1)) return true; } return false; So, what could be done is temporarily enable flag_signed_zeros in the vector builder.