https://gcc.gnu.org/bugzilla/show_bug.cgi?id=50883
--- Comment #9 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- I've seen things like this with other structures passed as parameters. Part of the problem here is that the gimple expansion does not see the argument unpacking or understand how the parameters are passed; so this is only exposed after lowering to RTL and we are then reliant on the less powerful RTL optimations to get good code.