Rename logb and significand folds
authorRichard Sandiford <richard.sandiford@arm.com>
Tue, 27 Oct 2015 11:59:21 +0000 (11:59 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 27 Oct 2015 11:59:21 +0000 (11:59 +0000)
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

gcc/ChangeLog
gcc/builtins.c

index b4e1018a3768b5a7776e07be80afab85d5c60305..8711203c3d7de27addfe556909c842d54c167854 100644 (file)
@@ -1,3 +1,11 @@
+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.
index 86eac5c66fd2842e05b282c629000480edd64334..260b66d7810b814dcc79930fd030e019f804f9cf 100644 (file)
@@ -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);