always dump additional method props
[libfirm] / ir / be / belive.c
index 76da51c..8b7911d 100644 (file)
@@ -509,30 +509,21 @@ void be_liveness_update(be_lv_t *lv, ir_node *irn)
 void be_liveness_transfer(const arch_register_class_t *cls,
                           ir_node *node, ir_nodeset_t *nodeset)
 {
-       int i, arity;
-
        /* You should better break out of your loop when hitting the first phi
         * function. */
        assert(!is_Phi(node) && "liveness_transfer produces invalid results for phi nodes");
 
-       if (get_irn_mode(node) == mode_T) {
-               foreach_out_edge(node, edge) {
-                       ir_node *proj = get_edge_src_irn(edge);
-
-                       if (arch_irn_consider_in_reg_alloc(cls, proj)) {
-                               ir_nodeset_remove(nodeset, proj);
-                       }
-               }
-       } else if (arch_irn_consider_in_reg_alloc(cls, node)) {
-               ir_nodeset_remove(nodeset, node);
-       }
+       ir_node *value;
+       be_foreach_definition(node, cls, value,
+               ir_nodeset_remove(nodeset, value);
+       );
 
-       arity = get_irn_arity(node);
-       for (i = 0; i < arity; ++i) {
+       int arity = get_irn_arity(node);
+       for (int i = 0; i < arity; ++i) {
                ir_node *op = get_irn_n(node, i);
-
-               if (arch_irn_consider_in_reg_alloc(cls, op))
-                       ir_nodeset_insert(nodeset, op);
+               if (!arch_irn_consider_in_reg_alloc(cls, op))
+                       continue;
+               ir_nodeset_insert(nodeset, op);
        }
 }
 
@@ -542,11 +533,8 @@ 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)
 {
-       int i;
-
        assert(lv->sets_valid && "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);
+       be_lv_foreach(lv, block, be_lv_state_end, node) {
                if (!arch_irn_consider_in_reg_alloc(cls, node))
                        continue;