aboutsummaryrefslogtreecommitdiff
path: root/gcc/ssa-iterators.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ssa-iterators.h')
-rw-r--r--gcc/ssa-iterators.h30
1 files changed, 11 insertions, 19 deletions
diff --git a/gcc/ssa-iterators.h b/gcc/ssa-iterators.h
index 03d701c..0822a98 100644
--- a/gcc/ssa-iterators.h
+++ b/gcc/ssa-iterators.h
@@ -36,25 +36,17 @@ along with GCC; see the file COPYING3. If not see
base for a circular list, and initially this is the only node in
the list.
- Fast iteration allows each use to be examined, but does not allow
- any modifications to the uses or stmts.
-
- Normal iteration allows insertion, deletion, and modification. the
- iterator manages this by inserting a marker node into the list
- immediately before the node currently being examined in the list.
- this marker node is uniquely identified by having null stmt *and* a
- null use pointer.
-
- When iterating to the next use, the iteration routines check to see
- if the node after the marker has changed. if it has, then the node
- following the marker is now the next one to be visited. if not, the
- marker node is moved past that node in the list (visualize it as
- bumping the marker node through the list). this continues until
- the marker node is moved to the original anchor position. the
- marker node is then removed from the list.
-
- If iteration is halted early, the marker node must be removed from
- the list before continuing. */
+ Fast iteration via FOR_EACH_IMM_USE_FAST allows each use to be
+ examined, but does not allow any modifications to the uses or stmts.
+
+ Safe iteration via FOR_EACH_IMM_USE_STMT and FOR_EACH_IMM_USE_ON_STMT
+ allows insertion, deletion, and modification of SSA operands within
+ the current stmt iterated. The iterator manages this by re-sorting
+ the immediate uses to batch uses on a single stmt after each other
+ and inserts a marker node into the list immediately after the node
+ ending the current batch. This marker node is uniquely identified by
+ having null stmt *and* a null use pointer. */
+
struct imm_use_iterator
{
/* This is the current use the iterator is processing. */