Hi,

On Wed, Nov 28 2018, Richard Sandiford wrote:
>>> The pass gives a 7.6% improvement on Cortex-A72 for 554.roms_r at -O3
>>> and a 2.4% improvement for 465.tonto.  I haven't found any SPEC tests
>>> that regress.
>>> 
>>> Sizewise, there's a 10% increase in .text for both 554.roms_r and
>>> 465.tonto.  That's obviously a lot, but in tonto's case it's because
>>> the whole program is written using assumed-shape arrays and pointers,
>>> so a large number of functions really do benefit from versioning.
>>> roms likewise makes heavy use of assumed-shape arrays, and that
>>> improvement in performance IMO justifies the code growth.
>>
>> Ouch.  I know that at least with LTO IPA-CP can do "quite" some
>> propagation of constant strides.  Not sure if we're aggressive
>> enough in actually doing the cloning for all cases we figure out
>> strides though.  But my question is how we can avoid doing the
>> versioning for loops in the copy that did not have the IPA-CPed
>> stride of one?  Ideally we'd be able to mark individual references
>> as {definitely,likely,unlikely,not}-unit-stride?
>
> This is a more elaborate version of what I was trying to do with
> the IFN I'd mentioned on IRC a few weeks back.  It would be a bit
> like a long-living ASSERT_EXPR that provides hints about the value
> of the SSA name.  Another alternative would be to annotate the
> SSA name itself, but then we'd easily lose the information during
> optimisation.
>
> But will IPA-CP conditionally use a clone for a stride of 1 for
> calls that pass a variable stride that might or might not be 1?
> E.g. if it clones foo as foo.1 for calls in which a stride parameter
> is 1 at compile time, does it also make foo call foo.1 when the stride
> parameter is 1 at runtime?  If not, that sounds like a missed optimisation.
> If so, prune_conditions should stop us from versioning.

IPA-CP only creates clones for compile-time constants, it does not add
any run-time check to the callers.  It is an interesting idea that it
could add these for some cases when it decides to do the cloning
anyway.

Martin

Reply via email to