diff options
author | Richard Guenther <rguenther@suse.de> | 2008-06-28 13:17:20 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-06-28 13:17:20 +0000 |
commit | 15c151967dd1cde61b79d26374f608f63a29d411 (patch) | |
tree | c154f74717a3c268c9eb1d50886dc65b0a3c38db /gcc/tree-flow.h | |
parent | ff1c393bd32f3b018957ba9f552e344ab040f309 (diff) | |
download | gcc-15c151967dd1cde61b79d26374f608f63a29d411.zip gcc-15c151967dd1cde61b79d26374f608f63a29d411.tar.gz gcc-15c151967dd1cde61b79d26374f608f63a29d411.tar.bz2 |
tree-ssa-structalias.c (callused_id, [...]): Add.
2008-06-28 Richard Guenther <rguenther@suse.de>
* tree-ssa-structalias.c (callused_id, var_callused,
callused_tree): Add.
(handle_pure_call): New function.
(find_func_aliases): Call it.
(find_what_p_points_to): Handle the call-used set.
(clobber_what_escaped): Likewise.
(compute_call_used_vars): New function.
(init_base_vars): Init the call-used variable.
(do_sd_constraint): Do not propagate the solution from CALLUSED
but use CALLUSED as a placeholder.
(solve_graph): Likewise.
* tree-flow-inline.h (gimple_call_used_vars): New function.
* tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
(compute_call_used_vars): Declare.
* tree-ssa-alias.c (set_initial_properties): Call
compute_call_used_vars.
(reset_alias_info): Clear call-used variables.
(add_call_clobber_ops): Assert we are not called for const/pure
functions. Remove handling of them.
(add_call_read_ops): Handle pure functions by adding the
call-used set of variables as VUSEs.
* tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
(delete_tree_ssa): Free it.
* tree-dfa.c (remove_referenced_var): Clear the var from the
call-used bitmap.
* gcc.dg/tree-ssa/pr24287.c: Remove XFAIL.
From-SVN: r137222
Diffstat (limited to 'gcc/tree-flow.h')
-rw-r--r-- | gcc/tree-flow.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index ded7687..9610547 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -162,6 +162,10 @@ struct gimple_df GTY(()) REFERENCED_VARS (I) is call-clobbered. */ bitmap call_clobbered_vars; + /* Call-used variables in the function. If bit I is set, then + REFERENCED_VARS (I) is call-used at pure function call-sites. */ + bitmap call_used_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 @@ -1174,6 +1178,7 @@ tree gimple_fold_indirect_ref (tree); /* In tree-ssa-structalias.c */ bool find_what_p_points_to (tree); bool clobber_what_escaped (void); +void compute_call_used_vars (void); /* In tree-ssa-live.c */ extern void remove_unused_locals (void); |