+/**
+ * jumpthreading produces critical edges, e.g. B-C:
+ * A A
+ * \ / \ |
+ * B => B |
+ * / \ / \|
+ * C C
+ *
+ * By splitting this critical edge more threadings might be possible.
+ */
+static void split_critical_edge(ir_node *block, int pos)
+{
+ ir_graph *irg = get_irn_irg(block);
+ ir_node *in[1];
+ ir_node *new_block;
+ ir_node *new_jmp;
+
+ in[0] = get_Block_cfgpred(block, pos);
+ new_block = new_r_Block(irg, 1, in);
+ new_jmp = new_r_Jmp(new_block);
+ set_Block_cfgpred(block, pos, new_jmp);
+}
+