return n;
}
+static ir_node * transform_node_End(ir_node *n) {
+ int i, n_keepalives = get_End_n_keepalives(n);
+
+ /* Remove dead blocks in keepalive list.
+ We do not generate a new End node. */
+ for (i = 0; i < n_keepalives; ++i) {
+ ir_node *ka = get_End_keepalive(n, i);
+ if (is_Block(ka) && is_Block_dead(ka))
+ set_End_keepalive(n, i, new_Bad());
+ }
+ return n;
+}
+
/**
* Tries several [inplace] [optimizing] transformations and returns an
CASE(Cast);
CASE(Proj);
CASE(Or);
+ CASE(End);
case iro_Shr:
case iro_Shrs:
case iro_Shl:
/**
- * These optimizations never deallocate nodes. This can cause dead
+ * These optimizations never deallocate nodes (in place). This can cause dead
* nodes lying on the obstack. Remove these by a dead node elimination,
* i.e., a copying garbage collection.
*/