aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2000-04-13 13:59:00 +0000
committerJan Hubicka <hubicka@gcc.gnu.org>2000-04-13 13:59:00 +0000
commit2a8f6b90c17bc2eb63bb218e7b11b6c6178c9d70 (patch)
treed0cc1485f0444d16267f642aaa62f86e34308a1e /gcc/tree.h
parentc966901c242442c6ca4d34c8cdc85f5dfd3dbdd3 (diff)
downloadgcc-2a8f6b90c17bc2eb63bb218e7b11b6c6178c9d70.zip
gcc-2a8f6b90c17bc2eb63bb218e7b11b6c6178c9d70.tar.gz
gcc-2a8f6b90c17bc2eb63bb218e7b11b6c6178c9d70.tar.bz2
alias.c (nonlocal_reference_p): Take a care for CALL_INSNS's fusage field.
* alias.c (nonlocal_reference_p): Take a care for CALL_INSNS's fusage field. * calls.c (ECF_PURE): New flag. (emit_call_1): Handle ECF_PURE calls. (initialize_argument_information): Unset ECF_PURE flag too. (precompute_arguments): Precompute for ECF_PURE too. (expand_call): Handle ECF_PURE calls too. (emit_library_call_value_1): Rename no_queue argument to fn_type, accept value of 2 as pure function. (emit_library_call_value, emit_library_call): Rename no_queue argument to fn_type. * optabs.c (prepare_cmp_insn): Pass fn_type 2 to memcmp call. * tree.h (DECL_IS_PURE): New macro. (struct tree_decl): Add pure_flag. * c-common.c (enum attrs): Add attribute "pure". (init_attributes): Initialize attribute "pure" (decl_attributes): Handle attribute "pure". * extend.texi (Attribute "pure"): Document. * calls.c (expand_call): Add (mem:BLK (scratch)) to "equal from" in pure function. (flags_from_decl_or_type): Support attribute "pure". From-SVN: r33138
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index 0332102..9c426fa 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -1253,6 +1253,10 @@ struct tree_type
not an alias. */
#define DECL_IS_MALLOC(NODE) (FUNCTION_DECL_CHECK (NODE)->decl.malloc_flag)
+/* Nonzero in a FUNCTION_DECL means this function should be treated
+ as "pure" function (like const function, but may read global memory). */
+#define DECL_IS_PURE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl.pure_flag)
+
/* Nonzero in a FIELD_DECL means it is a bit field, and must be accessed
specially. */
#define DECL_BIT_FIELD(NODE) (FIELD_DECL_CHECK (NODE)->decl.bit_field_flag)
@@ -1392,6 +1396,7 @@ struct tree_decl
unsigned comdat_flag : 1;
unsigned malloc_flag : 1;
unsigned no_limit_stack : 1;
+ unsigned pure_flag : 1;
#ifdef ONLY_INT_FIELDS
unsigned int built_in_class : 2;
#else