+ last_irg = irg;
+}
+
+/**
+ * @return 1 if the block at pos @p pos removed a critical edge
+ * 0 else
+ */
+static INLINE int was_edge_critical(const ir_node *bl, int pos) {
+ const ir_edge_t *edge;
+ const ir_node *bl_at_pos, *bl_before;
+ assert(is_Block(bl));
+
+ /* Does bl have several predecessors ?*/
+ if (get_irn_arity(bl) <= 1)
+ return 0;
+
+ /* Does the pred have exactly one predecessor */
+ bl_at_pos = get_irn_n(bl, pos);
+ if (get_irn_arity(bl_at_pos) != 1)
+ return 0;
+
+ /* Does the pred of the pred have several sucsecessors */
+ bl_before = get_irn_n(bl_at_pos, 0);
+ edge = get_block_succ_first(bl_before);
+ return get_block_succ_next(bl_before, edge) ? 1 : 0;