aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-05-10 09:43:17 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-05-10 09:43:17 +0000
commit0b7b376d89fcaf1abccf11da606d612d9f4cc378 (patch)
treedf80e1fff82251162890e6945cab6479837e953a /gcc/tree.h
parent1755aad0945c2f55a23ae98f5f2e19bdce3ed4e7 (diff)
downloadgcc-0b7b376d89fcaf1abccf11da606d612d9f4cc378.zip
gcc-0b7b376d89fcaf1abccf11da606d612d9f4cc378.tar.gz
gcc-0b7b376d89fcaf1abccf11da606d612d9f4cc378.tar.bz2
c-common.c (struct c_common_attributes): Add fnspec attribute.
2010-05-10 Richard Guenther <rguenther@suse.de> * c-common.c (struct c_common_attributes): Add fnspec attribute. (handle_fnspec_attribute): New function. * gimple.h (gimple_call_return_flags): Declare. (gimple_call_arg_flags): Likewise. * gimple.c (gimple_call_arg_flags): New function. (gimple_call_return_flags): Likewise. * tree.h (EAF_DIRECT, EAF_NOCLOBBER, EAF_NOESCAPE, EAF_UNUSED): New argument flags. (ERF_RETURN_ARG_MASK, ERF_RETURNS_ARG, ERF_NOALIAS): New function return value flags. * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Skip unused args. * tree-ssa-structalias.c (make_constraint_from_heapvar): Split main work to ... (make_heapvar_for): ... this new function. (handle_rhs_call): Handle fnspec attribute argument specifiers. (handle_lhs_call): Likewise. (find_func_aliases): Adjust. fortran/ * trans-decl.c (gfc_build_library_function_decl): Split out worker to ... (build_library_function_decl_1): ... this new function. Set a fnspec attribute if a specification was provided. (gfc_build_library_function_decl_with_spec): New function. (gfc_build_intrinsic_function_decls): Annotate internal_pack and internal_unpack. From-SVN: r159215
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index a03ede5..7eed68f 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -5169,6 +5169,30 @@ extern tree build_duplicate_type (tree);
extern int flags_from_decl_or_type (const_tree);
extern int call_expr_flags (const_tree);
+/* Call argument flags. */
+
+/* Nonzero if the argument is not dereferenced recursively, thus only
+ directly reachable memory is read or written. */
+#define EAF_DIRECT (1 << 0)
+/* Nonzero if memory reached by the argument is not clobbered. */
+#define EAF_NOCLOBBER (1 << 1)
+/* Nonzero if the argument does not escape. */
+#define EAF_NOESCAPE (1 << 2)
+/* Nonzero if the argument is not used by the function. */
+#define EAF_UNUSED (1 << 3)
+
+/* Call return flags. */
+
+/* Mask for the argument number that is returned. Lower two bits of
+ the return flags, encodes argument slots zero to three. */
+#define ERF_RETURN_ARG_MASK (3)
+/* Nonzero if the return value is equal to the argument number
+ flags & ERF_RETURN_ARG_MASK. */
+#define ERF_RETURNS_ARG (1 << 2)
+/* Nonzero if the return value does not alias with anything. Functions
+ with the malloc attribute have this set on their return value. */
+#define ERF_NOALIAS (1 << 3)
+
extern int setjmp_call_p (const_tree);
extern bool gimple_alloca_call_p (const_gimple);
extern bool alloca_call_p (const_tree);