Remove the unused parameter const arch_env_t *env from arch_get_register_req().
[libfirm] / ir / be / bespillbelady.c
index 30814dc..ffb44f2 100644 (file)
@@ -641,21 +641,23 @@ static void decide_start_workset(const ir_node *block)
                        int    p, arity;
                        loc_t *loc = & delayed[i];
 
-                       /* don't use values which are dead in a known predecessors
-                        * to not induce unnecessary reloads */
-                       arity = get_irn_arity(block);
-                       for (p = 0; p < arity; ++p) {
-                               ir_node      *pred_block = get_Block_cfgpred_block(block, p);
-                               block_info_t *pred_info  = get_block_info(pred_block);
-
-                               if (pred_info == NULL)
-                                       continue;
-
-                               if (!workset_contains(pred_info->end_workset, loc->node)) {
-                                       DB((dbg, DBG_START,
-                                           "    delayed %+F not live at pred %+F\n", loc->node,
-                                           pred_block));
-                                       goto skip_delayed;
+                       if (!is_Phi(loc->node)) {
+                               /* don't use values which are dead in a known predecessors
+                                * to not induce unnecessary reloads */
+                               arity = get_irn_arity(block);
+                               for (p = 0; p < arity; ++p) {
+                                       ir_node      *pred_block = get_Block_cfgpred_block(block, p);
+                                       block_info_t *pred_info  = get_block_info(pred_block);
+
+                                       if (pred_info == NULL)
+                                               continue;
+
+                                       if (!workset_contains(pred_info->end_workset, loc->node)) {
+                                               DB((dbg, DBG_START,
+                                                       "    delayed %+F not live at pred %+F\n", loc->node,
+                                                       pred_block));
+                                               goto skip_delayed;
+                                       }
                                }
                        }