diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2010-06-02 16:39:37 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2010-06-02 16:39:37 +0000 |
commit | 718d3588b02c5fde3939e889c7586d71a99c4629 (patch) | |
tree | 4411eed49d576497752586d1a757f535660ddcf0 /gcc | |
parent | 5521cae9c297aa825d657b79f44097006deedfc8 (diff) | |
download | gcc-718d3588b02c5fde3939e889c7586d71a99c4629.tar.gz |
Only reset the GIMPLE_DEBUG information in the code gen of if-conversion.
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.
From-SVN: r160164
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-if-conv.c | 36 |
2 files changed, 28 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d64804d359b..de6cb5b76eb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 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. diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index f6e8c969dc1..25cb9183739 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -509,15 +509,7 @@ predicate_bbs (loop_p loop) 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: @@ -900,7 +892,8 @@ process_phi_nodes (struct loop *loop) } /* 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) @@ -917,11 +910,26 @@ 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); + } } } |