diff options
author | Daniel Berlin <dberlin@dberlin.org> | 2006-01-19 01:42:48 +0000 |
---|---|---|
committer | Daniel Berlin <dberlin@gcc.gnu.org> | 2006-01-19 01:42:48 +0000 |
commit | d16a5e36692853e74ed97c362b41fdca8d69752e (patch) | |
tree | 1bea89da9c401e1b8e235d514d1d027b81c0eece /gcc/tree-flow.h | |
parent | c8db7d5c17414a130f023cf25b3fe12f6842599b (diff) | |
download | gcc-d16a5e36692853e74ed97c362b41fdca8d69752e.zip gcc-d16a5e36692853e74ed97c362b41fdca8d69752e.tar.gz gcc-d16a5e36692853e74ed97c362b41fdca8d69752e.tar.bz2 |
tree-ssa-operands.h (ssa_call_clobbered_cache_valid): Remove.
2006-01-16 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-operands.h (ssa_call_clobbered_cache_valid): Remove.
(ssa_ro_call_cache_valid): Ditto.
* tree-ssa-alias.c (sort_tags_by_id): New function.
(init_transitive_clobber_worklist): Ditto.
(add_to_worklist): Ditto.
(mark_aliases_call_clobbered): Ditto.
(compute_tag_properties): Ditto.
(set_initial_properties): Ditto.
(compute_call_clobbered): Ditto.
(compute_may_aliases): Call compute_call_clobbered and grouping.
(compute_flow_sensitive_aliasing): Remove clobbering related code.
(compute_flow_insensitive_aliasing): Grouping now happens in our
caller.
(setup_pointers_and_addressables): Remove clobbering related code.
(add_may_alias): Ditto.
(replace_may_alias): Ditto.
(get_nmt_for): Ditto.
(create_global_var):
(is_escape_site): Return an escape_type enumeration.
* tree-flow-inline.h (is_call_clobbered): Global var does not
imply call clobbered.
(mark_call_clobbered): Take a reason for marking this. Remove
marking of globalness, and cache invalidation.
(clear_call_clobbered): Remove cache invalidation code.
* tree-dfa.c (dump_variable): If details is on, dump the reason
for escaping.
* tree-outof-ssa.c (create_temp): Copy escape mask from original
variable.
* tree-flow.h (struct ptr_info_def): Add escape mask member.
(struct var_ann_d): Ditto.
(enum escape_type): New.
(mark_call_clobbered): Adjust prototype.
* tree-ssa-structalias.c (update_alias_info): Unmodifiable vars
are never call clobbered.
Record reasons for escaping.
* tree-ssa-structalias.h (is_escape_site): Update prototype.
* tree-ssa-operands.c (ssa_call_clobbered_cache_valid): Remove.
(ssa_ro_call_cache_valid): Ditto.
(clobbered_v_may_defs): Ditto.
(clobbered_vuses): Ditto.
(ro_call_vuses): Ditto.
(clobber_stats): New.
(init_ssa_operands): Zero out clobber stats.
(fini_ssa_operands): Print out clobber stats.
(get_call_expr_operands): Pass callee fndecl to
add_call_read_ops).
(add_call_clobber_ops): Remove use of cache.
Add use of PURE_CONST information.
(add_call_read_ops): Remove use of cache.
Add use of static not_read information.
From-SVN: r109938
Diffstat (limited to 'gcc/tree-flow.h')
-rw-r--r-- | gcc/tree-flow.h | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 92a6035..a766e39 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -92,6 +92,9 @@ struct ptr_info_def GTY(()) pointer will be represented by this memory tag, instead of the type tag computed by TBAA. */ tree name_mem_tag; + + /* Mask of reasons this pointer's value escapes the function */ + unsigned int escape_mask; }; @@ -213,6 +216,10 @@ struct var_ann_d GTY(()) /* If this variable is a structure, this fields holds a list of symbols representing each of the fields of the structure. */ subvar_t subvars; + + /* Mask of values saying the reasons why this variable has escaped + the function. */ + unsigned int escape_mask; }; struct function_ann_d GTY(()) @@ -751,9 +758,27 @@ enum move_pos }; extern enum move_pos movement_possibility (tree); +/* The reasons a variable may escape a function. */ +enum escape_type + { + NO_ESCAPE = 0, /* Doesn't escape. */ + ESCAPE_STORED_IN_GLOBAL = 1 << 1, + ESCAPE_TO_ASM = 1 << 2, /* Passed by address to an assembly + statement. */ + ESCAPE_TO_CALL = 1 << 3, /* Escapes to a function call. */ + ESCAPE_BAD_CAST = 1 << 4, /* Cast from pointer to integer */ + ESCAPE_TO_RETURN = 1 << 5, /* Returned from function. */ + ESCAPE_TO_PURE_CONST = 1 << 6, /* Escapes to a pure or constant + function call. */ + ESCAPE_IS_GLOBAL = 1 << 7, /* Is a global variable. */ + ESCAPE_IS_PARM = 1 << 8, /* Is an incoming function parameter. */ + ESCAPE_UNKNOWN = 1 << 9 /* We believe it escapes for some reason + not enumerated above. */ + }; + /* In tree-flow-inline.h */ static inline bool is_call_clobbered (tree); -static inline void mark_call_clobbered (tree); +static inline void mark_call_clobbered (tree, unsigned int); static inline void set_is_used (tree); static inline bool unmodifiable_var_p (tree); |