aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2019-11-07 10:44:02 +0100
committerMartin Liska <marxin@gcc.gnu.org>2019-11-07 09:44:02 +0000
commit0048539a2a48b6c10bbb0ba0607f57cd16c935aa (patch)
tree9fe928696e7ba92c45d06508b7a675dfbd0e567a /gcc/fold-const.c
parentdb37dc33a6811235990e3de3e1776c82a868e4b6 (diff)
downloadgcc-0048539a2a48b6c10bbb0ba0607f57cd16c935aa.zip
gcc-0048539a2a48b6c10bbb0ba0607f57cd16c935aa.tar.gz
gcc-0048539a2a48b6c10bbb0ba0607f57cd16c935aa.tar.bz2
Add CONSTRUCTOR_NO_CLEARING to operand_equal_p.
2019-11-07 Martin Liska <mliska@suse.cz> * fold-const.c (operand_compare::operand_equal_p): Add comparison of CONSTRUCTOR_NO_CLEARING. (operand_compare::hash_operand): Likewise. From-SVN: r277912
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r--gcc/fold-const.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 88a069f..52cb238 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -3475,6 +3475,9 @@ operand_compare::operand_equal_p (const_tree arg0, const_tree arg1,
case tcc_exceptional:
if (TREE_CODE (arg0) == CONSTRUCTOR)
{
+ if (CONSTRUCTOR_NO_CLEARING (arg0) != CONSTRUCTOR_NO_CLEARING (arg1))
+ return false;
+
/* In GIMPLE constructors are used only to build vectors from
elements. Individual elements in the constructor must be
indexed in increasing order and form an initial sequence.
@@ -3657,6 +3660,7 @@ operand_compare::hash_operand (const_tree t, inchash::hash &hstate,
unsigned HOST_WIDE_INT idx;
tree field, value;
flags &= ~OEP_ADDRESS_OF;
+ hstate.add_int (CONSTRUCTOR_NO_CLEARING (t));
FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (t), idx, field, value)
{
/* In GIMPLE the indexes can be either NULL or matching i. */