aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorStafford Horne <shorne@gmail.com>2019-08-31 06:00:56 +0000
committerStafford Horne <shorne@gcc.gnu.org>2019-08-31 06:00:56 +0000
commitfd631eb5a7597a7040f770b2a912cec13af50df4 (patch)
tree29306617e9d66d1e5b92c3832c3ab9d2e5d7a0f0 /gcc/tree.c
parent3ba155dd1921b55f04866b35a2e054e092670cd6 (diff)
downloadgcc-fd631eb5a7597a7040f770b2a912cec13af50df4.zip
gcc-fd631eb5a7597a7040f770b2a912cec13af50df4.tar.gz
gcc-fd631eb5a7597a7040f770b2a912cec13af50df4.tar.bz2
or1k: Fix issue with set_got clobbering LR (r9)
When compiling glibc we found that the GOT register was being allocated r9 when the instruction was still set_got_tmp. That is a problem because r9 is the Link Register (LR) in OpenRISC which is used/clobbered in set_got. We cannot use r9 as the GOT register. Also, we cannot simply say set_got_tmp clobbers r9 as this is the reason for having the temporary set_got_tmp. Fix by using a register class constraint that does not allow r9 during register allocation. gcc/ChangeLog: * config/or1k/constraints.md (t): New constraint. * config/or1k/or1k.h (GOT_REGS): New register class. * config/or1k/or1k.md (set_got_tmp, set_got): Use t contraint. From-SVN: r275242
Diffstat (limited to 'gcc/tree.c')
0 files changed, 0 insertions, 0 deletions