besched: Change sched_foreach_from(sched_next(x), y) to sched_foreach_after(x, y).
[libfirm] / ir / be / beabihelper.c
index a5a66ec..0462d43 100644 (file)
@@ -1,20 +1,6 @@
 /*
- * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
- *
  * This file is part of libFirm.
- *
- * This file may be distributed and/or modified under the terms of the
- * GNU General Public License version 2 as published by the Free Software
- * Foundation and appearing in the file LICENSE.GPL included in the
- * packaging of this file.
- *
- * Licensees holding valid libFirm Professional Edition licenses may use
- * this file in accordance with the libFirm Commercial License.
- * Agreement provided with the Software.
- *
- * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
+ * Copyright (C) 2012 University of Karlsruhe.
  */
 
 /**
@@ -27,6 +13,7 @@
 
 #include "beabihelper.h"
 #include "bearch.h"
+#include "beirg.h"
 #include "benode.h"
 #include "besched.h"
 #include "ircons.h"
@@ -357,12 +344,10 @@ ir_node *be_epilog_create_return(beabi_helper_env_t *env, dbg_info *dbgi,
        int       n_res       = 1; /* TODO */
        unsigned  pop         = 0; /* TODO */
        size_t    i;
-       ir_node  *ret;
 
        assert(ARR_LEN(env->epilog.value_map) == n_return_in);
 
-       ret = be_new_Return(dbgi, get_irn_irg(block), block, n_res, pop,
-                           n_return_in, in);
+       ir_node *const ret = be_new_Return(dbgi, block, n_res, pop, n_return_in, in);
        for (i = 0; i < n_return_in; ++i) {
                const reg_flag_t      *regflag = &env->epilog.regs[i];
                const arch_register_t *reg     = regflag->reg;
@@ -383,7 +368,6 @@ ir_node *be_epilog_create_return(beabi_helper_env_t *env, dbg_info *dbgi,
  */
 static bool has_real_user(const ir_node *node)
 {
-       const ir_edge_t *edge;
        foreach_out_edge(node, edge) {
                ir_node *user = get_edge_src_irn(edge);
                if (!is_End(user) && !is_Anchor(user))
@@ -413,12 +397,9 @@ static ir_node *add_to_keep(ir_node *last_keep,
 
 void be_add_missing_keeps_node(ir_node *node)
 {
-       int              n_outs, i;
-       unsigned        *found_projs;
-       const ir_edge_t *edge;
-       ir_mode         *mode = get_irn_mode(node);
-       ir_node         *last_keep;
-       ir_node        **existing_projs;
+       int       n_outs, i;
+       ir_mode  *mode = get_irn_mode(node);
+       ir_node  *last_keep;
 
        if (mode != mode_T) {
                if (!has_real_user(node)) {
@@ -438,8 +419,8 @@ void be_add_missing_keeps_node(ir_node *node)
        if (n_outs <= 0)
                return;
 
-       rbitset_alloca(found_projs, n_outs);
-       existing_projs = ALLOCANZ(ir_node*, n_outs);
+       unsigned *const found_projs    = rbitset_alloca(n_outs);
+       ir_node **const existing_projs = ALLOCANZ(ir_node*, n_outs);
        foreach_out_edge(node, edge) {
                ir_node *succ = get_edge_src_irn(edge);
                ir_mode *mode = get_irn_mode(succ);
@@ -726,10 +707,8 @@ static void create_stores_for_type(ir_graph *irg, ir_type *type)
                }
        }
 
-       if (mem != initial_mem) {
-               edges_reroute(initial_mem, mem);
-               set_Store_mem(first_store, initial_mem);
-       }
+       if (mem != initial_mem)
+               edges_reroute_except(initial_mem, mem, first_store);
 }
 
 void be_add_parameter_entity_stores(ir_graph *irg)