X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbelistsched.c;h=c8cf497ac010473b2d263b744f51ea359f96e7ca;hb=ce0f8748151b1be09de1e344a5133bd6759934a1;hp=09ea4e1ed1115adbc2eceb55f8472c514106c666;hpb=ef9e93e28c51fb162e73554f07239d99f9058878;p=libfirm diff --git a/ir/be/belistsched.c b/ir/be/belistsched.c index 09ea4e1ed..c8cf497ac 100644 --- a/ir/be/belistsched.c +++ b/ir/be/belistsched.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -61,8 +61,8 @@ #include "bestat.h" #include "beirg_t.h" -#include -#include +#include "lc_opts.h" +#include "lc_opts_enum.h" DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL); @@ -452,12 +452,19 @@ static void list_sched_block(ir_node *block, void *env_ptr) /* Then one can add all nodes are ready to the set. */ foreach_out_edge(block, edge) { - ir_node *irn = get_edge_src_irn(edge); + ir_node *irn = get_edge_src_irn(edge); + ir_opcode code = get_irn_opcode(irn); int users; - /* Skip the end node because of keepalive edges. */ - if (get_irn_opcode(irn) == iro_End) + if (code == iro_End) { + /* Skip the end node because of keep-alive edges. */ continue; + } else if (code == iro_Block) { + /* A Block-Block edge. This should be the MacroBlock + * edge, ignore it. */ + assert(get_Block_MacroBlock(irn) == block && "Block-Block edge found"); + continue; + } users = get_irn_n_edges(irn); if (users == 0) @@ -485,7 +492,7 @@ static void list_sched_block(ir_node *block, void *env_ptr) } else { /* Other nodes must have all operands in other blocks to be made - * ready */ + * ready */ int ready = 1; /* Check, if the operands of a node are not local to this block */