------- Comment #4 from ubizjak at gmail dot com 2010-06-09 06:27 ------- (In reply to comment #1) > It may be broken by revision 160394: > > http://gcc.gnu.org/ml/gcc-cvs/2010-06/msg00307.html
The add->lea transformation doesn't even trigger in this testcase... You still have normal add instruction with a flags clobber up to and including sched2 pass. Later, compilation breaks in machine reorg pass with: Program received signal SIGSEGV, Segmentation fault. distance_non_agu_define (code=<value optimized out>, insn=0x7ffff18c2750, operands=0x1298aa0) at ../../gcc-svn/trunk/gcc/config/i386/i386.c:13826 13826 if (insn != BB_HEAD (bb)) (gdb) l 13821 basic_block bb = BLOCK_FOR_INSN (insn); 13822 int distance = 0; 13823 df_ref *def_rec; 13824 enum attr_type insn_type; 13825 13826 if (insn != BB_HEAD (bb)) 13827 { 13828 rtx prev = PREV_INSN (insn); 13829 while (prev && distance < LEA_SEARCH_THRESHOLD) 13830 { It looks to me that bb is NULL, which isn't a good sign anyway. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44470