2010-06-02 Sebastian Pop <sebastian.pop@amd.com>
+ * tree-if-conv.c (predicate_bbs): Do not reset the GIMPLE_DEBUG
+ information.
+ (remove_conditions_and_labels): Reset the GIMPLE_DEBUG information.
+
+2010-06-02 Sebastian Pop <sebastian.pop@amd.com>
+
PR middle-end/44363
* tree-if-conv.c (predicate_bbs): Do not call gcc_unreachable,
return false instead.
case GIMPLE_LABEL:
case GIMPLE_ASSIGN:
case GIMPLE_CALL:
- break;
-
case GIMPLE_DEBUG:
- /* ??? Should there be conditional GIMPLE_DEBUG_BINDs? */
- if (gimple_debug_bind_p (gsi_stmt (itr)))
- {
- gimple_debug_bind_reset_value (gsi_stmt (itr));
- update_stmt (gsi_stmt (itr));
- }
break;
case GIMPLE_COND:
}
/* Remove all GIMPLE_CONDs and GIMPLE_LABELs of all the basic blocks
- other than the exit and latch of the LOOP. */
+ other than the exit and latch of the LOOP. Also resets the
+ GIMPLE_DEBUG information. */
static void
remove_conditions_and_labels (loop_p loop)
continue;
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); )
- if (gimple_code (gsi_stmt (gsi)) == GIMPLE_COND
- || gimple_code (gsi_stmt (gsi)) == GIMPLE_LABEL)
- gsi_remove (&gsi, true);
- else
- gsi_next (&gsi);
+ switch (gimple_code (gsi_stmt (gsi)))
+ {
+ case GIMPLE_COND:
+ case GIMPLE_LABEL:
+ gsi_remove (&gsi, true);
+ break;
+
+ case GIMPLE_DEBUG:
+ /* ??? Should there be conditional GIMPLE_DEBUG_BINDs? */
+ if (gimple_debug_bind_p (gsi_stmt (gsi)))
+ {
+ gimple_debug_bind_reset_value (gsi_stmt (gsi));
+ update_stmt (gsi_stmt (gsi));
+ }
+ gsi_next (&gsi);
+ break;
+
+ default:
+ gsi_next (&gsi);
+ }
}
}