basic-block.h (edge_iterator): Keep the address of VEC(edge) *.
authorBen Elliston <bje@au.ibm.com>
Wed, 13 Oct 2004 04:33:28 +0000 (04:33 +0000)
committerBen Elliston <bje@gcc.gnu.org>
Wed, 13 Oct 2004 04:33:28 +0000 (14:33 +1000)
* basic-block.h (edge_iterator): Keep the address of VEC(edge) *.
(ei_container): New; renamed.
(ei_start, ei_last): New macros.
(ei_start_1, ei_last_1): Renamed from ei_start.
(ei_last_1, ei_end_p): Use ei_container() where applicable.
(ei_one_before_end_p, ei_next, ei_edge): Likewise.
* gcse.c (remove_reachable_equiv_notes): Use ei_container().

From-SVN: r88966

gcc/ChangeLog
gcc/basic-block.h
gcc/gcse.c

index 5083211e03d8559b2d8b19b2af592b8663939d97..7a342012e2a14d99f627c70b38756be435cfba25 100644 (file)
@@ -1,3 +1,13 @@
+2004-10-12  Ben Elliston  <bje@au.ibm.com>
+
+       * basic-block.h (edge_iterator): Keep the address of VEC(edge) *.
+       (ei_container): New; renamed.
+       (ei_start, ei_last): New macros.
+       (ei_start_1, ei_last_1): Renamed from ei_start.
+       (ei_last_1, ei_end_p): Use ei_container() where applicable.
+       (ei_one_before_end_p, ei_next, ei_edge): Likewise.
+       * gcse.c (remove_reachable_equiv_notes): Use ei_container().
+
 2004-10-11  Sebastian Pop  <pop@cri.ensmp.fr>
  
        * Makefile.in (tree-ssa-loop-niter.o): Depends on tree-data-ref.h.
index e2d20ac3984e85a171cc6e7332839830c8af5810..ed03ac95cbbae081a8180d1dfd5f80ad6ba8f0d3 100644 (file)
@@ -563,12 +563,22 @@ struct edge_list
 
 typedef struct {
   unsigned index;
-  VEC(edge) *container;
+  VEC(edge) **container;
 } edge_iterator;
 
+static inline VEC(edge) *
+ei_container (edge_iterator i)
+{
+  gcc_assert (i.container);
+  return *i.container;
+}
+
+#define ei_start(iter) ei_start_1 (&(iter))
+#define ei_last(iter) ei_last_1 (&(iter))
+
 /* Return an iterator pointing to the start of an edge vector.  */
 static inline edge_iterator
-ei_start (VEC(edge) *ev)
+ei_start_1 (VEC(edge) **ev)
 {
   edge_iterator i;
 
@@ -581,11 +591,11 @@ ei_start (VEC(edge) *ev)
 /* Return an iterator pointing to the last element of an edge
    vector. */
 static inline edge_iterator
-ei_last (VEC(edge) *ev)
+ei_last_1 (VEC(edge) **ev)
 {
   edge_iterator i;
 
-  i.index = EDGE_COUNT (ev) - 1;
+  i.index = EDGE_COUNT (*ev) - 1;
   i.container = ev;
 
   return i;
@@ -595,7 +605,7 @@ ei_last (VEC(edge) *ev)
 static inline bool
 ei_end_p (edge_iterator i)
 {
-  return (i.index == EDGE_COUNT (i.container));
+  return (i.index == EDGE_COUNT (ei_container (i)));
 }
 
 /* Is the iterator `i' at one position before the end of the
@@ -603,14 +613,14 @@ ei_end_p (edge_iterator i)
 static inline bool
 ei_one_before_end_p (edge_iterator i)
 {
-  return (i.index + 1 == EDGE_COUNT (i.container));
+  return (i.index + 1 == EDGE_COUNT (ei_container (i)));
 }
 
 /* Advance the iterator to the next element.  */
 static inline void
 ei_next (edge_iterator *i)
 {
-  gcc_assert (i->index < EDGE_COUNT (i->container));
+  gcc_assert (i->index < EDGE_COUNT (ei_container (*i)));
   i->index++;
 }
 
@@ -626,7 +636,7 @@ ei_prev (edge_iterator *i)
 static inline edge
 ei_edge (edge_iterator i)
 {
-  return EDGE_I (i.container, i.index);
+  return EDGE_I (ei_container (i), i.index);
 }
 
 /* Return an edge pointed to by the iterator.  Do it safely so that
index 1370be1c3490d8bffb373441aba2cabfd724d24e..f1e1b0aa85fa4c87c429699c49c8dad3c3b326eb 100644 (file)
@@ -6293,7 +6293,7 @@ remove_reachable_equiv_notes (basic_block bb, struct ls_expr *smexpr)
 
   sbitmap_zero (visited);
 
-  act = (EDGE_COUNT (ei.container) > 0 ? EDGE_I (ei.container, 0) : NULL);
+  act = (EDGE_COUNT (ei_container (ei)) > 0 ? EDGE_I (ei_container (ei), 0) : NULL);
   while (1)
     {
       if (!act)
@@ -6351,7 +6351,7 @@ remove_reachable_equiv_notes (basic_block bb, struct ls_expr *smexpr)
          if (act)
            stack[sp++] = ei;
          ei = ei_start (bb->succs);
-         act = (EDGE_COUNT (ei.container) > 0 ? EDGE_I (ei.container, 0) : NULL);
+         act = (EDGE_COUNT (ei_container (ei)) > 0 ? EDGE_I (ei_container (ei), 0) : NULL);
        }
     }
 }