------- Comment #1 from steven at gcc dot gnu dot org  2010-01-30 16:37 -------
The loop is deemed necessary because the loop block (bb 6) is control dependent
on itself (?!):

(gdb) 
mark_control_dependent_edges_necessary (bb=0x7ffff7f264e0, el=0x142c5d0) at
../../trunk/gcc/tree-ssa-dce.c:388
388       EXECUTE_IF_CONTROL_DEPENDENT (bi, bb->index, edge_number)
(gdb) 
391           basic_block cd_bb = INDEX_EDGE_PRED_BB (el, edge_number);
(gdb) 
393           if (TEST_BIT (last_stmt_necessary, cd_bb->index))
(gdb) p debug_bb(cd_bb)
;; basic block 6, loop depth 1, count 0
;; prev block 3, next block 5
;; pred:       4 [100.0%]  (fallthru) 3 (fallthru,dfs_back,exec)
;; succ:       3 (true,exec) 5 (false,exec)
<bb 6>:
# i_2 = PHI <i_8(4), i_6(3)>
if (i_2 <= 999)
  goto <bb 3>;
else
  goto <bb 5>;

$22 = void
(gdb) p debug_bb(bb)
;; basic block 6, loop depth 1, count 0
;; prev block 3, next block 5
;; pred:       4 [100.0%]  (fallthru) 3 (fallthru,dfs_back,exec)
;; succ:       3 (true,exec) 5 (false,exec)
<bb 6>:
# i_2 = PHI <i_8(4), i_6(3)>
if (i_2 <= 999)
  goto <bb 3>;
else
  goto <bb 5>;

$23 = void
(gdb) 


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2010-01-30 16:37:37
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42906

Reply via email to