------- Comment #4 from rguenth at gcc dot gnu dot org 2006-11-01 13:21 ------- sccp destroys dominators, unswitching only enables the sccp opportunity. The destroying happens in cleanup_tree_cfg calling cleanup_control_flow calling tree_purge_dead_eh_edges which we don't record the true return value here even if it frees dominators, so dominators are not re-computed later in cleanup_tree_cfg_loop.
We enter the function with the following BB: ;; basic block 5, loop depth 1, count 0 ;; prev block 4, next block 6 ;; pred: 4 [95.0%] (true,exec) ;; succ: 6 [100.0%] (fallthru,exec) 10 (ab,eh,loop_exit,exec) <L16>:; # D.1861_45 = V_MAY_DEF <D.1861_50>; # TMT.44_3 = V_MAY_DEF <TMT.44_22>; # TMT.45_4 = V_MAY_DEF <TMT.45_53>; # TMT.46_5 = V_MAY_DEF <TMT.46_123>; # TMT.47_6 = V_MAY_DEF <TMT.47_124>; # TMT.49_7 = V_MAY_DEF <TMT.49_125>; redraw_window (this_20); -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-10-27 17:46:37 |2006-11-01 13:21:42 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29610