http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48941
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #24234|0 |1 is obsolete| | --- Comment #10 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> 2012-05-02 06:51:12 UTC --- Created attachment 27282 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27282 Rebased patch. This patch originally by Richard Sandiford fixed PR target/48941 but the problem was that lower-subreg was being a bit too aggressive with lowering subreg moves in this case causing unnecessary spills to the stack. As shown in my mail in the thread on lower-subreg.c the code generated is far better now with this patch in play . I've rebased to trunk, double checked that the generated files from the ml description match up and added a simple test that makes sure that the original testcase from the PR doesn't emit a vector store instruction ! That should be enough to catch all the cases that we worry about. There are still a few vmov's between Vector registers but I suspect that is because of the vcombine at the end for which RichardE might have something in flight. For the record, this patch is not directly applicable to earlier release branches as it depends on the new behaviour of lower-subreg.c which is why this bug is only targeted at 4.8.0