aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-11-07 07:45:58 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-11-07 07:45:58 -0500
commit1ac876be7e72c91dbbea0ad4041ca6039424eca9 (patch)
tree17ab736cb869e52c961ccac1842b44869550151b /gcc/tree.c
parent9898deac71b03c26a1080d077738a32e6107cf28 (diff)
downloadgcc-1ac876be7e72c91dbbea0ad4041ca6039424eca9.zip
gcc-1ac876be7e72c91dbbea0ad4041ca6039424eca9.tar.gz
gcc-1ac876be7e72c91dbbea0ad4041ca6039424eca9.tar.bz2
(integer_{zero,one,all_ones,pow2}p, real_{zero,one,two}p): Return 0 if
TREE_CONSTANT_OVERFLOW. From-SVN: r13107
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index eb9d7b1..6a1e953 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -1502,6 +1502,7 @@ integer_zerop (expr)
STRIP_NOPS (expr);
return ((TREE_CODE (expr) == INTEGER_CST
+ && ! TREE_CONSTANT_OVERFLOW (expr)
&& TREE_INT_CST_LOW (expr) == 0
&& TREE_INT_CST_HIGH (expr) == 0)
|| (TREE_CODE (expr) == COMPLEX_CST
@@ -1519,6 +1520,7 @@ integer_onep (expr)
STRIP_NOPS (expr);
return ((TREE_CODE (expr) == INTEGER_CST
+ && ! TREE_CONSTANT_OVERFLOW (expr)
&& TREE_INT_CST_LOW (expr) == 1
&& TREE_INT_CST_HIGH (expr) == 0)
|| (TREE_CODE (expr) == COMPLEX_CST
@@ -1543,7 +1545,8 @@ integer_all_onesp (expr)
&& integer_zerop (TREE_IMAGPART (expr)))
return 1;
- else if (TREE_CODE (expr) != INTEGER_CST)
+ else if (TREE_CODE (expr) != INTEGER_CST
+ || TREE_CONSTANT_OVERFLOW (expr))
return 0;
uns = TREE_UNSIGNED (TREE_TYPE (expr));
@@ -1592,7 +1595,7 @@ integer_pow2p (expr)
&& integer_zerop (TREE_IMAGPART (expr)))
return 1;
- if (TREE_CODE (expr) != INTEGER_CST)
+ if (TREE_CODE (expr) != INTEGER_CST || TREE_CONSTANT_OVERFLOW (expr))
return 0;
high = TREE_INT_CST_HIGH (expr);
@@ -1614,6 +1617,7 @@ real_zerop (expr)
STRIP_NOPS (expr);
return ((TREE_CODE (expr) == REAL_CST
+ && ! TREE_CONSTANT_OVERFLOW (expr)
&& REAL_VALUES_EQUAL (TREE_REAL_CST (expr), dconst0))
|| (TREE_CODE (expr) == COMPLEX_CST
&& real_zerop (TREE_REALPART (expr))
@@ -1629,6 +1633,7 @@ real_onep (expr)
STRIP_NOPS (expr);
return ((TREE_CODE (expr) == REAL_CST
+ && ! TREE_CONSTANT_OVERFLOW (expr)
&& REAL_VALUES_EQUAL (TREE_REAL_CST (expr), dconst1))
|| (TREE_CODE (expr) == COMPLEX_CST
&& real_onep (TREE_REALPART (expr))
@@ -1644,6 +1649,7 @@ real_twop (expr)
STRIP_NOPS (expr);
return ((TREE_CODE (expr) == REAL_CST
+ && ! TREE_CONSTANT_OVERFLOW (expr)
&& REAL_VALUES_EQUAL (TREE_REAL_CST (expr), dconst2))
|| (TREE_CODE (expr) == COMPLEX_CST
&& real_twop (TREE_REALPART (expr))