real.h (real_isinteger): Declare.

2006-11-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* real.h (real_isinteger): Declare.
	* real.c (real_isinteger): Define.
	* builtins.c (integer_valued_real_p): Use it.

From-SVN: r119130
parent 05170031
2006-11-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
* real.h (real_isinteger): Declare.
* real.c (real_isinteger): Define.
* builtins.c (integer_valued_real_p): Use it.
2006-11-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c/9072
* c.opt (Wtraditional-conversion): New.
(Wconversion): Update description.
......
......@@ -6677,15 +6677,7 @@ integer_valued_real_p (tree t)
&& integer_valued_real_p (TREE_OPERAND (t, 2));
case REAL_CST:
if (! TREE_CONSTANT_OVERFLOW (t))
{
REAL_VALUE_TYPE c, cint;
c = TREE_REAL_CST (t);
real_trunc (&cint, TYPE_MODE (TREE_TYPE (t)), &c);
return real_identical (&c, &cint);
}
break;
return real_isinteger (TREE_REAL_CST_PTR (t), TYPE_MODE (TREE_TYPE (t)));
case NOP_EXPR:
{
......
......@@ -4968,3 +4968,14 @@ real_from_mpfr (REAL_VALUE_TYPE *r, mpfr_srcptr m)
real_from_string (r, buf);
}
/* Check whether the real constant value given is an integer. */
bool
real_isinteger (const REAL_VALUE_TYPE *c, enum machine_mode mode)
{
REAL_VALUE_TYPE cint;
real_trunc (&cint, mode, c);
return real_identical (c, &cint);
}
......@@ -433,4 +433,7 @@ extern void real_copysign (REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *);
extern void real_from_mpfr (REAL_VALUE_TYPE *, mpfr_srcptr);
extern void mpfr_from_real (mpfr_ptr, const REAL_VALUE_TYPE *);
/* Check whether the real constant value given is an integer. */
extern bool real_isinteger (const REAL_VALUE_TYPE *c, enum machine_mode mode);
#endif /* ! GCC_REAL_H */
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