> > !       set_hint_predicate (&inline_summary (node)->loop_iterations, 
> > loop_iterations);
> > !       set_hint_predicate (&inline_summary (node)->loop_stride, 
> > loop_stride);
> >         scev_finalize ();
> >       }
> >     inline_summary (node)->self_time = time;
> 
> Well, I know i's not that important but some lines are clearly wider
> than 80 characters and makes it more difficult to read for people like
> me.  In fact, the already committed loop_iterations computation also
> often exceeds the limit.

Yeah, I will reindent that.
> 
> I have also been wondering whether we really want to and all the
> different will_be_nonconstant predicates to produce the final hint
> predicates.  IIUC we won't get the hint unless all loop
> iterations/strides are known.  The loop iterations predicate in the
> fairly simple pr48636.f90 is:
> 
>   loop iterations:(op0[ref offset: 192] changed || op0[ref offset: 256] 
> changed || op0[ref offset: 224] changed) && (op0[ref offset: 96] changed || 
> op0[ref offset: 160] changed || op0[ref offset: 128] changed)
> 
> With predicates like these, it's going to be very difficult for IPA-CP
> to put together a combination of known values and aggregate contents
> for just some contexts so that we hit the sweet spot.  The current
> approach of trying one known context-specific value at a time
> certainly will not work in real cases, at the same time, it is really
> built around independent assessments of the values...

Well, I intentionally made the code to make it easy to drop multiple
predicates, i.e. simply replace current predicate pointer by vector of
independent predicates, so each loop can be handled independently.

In the case of pr48636.f90 I would however expect
that we should be able to figure out tha tthe whole loop descriptor
is constant and match the above as true?

Honza

Reply via email to