- ir_node *succ_block = get_edge_src_irn(edge);
- double execfreq = get_block_execfreq(exec_freq, succ_block);
-
- if (execfreq > best_execfreq) {
- block_info_t *block_info = get_block_info(succ_block);
- worklist_t *succ_worklist = block_info->start_worklist;
- if (succ_worklist != NULL) {
- best_execfreq = execfreq;
- worklist = succ_worklist;
- best_succ_block = succ_block;
- best_pos = get_edge_src_pos(edge);
- }
- }
+ ir_node *succ_block = get_edge_src_irn(edge);
+ double execfreq = get_block_execfreq(exec_freq, succ_block);
+ block_info_t *block_info;
+ worklist_t *succ_worklist;
+
+ if (execfreq < best_execfreq)
+ continue;
+
+ block_info = get_block_info(succ_block);
+ succ_worklist = block_info->start_worklist;
+
+ if (succ_worklist == NULL || succ_worklist->visited >= worklist_visited)
+ continue;
+
+ best_execfreq = execfreq;
+ best_worklist = succ_worklist;
+ best_succ_block = succ_block;
+ best_pos = get_edge_src_pos(edge);