diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2015-11-02 16:34:16 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2015-11-02 16:34:16 +0000 |
commit | 5c1a2e639a26f1582318ac6f547a8819ea7c6034 (patch) | |
tree | 4ad1a84f126d5e19c09ab7325f6a810a7daf2032 /gcc/realmpfr.h | |
parent | 6aadd15a4128d8afdca93be311449876cc2dc4d5 (diff) | |
download | gcc-5c1a2e639a26f1582318ac6f547a8819ea7c6034.zip gcc-5c1a2e639a26f1582318ac6f547a8819ea7c6034.tar.gz gcc-5c1a2e639a26f1582318ac6f547a8819ea7c6034.tar.bz2 |
Move constant folds for maths functions to new file
The new routines operate on the built-in enum rather than on tree decls.
The idea is to extend this to handle internal functions too, with a
combined enum for both.
The patch also moves fold_fma too, with the same prototype. The long-term
plan is to replace FMA_EXPR with an internal function, for consistency
with the way that things like SQRT will be handled.
Tested on x86_64-linux-gnu, arm-linux-gnueabi and aarch64-linux-gnu.
gcc/
* builtins.h (fold_fma): Move to fold-const-call.h.
* builtins.c: Include fold-const-call.h.
(mathfn_built_in_2): New function, split out from...
(mathfn_built_in_1): ...here.
(do_real_to_int_conversion, fold_const_builtin_pow)
(fold_const_builtin_logb, fold_const_builtin_significand)
(fold_const_builtin_load_exponent, do_mpfr_arg1, do_mpfr_arg2)
(do_mpfr_arg3, do_mpfr_sincos, do_mpfr_bessel_n, do_mpc_arg1): Delete.
(fold_builtin_sincos): Use fold_const_call to handle constants.
(fold_builtin_1, fold_builtin_2, fold_builtin_3): Add explicit
checks for ERROR_MARK. Use fold_const_call to handle constant
folds for math functions.
(fold_fma): Move to fold-const-call.c.
* fold-const.c: Include fold-const-call.h.
* Makefile.in (OBJS): Add fold-const-call.o.
(PLUGIN_HEADERS): Add fold-const-call.h.
* realmpfr.h (real_from_mpfr): Allow the format to be specified
directly.
* realmpfr.c (real_from_mpfr): Likewise.
* fold-const-call.h, fold-const-call.c: New files.
From-SVN: r229669
Diffstat (limited to 'gcc/realmpfr.h')
-rw-r--r-- | gcc/realmpfr.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/realmpfr.h b/gcc/realmpfr.h index 71497d7..7e70db2 100644 --- a/gcc/realmpfr.h +++ b/gcc/realmpfr.h @@ -28,6 +28,8 @@ responsible for initializing and clearing the MPFR parameter. */ extern void real_from_mpfr (REAL_VALUE_TYPE *, mpfr_srcptr, tree, mp_rnd_t); +extern void real_from_mpfr (REAL_VALUE_TYPE *, mpfr_srcptr, + const real_format *, mp_rnd_t); extern void mpfr_from_real (mpfr_ptr, const REAL_VALUE_TYPE *, mp_rnd_t); #endif /* ! GCC_REALGMP_H */ |