From: Sebastian Buchwald Date: Mon, 16 Aug 2010 07:49:36 +0000 (+0000) Subject: Added function to check whether an edge is deleted. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=df8bcc84b095d51579dae742ba97c22cde2b8f58;p=libfirm Added function to check whether an edge is deleted. [r27929] --- diff --git a/optimal.c b/optimal.c index c93ad9c3e..37fdc952c 100644 --- a/optimal.c +++ b/optimal.c @@ -665,7 +665,7 @@ void simplify_edge(pbqp *pbqp, pbqp_edge *edge) assert(tgt_node); /* If edge are already deleted, we have nothing to do. */ - if (!is_connected(src_node, edge) || !is_connected(tgt_node, edge)) + if (is_deleted(edge)) return; #if KAPS_DUMP diff --git a/pbqp_edge.c b/pbqp_edge.c index d2d273041..d0b7904ae 100644 --- a/pbqp_edge.c +++ b/pbqp_edge.c @@ -92,10 +92,24 @@ void delete_edge(pbqp_edge *edge) disconnect_edge(src_node, edge); disconnect_edge(tgt_node, edge); + edge->src = NULL; + edge->tgt = NULL; + reorder_node(src_node); reorder_node(tgt_node); } +unsigned is_deleted(pbqp_edge *edge) +{ + unsigned deleted; + + assert(edge); + + deleted = (edge->src == NULL) && (edge-> tgt == NULL); + + return deleted; +} + pbqp_edge *pbqp_edge_deep_copy(pbqp *pbqp, pbqp_edge *edge, pbqp_node *src_node, pbqp_node *tgt_node) { diff --git a/pbqp_edge.h b/pbqp_edge.h index d59fec4da..d7a78660e 100644 --- a/pbqp_edge.h +++ b/pbqp_edge.h @@ -35,5 +35,6 @@ pbqp_edge *pbqp_edge_deep_copy(pbqp *pbqp, pbqp_edge *edge, pbqp_node *src_node, pbqp_node *tgt_node); void delete_edge(pbqp_edge *edge); +unsigned is_deleted(pbqp_edge *edge); #endif /* KAPS_PBQP_EDGE_H */