aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2015-10-27 11:59:21 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2015-10-27 11:59:21 +0000
commit83668c858e5d0ee47a21d5a855b56b9f4ca2d93a (patch)
tree6092555a6027942cefb170bc56a64538b2bb78d8
parent0122e8e5212582669a58272d3fcc4beba9f42d58 (diff)
downloadgcc-83668c858e5d0ee47a21d5a855b56b9f4ca2d93a.zip
gcc-83668c858e5d0ee47a21d5a855b56b9f4ca2d93a.tar.gz
gcc-83668c858e5d0ee47a21d5a855b56b9f4ca2d93a.tar.bz2
Rename logb and significand folds
fold_builtin_logb and fold_builtin_significand now only handle constant arguments, so this patch renames them to fold_const..., to match fold_const_builtin_pow. The idea is to differentiate constant-only folds so that they can be moved to a const_binop-like function in future. The functions also had some unnecessary calls to STRIP_NOPS, which I think are left over from code that has already moved to match.pd. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.c (fold_builtin_logb): Rename to... (fold_const_builtin_logb): ...this and remove STRIP_NOPS call. (fold_builtin_significand): Rename to... (fold_const_builtin_significand): ...this and remove STRIP_NOPS call. (fold_builtin_1): Update accordingly. From-SVN: r229433
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/builtins.c12
2 files changed, 12 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b4e1018..8711203 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
2015-10-27 Richard Sandiford <richard.sandiford@arm.com>
+ * builtins.c (fold_builtin_logb): Rename to...
+ (fold_const_builtin_logb): ...this and remove STRIP_NOPS call.
+ (fold_builtin_significand): Rename to...
+ (fold_const_builtin_significand): ...this and remove STRIP_NOPS call.
+ (fold_builtin_1): Update accordingly.
+
+2015-10-27 Richard Sandiford <richard.sandiford@arm.com>
+
* builtins.c (fold_builtin_fmin_fmax): Delete.
(fold_builtin_2): Handle constant fmin and fmax arguments here.
* match.pd: Add rules previously handled by fold_builtin_fmin_fmax.
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 86eac5c..260b66d 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -7916,13 +7916,11 @@ fold_builtin_carg (location_t loc, tree arg, tree type)
/* Fold a call to builtin logb/ilogb. */
static tree
-fold_builtin_logb (location_t loc, tree arg, tree rettype)
+fold_const_builtin_logb (location_t loc, tree arg, tree rettype)
{
if (! validate_arg (arg, REAL_TYPE))
return NULL_TREE;
- STRIP_NOPS (arg);
-
if (TREE_CODE (arg) == REAL_CST && ! TREE_OVERFLOW (arg))
{
const REAL_VALUE_TYPE *const value = TREE_REAL_CST_PTR (arg);
@@ -7967,13 +7965,11 @@ fold_builtin_logb (location_t loc, tree arg, tree rettype)
/* Fold a call to builtin significand, if radix == 2. */
static tree
-fold_builtin_significand (location_t loc, tree arg, tree rettype)
+fold_const_builtin_significand (location_t loc, tree arg, tree rettype)
{
if (! validate_arg (arg, REAL_TYPE))
return NULL_TREE;
- STRIP_NOPS (arg);
-
if (TREE_CODE (arg) == REAL_CST && ! TREE_OVERFLOW (arg))
{
const REAL_VALUE_TYPE *const value = TREE_REAL_CST_PTR (arg);
@@ -9002,11 +8998,11 @@ fold_builtin_1 (location_t loc, tree fndecl, tree arg0)
break;
CASE_FLT_FN (BUILT_IN_SIGNIFICAND):
- return fold_builtin_significand (loc, arg0, type);
+ return fold_const_builtin_significand (loc, arg0, type);
CASE_FLT_FN (BUILT_IN_ILOGB):
CASE_FLT_FN (BUILT_IN_LOGB):
- return fold_builtin_logb (loc, arg0, type);
+ return fold_const_builtin_logb (loc, arg0, type);
case BUILT_IN_ISASCII:
return fold_builtin_isascii (loc, arg0);