aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBen Elliston <bje@au.ibm.com>2004-10-13 04:33:28 +0000
committerBen Elliston <bje@gcc.gnu.org>2004-10-13 14:33:28 +1000
commitf76ccf602e952b33cbfb9684e307af4e09b9a82c (patch)
tree6a081f1f6693d5039bffedca48954bf4f88f18fc /gcc
parent86df10e35e37a9bc0a50e43503e9347719cc50e7 (diff)
downloadgcc-f76ccf602e952b33cbfb9684e307af4e09b9a82c.zip
gcc-f76ccf602e952b33cbfb9684e307af4e09b9a82c.tar.gz
gcc-f76ccf602e952b33cbfb9684e307af4e09b9a82c.tar.bz2
basic-block.h (edge_iterator): Keep the address of VEC(edge) *.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/basic-block.h26
-rw-r--r--gcc/gcse.c4
3 files changed, 30 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5083211..7a34201 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index e2d20ac..ed03ac9 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -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
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 1370be1..f1e1b0a 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -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);
}
}
}