------- Comment #11 from dnovillo at google dot com 2007-09-30 13:41 ------- Subject: Re: [4.3 Regression] wrong code with -O
On 30 Sep 2007 12:41:03 -0000, rguenth at gcc dot gnu dot org <[EMAIL PROTECTED]> wrote: > > > ------- Comment #9 from rguenth at gcc dot gnu dot org 2007-09-30 12:41 > ------- > Diego, we seem to have a general problem with the incremental SSA updater. > If we rename foo$ptr in > > <bb 6>: > # foo$ptr_16 = PHI <foo$ptr_18(ab)(5), D.1758_3(4)> > p_12 = foo$ptr_16; > foo$ptr_19(ab) = 0B; > p_15 = foo$ptr_16; > p_4 = foo$ptr_16; > p_5 = foo$ptr_16; > D.1781_6 = foo$ptr_16->_vptr.Foo; > D.1782_7 = *D.1781_6; > OBJ_TYPE_REF(D.1782_7;foo$ptr_16->0) (foo$ptr_16); > goto <bb 8>; Is the symbol foo$ptr being marked for renaming? If so, that's wrong. A gimple register symbol cannot be marked for renaming if there are overlapping live ranges in its SSA names. We don't have a general mechanism to prevent that. Mostly because we do not keep track when OLRs are created. The generic SSA updating mechanism has no cheap way of checking that. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33572