https://gcc.gnu.org/g:1232a584429302448e9ff8dee30e92901b37870a

commit 1232a584429302448e9ff8dee30e92901b37870a
Author: Michael Meissner <meiss...@linux.ibm.com>
Date:   Tue Jun 11 18:23:32 2024 -0400

    Add -mlrspr.
    
    2024-06-11  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 70214e4b28c5..3e118c866081 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 27f873972b57..137290b8364f 100644
--- a/gcc/config/rs6000/rs6000.opt
+++ b/gcc/config/rs6000/rs6000.opt
@@ -658,6 +658,10 @@ mdfspr
 Target Undocumented Var(TARGET_DFSPR) Init(0)
 Allow (do not allow) 64-bit floating point to be in the CTR or TAR registers.
 
+mlrspr
+Target Undocumented Var(TARGET_LRSPR) Init(0)
+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