diff options
author | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-11 17:50:47 +0000 |
---|---|---|
committer | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-11 17:50:47 +0000 |
commit | 5b110d39bc55eb7238f71506c36d6b33b69a43ff (patch) | |
tree | 1be60ac2481dad8bdd3382083d1b9056fea5fdac /gcc/tree-ssa-operands.h | |
parent | fcd1625387a5e51d2ed2a21cabdd0b0efdb7ca97 (diff) | |
download | gcc-5b110d39bc55eb7238f71506c36d6b33b69a43ff.tar.gz |
2004-08-11 Andrew MacLeod <amacleod@redhat.com>
* tree-flow-inline.h (get_def_ops, get_use_ops, get_v_may_def_ops,
get_vuse_ops,get_v_must_def_ops): Add operand structure reference.
(get_v_may_def_result_ptr, get_v_may_def_op_ptr): New access struct.
(start_ssa_stmt_operands): Delete.
* tree-flow.h (struct stmt_ann_d): Replace operand vectors with new
struct stmt_operands_d.
(build_ssa_operands): New extern entry point.
* tree-ssa-dom.c (record_equivalences_from_stmt): Remove operand
building code, replace with create_ssa_artficial_load_stmt().
* tree-ssa-operands.c (struct voperands_d): Delete.
(allocate_v_may_def_optype): Allocate v_may_def_operand_type_t vector.
(allocate_v_must_def_optype): Use sizeof (tree), not sizeof (tree *).
(free_uses, free_defs, free_vuses, free_v_may_defs,
free_v_must_defs): Remove dealloc parameter.
(remove_vuses, remove_v_may_def, remove_v_must_defs): Delete.
(finalize_ssa_defs, finalize_ssa_uses, finalize_ssa_v_may_defs,
finalize_ssa_vuses, finalize_ssa_v_must_defs): Perform all operand
vector comparisons, ssa_name reuse, and allocations here.
(verify_start_operands): Delete.
(finalize_ssa_stmt_operands): Set new operands by calling finalize
routines.
(start_ssa_stmt_operands): Move from tree-flow-inline.h.
(append_def, append_usei): Simplify to simple accumulation.
(append_v_may_def, append_vuse, append_v_must_def): Simplify to avoiding
duplicates and simple accumulation.
(free_ssa_operands): Free vectors in a stmt_operand structure.
(build_ssa_operands): New. Create a new stmt_operand structure from
a stmt and an old set of stmt_operands.
(get_stmt_operands): Simplify and call build_ssa_operands.
(get_expr_operands, get_asm_expr_operands, get_indirect_ref_operands,
get_call_expr_operands, add_stmt_operand, add_call_clobber_ops,
add_call_read_ops): Don't pass prev_vops around anymore.
(note_addressable): Return if no stmt annotation.
(copy_virtual_operands): Access v_may_def operands through a struct.
(create_ssa_artficial_load_stmt): New. Create a load stmt for DOM's
hash tables without treating the stmt as a real stmt.
* tree-ssa-operands.h (struct v_may_def_operand_type): New. Access
v_may_def def and use through a struct instead of 2 array elements.
(struct v_may_def_optype_d): Use v_may_def_operand_type.
(struct stmt_operands_d): New. Struct for storing all operand vectors.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85807 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-operands.h')
-rw-r--r-- | gcc/tree-ssa-operands.h | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/gcc/tree-ssa-operands.h b/gcc/tree-ssa-operands.h index 625334109dc..72aa001a29d 100644 --- a/gcc/tree-ssa-operands.h +++ b/gcc/tree-ssa-operands.h @@ -55,11 +55,19 @@ typedef struct use_optype_d GTY(()) typedef use_optype_t *use_optype; +/* Operand type which stores a def and a use tree. */ +typedef struct v_may_def_operand_type GTY(()) +{ + tree def; + tree use; +} v_may_def_operand_type_t; + /* This represents the MAY_DEFS for a stmt. */ typedef struct v_may_def_optype_d GTY(()) { unsigned num_v_may_defs; - tree GTY((length ("%h.num_v_may_defs * 2"))) v_may_defs[1]; + struct v_may_def_operand_type GTY((length ("%h.num_v_may_defs"))) + v_may_defs[1]; } v_may_def_optype_t; typedef v_may_def_optype_t *v_may_def_optype; @@ -82,6 +90,21 @@ typedef struct v_must_def_optype_d GTY(()) typedef v_must_def_optype_t *v_must_def_optype; +/* This represents the operand cache fora stmt. */ +typedef struct stmt_operands_d GTY(()) +{ + /* Statement operands. */ + struct def_optype_d * GTY (()) def_ops; + struct use_optype_d * GTY (()) use_ops; + + /* Virtual operands (V_MAY_DEF, VUSE, and V_MUST_DEF). */ + struct v_may_def_optype_d * GTY (()) v_may_def_ops; + struct vuse_optype_d * GTY (()) vuse_ops; + struct v_must_def_optype_d * GTY (()) v_must_def_ops; +} stmt_operands_t; + +typedef stmt_operands_t *stmt_operands_p; + #define USE_FROM_PTR(OP) get_use_from_ptr (OP) #define DEF_FROM_PTR(OP) get_def_from_ptr (OP) #define SET_USE(OP, V) ((*((OP).use)) = (V)) @@ -157,13 +180,8 @@ typedef v_must_def_optype_t *v_must_def_optype; extern void init_ssa_operands (void); extern void fini_ssa_operands (void); -extern void verify_start_operands (tree); -extern void finalize_ssa_stmt_operands (tree); -void add_vuse (tree, tree); extern void get_stmt_operands (tree); -extern void remove_vuses (tree); -extern void remove_v_may_defs (tree); -extern void remove_v_must_defs (tree); extern void copy_virtual_operands (tree, tree); +extern void create_ssa_artficial_load_stmt (stmt_operands_p, tree); #endif /* GCC_TREE_SSA_OPERANDS_H */ |