static void flow_find_loops (flowgraph_t *graph) { flownode_t *node; set_iter_t *succ; flowloop_t *loop, *l; flowloop_t *loop_list = 0; int i; for (i = 0; i < graph->num_nodes; i++) { node = graph->nodes[i]; for (succ = set_first (node->successors); succ; succ = set_next (succ)) { if (set_is_member (node->dom, succ->element)) { loop = make_loop (graph, node->id, succ->element); for (l = loop_list; l; l = l->next) { if (l->head == loop->head && !set_is_subset (l->nodes, loop->nodes) && !set_is_subset (loop->nodes, l->nodes)) { set_union (l->nodes, loop->nodes); delete_loop (loop); loop = 0; break; } } if (loop) { loop->next = loop_list; loop_list = loop; } } } } graph->loops = loop_list; }
int set_is_equal(const Set *set1, const Set *set2) { if(set_size(set1) != set_size(set2)) return 0; return set_is_subset(set1, set2); }
int set_is_equal(const Set *st1, const Set *st2){ if(set_len(st1) != set_len(st2)){ return 0; } return set_is_subset(st1, st2); }
/* set_is_equal */ int set_is_equal(const Set *set1, const Set *set2) { /* Do a quick test ot rule out some cases. */ if (set_size(set1) != set_size(set2)) return 0; /* Sets of the same size are equal if they are subsets. */ return set_is_subset(set1, set2); }
//set_is_equal int set_is_equal(const Set *set1, const Set *set2) { // do a quick test to rule out some case. if (set_size(set1) != set_size(set2)) return 0; //sets of the same size are equal if they are subset. return set_is_subset(set1, set2); }