+ }
+
+ loc->spilled = spilled;
+ }
+}
+
+#if 0
+static void decide_start_workset2(const ir_node *block)
+{
+ int arity;
+ workset_t **pred_worksets;
+ int p;
+ int i;
+ int len;
+
+ /* check if all predecessors are known */
+ arity = get_irn_arity(block);
+ pred_worksets = alloca(sizeof(pred_worksets[0]) * arity);
+ for (i = 0; i < arity; ++i) {
+ ir_node *pred_block = get_Block_cfgpred_block(block, i);
+ block_info_t *pred_info = get_block_info(pred_block);
+
+ if (pred_info == NULL) {
+ /* not all predecessors known, use decide_start_workset */
+ decide_start_workset(block);
+ return;
+ }
+
+ pred_worksets[i] = pred_info->end_workset;
+ }
+
+ /* we construct a new workset */
+ workset_clear(ws);
+
+ /* take values live in all pred blocks */
+ len = workset_get_length(pred_worksets[0]);
+ for (p = 0; p < len; ++p) {
+ const loc_t *l = &pred_worksets[0]->vals[p];
+ ir_node *value;
+ bool spilled = false;
+
+ if (USES_IS_INFINITE(l->time))
+ continue;
+
+ /* value available in all preds? */
+ value = l->node;
+ for (i = 1; i < arity; ++i) {
+ bool found = false;
+ workset_t *p_workset = pred_worksets[i];
+ int p_len = workset_get_length(p_workset);
+ int p_i;
+
+ for (p_i = 0; p_i < p_len; ++p_i) {
+ const loc_t *p_l = &p_workset->vals[p_i];
+ if (p_l->node != value)
+ continue;
+
+ found = true;
+ if (p_l->spilled)
+ spilled = true;