This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/33572] [4.3 Regression] wrong code with -O
- From: "dnovillo at google dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Sep 2007 13:41:37 -0000
- Subject: [Bug tree-optimization/33572] [4.3 Regression] wrong code with -O
- References: <bug-33572-8535@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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
<gcc-bugzilla@gcc.gnu.org> 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