diff options
author | jgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-04-22 14:50:32 +0000 |
---|---|---|
committer | jgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-04-22 14:50:32 +0000 |
commit | 29cad3b61bc117db0814aa3f0e3ad1f55d495d91 (patch) | |
tree | fdeb1da3b93237197679dcc3174d6e1b4a44b8cb /gcc/target.def | |
parent | 5c2855889eed7843548d3e230ff1e5a3d47dd53b (diff) | |
download | gcc-29cad3b61bc117db0814aa3f0e3ad1f55d495d91.tar.gz |
[Mid-end] Add TARGET_GIMPLE_FOLD_BUILTIN target hook.
gcc/
* coretypes.h (gimple_stmt_iterator_d): Forward declare.
(gimple_stmt_iterator): New typedef.
* gimple.h (gimple_stmt_iterator): Rename to...
(gimple_stmt_iterator_d): ... This.
* doc/tm.texi.in (TARGET_FOLD_BUILTIN): Detail restriction that
trees be valid for GIMPLE and GENERIC.
(TARGET_GIMPLE_FOLD_BUILTIN): New.
* gimple-fold.c (gimple_fold_call): Call target hook
gimple_fold_builtin.
* hooks.c (hook_bool_gsiptr_false): New.
* hooks.h (hook_bool_gsiptr_false): New.
* target.def (fold_stmt): New.
* doc/tm.texi: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198142 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/target.def')
-rw-r--r-- | gcc/target.def | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/target.def b/gcc/target.def index db742732e34..a8306b25889 100644 --- a/gcc/target.def +++ b/gcc/target.def @@ -1289,13 +1289,24 @@ DEFHOOK "", tree, (unsigned int /*location_t*/ loc, tree fndecl, void *arglist), NULL) -/* Fold a target-specific builtin. */ +/* Fold a target-specific builtin to a tree valid for both GIMPLE + and GENERIC. */ DEFHOOK (fold_builtin, "", tree, (tree fndecl, int n_args, tree *argp, bool ignore), hook_tree_tree_int_treep_bool_null) +/* Fold a target-specific builtin to a valid GIMPLE tree. */ +DEFHOOK +(gimple_fold_builtin, + "Fold a call to a machine specific built-in function that was set up\n\ +by @samp{TARGET_INIT_BUILTINS}. @var{gsi} points to the gimple\n\ +statement holding the function call. Returns true if any change\n\ +was made to the GIMPLE stream.", + bool, (gimple_stmt_iterator *gsi), + hook_bool_gsiptr_false) + /* Target hook is used to compare the target attributes in two functions to determine which function's features get higher priority. This is used during function multi-versioning to figure out the order in which two |