Hi,

this patch set extends the current jump functions we use in
ipa-prop.[ch], ipa-inline-analysis.c and ipa-cp.c to also carry
information about aggregates passed across function calls in a
parameter, regardless whether by value or only by reference.

The long term goal is that these description of passed aggregate
contents will be as general as possible (and reasonable) with a number
of use cases, including for example devirtualization.  However, the
initial implementation was specifically aimed at Fortran array
descriptors which represent optimization barrier which we can
currently overcome only by cranking up general inlining limits (with
all potential drawbacks that has).  Arguably I have not gone all the
way, but these patches now can inline the testcase from PR 48636
(comment #4) at -O3 and the limit increase necessary to speed up
fatigue2 polyhedron benchmark has also decreased quite a bit.

The patches making use of the aggregate jump functions so far only
improve inlining, IPA-CP bits are yet to come.

The state of the patches is somewhere in between RFC and submission
material, I certainly expect comments, suggestions and some discussion
(meanwhile I'd like to add a few more testcases and experiment a
little more on other benchmarks) but the patches are now quite stable.
Last but not least, they all pass bootstrap and testing on
x86_64-linux.

Thanks,

Martin

Reply via email to