summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-operands.h
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-26 17:37:33 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-26 17:37:33 +0000
commitfb0c974d0fe4f065e1d8d328c9c3965e9b8db553 (patch)
tree0d7eb68bfe51ab28e40b7b4005702e4ca1a156ff /gcc/tree-ssa-operands.h
parentbe70590f5139813bebb6cea275d56bdf0d361182 (diff)
downloadgcc-fb0c974d0fe4f065e1d8d328c9c3965e9b8db553.tar.gz
* tree-flow-inline.h (op_iter_next_must_and_may_def): New.
(op_iter_init_must_and_may_def): Likewise. (unmodifiable_var_p): Move to a later point in the file. * tree-ssa-operands.h (FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND): New. * tree-ssa-dse.c (need_imm_uses_for): Remove, no longer needed. (dse_record_phis): Directly check for virtual operands rather than using need_imm_uses_for. (dse_optimize_stmt): Handle V_MUST_DEF operands. Handle case where store has multiple V_{MAY,MUST}_DEF operands. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98780 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-operands.h')
-rw-r--r--gcc/tree-ssa-operands.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/tree-ssa-operands.h b/gcc/tree-ssa-operands.h
index 288831900a7..2d531c8b64c 100644
--- a/gcc/tree-ssa-operands.h
+++ b/gcc/tree-ssa-operands.h
@@ -291,4 +291,11 @@ typedef struct ssa_operand_iterator_d
!op_iter_done (&(ITER)); \
op_iter_next_mustdef (&(KILLVAR), &(DEFVAR), &(ITER)))
+/* This macro executes a loop over the V_{MUST,MAY}_DEF of STMT. The def
+ and kill for each V_{MUST,MAY}_DEF is returned in DEFVAR and KILLVAR.
+ ITER is an ssa_op_iter structure used to control the loop. */
+#define FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND(DEFVAR, KILLVAR, STMT, ITER)\
+ for (op_iter_init_must_and_may_def (&(ITER), STMT, &(KILLVAR), &(DEFVAR));\
+ !op_iter_done (&(ITER)); \
+ op_iter_next_must_and_may_def (&(KILLVAR), &(DEFVAR), &(ITER)))
#endif /* GCC_TREE_SSA_OPERANDS_H */