diff options
author | Jan Hubicka <jh@suse.cz> | 2006-11-28 15:42:37 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2006-11-28 14:42:37 +0000 |
commit | 5cd4ec7f24ef2fca4e1e27836e5eee7b15b8abd8 (patch) | |
tree | 5e09813d89b6e045357e6ee37686e9b16cf2a1ec /gcc/tree-flow.h | |
parent | 3faa49284198625952a4420b889d5139710dab81 (diff) | |
download | gcc-5cd4ec7f24ef2fca4e1e27836e5eee7b15b8abd8.zip gcc-5cd4ec7f24ef2fca4e1e27836e5eee7b15b8abd8.tar.gz gcc-5cd4ec7f24ef2fca4e1e27836e5eee7b15b8abd8.tar.bz2 |
Privatize SSA variables into gimple_df.
* tree-flow-inline.h
(gimple_in_ssa_p, gimple_aliases_computed_p, gimple_addressable_vars,
gimple_call_clobbered_vars, gimple_referenced_vars, gimple_global_var,
gimple_nonlocal_all): New accessors.
(first_referenced_var): Update.
(mark_stmt_modified): Update.
(is_call_clobbered): Update.
(mark_call_clobbered): Update.
(clear_call_clobbered): Update.
(mark_non_addressable): Update.
* tree-vrp.c (get_value_range): Update.
* tree-into-ssa.c (in_ssa_p): Kill.
(get_default_def_for): Update.
(rewrite_into_ssa): Update.
* tree-complex.c (init_parameter_lattice_values): Update.
(update_complex_assignment): Update.
(update_parameter_components): Update.
(expand_complex_libcall): Update.
(expand_complex_operations_1): Update.
* tree-tailcall.c (arg_needs_copy_p): Update.
(add_virtual_phis): Update.
(tree_optimize_tail_calls_1): Update.
* tree-ssa-dse.c (memory_ssa_name_same): Update.
* tree-ssa-copyrename.c
(copy_rename_partition_coalesce): Update.
* tree-ssa-math-opts.c (execute_cse_reciprocals): Update.
* tree-ssa-propagate.c (set_rhs): Update.
* tree-ssa-alias.c (aliases_computed_p, call_clobbered_vars,
addressable_vars, global_var):Kill.
(set_initial_properties): Update.
(init_alias_info): Update.
(finalize_ref_all_pointers): Update.
(setup_pointers_and_addressables): Update.
(maybe_create_global_var): Update.
(create_global_var): Update.
(dump_points_to_info): Update.
* function.h (struct gimple_df): Forward declare.
(struct function): Add GIMPLE_DF field.
* gimplify.c (force_gimple_operand): Update.
* tree-dfa.c (referenced_vars, default_defs): KIll.
(make_rename_temp): Update.
(dump_variable): Update.
(referenced_var_lookup): Update.
(referenced_var_check_and_insert): Update.
(default_def): Rename to ...
(gimple_default_def): ... this one; accept cfun argument.
(set_default_def): Update.
* tree-cfgcleanup.c (modified_noreturn_calls): Kill.
(cleanup_control_flow): Update.
* tree-ssa-pre.c (compute_avail): Update
* tree-ssa-live.c (calculate_live_on_entry): Update.
* tree-ssa.c (verify_use): Update.
(verify_call_clobbering): Update.
(verify_call_clobbering): Update.
(init_tree_ssa): Update.
(delete_tree_ssa): Update.
* tree-outof-ssa.c (coalesce_ssa_name): Update.
(rewrite_out_of_ssa): Update.
* tree-flow.h (gimple_df): New structure collecting dataflow variables.
(FREE_SSANAMES, SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS): New
private accessors.
(in_ssa_p, modified_noreturn_calls, referenced_vars, default_defs,
ssa_names, global_var, nonlocal_all, call_clobbered_vars,
addressable_vars, aliases_computed_p): Kill.
(default_def): Rename to...
(gimple_default_def): ... this one.
(defaule_def_fn): Kill.
(num_referenced_vars, ssa_names, num_ssa_names): Update.
* tree-ssa-structalias.c (nonlocal_all): Kill.
(get_constraint_exp_from_ssa_var): Update.
(create_nonlocal_var): Update.
(get_constraint_for): Update.
(update_alias_info): Update.
(find_global_initializers): Update.
(intra_create_variable_infos): Update.
(intra_create_variable_infos):
(find_what_p_points_to): Update.
(init_alias_heapvars): Update.
* tree-cfg.c (remove_bb): Update.
(gimplify_val): Update.
* tree-ssa-reassoc.c (get_rank): Update.
(init_reassoc): Update.
* tree-ssanames.c: Do not include gt-tree-ssanames.h
(ssa_names, free_ssanames): Kill.
(init_ssanames): Update.
(make_ssa_name): Update.
(release_ssa_name): Update.
(release_defs): Update.
(replace_ssa_name_symbol): Update.
* tree-ssa-operands.c (access_can_touch_variable): Update.
(add_virtual_operand): Update.
(add_call_clobber_ops): Update.
(add_call_read_ops): Update.
(get_call_expr_operands): Update.
(get_asm_expr_operands): Update.
From-SVN: r119294
Diffstat (limited to 'gcc/tree-flow.h')
-rw-r--r-- | gcc/tree-flow.h | 99 |
1 files changed, 62 insertions, 37 deletions
diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 6108b62..fad1686 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -39,8 +39,63 @@ struct basic_block_def; typedef struct basic_block_def *basic_block; #endif -/* True if the code is in ssa form. */ -extern bool in_ssa_p; +/* Gimple dataflow datastructure. All publically available fields shall have + gimple_ accessor defined in tree-flow-inline.h, all publically modifiable + fields should have gimple_set accessor. */ +struct gimple_df GTY(()) { + /* Array of all variables referenced in the function. */ + htab_t GTY((param_is (struct int_tree_map))) referenced_vars; + /* A list of all the noreturn calls passed to modify_stmt. + cleanup_control_flow uses it to detect cases where a mid-block + indirect call has been turned into a noreturn call. When this + happens, all the instructions after the call are no longer + reachable and must be deleted as dead. */ + VEC(tree,gc) *modified_noreturn_calls; + /* Array of all SSA_NAMEs used in the function. */ + VEC(tree,gc) *ssa_names; + + /* Artificial variable used to model the effects of function calls. */ + tree global_var; + + /* Artificial variable used to model the effects of nonlocal + variables. */ + tree nonlocal_all; + + /* Call clobbered variables in the function. If bit I is set, then + REFERENCED_VARS (I) is call-clobbered. */ + bitmap call_clobbered_vars; + + /* Addressable variables in the function. If bit I is set, then + REFERENCED_VARS (I) has had its address taken. Note that + CALL_CLOBBERED_VARS and ADDRESSABLE_VARS are not related. An + addressable variable is not necessarily call-clobbered (e.g., a + local addressable whose address does not escape) and not all + call-clobbered variables are addressable (e.g., a local static + variable). */ + bitmap addressable_vars; + + /* Free list of SSA_NAMEs. */ + tree free_ssanames; + + /* Hashtable holding definition for symbol. If this field is not NULL, it + means that the first reference to this variable in the function is a + USE or a VUSE. In those cases, the SSA renamer creates an SSA name + for this variable with an empty defining statement. */ + htab_t GTY((param_is (struct int_tree_map))) default_defs; + + /* 'true' after aliases have been computed (see compute_may_aliases). */ + unsigned int aliases_computed_p : 1; + + /* True if the code is in ssa form. */ + unsigned int in_ssa_p : 1; +}; + +/* Accessors for internal use only. Generic code should use abstraction + provided by tree-flow-inline.h or specific modules. */ +#define FREE_SSANAMES(fun) (fun)->gimple_df->free_ssanames +#define SSANAMES(fun) (fun)->gimple_df->ssa_names +#define MODIFIED_NORETURN_CALLS(fun) (fun)->gimple_df->modified_noreturn_calls +#define DEFAULT_DEFS(fun) (fun)->gimple_df->default_defs typedef struct { @@ -206,7 +261,7 @@ struct var_ann_d GTY(()) /* During into-ssa and the dominator optimizer, this field holds the current version of this variable (an SSA_NAME). */ tree current_def; - + /* If this variable is a structure, this fields holds a list of symbols representing each of the fields of the structure. */ subvar_t subvars; @@ -329,8 +384,6 @@ union tree_ann_d GTY((desc ("ann_type ((tree_ann_t)&%h)"))) struct stmt_ann_d GTY((tag ("STMT_ANN"))) stmt; }; -extern GTY(()) VEC(tree,gc) *modified_noreturn_calls; - typedef union tree_ann_d *tree_ann_t; typedef struct var_ann_d *var_ann_t; typedef struct function_ann_d *function_ann_t; @@ -422,40 +475,13 @@ typedef struct VEC_iterate (tree, (VEC), (ITER).i, (VAR)); \ (ITER).i++) -/* Array of all variables referenced in the function. */ -extern GTY((param_is (struct int_tree_map))) htab_t referenced_vars; - -/* Default defs for undefined symbols. */ -extern GTY((param_is (struct int_tree_map))) htab_t default_defs; - extern tree referenced_var_lookup (unsigned int); extern bool referenced_var_check_and_insert (tree); -#define num_referenced_vars htab_elements (referenced_vars) +#define num_referenced_vars htab_elements (gimple_referenced_vars (cfun)) #define referenced_var(i) referenced_var_lookup (i) -/* Array of all SSA_NAMEs used in the function. */ -extern GTY(()) VEC(tree,gc) *ssa_names; - -#define num_ssa_names (VEC_length (tree, ssa_names)) -#define ssa_name(i) (VEC_index (tree, ssa_names, (i))) - -/* Artificial variable used to model the effects of function calls. */ -extern GTY(()) tree global_var; - -/* Artificial variable used to model the effects of nonlocal - variables. */ -extern GTY(()) tree nonlocal_all; - -/* Call clobbered variables in the function. If bit I is set, then - REFERENCED_VARS (I) is call-clobbered. */ -extern bitmap call_clobbered_vars; - -/* Addressable variables in the function. If bit I is set, then - REFERENCED_VARS (I) has had its address taken. */ -extern bitmap addressable_vars; - -/* 'true' after aliases have been computed (see compute_may_aliases). */ -extern bool aliases_computed_p; +#define num_ssa_names (VEC_length (tree, cfun->gimple_df->ssa_names)) +#define ssa_name(i) (VEC_index (tree, cfun->gimple_df->ssa_names, (i))) /* Macros for showing usage statistics. */ #define SCALE(x) ((unsigned long) ((x) < 1024*10 \ @@ -652,8 +678,7 @@ extern void find_new_referenced_vars (tree *); extern tree make_rename_temp (tree, const char *); extern void set_default_def (tree, tree); -extern tree default_def (tree); -extern tree default_def_fn (struct function *, tree); +extern tree gimple_default_def (struct function *, tree); /* In tree-phinodes.c */ extern void reserve_phi_args_for_new_edge (basic_block); |