------- Comment #7 from rakdver at gcc dot gnu dot org 2007-10-17 16:07 ------- (In reply to comment #0) > I'm getting the following ICE with gcc 4.2.0 RC3. It compiles fine > with gcc 4.1 and 4.3 20070515. > > (sid)23889:[EMAIL PROTECTED]: ~] /usr/lib/gcc-snapshot/bin/g++ -c -O2 > freehdl-vital_timing.cc > freehdl-vital_timing.cc: In function 'array_type<long int> delay(const > array_type<long int>&)': > freehdl-vital_timing.cc:38: internal compiler error: in calc_dfs_tree, at > dominance.c:374 > Please submit a full bug report, > with preprocessed source if appropriate. > (sid)23890:[EMAIL PROTECTED]: ~] g++-4.1 -c -O2 freehdl-vital_timing.cc > (sid)23891:[EMAIL PROTECTED]: ~]
This ICE happens when there are unreachable blocks in cfg when calculate_dominance_info is called. Adding delete_unreachable_blocks before calculate_dominance_info in tree-vrp.c:identify_jump_threads fixes this ICE (I need to check whether this does not cause other problems, though). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31947