aboutsummaryrefslogtreecommitdiff
path: root/gcc/builtins.h
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2015-11-02 16:34:16 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2015-11-02 16:34:16 +0000
commit5c1a2e639a26f1582318ac6f547a8819ea7c6034 (patch)
tree4ad1a84f126d5e19c09ab7325f6a810a7daf2032 /gcc/builtins.h
parent6aadd15a4128d8afdca93be311449876cc2dc4d5 (diff)
downloadgcc-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/builtins.h')
-rw-r--r--gcc/builtins.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/gcc/builtins.h b/gcc/builtins.h
index 5a0b57d..cce9e75 100644
--- a/gcc/builtins.h
+++ b/gcc/builtins.h
@@ -73,7 +73,6 @@ extern rtx expand_builtin (tree, rtx, rtx, machine_mode, int);
extern rtx expand_builtin_with_bounds (tree, rtx, rtx, machine_mode, int);
extern enum built_in_function builtin_mathfn_code (const_tree);
extern tree fold_builtin_expect (location_t, tree, tree, tree);
-extern tree fold_fma (location_t, tree, tree, tree, tree);
extern bool avoid_folding_inline_builtin (tree);
extern tree fold_call_expr (location_t, tree, bool);
extern tree fold_builtin_call_array (location_t, tree, tree, int, tree *);