On Mon, Nov 4, 2019 at 2:35 PM Richard Biener
<richard.guent...@gmail.com> wrote:
>
> On Mon, Nov 4, 2019 at 10:09 AM Martin Liška <mli...@suse.cz> wrote:
> >
> > On 11/1/19 10:51 PM, Jeff Law wrote:
> > > On 10/31/19 10:01 AM, Martin Liška wrote:
> > >> Hi.
> > >>
> > >> operand_equal_p can properly handle situation where we have a CONSTRUCTOR
> > >> where indices are NULL:
> > >>
> > >>            if (!operand_equal_p (c0->value, c1->value, flags)
> > >>                /* In GIMPLE the indexes can be either NULL or matching i.
> > >>                   Double check this so we won't get false
> > >>                   positives for GENERIC.  */
> > >>                || (c0->index
> > >>                    && (TREE_CODE (c0->index) != INTEGER_CST
> > >>                        || compare_tree_int (c0->index, i)))
> > >>                || (c1->index
> > >>                    && (TREE_CODE (c1->index) != INTEGER_CST
> > >>                        || compare_tree_int (c1->index, i))))
> > >>              return false;
> > >>
> > >> but the corresponding hash function always hashes field (which
> > >> can be NULL_TREE or equal to ctor index).
> > >>
> > >> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
> > >>
> > >> Ready to be installed?
> > >> Thanks,
> > >> Martin
> > >>
> > >> gcc/ChangeLog:
> > >>
> > >> 2019-10-31  Martin Liska  <mli...@suse.cz>
> > >>
> > >>      PR ipa/92304
> > >>      * fold-const.c (operand_compare::hash_operand): Fix field
> > >>      hashing of CONSTRUCTOR.
> > > OK.  One question though, do these routines need to handle
> > > CONSTRUCTOR_NO_CLEARING?
> >
> > Good point, but I bet it's just a flag used in GENERIC, right?
>
> Yes.  It matters for gimplification only.  I don't think we can
> optimistically make use of it in operand_equal_p.

OTOH for GENERIC and sth like ICF the flags have to match.

Richard.

> Richard.
>
> > Martin
> >
> > >
> > > jeff
> > >
> >

Reply via email to