This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
It might be argued that this is a reload bug (since it runs on LRA), but sometimes it is simpler to place a simpler work around in the machine dependent code. If the maintainers decide that it should be fixed in reload instead of via this patch, that is fine. PR 71294 involves vectorization where the compiler is forming a V2DI vector from 2 DI elements. The elements are the same value (a stack address), so the register allocator copies the address over to the VSX register file, and does an XXPERMDI. Because of the -fstack-protector, frame addresses are modified, and become an ADD operation, and the direct move fails. I added a splitter for DImode so that if a virtual register or frame address register was attempted to be splatted to the VSX register file, it would copy the value to a pseudo register, and do a direct move on that. I have done a bootstrap and regression test with these patches and there were no regressions. Are the patches ok to install in the trunk? [gcc] 2016-05-26 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/71294 * config/rs6000/predicates.md (virtual_or_frame_reg_operand): New predicate to return true if the operand is a virtual or frame register. * config/rs6000/vsx.md (move splat splitters): Add splitters to copy a frame related pointer into a new pseudo register during the first split pass, so that we don't confuse the register allocator. [gcc/testsuite] 2016-05-26 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/71294 * g++.dg/pr71294.C: New test. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797
Attachment:
pr71294.patch001b
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |