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