aboutsummaryrefslogtreecommitdiff
path: root/gcc/pointer-set.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/pointer-set.c')
-rw-r--r--gcc/pointer-set.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc/pointer-set.c b/gcc/pointer-set.c
index 5daf88bd0bc..cd23d32ded8 100644
--- a/gcc/pointer-set.c
+++ b/gcc/pointer-set.c
@@ -171,3 +171,30 @@ pointer_set_insert (struct pointer_set_t *pset, void *p)
return 0;
}
+
+struct pointer_set_iter_t
+pointer_set_begin (struct pointer_set_t *pset)
+{
+ struct pointer_set_iter_t iter = { 0, -1 };
+
+ return pointer_set_next (pset, iter);
+}
+
+struct pointer_set_iter_t
+pointer_set_next (struct pointer_set_t *pset, struct pointer_set_iter_t it)
+{
+ struct pointer_set_iter_t res = { 0, -1 };
+ size_t pos = (size_t)(it.slot + 1);
+
+ for (; pos < pset->n_slots; ++pos)
+ {
+ if (pset->slots[pos])
+ {
+ res.elem = pset->slots[pos];
+ res.slot = pos;
+ break;
+ }
+ }
+
+ return res;
+}