Simplify 0 - ptr.
authorMarc Glisse <marc.glisse@inria.fr>
Fri, 24 Nov 2017 12:09:14 +0000 (13:09 +0100)
committerMarc Glisse <glisse@gcc.gnu.org>
Fri, 24 Nov 2017 12:09:14 +0000 (12:09 +0000)
2017-11-24  Marc Glisse  <marc.glisse@inria.fr>

* match.pd (0-ptr): New transformation.

From-SVN: r255139

gcc/ChangeLog
gcc/match.pd

index 92b355a73dfc340b3b423a36ad640b896fd3d956..b866e2512a15944dff58ef57bc44c1ab44fc5144 100644 (file)
@@ -1,3 +1,7 @@
+2017-11-24  Marc Glisse  <marc.glisse@inria.fr>
+
+       * match.pd (0-ptr): New transformation.
+
 2017-11-24  Jan Hubicka  <hubicka@ucw.cz>
 
        PR bootstrap/83015
index 84db1ee7360bc23717cd91e6d00f856df669dcba..9db48bda047b6af8278894f38e521a1b757baa5f 100644 (file)
@@ -2456,9 +2456,13 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
   (if (INTEGRAL_TYPE_P (type))
    (mult @0 { build_int_cst (type, 2); }))))
 
+/* 0 - X  ->  -X.  */
 (simplify
  (minus integer_zerop @1)
  (negate @1))
+(simplify
+ (pointer_diff integer_zerop @1)
+ (negate (convert @1)))
 
 /* (ARG0 - ARG1) is the same as (-ARG1 + ARG0).  So check whether
    ARG0 is zero and X + ARG0 reduces to X, since that would mean