------- Additional Comments From steven at gcc dot gnu dot org 2004-10-24 23:52 ------- Fixing this is easy for all bb if bb ends in a computed goto (which on tree means there is *only* a computed goto) find the computed goto target if the target is an SSA_NAME and the SSA_NAME_DEF_STMT is a PHI node go through all the PHI nodes, and if one is the address of a label let bb be the source block of the edge for the constant PHI argument let label be the PHI argument ssa_remove_edge all outdoing edges of bb add a new edge to block_for_label(label) update the GOTO_TARGET to be label This probably should be folded into cleanup_control_flow.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18133