This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]