aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/rs6000/aix.h1
-rw-r--r--gcc/config/rs6000/darwin.h2
-rw-r--r--gcc/config/rs6000/rs6000.h5
-rw-r--r--gcc/config/rs6000/sysv4.h2
5 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6a069f1..ae11d42 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2001-09-17 Dale Johannesen <dalej@apple.com>
+
+ * config/rs6000/rs6000.h (FIXED_REGISTERS): Use FIXED_R2.
+ * config/rs6000/aix.h (FIXED_R2): Define.
+ * config/rs6000/darwin.h (FIXED_R2): Define.
+ * config/rs6000/sysv4.h (FIXED_R2): Define.
+
2001-09-17 Jeff Sturm <jsturm@one-point.com>
* except.c (dw2_build_landing_pads): New local
diff --git a/gcc/config/rs6000/aix.h b/gcc/config/rs6000/aix.h
index 428ab43..28bf98a 100644
--- a/gcc/config/rs6000/aix.h
+++ b/gcc/config/rs6000/aix.h
@@ -161,6 +161,7 @@ Boston, MA 02111-1307, USA. */
#define TARGET_NO_TOC 0
#define TARGET_TOC 1
+#define FIXED_R2 1
/* AIX allows r13 to be used. */
#define FIXED_R13 0
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index 6e6a04f..32bdfba 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -39,6 +39,8 @@ Boston, MA 02111-1307, USA. */
#define CC1_SPEC "%{!static:-fPIC}"
+/* Make both r2 and r3 available for allocation. */
+#define FIXED_R2 0
#define FIXED_R13 0
#undef TARGET_DEFAULT
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index b602dfb..a1103a7 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -641,14 +641,15 @@ extern int rs6000_debug_arg; /* debug argument handling */
/* 1 for registers that have pervasive standard uses
and are not available for the register allocator.
- On RS/6000, r1 is used for the stack and r2 is used as the TOC pointer.
+ On RS/6000, r1 is used for the stack. On Darwin, r2 is available
+ as a local register; for all other OS's r2 is the TOC pointer.
cr5 is not supposed to be used.
On System V implementations, r13 is fixed and not available for use. */
#define FIXED_REGISTERS \
- {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, FIXED_R13, 0, 0, \
+ {0, 1, FIXED_R2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, FIXED_R13, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index 38fcb83..554090c 100644
--- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h
@@ -314,9 +314,9 @@ do { \
#undef PROCESSOR_DEFAULT
#define PROCESSOR_DEFAULT PROCESSOR_PPC750
+#define FIXED_R2 1
/* System V.4 uses register 13 as a pointer to the small data area,
so it is not available to the normal user. */
-
#define FIXED_R13 1
/* Size of the V.4 varargs area if needed. */