------- 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

Reply via email to