Currently GCC relies only on the most generic alias analysis when attempting to track data in aggregates in interprocedural (IPA) optimizations. In the course of this project I plan to revive patches for using simple escape analysis to track all data which do not have their address escaped and use that information to track constants within them, analyze the impact on a number of benchmarks and submit them to GCC trunk.
GCC's IPA-SRA pass is run as a regular pass, not as an IPA pass. While this has simplified its implementation quite a bit, it's been creating pass-ordering issues for years now. So, let me try again to make it a real IPA pass, possibly dropping the capability to turn by-reference parameters to by-value ones, but definitely giving it the ability to work on strongly connected components of the call graph. And ending the pass-ordering issues.