projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ia32_Minus64Bit needs no contraint copies.
[libfirm]
/
ir
/
ir
/
iredges.c
diff --git
a/ir/ir/iredges.c
b/ir/ir/iredges.c
index
e54cfa1
..
799dada
100644
(file)
--- a/
ir/ir/iredges.c
+++ b/
ir/ir/iredges.c
@@
-313,7
+313,6
@@
void edges_notify_edge_kind(ir_node *src, int pos, ir_node *tgt,
irg_edge_info_t *info;
ir_edgeset_t *edges;
ir_edge_t templ;
irg_edge_info_t *info;
ir_edgeset_t *edges;
ir_edge_t templ;
- ir_edge_t *edge;
assert(edges_activated_kind(irg, kind));
assert(edges_activated_kind(irg, kind));
@@
-335,7
+334,7
@@
void edges_notify_edge_kind(ir_node *src, int pos, ir_node *tgt,
*/
if (tgt == NULL) {
/* search the edge in the set. */
*/
if (tgt == NULL) {
/* search the edge in the set. */
- edge = ir_edgeset_find(edges, &templ);
+
ir_edge_t *
edge = ir_edgeset_find(edges, &templ);
/* mark the edge invalid if it was found */
if (edge) {
/* mark the edge invalid if it was found */
if (edge) {
@@
-365,7
+364,7
@@
void edges_notify_edge_kind(ir_node *src, int pos, ir_node *tgt,
/* If the old target is not null, the edge is moved. */
if (old_tgt) {
/* If the old target is not null, the edge is moved. */
if (old_tgt) {
- edge = ir_edgeset_find(edges, &templ);
+
ir_edge_t *
edge = ir_edgeset_find(edges, &templ);
assert(edge && "edge to redirect not found!");
assert(! edge->invalid && "Invalid edge encountered");
assert(edge && "edge to redirect not found!");
assert(! edge->invalid && "Invalid edge encountered");
@@
-441,11
+440,11
@@
void edges_notify_edge(ir_node *src, int pos, ir_node *tgt, ir_node *old_tgt,
const ir_edge_t *next;
foreach_out_edge_kind_safe(old_tgt, edge, next, EDGE_KIND_BLOCK) {
ir_node *succ = get_edge_src_irn(edge);
const ir_edge_t *next;
foreach_out_edge_kind_safe(old_tgt, edge, next, EDGE_KIND_BLOCK) {
ir_node *succ = get_edge_src_irn(edge);
- int
pos
= get_edge_src_pos(edge);
- ir_node *block_pred = get_Block_cfgpred(succ, pos);
+ int
succ_pos
= get_edge_src_pos(edge);
+ ir_node *block_pred = get_Block_cfgpred(succ,
succ_
pos);
if (block_pred != src)
continue;
if (block_pred != src)
continue;
- edges_notify_edge_kind(succ, pos, tgt, old_tgt,
+ edges_notify_edge_kind(succ,
succ_
pos, tgt, old_tgt,
EDGE_KIND_BLOCK, irg);
}
}
EDGE_KIND_BLOCK, irg);
}
}
@@
-519,9
+518,7
@@
static void build_edges_walker(ir_node *irn, void *data)
int i, n;
ir_edge_kind_t kind = w->kind;
ir_graph *irg = get_irn_irg(irn);
int i, n;
ir_edge_kind_t kind = w->kind;
ir_graph *irg = get_irn_irg(irn);
- get_edge_src_n_func_t *get_n;
- get_n = edge_kind_info[kind].get_n;
foreach_tgt(irn, i, n, kind) {
ir_node *pred = get_n(irn, i, kind);
edges_notify_edge_kind(irn, i, pred, NULL, kind, irg);
foreach_tgt(irn, i, n, kind) {
ir_node *pred = get_n(irn, i, kind);
edges_notify_edge_kind(irn, i, pred, NULL, kind, irg);
@@
-591,6
+588,8
@@
static void visitor(ir_node *irn, void *data)
if (is_Deleted(irn))
return;
if (is_Deleted(irn))
return;
+ if (!is_Block(irn) && is_Deleted(get_nodes_block(irn)))
+ return;
if (!irn_visited_else_mark(irn)) {
info->visit(irn, info->data);
if (!irn_visited_else_mark(irn)) {
info->visit(irn, info->data);