With 4.7.0 20111216 I get an ICE: $ g++ -c -O3 test-it-25.ii test-it-25.ii: In member function 'void v8::internal::RelocIterator::next()': test-it-25.ii:41:14: internal compiler error: in gsi_for_stmt, at gimple-iterator.c:560 But not with "-m32", "-O2" nor with GCC 4.6.2. The failing assert is: /* Finds iterator for STMT. */ gimple_stmt_iterator gsi_for_stmt (gimple stmt) { ... gcc_unreachable (); }
Created attachment 26116 [details] Test case
gcc version 4.7.0 20111218 (experimental) [trunk revision 182459] (GCC) Fedora 16/x64 $ cat c51590.c #include <sys/time.h> extern void baz(char *); static void bar( struct timeval *sv) { char bt[8]; int i; for(i=0; i < 8; i++) bt[i] = sv->tv_sec >> ( ( 7 - i ) * 8 ); baz(bt); } void foo(const char *s) { struct timeval sp_cur; int i; for(i=0; *s; s++) i++; if(i != 1) return; bar(&sp_cur); } $ LANG=C gcc -O3 -Wall -Wextra -c c51590.c c51590.c: In function 'foo': c51590.c:19:1: internal compiler error: in gsi_for_stmt, at gimple-iterator.c:560
*** Bug 51606 has been marked as a duplicate of this bug. ***
Created attachment 26134 [details] gcc47-pr51590.patch Untested fix.
*** Bug 51601 has been marked as a duplicate of this bug. ***
Author: jakub Date: Mon Dec 19 14:22:29 2011 New Revision: 182480 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=182480 Log: PR middle-end/51590 PR tree-optimization/51606 * tree-vect-patterns.c (append_pattern_def_seq, new_pattern_def_seq): New inline functions. (vect_recog_over_widening_pattern, vect_recog_vector_vector_shift_pattern, vect_recog_sdivmod_pow2_pattern, vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast, vect_recog_bool_pattern): Use them. * gcc.dg/vect/pr51590.c: New test. Added: trunk/gcc/testsuite/gcc.dg/vect/pr51590.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-vect-patterns.c
Fixed.