https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92768
--- Comment #11 from rguenther at suse dot de <rguenther at suse dot de> --- On Tue, 3 Dec 2019, jakub at gcc dot gnu.org wrote: > 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. Alternatively add another flag to operand_equal_p to say whether exact literal equality is asked for.