fold-const.c (operand_equal_p): Do not compare TYPE_MODE when comparing addresses.
authorJan Hubicka <hubicka@ucw.cz>
Fri, 23 Oct 2015 18:05:55 +0000 (20:05 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 23 Oct 2015 18:05:55 +0000 (18:05 +0000)
* fold-const.c (operand_equal_p): Do not compare TYPE_MODE when
comparing addresses.

From-SVN: r229265

gcc/ChangeLog
gcc/fold-const.c

index df246e672ed929baabd4e89454625c8efd69357d..716b6320e42dba1af1c6a2a94ae605975b27041a 100644 (file)
@@ -1,3 +1,8 @@
+2015-10-23  Jan Hubicka  <hubicka@ucw.cz>
+
+       * fold-const.c (operand_equal_p): Do not compare TYPE_MODE when
+       comparing addresses.
+
 2015-10-23  Jan Hubicka  <hubicka@ucw.cz>
 
        * fold-const.c (operand_equal_p): Handle matching of vector
index 018cb03f8995ba3c01ff211a262d11ddf1bdd5f0..df49f87f716a841f51bb01a050c6008eb5d2eb56 100644 (file)
@@ -2809,11 +2809,12 @@ operand_equal_p (const_tree arg0, const_tree arg1, unsigned int flags)
        return 0;
     }
 
-  /* This is needed for conversions and for COMPONENT_REF.
-     Might as well play it safe and always test this.  */
+  /* When not checking adddresses, this is needed for conversions and for
+     COMPONENT_REF.  Might as well play it safe and always test this.  */
   if (TREE_CODE (TREE_TYPE (arg0)) == ERROR_MARK
       || TREE_CODE (TREE_TYPE (arg1)) == ERROR_MARK
-      || TYPE_MODE (TREE_TYPE (arg0)) != TYPE_MODE (TREE_TYPE (arg1)))
+      || (TYPE_MODE (TREE_TYPE (arg0)) != TYPE_MODE (TREE_TYPE (arg1))
+         && !(flags & OEP_ADDRESS_OF)))
     return 0;
 
   /* If ARG0 and ARG1 are the same SAVE_EXPR, they are necessarily equal.