Commit 83668c85 by Richard Sandiford Committed by Richard Sandiford

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
parent 0122e8e5
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.
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment