------- Comment #7 from hjl dot tools at gmail dot com 2010-06-09 14:13 ------- (In reply to comment #4) > (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.
ix86_lea_for_add_ok shouldn't be call during final scan when we have already looked all add patterns and converted them to lea if necessary. -- hjl dot tools at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|4.6.0 |--- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44470