This is the mail archive of the gcc-patches@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: [lno] some cleanups for scev


Hello,

> > > @@ -2330,9 +2291,36 @@ follow_ssa_edge_inner_loop_phi (struct l
> > >  				tree *evolution_of_loop)
> > >  {
> > >    struct loop *loop = loop_of_stmt (loop_phi_node);
> > > -  tree ev = compute_overall_effect_of_inner_loop (loop,
> > > -						  PHI_RESULT (loop_phi_node));
> > > +  tree ev = analyze_scalar_evolution (loop, PHI_RESULT (loop_phi_node));
> > > +
> > > +  /* Sometimes, the inner loop is too difficult to analyze, and the
> > > +     result of the analysis is a symbolic parameter.  */
> > > +  if (ev == PHI_RESULT (loop_phi_node))
> > 
> > note that I have removed whole "symbolic parameter" stuff, as it made us
> > produce really weird results (what should have been the purpose of it)?
> 
> When you have:
> 
> "a = f ()"
> "a = phi (unknown, unknown)"
> 
> it is still possible to keep the result under a symbolic form: "a".
> This mechanism was used in older versions of the analyzer, so it could
> be a little dusty.

I still do not understand.  We want the result to be chrec_top in this
case, don't we?  I.e. we want to know that we cannot say anything sane
about value of a.

Perhaps you could write a more complete example, so that it can be seen
what you have in mind?

> > So this case never triggers.
> > 
> 
> I don't think so.  

as I said, I removed this mechanism completely recently, so indeed it
cannot.

Zdenek


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