]> git.ipfire.org Git - thirdparty/gcc.git/commit
* real.c (real_trunc, real_floor, real_ceil): New functions
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Jul 2003 21:38:55 +0000 (21:38 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Jul 2003 21:38:55 +0000 (21:38 +0000)
commit277f8dd25eda8b28d1f12a4c7426383be5e16e7a
tree6f8671ee7d010f3f877a3ed92690c0d270f47544
parentc5e5e7e4cf6b7bd40b8af9ddb92ce11707fdfb6e
* real.c (real_trunc, real_floor, real_ceil): New functions
to implement trunc, floor and ceil respectively.
* real.h (real_trunc, real_floor, real_ceil): Prototype here.
* builtins.c (integer_valued_real_p): New function to test if
a floating point expression has an integer valued result.
(fold_trunc_transparent_mathfn): Optimize foo(foo(x)) as
foo(x) where foo is an integer rounding function.  Similarly,
optimize foo(bar(x)) as bar(x), and foo((double)(int)x) as
(double)(int)x when both foo and bar are integer rounding
functions and we don't need to honor errno.
(fold_builtin_trunc, fold_builtin_floor, fold_builtin_ceil):
New functions to fold trunc, floor and ceil.
(fold_builtin): Use fold_builtin_trunc to fold BUILT_IN_TRUNC*,
fold_builtin_floor to fold BUILT_IN_FLOOR* and fold_builtin_ceil
to fold BUILT_IN_CEIL*.
* fold-const.c (tree_expr_nonnegative_p): Handle FLOAT_EXPR and
the remaining integer rounding functions.

* gcc.dg/builtins-25.c: New testcase.
* gcc.dg/builtins-26.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68903 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/builtins.c
gcc/fold-const.c
gcc/real.c
gcc/real.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/builtins-25.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/builtins-26.c [new file with mode: 0644]