diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2004-11-25 20:24:59 +0000 |
---|---|---|
committer | Andrew Macleod <amacleod@gcc.gnu.org> | 2004-11-25 20:24:59 +0000 |
commit | e288e2f51bed5d45a8a89479bc2f98337bc18c80 (patch) | |
tree | e6a3919cd01a314a36fdb8c06e651c13ea0543de /gcc/tree-flow-inline.h | |
parent | 5257260c2bac40d3691c6054520d52aced302b65 (diff) | |
download | gcc-e288e2f51bed5d45a8a89479bc2f98337bc18c80.zip gcc-e288e2f51bed5d45a8a89479bc2f98337bc18c80.tar.gz gcc-e288e2f51bed5d45a8a89479bc2f98337bc18c80.tar.bz2 |
re PR tree-optimization/18587 (build_v_may_defs and build_vuses can be improved when adding)
2004-11-25 Andrew Macleod <amacleod@redhat.com>
PR tree-optimization/18587
* tree-flow-inline.h (mark_call_clobbered, mark_non_addressable): Flag
call clobbered caches as invalid.
* tree-ssa-operands.c (ssa_call_clobbered_cache_valid): New. Flag
indicating whether the call clobbered operand cache is valid.
(ssa_ro_call_cache_valid): New. Flag indicating whether the pure/const
call operand cache is valid.
(clobbered_v_may_defs, clobbered_vuses, ro_call_vuses): New.
cached list of operands for cached call virtual operands.
(clobbered_aliased_loads, clobbered_aliased_stores,
ro_call_aliased_load): New. flags caching whether alias bits are to be
set in call stmt's. */
(fini_ssa_operands): Remove call operand caches if present.
(get_expr_operands, get_asm_expr_operands, get_indirect_ref_operands):
Pass stmt annotation to add_stmt_operand.
(get_call_expr_operands): Add call clobbered variables first.
(add_stmt_operand): Take stmt annotation rather than stmt as a param.
(add_call_clobber_ops, add_call_read_ops): Use the call operand cache
if it is valid, otherise fill the cache.
* tree-ssa-operands.h (ssa_clobbered_cache_valid): Declare extern.
* tree-flow.h (struct var_ann_d): Add in_vuse_list and in_v_may_def_list
bits.
* tree-ssa-operands.c (cleanup_v_may_defs): New. Clear the in_list bits
for the v_may_def elements and empty the operand build array.
(finalize_ssa_vuses): Use cleanup_v_may_defs and remove redundant VUSES
by checking the in_v_may_def_list bit.
(append_v_may_def, append_vuse): Use the in_list bit rather than
scanning the array for duplicates.
From-SVN: r91305
Diffstat (limited to 'gcc/tree-flow-inline.h')
-rw-r--r-- | gcc/tree-flow-inline.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h index ea5e741..fd31a76 100644 --- a/gcc/tree-flow-inline.h +++ b/gcc/tree-flow-inline.h @@ -621,6 +621,8 @@ mark_call_clobbered (tree var) if (ann->mem_tag_kind != NOT_A_TAG) DECL_EXTERNAL (var) = 1; bitmap_set_bit (call_clobbered_vars, ann->uid); + ssa_call_clobbered_cache_valid = false; + ssa_ro_call_cache_valid = false; } /* Mark variable VAR as being non-addressable. */ @@ -629,6 +631,8 @@ mark_non_addressable (tree var) { bitmap_clear_bit (call_clobbered_vars, var_ann (var)->uid); TREE_ADDRESSABLE (var) = 0; + ssa_call_clobbered_cache_valid = false; + ssa_ro_call_cache_valid = false; } /* Return the common annotation for T. Return NULL if the annotation |