------- Comment #11 from bergner at vnet dot ibm dot com  2010-02-24 22:08 
-------
Subject: Re:  [4.5 Regression] wrong code for
 200.sixtrack with vectorization and -fdata-sections

On Wed, 2010-02-24 at 21:01 +0000, meissner at linux dot vnet dot ibm dot com
wrote:
> 
> ------- Comment #10 from meissner at linux dot vnet dot ibm dot com  
> 2010-02-24 21:01 -------
[snip]
> I suspect this may have been the culprit for the bandaid that I put in
> rs6000_emit_move (around line 6339 of rs6000.c) to handle const addresses that
> were overwritten with a register.  Here is the comment that starts the block:
> 
>   /* Fix up invalid (const (plus (symbol_ref) (reg))) that seems to be created
>      in the secondary_reload phase, which evidently overwrites the CONST_INT
>      with a register.  */

It sounds like the same problem.   Once this is fixed, we probably can back
that change out after verifying we don't need it anymore.



> > Index: reload1.c
> > ===================================================================
> > --- reload1.c   (revision 156816)
> > +++ reload1.c   (working copy)
> > @@ -5221,6 +5221,10 @@
> >        r1 = r2;
> >        r2 = n;
> >      }
> > +
> > +  if (GET_CODE (rld[r1].in) == CONST)
> > +    return true;
> > +
> >    gcc_assert (reg_mentioned_p (rld[r2].in, rld[r1].in));
> >    regno = rld[r1].regno >= 0 ? rld[r1].regno : rld[r2].regno;
> >    gcc_assert (regno >= 0);
> > 
> > 
> 
> I dunno, would it be better if we cloned copy_rtx to have a varient that
> doesn't call shared_const_p in rtl.c and made a full copy?  I would think this
> would be better than returning true if it is a constant.

I asked that same question in my post to gcc-patches, except I _think_ we
need to copy the other sharable rtx objects too, not just const's.

Peter


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42431

Reply via email to