https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110320
--- Comment #2 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by jeevitha <jeevi...@gcc.gnu.org>: https://gcc.gnu.org/g:1bbb169fe6f91451a2754f0b86301551db76ceba commit r14-6829-g1bbb169fe6f91451a2754f0b86301551db76ceba Author: Jeevitha <jeevi...@linux.ibm.com> Date: Mon Dec 25 04:06:54 2023 -0600 rs6000: Change GPR2 to volatile & non-fixed register for function that does not use TOC [PR110320] Normally, GPR2 is the TOC pointer and is defined as a fixed and non-volatile register. However, it can be used as volatile for PCREL addressing. Therefore, modified r2 to be non-fixed in FIXED_REGISTERS and set it to fixed if it is not PCREL and also when the user explicitly requests TOC or fixed. If the register r2 is fixed, it is made as non-volatile. Changes in register preservation roles can be accomplished with the help of available target hooks (TARGET_CONDITIONAL_REGISTER_USAGE). 2023-12-24 Jeevitha Palanisamy <jeevi...@linux.ibm.com> gcc/ PR target/110320 * config/rs6000/rs6000.cc (rs6000_conditional_register_usage): Change GPR2 to volatile and non-fixed register for PCREL. * config/rs6000/rs6000.h (FIXED_REGISTERS): Modify GPR2 to not fixed. gcc/testsuite/ PR target/110320 * gcc.target/powerpc/pr110320-1.c: New testcase. * gcc.target/powerpc/pr110320-2.c: New testcase. * gcc.target/powerpc/pr110320-3.c: New testcase. Co-authored-by: Peter Bergner <berg...@linux.ibm.com>