tree-ssa-scopedtables.c (hashable_expr_equal_p): Check BIT_INSERT_EXPR's operand...
authorAndrew Pinski <apinski@cavium.com>
Tue, 1 Aug 2017 17:58:17 +0000 (17:58 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Tue, 1 Aug 2017 17:58:17 +0000 (10:58 -0700)
2017-08-01  Andrew Pinski  <apinski@cavium.com>

        * tree-ssa-scopedtables.c (hashable_expr_equal_p): Check
        BIT_INSERT_EXPR's operand 1
        to see if the types precision matches.

From-SVN: r250790

gcc/ChangeLog
gcc/tree-ssa-scopedtables.c

index 36a02215b48d06fc5fbc9b9e458078f339606655..43b2311973d0190ae0d32f466cc43d234e3954e9 100644 (file)
@@ -1,3 +1,9 @@
+2017-08-01  Andrew Pinski  <apinski@cavium.com>
+
+       * tree-ssa-scopedtables.c (hashable_expr_equal_p): Check
+       BIT_INSERT_EXPR's operand 1
+       to see if the types precision matches.
+
 2017-08-01  Martin Liska  <mliska@suse.cz>
 
        PR middle-end/70140
index 814f1c7b05b29ea17e3ffb57abe4f352611173cf..7b9ca78a878443374589a52d85be038622b7e4f8 100644 (file)
@@ -502,6 +502,15 @@ hashable_expr_equal_p (const struct hashable_expr *expr0,
                               expr1->ops.ternary.opnd2, 0))
        return false;
 
+      /* BIT_INSERT_EXPR has an implict operand as the type precision
+         of op1.  Need to check to make sure they are the same.  */
+      if (expr0->ops.ternary.op == BIT_INSERT_EXPR
+         && TREE_CODE (expr0->ops.ternary.opnd1) == INTEGER_CST
+          && TREE_CODE (expr1->ops.ternary.opnd1) == INTEGER_CST
+          && TYPE_PRECISION (TREE_TYPE (expr0->ops.ternary.opnd1))
+              != TYPE_PRECISION (TREE_TYPE (expr1->ops.ternary.opnd1)))
+        return false;
+
       if (operand_equal_p (expr0->ops.ternary.opnd0,
                           expr1->ops.ternary.opnd0, 0)
          && operand_equal_p (expr0->ops.ternary.opnd1,