- BugFix: check mode_T nodes for different_constraints
[libfirm] / ir / be / belive.c
index ead176e..e9e5783 100644 (file)
@@ -24,9 +24,7 @@
  * @date        06.12.2004
  * @version     $Id$
  */
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 /* statev is expensive here, only enable when needed */
 #define DISABLE_STATEV
@@ -585,9 +583,8 @@ void be_liveness_invalidate(be_lv_t *lv)
 /* Compute the inter block liveness for a graph. */
 be_lv_t *be_liveness(const be_irg_t *birg)
 {
-       be_lv_t *lv = xmalloc(sizeof(lv[0]));
+       be_lv_t *lv = XMALLOCZ(be_lv_t);
 
-       memset(lv, 0, sizeof(lv[0]));
        lv->irg  = be_get_birg_irg(birg);
        lv->birg = birg;
 #ifdef USE_LIVE_CHK
@@ -791,8 +788,7 @@ int be_check_dominance(ir_graph *irg)
        return !problem_found;
 }
 
-void be_liveness_transfer(const arch_env_t *arch_env,
-                          const arch_register_class_t *cls,
+void be_liveness_transfer(const arch_register_class_t *cls,
                           ir_node *node, ir_nodeset_t *nodeset)
 {
        int i, arity;
@@ -807,11 +803,11 @@ void be_liveness_transfer(const arch_env_t *arch_env,
                foreach_out_edge(node, edge) {
                        ir_node *proj = get_edge_src_irn(edge);
 
-                       if (arch_irn_consider_in_reg_alloc(arch_env, cls, proj)) {
+                       if (arch_irn_consider_in_reg_alloc(cls, proj)) {
                                ir_nodeset_remove(nodeset, proj);
                        }
                }
-       } else if (arch_irn_consider_in_reg_alloc(arch_env, cls, node)) {
+       } else if (arch_irn_consider_in_reg_alloc(cls, node)) {
                ir_nodeset_remove(nodeset, node);
        }
 
@@ -819,14 +815,14 @@ void be_liveness_transfer(const arch_env_t *arch_env,
        for (i = 0; i < arity; ++i) {
                ir_node *op = get_irn_n(node, i);
 
-               if (arch_irn_consider_in_reg_alloc(arch_env, cls, op))
+               if (arch_irn_consider_in_reg_alloc(cls, op))
                        ir_nodeset_insert(nodeset, op);
        }
 }
 
 
 
-void be_liveness_end_of_block(const be_lv_t *lv, const arch_env_t *arch_env,
+void be_liveness_end_of_block(const be_lv_t *lv,
                               const arch_register_class_t *cls,
                               const ir_node *block, ir_nodeset_t *live)
 {
@@ -835,7 +831,7 @@ void be_liveness_end_of_block(const be_lv_t *lv, const arch_env_t *arch_env,
        assert(lv->nodes && "live sets must be computed");
        be_lv_foreach(lv, block, be_lv_state_end, i) {
                ir_node *node = be_lv_get_irn(lv, block, i);
-               if(!arch_irn_consider_in_reg_alloc(arch_env, cls, node))
+               if (!arch_irn_consider_in_reg_alloc(cls, node))
                        continue;
 
                ir_nodeset_insert(live, node);
@@ -844,14 +840,14 @@ void be_liveness_end_of_block(const be_lv_t *lv, const arch_env_t *arch_env,
 
 
 
-void be_liveness_nodes_live_at(const be_lv_t *lv, const arch_env_t *arch_env,
+void be_liveness_nodes_live_at(const be_lv_t *lv,
                                const arch_register_class_t *cls,
                                const ir_node *pos, ir_nodeset_t *live)
 {
        const ir_node *bl = is_Block(pos) ? pos : get_nodes_block(pos);
        ir_node *irn;
 
-       be_liveness_end_of_block(lv, arch_env, cls, bl, live);
+       be_liveness_end_of_block(lv, cls, bl, live);
        sched_foreach_reverse(bl, irn) {
                /*
                 * If we encounter the node we want to insert the Perm after,
@@ -860,24 +856,7 @@ void be_liveness_nodes_live_at(const be_lv_t *lv, const arch_env_t *arch_env,
                if(irn == pos)
                        return;
 
-               be_liveness_transfer(arch_env, cls, irn, live);
-       }
-}
-
-void be_liveness_nodes_live_at_input(const be_lv_t *lv,
-                                     const arch_env_t *arch_env,
-                                     const arch_register_class_t *cls,
-                                     const ir_node *pos, ir_nodeset_t *live)
-{
-       const ir_node *bl = is_Block(pos) ? pos : get_nodes_block(pos);
-       ir_node *irn;
-
-       assert(lv->nodes && "live sets must be computed");
-       be_liveness_end_of_block(lv, arch_env, cls, bl, live);
-       sched_foreach_reverse(bl, irn) {
-               be_liveness_transfer(arch_env, cls, irn, live);
-               if(irn == pos)
-                       return;
+               be_liveness_transfer(cls, irn, live);
        }
 }