------- Comment #7 from jakub at gcc dot gnu dot org 2007-10-11 19:29 ------- It calls purge_dead_edges after changing the jump, so if it changed that into an unconditional jump, purge_dead_edges will purge the EDGE_FALLTHRU edge and keep the other edge.
If cfglayout mode is supposed to avoid unconditional jumps, then that needs to be changed, so that the old non-fallthrough edge becomes EDGE_FALLTHRU and old EDGE_FALLTHRU is removed. I believe in other cases cprop_jump could e.g. only simplify an conditional jump (then what it does ATM is probably ok) or could e.g. change a conditional returnjump_p into unconditional one (how are those supposed to be expressed in cfglayout mode)? Anyway, it seems both pass_gcse and pass_bypass are both always in cfglayout mode, so no conditionalization on current_ir_type () is needed. -- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|jakub at gcc dot gnu dot org|unassigned at gcc dot gnu | |dot org Status|ASSIGNED |NEW http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33673