- Changed keep logic: all nodes can be keeped yet, thi is necessary to fix fehler152
[libfirm] / ir / ir / irnode.c
index 235e847..b0d062f 100644 (file)
@@ -902,8 +902,12 @@ ir_node *get_End_keepalive(const ir_node *end, int pos) {
 }
 
 void add_End_keepalive(ir_node *end, ir_node *ka) {
+       ir_graph *irg = get_irn_irg(end);
        assert(is_End(end));
-       assert((is_Phi(ka) || is_Proj(ka) || is_Block(ka) || is_irn_keep(ka)) && "Only Phi, Block or Keep nodes can be kept alive!");
+
+       if (get_irg_phase_state(irg) == phase_building) {
+               assert((is_Phi(ka) || is_Block(ka) || is_irn_keep(ka)) && "Only Phi, Block or Keep nodes can be kept alive!");
+       }
        add_irn_n(end, ka);
 }