re PR tree-optimization/85446 (wrong-code on riscv64)
authorJakub Jelinek <jakub@redhat.com>
Thu, 19 Apr 2018 07:46:54 +0000 (09:46 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 19 Apr 2018 07:46:54 +0000 (09:46 +0200)
PR tree-optimization/85446
* match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
the integral and pointer types to have the same precision.

From-SVN: r259488

gcc/ChangeLog
gcc/match.pd

index 0e028045342fe038ed8eb55de26e9bfd0ed41452..0fa244affc9ac98ab551033f783a318e8b88569a 100644 (file)
@@ -1,5 +1,9 @@
 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
 
+       PR tree-optimization/85446
+       * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
+       the integral and pointer types to have the same precision.
+
        * doc/install.texi: Document --disable-cet being the default and
        --enable-cet=auto.
 
index 1bbf09f96f0162864363bc997d3c0c72de401d30..442aad15e2cde2f1746b21a64095289d8f4b8d5b 100644 (file)
@@ -3711,10 +3711,13 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
 (for cmp (ne eq)
  (simplify
   (cmp (convert @0) INTEGER_CST@1)
-  (if ((POINTER_TYPE_P (TREE_TYPE (@0)) && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@0)))
-       && INTEGRAL_TYPE_P (TREE_TYPE (@1)))
-      || (INTEGRAL_TYPE_P (TREE_TYPE (@0)) && POINTER_TYPE_P (TREE_TYPE (@1))
-         && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@1)))))
+  (if (((POINTER_TYPE_P (TREE_TYPE (@0))
+        && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@0)))
+        && INTEGRAL_TYPE_P (TREE_TYPE (@1)))
+       || (INTEGRAL_TYPE_P (TREE_TYPE (@0))
+           && POINTER_TYPE_P (TREE_TYPE (@1))
+           && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@1)))))
+       && TYPE_PRECISION (TREE_TYPE (@0)) == TYPE_PRECISION (TREE_TYPE (@1)))
    (cmp @0 (convert @1)))))
 
 /* Non-equality compare simplifications from fold_binary  */