md.texi: Document the MIPS "v" constraint.
authorRichard Sandiford <rdsandiford@googlemail.com>
Sat, 12 Jul 2008 07:57:42 +0000 (07:57 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sat, 12 Jul 2008 07:57:42 +0000 (07:57 +0000)
gcc/
* doc/md.texi: Document the MIPS "v" constraint.
* config/mips/mips.h (reg_class): Revert last change.
(REG_CLASS_NAMES): Likewise.
(REG_CLASS_CONTENTS): Likewise.
* config/mips/mips.c (mips_regno_to_class): Likewise.
* config/mips/constraints.md (v): Likewise, but add documentation.
Add a comment to say that this constraint should not be used in
gcc code.

From-SVN: r137734

gcc/ChangeLog
gcc/config/mips/constraints.md
gcc/config/mips/mips.c
gcc/config/mips/mips.h
gcc/doc/md.texi

index 1faa2a1c5cd43a57f4e4f1a59b95bf638310d1d0..895d6834cd1eabe5c5a1bd425f6c4d7aa0665dff 100644 (file)
@@ -1,3 +1,14 @@
+2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * doc/md.texi: Document the MIPS "v" constraint.
+       * config/mips/mips.h (reg_class): Revert last change.
+       (REG_CLASS_NAMES): Likewise.
+       (REG_CLASS_CONTENTS): Likewise.
+       * config/mips/mips.c (mips_regno_to_class): Likewise.
+       * config/mips/constraints.md (v): Likewise, but add documentation.
+       Add a comment to say that this constraint should not be used in
+       gcc code.
+
 2008-07-11  DJ Delorie  <dj@redhat.com>
 
        * config/h8300/h8300.md (length): Fix branch offset limit.
index ee44783f35b4c3cf53686461072959739ac1a21f..88fcbf65ef6a90b8b2f91fcdda2742ba069f5051 100644 (file)
 (define_register_constraint "j" "PIC_FN_ADDR_REG"
   "@internal")
 
+;; Don't use this constraint in gcc code!  It runs the risk of
+;; introducing a spill failure; see tls_get_tp_<mode>.
+(define_register_constraint "v" "V1_REG"
+  "Register @code{$3}.  Do not use this constraint in new code;
+   it is retained only for compatibility with glibc.")
+
 (define_register_constraint "y" "GR_REGS"
   "Equivalent to @code{r}; retained for backwards compatibility.")
 
index 3bbae44a2f137e89c366ee8c1989dd8902d42908..d1def42557619a6856dd6dc006a1679a29b70c8b 100644 (file)
@@ -479,7 +479,7 @@ static const char *mips_hi_relocs[NUM_SYMBOL_TYPES];
 
 /* Index R is the smallest register class that contains register R.  */
 const enum reg_class mips_regno_to_class[FIRST_PSEUDO_REGISTER] = {
-  LEA_REGS,    LEA_REGS,       M16_NA_REGS,    M16_NA_REGS,
+  LEA_REGS,    LEA_REGS,       M16_NA_REGS,    V1_REG,
   M16_REGS,    M16_REGS,       M16_REGS,       M16_REGS,
   LEA_REGS,    LEA_REGS,       LEA_REGS,       LEA_REGS,
   LEA_REGS,    LEA_REGS,       LEA_REGS,       LEA_REGS,
index c29a5e88188e1501c811b0e57032a905c10c7a34..8518a86233bac2805fd3b4ef7a1df1ba637a6883 100644 (file)
@@ -1690,6 +1690,7 @@ enum reg_class
   T_REG,                       /* mips16 T register ($24) */
   M16_T_REGS,                  /* mips16 registers plus T register */
   PIC_FN_ADDR_REG,             /* SVR4 PIC function address register */
+  V1_REG,                      /* Register $v1 ($3) used for TLS access.  */
   LEA_REGS,                    /* Every GPR except $25 */
   GR_REGS,                     /* integer registers */
   FP_REGS,                     /* floating point registers */
@@ -1730,6 +1731,7 @@ enum reg_class
   "T_REG",                                                             \
   "M16_T_REGS",                                                                \
   "PIC_FN_ADDR_REG",                                                   \
+  "V1_REG",                                                            \
   "LEA_REGS",                                                          \
   "GR_REGS",                                                           \
   "FP_REGS",                                                           \
@@ -1773,6 +1775,7 @@ enum reg_class
   { 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },  /* mips16 T register */ \
   { 0x010300fc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },  /* mips16 and T regs */ \
   { 0x02000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },  /* SVR4 PIC function address register */ \
+  { 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },  /* only $v1 */ \
   { 0xfdffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },  /* Every other GPR except $25 */   \
   { 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },  /* integer registers */ \
   { 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },  /* floating registers*/ \
index c96fd56619cbf6c352c7bc2eb58fcb2c2ad66ea1..66ca3e98fd0f8010a6f4266800421ab402af814a 100644 (file)
@@ -2483,6 +2483,10 @@ to store doubleword values.
 A register suitable for use in an indirect jump.  This will always be
 @code{$25} for @option{-mabicalls}.
 
+@item v
+Register @code{$3}.  Do not use this constraint in new code;
+it is retained only for compatibility with glibc.
+
 @item y
 Equivalent to @code{r}; retained for backwards compatibility.