aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2014-09-12 12:42:47 +0200
committerMarc Glisse <glisse@gcc.gnu.org>2014-09-12 10:42:47 +0000
commitd9a72d17e64f6a1b50ef859dadcf86551de1b265 (patch)
tree27bbde3457695f894291e97fcc17689a975b4a96 /gcc/tree.h
parente4a9c55ade081438460f6b0db8afbaad34b05d35 (diff)
downloadgcc-d9a72d17e64f6a1b50ef859dadcf86551de1b265.zip
gcc-d9a72d17e64f6a1b50ef859dadcf86551de1b265.tar.gz
gcc-d9a72d17e64f6a1b50ef859dadcf86551de1b265.tar.bz2
tree.c (integer_each_onep): New function.
2014-09-12 Marc Glisse <marc.glisse@inria.fr> gcc/ * tree.c (integer_each_onep): New function. * tree.h (integer_each_onep): Declare it. * fold-const.c (fold_binary_loc): Use it for ~A + 1 to -A and -A - 1 to ~A. Disable (X & 1) ^ 1, (X ^ 1) & 1 and ~X & 1 to (X & 1) == 0 for vector and complex. gcc/testsuite/ * gcc.dg/vec-andxor1.c: New file. From-SVN: r215209
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index 93a940a..93a12d40 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -3947,6 +3947,11 @@ extern int integer_zerop (const_tree);
extern int integer_onep (const_tree);
+/* integer_onep (tree x) is nonzero if X is an integer constant of value 1, or
+ a vector or complex where each part is 1. */
+
+extern int integer_each_onep (const_tree);
+
/* integer_all_onesp (tree x) is nonzero if X is an integer constant
all of whose significant bits are 1. */