aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2017-11-24 13:09:14 +0100
committerMarc Glisse <glisse@gcc.gnu.org>2017-11-24 12:09:14 +0000
commit406520e26f53e3c38118886f79b9e3f7e355e978 (patch)
treeef3903e9980c30f58c98133ed57fa3cca8796713 /gcc
parentf4118c878d89d2105501f85ee63709497c4c7f15 (diff)
downloadgcc-406520e26f53e3c38118886f79b9e3f7e355e978.zip
gcc-406520e26f53e3c38118886f79b9e3f7e355e978.tar.gz
gcc-406520e26f53e3c38118886f79b9e3f7e355e978.tar.bz2
Simplify 0 - ptr.
2017-11-24 Marc Glisse <marc.glisse@inria.fr> * match.pd (0-ptr): New transformation. From-SVN: r255139
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/match.pd4
2 files changed, 8 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 92b355a..b866e25 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/match.pd b/gcc/match.pd
index 84db1ee..9db48bd 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -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