builtins.c (fold_fixed_mathfn, [...]): Take decomposed arguments of CALL_EXPR.

* builtins.c (fold_fixed_mathfn, fold_builtin_trunc,
	fold_builtin_floor, fold_builtin_ceil, fold_builtin_lround):
	Take decomposed arguments of CALL_EXPR.
	(fold_builtin_1): Update calls to the functions mentioned
	above.

From-SVN: r96759
This commit is contained in:
Kazu Hirata 2005-03-20 14:39:01 +00:00 committed by Kazu Hirata
parent 411ffa02ae
commit e498b9f1a0
2 changed files with 25 additions and 29 deletions

View File

@ -1,3 +1,11 @@
2005-03-20 Kazu Hirata <kazu@cs.umass.edu>
* builtins.c (fold_fixed_mathfn, fold_builtin_trunc,
fold_builtin_floor, fold_builtin_ceil, fold_builtin_lround):
Take decomposed arguments of CALL_EXPR.
(fold_builtin_1): Update calls to the functions mentioned
above.
2005-03-20 Joseph S. Myers <joseph@codesourcery.com>
* c-decl.c (check_bitfield_type_and_width): Require bit-field

View File

@ -157,10 +157,10 @@ static tree fold_builtin_sin (tree);
static tree fold_builtin_cos (tree, tree, tree);
static tree fold_builtin_tan (tree);
static tree fold_builtin_atan (tree, tree);
static tree fold_builtin_trunc (tree);
static tree fold_builtin_floor (tree);
static tree fold_builtin_ceil (tree);
static tree fold_builtin_round (tree);
static tree fold_builtin_trunc (tree, tree);
static tree fold_builtin_floor (tree, tree);
static tree fold_builtin_ceil (tree, tree);
static tree fold_builtin_round (tree, tree);
static tree fold_builtin_bitop (tree, tree);
static tree fold_builtin_memcpy (tree, tree);
static tree fold_builtin_mempcpy (tree, tree, int);
@ -6110,10 +6110,8 @@ fold_trunc_transparent_mathfn (tree fndecl, tree arglist)
the argument, for instance lround((double)f) -> lroundf (f). */
static tree
fold_fixed_mathfn (tree exp)
fold_fixed_mathfn (tree fndecl, tree arglist)
{
tree fndecl = get_callee_fndecl (exp);
tree arglist = TREE_OPERAND (exp, 1);
enum built_in_function fcode = DECL_FUNCTION_CODE (fndecl);
tree arg;
@ -6501,10 +6499,8 @@ fold_builtin_atan (tree arglist, tree type)
NULL_TREE if no simplification can be made. */
static tree
fold_builtin_trunc (tree exp)
fold_builtin_trunc (tree fndecl, tree arglist)
{
tree fndecl = get_callee_fndecl (exp);
tree arglist = TREE_OPERAND (exp, 1);
tree arg;
if (! validate_arglist (arglist, REAL_TYPE, VOID_TYPE))
@ -6529,10 +6525,8 @@ fold_builtin_trunc (tree exp)
NULL_TREE if no simplification can be made. */
static tree
fold_builtin_floor (tree exp)
fold_builtin_floor (tree fndecl, tree arglist)
{
tree fndecl = get_callee_fndecl (exp);
tree arglist = TREE_OPERAND (exp, 1);
tree arg;
if (! validate_arglist (arglist, REAL_TYPE, VOID_TYPE))
@ -6562,10 +6556,8 @@ fold_builtin_floor (tree exp)
NULL_TREE if no simplification can be made. */
static tree
fold_builtin_ceil (tree exp)
fold_builtin_ceil (tree fndecl, tree arglist)
{
tree fndecl = get_callee_fndecl (exp);
tree arglist = TREE_OPERAND (exp, 1);
tree arg;
if (! validate_arglist (arglist, REAL_TYPE, VOID_TYPE))
@ -6595,10 +6587,8 @@ fold_builtin_ceil (tree exp)
NULL_TREE if no simplification can be made. */
static tree
fold_builtin_round (tree exp)
fold_builtin_round (tree fndecl, tree arglist)
{
tree fndecl = get_callee_fndecl (exp);
tree arglist = TREE_OPERAND (exp, 1);
tree arg;
if (! validate_arglist (arglist, REAL_TYPE, VOID_TYPE))
@ -6629,10 +6619,8 @@ fold_builtin_round (tree exp)
simplification can be made. */
static tree
fold_builtin_lround (tree exp)
fold_builtin_lround (tree fndecl, tree arglist)
{
tree fndecl = get_callee_fndecl (exp);
tree arglist = TREE_OPERAND (exp, 1);
tree arg;
if (! validate_arglist (arglist, REAL_TYPE, VOID_TYPE))
@ -6659,7 +6647,7 @@ fold_builtin_lround (tree exp)
}
}
return fold_fixed_mathfn (exp);
return fold_fixed_mathfn (fndecl, arglist);
}
/* Fold function call to builtin ffs, clz, ctz, popcount and parity
@ -8173,22 +8161,22 @@ fold_builtin_1 (tree exp, bool ignore)
case BUILT_IN_FLOOR:
case BUILT_IN_FLOORF:
case BUILT_IN_FLOORL:
return fold_builtin_floor (exp);
return fold_builtin_floor (fndecl, arglist);
case BUILT_IN_CEIL:
case BUILT_IN_CEILF:
case BUILT_IN_CEILL:
return fold_builtin_ceil (exp);
return fold_builtin_ceil (fndecl, arglist);
case BUILT_IN_TRUNC:
case BUILT_IN_TRUNCF:
case BUILT_IN_TRUNCL:
return fold_builtin_trunc (exp);
return fold_builtin_trunc (fndecl, arglist);
case BUILT_IN_ROUND:
case BUILT_IN_ROUNDF:
case BUILT_IN_ROUNDL:
return fold_builtin_round (exp);
return fold_builtin_round (fndecl, arglist);
case BUILT_IN_NEARBYINT:
case BUILT_IN_NEARBYINTF:
@ -8204,7 +8192,7 @@ fold_builtin_1 (tree exp, bool ignore)
case BUILT_IN_LLROUND:
case BUILT_IN_LLROUNDF:
case BUILT_IN_LLROUNDL:
return fold_builtin_lround (exp);
return fold_builtin_lround (fndecl, arglist);
case BUILT_IN_LRINT:
case BUILT_IN_LRINTF:
@ -8212,7 +8200,7 @@ fold_builtin_1 (tree exp, bool ignore)
case BUILT_IN_LLRINT:
case BUILT_IN_LLRINTF:
case BUILT_IN_LLRINTL:
return fold_fixed_mathfn (exp);
return fold_fixed_mathfn (fndecl, arglist);
case BUILT_IN_FFS:
case BUILT_IN_FFSL: