This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 04 Jan 2013 11:59:42 +0000
- Subject: [Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495
- Auto-submitted: auto-generated
- References: <bug-55862-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55862
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-04 11:59:42 UTC ---
For BB 7 we iterate between
(gdb) call debug_bitmap_set (old)
debug[0] := { {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018), {plus_expr,g.0_18,1}
(0031), {plus_expr,g.4_37,1} (0046), {mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049),
{pointer_plus_expr,pretmp_45,4} (0050) }
(gdb) call debug_bitmap_set (((bb_value_sets_t) ((block)->aux))->antic_in)
debug[0] := { p_25 (0024), {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018),
{plus_expr,g.0_18,1} (0031), {plus_expr,g.4_37,1} (0046),
{mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049), {pointer_plus_expr,pretmp_45,4}
(0050) }
(gdb) call debug_bitmap_set (old)
debug[0] := { p_25 (0024), {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018),
{plus_expr,g.0_18,1} (0031), {plus_expr,g.4_37,1} (0046),
{mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049), {pointer_plus_expr,pretmp_45,4}
(0050) }
(gdb) call debug_bitmap_set (((bb_value_sets_t) ((block)->aux))->antic_in)
debug[0] := { {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018), {plus_expr,g.0_18,1}
(0031), {plus_expr,g.4_37,1} (0046), {mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049),
{pointer_plus_expr,pretmp_45,4} (0050) }
(gdb) call debug_bitmap_set (old)
debug[0] := { {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018), {plus_expr,g.0_18,1}
(0031), {plus_expr,g.4_37,1} (0046), {mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049),
{pointer_plus_expr,pretmp_45,4} (0050) }
(gdb) call debug_bitmap_set (((bb_value_sets_t) ((block)->aux))->antic_in)
debug[0] := { p_25 (0024), {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018),
{plus_expr,g.0_18,1} (0031), {plus_expr,g.4_37,1} (0046),
{mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049), {pointer_plus_expr,pretmp_45,4}
(0050) }
The CFG is quite complicated ... easier to read testcase:
int g, a, *b;
void f(void)
{
int *p;
if(g)
{
int **k = &p;
for(; g; p++)
for(a = 0; a < 1; a++)
{
int *c = p;
label2:
if(a < 1)
*c = 0;
}
goto label1;
while(g++)
for(*b = 0; *b; b++)
label1:
;
}
goto label2;
}
I have a patch.