* @date 20.10.2004
* @author Sebastian Hack
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
#include <stdio.h>
#include <stdarg.h>
compute_outs(irg);
/* Dump the graph. */
- dump_ir_block_graph(irg, "-before-sched");
+ //dump_ir_block_graph(irg, "-before-sched");
/* Schedule each single block. */
irg_block_walk_graph(irg, list_sched_block, NULL, &env);
if(to_appear_in_schedule(irn)) {
sched_info_t *info = get_irn_sched_info(irn);
INIT_LIST_HEAD(&info->list);
+ info->time_step = env->curr_time;
sched_add(env->block, irn);
DBG((env->dbg, LEVEL_2, "\tadding %n\n", irn));
block_sched_env_t be;
ir_node *irn;
- int j, m;
+ int i, n, j, m;
int phi_seen = 0;
sched_info_t *info = get_irn_sched_info(block);
DBG((be.dbg, LEVEL_1, "scheduling %n\n", block));
/* Then one can add all nodes are ready to the set. */
- int i;
- int n;
for(i = 0, n = get_irn_n_outs(block); i < n; ++i) {
ir_node *irn = get_irn_out(block, i);
+ /* Skip the end node because of keepalive edges. */
+ if(get_irn_opcode(irn) == iro_End)
+ continue;
+
/* Phi functions are scheduled immediately, since they only transfer
* data flow from the predecessors to this block. */
if(is_Phi(irn)) {