aboutsummaryrefslogtreecommitdiff
path: root/libobjc
diff options
context:
space:
mode:
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-29 09:14:19 +0000
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-29 09:14:19 +0000
commit7396c35dfe4ed3d9c3565573e41fd213f7ba1baf (patch)
tree6dbac4490eda8967bcf33ee9fc17a7f3278c553d /libobjc
parentefa1b7abee28ac3c01b9cc9679120142cbd72d8a (diff)
S/390: Memory constraint cleanup
This fixes an issue with the long displacement memory address constraints S and T. These were defined to only accept long displacement addresses. This is wrong since a memory constraint must not reject an address with a 0 displacement. Reload relies on being able to turn an invalid memory address into a valid one by reloading the address into a base register. The S and T constraints would reject such an address. This isn't really a problem for the backend since we used the constraints with that knowledge there but it is a problem for people writing inline assemblies. gcc/ChangeLog: 2016-04-29 Ulrich Weigand <uweigand@de.ibm.com> * config/s390/constraints.md ("U", "W"): Invoke s390_mem_constraint with "ZR" and "ZT". * config/s390/s390.c (s390_check_qrst_address): Reject invalid addresses when using LRA. Accept also short displacements for S and T constraints. Do not check for long displacement target for S and T constraints. (s390_mem_constraint): Remove handling of U and W constraints. * config/s390/s390.md (various patterns): Remove the short displacement constraints (Q and R) if a long displacement constraint is present. Add longdisp as required CPU capability. * config/s390/vector.md: Likewise. * config/s390/vx-builtins.md: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235626 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libobjc')
0 files changed, 0 insertions, 0 deletions