Fix hash_operand for fields of a CONSTRUCTOR.
authorMartin Liska <mliska@suse.cz>
Mon, 4 Nov 2019 09:11:26 +0000 (10:11 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Mon, 4 Nov 2019 09:11:26 +0000 (09:11 +0000)
2019-11-04  Martin Liska  <mliska@suse.cz>

PR ipa/92304
* fold-const.c (operand_compare::hash_operand): Fix field
hashing of CONSTRUCTOR.

From-SVN: r277768

gcc/ChangeLog
gcc/fold-const.c

index cdb5791b501d51414ae8e5a12b5520d4d28d55d6..418c3799f52b809b5c58af62ca0938cbc75c6433 100644 (file)
@@ -1,3 +1,9 @@
+2019-11-04  Martin Liska  <mliska@suse.cz>
+
+       PR ipa/92304
+       * fold-const.c (operand_compare::hash_operand): Fix field
+       hashing of CONSTRUCTOR.
+
 2019-11-04  Martin Liska  <mliska@suse.cz>
 
        * ggc.h (ggc_delete): New function.
index fce503692fd8c5c5f06f470bab0b71ef9a468672..1e25859a707b4bf28a21be3658cd9e95402f510c 100644 (file)
@@ -3659,6 +3659,9 @@ operand_compare::hash_operand (const_tree t, inchash::hash &hstate,
        flags &= ~OEP_ADDRESS_OF;
        FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (t), idx, field, value)
          {
+           /* In GIMPLE the indexes can be either NULL or matching i.  */
+           if (field == NULL_TREE)
+             field = bitsize_int (idx);
            hash_operand (field, hstate, flags);
            hash_operand (value, hstate, flags);
          }