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?

jeff

Reply via email to