+/* depth-first search of LIVE predecessors
+ * to find some element of a cycle;
+ * VISITED is a temporary state recording the
+ * visits of the search
+*/
+struct nodelist *
+mark(i)
+register struct nodelist *i;
+{
+ register struct nodelist *j;
+ register struct predlist *t;
+ if(i->live==DEAD)
+ return(NULL);
+ if(i->live==VISITED)
+ return(i);
+ i->live = VISITED;
+ for(t=i->inedges; t!=NULL; t=t->nextpred) {
+ j = mark(t->pred);
+ if(j!=NULL) {
+ note(i->name,empty);
+ return(j);
+ }
+ }
+ return(NULL);
+}