This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/57865] Broken _save64gpr and _rest64gpr usage
- From: "sebastian dot huber at embedded-brains dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 10 Jul 2013 11:36:50 +0000
- Subject: [Bug target/57865] Broken _save64gpr and _rest64gpr usage
- Auto-submitted: auto-generated
- References: <bug-57865-4 at http dot gcc dot gnu dot org/bugzilla/>
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.