https://gcc.gnu.org/g:9d922e12e93504f2c4e2622564a52fe8597e2934
commit 9d922e12e93504f2c4e2622564a52fe8597e2934 Author: Michael Meissner <meiss...@linux.ibm.com> Date: Fri Jun 21 03:26:03 2024 -0400 Add -mlrspr. 2024-06-21 Michael Meissner <meiss...@linux.ibm.com> gcc/ * config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached): Add support for -mlrspr. * config/rs6000/rs6000.opt (-mlrspr): New debug option. Diff: --- gcc/config/rs6000/rs6000.cc | 4 +++- gcc/config/rs6000/rs6000.opt | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index 2eaa88a6d633..ca5514510608 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -1949,7 +1949,9 @@ rs6000_hard_regno_mode_ok_uncached (int regno, machine_mode mode) return (!orig_complex_p && mode == SImode); case LR_REGNO: - return (!orig_complex_p && mode == Pmode); + if (!TARGET_LRSPR) + return (!orig_complex_p && mode == Pmode); + /* fall through. */ case CTR_REGNO: case TAR_REGNO: diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt index f339e1bed39a..b4b6dc8fa9ca 100644 --- a/gcc/config/rs6000/rs6000.opt +++ b/gcc/config/rs6000/rs6000.opt @@ -666,6 +666,10 @@ mfpspr Target Undocumented Var(TARGET_FPSPR) Init(0) Allow (do not allow) floating point values to be in the CTR or TAR registers. +mlrspr +Target Undocumented Var(TARGET_LRSPR) Init(1) +Treat (do not treat) the LR register like CTR/TAR in terms of what modes it can hold. + ; Documented parameters -param=rs6000-vect-unroll-limit=