-/**
- * Re-materialize a node.
- *
- * @param senv the spill environment
- * @param spilled the node that was spilled
- * @param reloader a irn that requires a reload
- */
-static ir_node *do_remat(spill_env_t *env, ir_node *spilled, ir_node *reloader) {
- int i, arity;
- ir_node *res;
- ir_node *bl = get_nodes_block(reloader);
- ir_node **ins;
-
- ins = alloca(get_irn_arity(spilled) * sizeof(ins[0]));
- for(i = 0, arity = get_irn_arity(spilled); i < arity; ++i) {
- ir_node *arg = get_irn_n(spilled, i);
-
- if(is_value_available(env, arg, reloader)) {
- ins[i] = arg;
- } else {
- ins[i] = do_remat(env, arg, reloader);
- }
- }
-
- /* create a copy of the node */
- res = new_ir_node(get_irn_dbg_info(spilled), env->chordal_env->irg, bl,
- get_irn_op(spilled),
- get_irn_mode(spilled),
- get_irn_arity(spilled),
- ins);
- copy_node_attr(spilled, res);
-
- DBG((env->dbg, LEVEL_1, "Insert remat %+F before reloader %+F\n", res, reloader));
- ir_printf("Insert remat %+F for %+F before reloader %+F(%s)\n", res, spilled, reloader, get_irg_dump_name(get_irn_irg(reloader)));
-
- /* insert in schedule */
- assert(!is_Block(reloader));
- sched_add_before(reloader, res);
-
- return res;
-}
-
-/*
- * ___ _ ____ _ _
- * |_ _|_ __ ___ ___ _ __| |_ | _ \ ___| | ___ __ _ __| |___
- * | || '_ \/ __|/ _ \ '__| __| | |_) / _ \ |/ _ \ / _` |/ _` / __|
- * | || | | \__ \ __/ | | |_ | _ < __/ | (_) | (_| | (_| \__ \
- * |___|_| |_|___/\___|_| \__| |_| \_\___|_|\___/ \__,_|\__,_|___/
- *
- */