One area where LLVM suck pretty badly is aggregate store and loads. clang do not use them so there are not seen as important, and aren’t handled nicely. Other frontends work around the issue as it is not handled properly and we ends up with some kind of chicken and egg issue.
I recently proposed a diff to be able to optimize load from aggregate stores in GVN without great success. Interest was unclear to some and alteration of GVN was a concern to many.
I’d like to improve the aggregate support. SROA is deaggregating from alloca. Would the same approach for other loads./store be preferable ? That would give a way to use the existing infrastructure while providing a good support for aggregate.
If yes, what would be the right place and way to do this ?