This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [tree-ssa] SSAPRE failure caused by other pass?


On Wed, 2003-07-02 at 11:40, Daniel Berlin wrote:
> On Wednesday, July 2, 2003, at 11:32 AM, Diego Novillo wrote:
> 
> > On Wed, 2003-07-02 at 11:27, Daniel Berlin wrote:
> >
> >> I noticed that if i disable DCE *or* copyprop, out-of-ssa now sees the
> >> 3 pretmps, rather than missing one, the code generated is a-ok,
> >> genconditions works, and everything is happy.
> >>
> > I still haven't looked at the failure you sent yesterday, but I 
> > recently
> > changed the code that marks a variable with the 'has real refs'
> > attribute.  Is SSA-PRE setting the SSA_NAME_HAS_REAL_REFS attribute to
> > the SSA names it creates?
> 
> No.
> Should it?
>
[ Redirecting to the gcc@ ]

Yes.  I apologize that I didn't make it more explicit in my posting
(http://gcc.gnu.org/ml/gcc-patches/2003-07/msg00016.html).  The
SSA->normal pass needs to know which SSA names are important to register
in the coalescer.  Previously, we used to mark the VAR_DECLs with the
'has real refs' flag, but that implicitly marked *all* the SSA names
associated with that VAR_DECL.

We are actually interested in the individual SSA names.  The reason
being that if an SSA name is never used as a real operand (e.g., it's
only used in PHIs, VDEFs and VUSEs), then it's not important for code
generation.   It simply was a device for memory tracking.

This means that individual passes need to mark SSA names that they
create and store in real operands.  I will add a comment to that effect
in the definition of SSA_NAME_HAS_REAL_REFS as this has the potential of
biting us in the future.


Diego.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]