On 08/08/13 14:38, Richard Earnshaw wrote: > PR target/56979 is a bug where a parameter to a function has an > alignment that is larger than its natural alignment. In this case this > causes the mid-end to generate a mode for the argument that is > incompatible with the registers that are assigned for it. We then end > up creating invalid RTL and subsequently abort when the pattern cannot > emit assembly code. > > The fix is to decompose the assignment when this would happen in the > same way that we handle other block mode arguments and handle each piece > in turn. > > PR target/56979 > * arm.c (aapcs_vfp_allocate): Decompose the argument if the > suggested mode for the assignment isn't compatible with the > registers required. > > Committed to trunk. >
And back-ported to the 4.7 and 4.8 branches.