summaryrefslogtreecommitdiff
path: root/gcc/target.def
diff options
context:
space:
mode:
authorjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>2013-04-22 14:50:32 +0000
committerjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>2013-04-22 14:50:32 +0000
commit29cad3b61bc117db0814aa3f0e3ad1f55d495d91 (patch)
treefdeb1da3b93237197679dcc3174d6e1b4a44b8cb /gcc/target.def
parent5c2855889eed7843548d3e230ff1e5a3d47dd53b (diff)
downloadgcc-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.def13
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