]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR tree-optimization/85446 (wrong-code on riscv64)
authorJakub Jelinek <jakub@redhat.com>
Fri, 22 Jun 2018 21:18:32 +0000 (23:18 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 22 Jun 2018 21:18:32 +0000 (23:18 +0200)
Backported from mainline
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.

From-SVN: r261958

gcc/ChangeLog
gcc/match.pd

index 9381393fe81239ff6ea466a9d6fd6cffb6203334..957bf2021f90450cca055eea1137a27aa123c8ab 100644 (file)
@@ -1,6 +1,12 @@
 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
 
        Backported from mainline
+       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.
+
        2018-04-18  David Malcolm  <dmalcolm@redhat.com>
 
        PR jit/85384
@@ -9,9 +15,6 @@
        it when generating GCC_DRIVER_NAME.
        * configure: Regenerate.
 
-2018-06-22  Jakub Jelinek  <jakub@redhat.com>
-
-       Backported from mainline
        2018-04-17  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/85431
index 3a44ea7f628abeebcdda15dd605b21eff125f210..e405d9e84e9068de3aed424b16935439329ff1bb 100644 (file)
@@ -2929,10 +2929,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  */