X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firedges.c;h=73a52146133f206f5a23e46e6f7400f4933a3135;hb=f250d98f949371038744bd320096fa98f4b218fe;hp=336c7b881af1fe700a78a44f55a5efb6b297636c;hpb=14a32bf6e4fe7805dd21304e699905430eb5cdb4;p=libfirm diff --git a/ir/ir/iredges.c b/ir/ir/iredges.c index 336c7b881..73a521461 100644 --- a/ir/ir/iredges.c +++ b/ir/ir/iredges.c @@ -163,12 +163,12 @@ int edges_register_private_data(size_t n) { return res; } -/** +/* * Reset the user's private data at offset 'offset' * The user has to remember his offset and the size of his data! * Caution: Using wrong values here can destroy other users private data! */ -void edges_reset_private_data(ir_graph *irg, int offset, size_t size) { +void edges_reset_private_data(ir_graph *irg, int offset, unsigned size) { irg_edge_info_t *info = _get_irg_edge_info(irg, EDGE_KIND_NORMAL); ir_edge_t *edge; ir_edgeset_iterator_t iter; @@ -584,6 +584,8 @@ void edges_activate_kind(ir_graph *irg, ir_edge_kind_t kind) visit.data = &w; + assert(!info->activated); + info->activated = 1; edges_init_graph_kind(irg, kind); if (kind == EDGE_KIND_DEP) { @@ -891,11 +893,20 @@ void edges_deactivate(ir_graph *irg) { edges_deactivate_kind(irg, EDGE_KIND_NORMAL); } -int edges_assure(ir_graph *irg) { - int activated = edges_activated(irg); +int edges_assure(ir_graph *irg) +{ + int activated = 0; - if (!activated) - edges_activate(irg); + if (edges_activated_kind(irg, EDGE_KIND_BLOCK)) { + activated = 1; + } else { + edges_activate_kind(irg, EDGE_KIND_BLOCK); + } + if (edges_activated_kind(irg, EDGE_KIND_NORMAL)) { + activated = 1; + } else { + edges_activate_kind(irg, EDGE_KIND_NORMAL); + } return activated; }