improved safety: added a assert() if proj's are placed
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Fri, 13 Jul 2007 13:46:03 +0000 (13:46 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Fri, 13 Jul 2007 13:46:03 +0000 (13:46 +0000)
ignore Proj nodes in place_floats_early()

[r15116]

ir/ir/irgopt.c
ir/ir/iropt.c

index 73be488..a7420fd 100644 (file)
@@ -1748,6 +1748,13 @@ place_floats_early(ir_node *n, waitq *worklist) {
        assert(irn_not_visited(n));
        mark_irn_visited(n);
 
+#ifndef CAN_PLACE_PROJS
+       while (is_Proj(n)) {
+               n = get_Proj_pred(n);
+               mark_irn_visited(n);
+       }
+#endif
+
        /* Place floating nodes. */
        if (get_irn_pinned(n) == op_pin_state_floats) {
                ir_node *curr_block = get_irn_n(n, -1);
index 3e2cace..c84d818 100644 (file)
@@ -4381,6 +4381,7 @@ static ir_node *get_block_Proj(const ir_node *self) {
 static void set_block_Proj(ir_node *self, ir_node *blk) {
        (void) self;
        (void) blk;
+       assert(blk == get_block_Proj(self) && "trying to move Proj in another block!");
 }
 
 /**