This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/57865] Broken _save64gpr and _rest64gpr usage


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57865

--- Comment #3 from Sebastian Huber <sebastian.huber@embedded-brains.de> ---
(In reply to Alan Modra from comment #2)
> My guess is that it's this change
> 
> -#define FIRST_SAVED_GP_REGNO 13
> +#define FIRST_SAVED_GP_REGNO	  (FIXED_R13 ? 14 : 13)
> 
> messing with ool_adjust.

I used this on the current 4.8 head:

diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 8a36084..d075915 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -952,7 +952,7 @@ extern unsigned rs6000_pointer_size;

 #define FIRST_SAVED_ALTIVEC_REGNO (FIRST_ALTIVEC_REGNO+20)
 #define FIRST_SAVED_FP_REGNO     (14+32)
-#define FIRST_SAVED_GP_REGNO     (FIXED_R13 ? 14 : 13)
+#define FIRST_SAVED_GP_REGNO     13

 /* List the order in which to allocate registers.  Each register must be
    listed once, even those in FIXED_REGISTERS.

This solves the problem above.  I don't know the other impact of the change.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]