aboutsummaryrefslogtreecommitdiff
path: root/gcc/builtins.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2015-11-07 10:05:51 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2015-11-07 10:05:51 +0000
commit2556a032cc18bb71c85988967fed074528fb5030 (patch)
tree94dd631ff29bdbed21c2b63a6d9ae302de5441f7 /gcc/builtins.c
parent5486d91300d0540215978ecde30870e1a337910c (diff)
downloadgcc-2556a032cc18bb71c85988967fed074528fb5030.zip
gcc-2556a032cc18bb71c85988967fed074528fb5030.tar.gz
gcc-2556a032cc18bb71c85988967fed074528fb5030.tar.bz2
Handle constant fp classifications in fold-const-call.c
Move the constant "is finite", "is infinite" and "is nan" queries to fold-const-call.c. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.c (fold_builtin_classify): Move constant cases to... * fold-const-call.c (fold_const_call_ss): ...here. From-SVN: r229920
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r--gcc/builtins.c23
1 files changed, 0 insertions, 23 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 69c56e7..6eefd54 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -8018,7 +8018,6 @@ static tree
fold_builtin_classify (location_t loc, tree fndecl, tree arg, int builtin_index)
{
tree type = TREE_TYPE (TREE_TYPE (fndecl));
- REAL_VALUE_TYPE r;
if (!validate_arg (arg, REAL_TYPE))
return NULL_TREE;
@@ -8029,16 +8028,6 @@ fold_builtin_classify (location_t loc, tree fndecl, tree arg, int builtin_index)
if (!HONOR_INFINITIES (arg))
return omit_one_operand_loc (loc, type, integer_zero_node, arg);
- if (TREE_CODE (arg) == REAL_CST)
- {
- r = TREE_REAL_CST (arg);
- if (real_isinf (&r))
- return real_compare (GT_EXPR, &r, &dconst0)
- ? integer_one_node : integer_minus_one_node;
- else
- return integer_zero_node;
- }
-
return NULL_TREE;
case BUILT_IN_ISINF_SIGN:
@@ -8078,24 +8067,12 @@ fold_builtin_classify (location_t loc, tree fndecl, tree arg, int builtin_index)
&& !HONOR_INFINITIES (arg))
return omit_one_operand_loc (loc, type, integer_one_node, arg);
- if (TREE_CODE (arg) == REAL_CST)
- {
- r = TREE_REAL_CST (arg);
- return real_isfinite (&r) ? integer_one_node : integer_zero_node;
- }
-
return NULL_TREE;
case BUILT_IN_ISNAN:
if (!HONOR_NANS (arg))
return omit_one_operand_loc (loc, type, integer_zero_node, arg);
- if (TREE_CODE (arg) == REAL_CST)
- {
- r = TREE_REAL_CST (arg);
- return real_isnan (&r) ? integer_one_node : integer_zero_node;
- }
-
arg = builtin_save_expr (arg);
return fold_build2_loc (loc, UNORDERED_EXPR, type, arg, arg);