This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/42906] [4.5 Regression] Empty loop not removed
- From: "steven at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Jan 2010 16:37:37 -0000
- Subject: [Bug tree-optimization/42906] [4.5 Regression] Empty loop not removed
- References: <bug-42906-10053@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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