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=

Reply via email to