diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-04-12 15:20:48 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-04-12 15:20:48 +0000 |
commit | cb24521686308314fadcd96cdfd23858aa19aa95 (patch) | |
tree | a5f4bc000b917f934f12c45b1b6e764ac0256de6 /gcc/tree-ssa-alias.c | |
parent | d160af417cc4bcaec9f15e6a21e566cfe106f7c8 (diff) | |
download | gcc-cb24521686308314fadcd96cdfd23858aa19aa95.tar.gz |
2010-04-12 Richard Guenther <rguenther@suse.de>
* gsstruct.def (GSS_CALL): New.
* gimple.def (GIMPLE_CALL): Change to GSS_CALL.
* gimple.h: Include tree-ssa-alias.h.
(struct gimple_statement_call): New.
(union gimple_statement_struct_d): Add gimple_call member.
(gimple_call_reset_alias_info): Declare.
(gimple_call_use_set): New function.
(gimple_call_clobber_set): Likewise.
* Makefile.in (GIMPLE_H): Add tree-ssa-alias.h.
* gimple.c (gimple_call_reset_alias_info): New function.
(gimple_build_call_1): Call it.
* lto-streamer-in.c (input_gimple_stmt): Likewise.
* tree-inline.c (remap_gimple_stmt): Likewise.
(expand_call_inline): Remove callused handling.
* cfgexpand.c (update_alias_info_with_stack_vars): Likewise.
* tree-dfa.c (dump_variable): Likewise.
* tree-parloops.c (parallelize_loops): Likewise.
* tree-ssa.c (init_tree_ssa): Likewise.
(delete_tree_ssa): Likewise.
* tree-flow-inline.h (is_call_used): Remove.
* tree-flow.h (struct gimple_df): Remove callused member.
* tree-nrv.c (dest_safe_for_nrv_p): Adjust predicate.
* tree-ssa-alias.c (dump_alias_info): Remove callused handling.
(ref_maybe_used_by_call_p_1): Simplify.
(call_may_clobber_ref_p_1): Likewise.
* tree-ssa-structalias.c (compute_points_to_sets): Set
the call stmt used and clobbered sets.
* tree-tailcall.c (suitable_for_tail_opt_p): Adjust predicate.
(find_tail_calls): Verify the tail call.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158226 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-alias.c')
-rw-r--r-- | gcc/tree-ssa-alias.c | 57 |
1 files changed, 14 insertions, 43 deletions
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 282148ce5e9..7f09df8d16c 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -336,8 +336,6 @@ dump_alias_info (FILE *file) fprintf (file, "\nESCAPED"); dump_points_to_solution (file, &cfun->gimple_df->escaped); - fprintf (file, "\nCALLUSED"); - dump_points_to_solution (file, &cfun->gimple_df->callused); fprintf (file, "\n\nFlow-insensitive points-to information\n\n"); @@ -1070,51 +1068,24 @@ ref_maybe_used_by_call_p_1 (gimple call, ao_ref *ref) goto process_args; } - /* If the base variable is call-used or call-clobbered then - it may be used. */ - if (flags & (ECF_PURE|ECF_CONST|ECF_LOOPING_CONST_OR_PURE|ECF_NOVOPS)) + /* Check if the base variable is call-used. */ + if (DECL_P (base)) { - if (DECL_P (base)) - { - if (is_call_used (base)) - return true; - } - else if (INDIRECT_REF_P (base) - && TREE_CODE (TREE_OPERAND (base, 0)) == SSA_NAME) - { - struct ptr_info_def *pi = SSA_NAME_PTR_INFO (TREE_OPERAND (base, 0)); - if (!pi) - return true; - - if (pt_solution_includes_global (&pi->pt) - || pt_solutions_intersect (&cfun->gimple_df->callused, &pi->pt) - || pt_solutions_intersect (&cfun->gimple_df->escaped, &pi->pt)) - return true; - } - else + if (pt_solution_includes (gimple_call_use_set (call), base)) return true; } - else + else if (INDIRECT_REF_P (base) + && TREE_CODE (TREE_OPERAND (base, 0)) == SSA_NAME) { - if (DECL_P (base)) - { - if (is_call_clobbered (base)) - return true; - } - else if (INDIRECT_REF_P (base) - && TREE_CODE (TREE_OPERAND (base, 0)) == SSA_NAME) - { - struct ptr_info_def *pi = SSA_NAME_PTR_INFO (TREE_OPERAND (base, 0)); - if (!pi) - return true; + struct ptr_info_def *pi = SSA_NAME_PTR_INFO (TREE_OPERAND (base, 0)); + if (!pi) + return true; - if (pt_solution_includes_global (&pi->pt) - || pt_solutions_intersect (&cfun->gimple_df->escaped, &pi->pt)) - return true; - } - else + if (pt_solutions_intersect (gimple_call_use_set (call), &pi->pt)) return true; } + else + return true; /* Inspect call arguments for passed-by-value aliases. */ process_args: @@ -1347,8 +1318,9 @@ call_may_clobber_ref_p_1 (gimple call, ao_ref *ref) return false; } + /* Check if the base variable is call-clobbered. */ if (DECL_P (base)) - return is_call_clobbered (base); + return pt_solution_includes (gimple_call_clobber_set (call), base); else if (INDIRECT_REF_P (base) && TREE_CODE (TREE_OPERAND (base, 0)) == SSA_NAME) { @@ -1356,8 +1328,7 @@ call_may_clobber_ref_p_1 (gimple call, ao_ref *ref) if (!pi) return true; - return (pt_solution_includes_global (&pi->pt) - || pt_solutions_intersect (&cfun->gimple_df->escaped, &pi->pt)); + return pt_solutions_intersect (gimple_call_clobber_set (call), &pi->pt); } return true; |