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

            Bug ID: 57718
           Summary: ICE in execute_todo, passes.c:2002 at -O3 (both -m32 &
                    -m64)
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: su at cs dot ucdavis.edu

With current gcc trunk on x86_64-linux, the following code causes an ICE when
compiled at -O3 (both -m32 and -m64). This is a regression from 4.8.x. 

It may be related to 57592. 

$ gcc-trunk -v
gcc version 4.9.0 20130625 (experimental) [trunk revision 200388] (GCC) 
$ gcc-trunk -O2 -c reduced.c
$ gcc-4.8 -O3 -c reduced.c
$ gcc-trunk -O3 -c reduced.c
reduced.c: In function ‘foo’:
reduced.c:3:6: internal compiler error: Segmentation fault
 void foo ()
      ^
0x7d729f crash_signal
    ../../gcc-trunk/gcc/toplev.c:333
0x7ff31b ssa_default_def(function*, tree_node*)
    ../../gcc-trunk/gcc/tree-dfa.c:314
0x7ff5e0 get_or_create_ssa_default_def(function*, tree_node*)
    ../../gcc-trunk/gcc/tree-dfa.c:362
0x8187fa get_reaching_def
    ../../gcc-trunk/gcc/tree-into-ssa.c:1184
0x81e96b maybe_replace_use
    ../../gcc-trunk/gcc/tree-into-ssa.c:1784
0x81e96b rewrite_update_stmt
    ../../gcc-trunk/gcc/tree-into-ssa.c:1967
0x81e96b rewrite_update_enter_block
    ../../gcc-trunk/gcc/tree-into-ssa.c:2136
0xb3801a walk_dominator_tree(dom_walk_data*, basic_block_def*)
    ../../gcc-trunk/gcc/domwalk.c:210
0x817503 rewrite_blocks
    ../../gcc-trunk/gcc/tree-into-ssa.c:2216
0x81dc1e update_ssa(unsigned int)
    ../../gcc-trunk/gcc/tree-into-ssa.c:3303
0x74a3db execute_function_todo
    ../../gcc-trunk/gcc/passes.c:1942
0x74ab7e execute_todo
    ../../gcc-trunk/gcc/passes.c:2002
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

----------------------------------------------------------

int a, b, c, d, e, f;

void foo ()
{
  int g;
  for (;;) {
    f = 0;
    for (; f <= 1; f++) {
      a = 0;
      for (; a <= 4; a++)
    b |= a >= g;
      if (d)
    continue;
      e = 0;
    }
    c = bar () < b;
  }
}

Reply via email to