mips-protos.h (SYMBOL_GENERAL): Rename to...
authorRichard Sandiford <richard@codesourcery.com>
Wed, 8 Aug 2007 15:06:05 +0000 (15:06 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 8 Aug 2007 15:06:05 +0000 (15:06 +0000)
gcc/
* config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
(SYMBOL_ABSOLUTE): ...this.
(SYMBOL_SMALL_DATA): Rename to...
(SYMBOL_GP_RELATIVE): ...this.
(SYMBOL_CONSTANT_POOL): Rename to...
(SYMBOL_PC_RELATIVE): ...this.
* config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
(mips_symbolic_address_p, mips_symbol_insns, override_options)
(mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
after above changes.
* config/mips/predicates.md (const_call_insn_operand): Likewise.
(general_symbolic_operand): Rename to...
(absolute_symbolic_operand): ...this.
* config/mips/mips.md: Update after above changes.

From-SVN: r127294

gcc/ChangeLog
gcc/config/mips/mips-protos.h
gcc/config/mips/mips.c
gcc/config/mips/mips.md
gcc/config/mips/predicates.md

index 552961070094da5fcc68747f53a8f40703fce253..e4b42292fa64c84399888ba8a10704846db7e3c0 100644 (file)
@@ -1,3 +1,20 @@
+2007-08-08  Richard Sandiford  <richard@codesourcery.com>
+
+       * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
+       (SYMBOL_ABSOLUTE): ...this.
+       (SYMBOL_SMALL_DATA): Rename to...
+       (SYMBOL_GP_RELATIVE): ...this.
+       (SYMBOL_CONSTANT_POOL): Rename to...
+       (SYMBOL_PC_RELATIVE): ...this.
+       * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
+       (mips_symbolic_address_p, mips_symbol_insns, override_options)
+       (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
+       after above changes.
+       * config/mips/predicates.md (const_call_insn_operand): Likewise.
+       (general_symbolic_operand): Rename to...
+       (absolute_symbolic_operand): ...this.
+       * config/mips/mips.md: Update after above changes.
+
 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
             Revital Eres  <eres@il.ibm.com>
 
index debd62679c462bc52d700df76c423bfe0486f7ea..233ffea2c1cb182ea9a947192adbe1547bb3f94f 100644 (file)
@@ -27,14 +27,17 @@ along with GCC; see the file COPYING3.  If not see
 
 /* Classifies a SYMBOL_REF, LABEL_REF or UNSPEC address.
 
-   SYMBOL_GENERAL
-       Used when none of the below apply.
+   SYMBOL_ABSOLUTE
+       The symbol's value will be calculated using absolute relocations,
+       such as %hi and %lo.
 
-   SYMBOL_SMALL_DATA
-       The symbol refers to something in a small data section.
+   SYMBOL_GP_RELATIVE
+       The symbol's value will be calculated by adding a 16-bit offset
+       from $gp.
 
-   SYMBOL_CONSTANT_POOL
-       The symbol refers to something in the mips16 constant pool.
+   SYMBOL_PC_RELATIVE
+       The symbol's value will be calculated using a MIPS16 PC-relative
+       calculation.
 
    SYMBOL_GOT_PAGE_OFST
        The symbol's value will be calculated by loading an address
@@ -87,9 +90,9 @@ along with GCC; see the file COPYING3.  If not see
        An UNSPEC wrapper around any kind of address.  It represents the
        low 16 bits of that address.  */
 enum mips_symbol_type {
-  SYMBOL_GENERAL,
-  SYMBOL_SMALL_DATA,
-  SYMBOL_CONSTANT_POOL,
+  SYMBOL_ABSOLUTE,
+  SYMBOL_GP_RELATIVE,
+  SYMBOL_PC_RELATIVE,
   SYMBOL_GOT_PAGE_OFST,
   SYMBOL_GOT_DISP,
   SYMBOL_GOTOFF_PAGE,
index 103a5d0b2558374a78d4e583e008ffce37ea6f18..afa46b411c3c90249c462a0f9f5b56b4e7053d89 100644 (file)
@@ -1446,10 +1446,10 @@ mips_classify_symbol (rtx x)
   if (GET_CODE (x) == LABEL_REF)
     {
       if (TARGET_MIPS16)
-       return SYMBOL_CONSTANT_POOL;
+       return SYMBOL_PC_RELATIVE;
       if (TARGET_ABICALLS && !TARGET_ABSOLUTE_ABICALLS)
        return SYMBOL_GOT_PAGE_OFST;
-      return SYMBOL_GENERAL;
+      return SYMBOL_ABSOLUTE;
     }
 
   gcc_assert (GET_CODE (x) == SYMBOL_REF);
@@ -1460,25 +1460,25 @@ mips_classify_symbol (rtx x)
   if (CONSTANT_POOL_ADDRESS_P (x))
     {
       if (TARGET_MIPS16)
-       return SYMBOL_CONSTANT_POOL;
+       return SYMBOL_PC_RELATIVE;
 
       if (!TARGET_EMBEDDED_DATA
          && GET_MODE_SIZE (get_pool_mode (x)) <= mips_section_threshold)
-       return SYMBOL_SMALL_DATA;
+       return SYMBOL_GP_RELATIVE;
     }
 
   /* Do not use small-data accesses for weak symbols; they may end up
      being zero.  */
   if (SYMBOL_REF_SMALL_P (x)
       && !SYMBOL_REF_WEAK (x))
-    return SYMBOL_SMALL_DATA;
+    return SYMBOL_GP_RELATIVE;
 
   if (TARGET_ABICALLS)
     {
       /* Don't use GOT accesses for locally-binding symbols; we can use
         %hi and %lo instead.  */
       if (TARGET_ABSOLUTE_ABICALLS && mips_symbol_binds_local_p (x))
-       return SYMBOL_GENERAL;
+       return SYMBOL_ABSOLUTE;
 
       /* There are three cases to consider:
 
@@ -1505,7 +1505,7 @@ mips_classify_symbol (rtx x)
       return SYMBOL_GOT_PAGE_OFST;
     }
 
-  return SYMBOL_GENERAL;
+  return SYMBOL_ABSOLUTE;
 }
 
 /* Return true if OFFSET is within the range [0, ALIGN), where ALIGN
@@ -1559,7 +1559,7 @@ mips_symbolic_constant_p (rtx x, enum mips_symbol_type *symbol_type)
      relocations.  */
   switch (*symbol_type)
     {
-    case SYMBOL_GENERAL:
+    case SYMBOL_ABSOLUTE:
     case SYMBOL_64_HIGH:
     case SYMBOL_64_MID:
     case SYMBOL_64_LOW:
@@ -1573,7 +1573,7 @@ mips_symbolic_constant_p (rtx x, enum mips_symbol_type *symbol_type)
       /* In other cases the relocations can handle any offset.  */
       return true;
 
-    case SYMBOL_CONSTANT_POOL:
+    case SYMBOL_PC_RELATIVE:
       /* Allow constant pool references to be converted to LABEL+CONSTANT.
         In this case, we no longer have access to the underlying constant,
         but the original symbol-based access was known to be valid.  */
@@ -1582,7 +1582,7 @@ mips_symbolic_constant_p (rtx x, enum mips_symbol_type *symbol_type)
 
       /* Fall through.  */
 
-    case SYMBOL_SMALL_DATA:
+    case SYMBOL_GP_RELATIVE:
       /* Make sure that the offset refers to something within the
         same object block.  This should guarantee that the final
         PC- or GP-relative offset is within the 16-bit limit.  */
@@ -1681,13 +1681,13 @@ mips_symbolic_address_p (enum mips_symbol_type symbol_type,
 {
   switch (symbol_type)
     {
-    case SYMBOL_GENERAL:
+    case SYMBOL_ABSOLUTE:
       return !TARGET_MIPS16;
 
-    case SYMBOL_SMALL_DATA:
+    case SYMBOL_GP_RELATIVE:
       return true;
 
-    case SYMBOL_CONSTANT_POOL:
+    case SYMBOL_PC_RELATIVE:
       /* PC-relative addressing is only available for lw and ld.  */
       return GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8;
 
@@ -1838,7 +1838,7 @@ mips_symbol_insns (enum mips_symbol_type type)
 {
   switch (type)
     {
-    case SYMBOL_GENERAL:
+    case SYMBOL_ABSOLUTE:
       /* In mips16 code, general symbols must be fetched from the
         constant pool.  */
       if (TARGET_MIPS16)
@@ -1857,11 +1857,11 @@ mips_symbol_insns (enum mips_symbol_type type)
         symbols we just need a preparatory lui.  */
       return (ABI_HAS_64BIT_SYMBOLS ? 6 : 2);
 
-    case SYMBOL_SMALL_DATA:
+    case SYMBOL_GP_RELATIVE:
     case SYMBOL_HALF:
       return 1;
 
-    case SYMBOL_CONSTANT_POOL:
+    case SYMBOL_PC_RELATIVE:
       /* This case is for mips16 only.  Assume we'll need an
         extended instruction.  */
       return 2;
@@ -5429,32 +5429,32 @@ override_options (void)
          mips_hi_relocs[SYMBOL_64_LOW] = "%hi(";
          mips_lo_relocs[SYMBOL_64_LOW] = "%lo(";
 
-         mips_split_p[SYMBOL_GENERAL] = true;
-         mips_lo_relocs[SYMBOL_GENERAL] = "%lo(";
+         mips_split_p[SYMBOL_ABSOLUTE] = true;
+         mips_lo_relocs[SYMBOL_ABSOLUTE] = "%lo(";
        }
     }
   else
     {
       if (TARGET_EXPLICIT_RELOCS || mips_split_addresses)
        {
-         mips_split_p[SYMBOL_GENERAL] = true;
-         mips_hi_relocs[SYMBOL_GENERAL] = "%hi(";
-         mips_lo_relocs[SYMBOL_GENERAL] = "%lo(";
+         mips_split_p[SYMBOL_ABSOLUTE] = true;
+         mips_hi_relocs[SYMBOL_ABSOLUTE] = "%hi(";
+         mips_lo_relocs[SYMBOL_ABSOLUTE] = "%lo(";
        }
     }
 
   if (TARGET_MIPS16)
     {
       /* The high part is provided by a pseudo copy of $gp.  */
-      mips_split_p[SYMBOL_SMALL_DATA] = true;
-      mips_lo_relocs[SYMBOL_SMALL_DATA] = "%gprel(";
+      mips_split_p[SYMBOL_GP_RELATIVE] = true;
+      mips_lo_relocs[SYMBOL_GP_RELATIVE] = "%gprel(";
     }
 
   if (TARGET_EXPLICIT_RELOCS)
     {
       /* Small data constants are kept whole until after reload,
         then lowered by mips_rewrite_small_data.  */
-      mips_lo_relocs[SYMBOL_SMALL_DATA] = "%gp_rel(";
+      mips_lo_relocs[SYMBOL_GP_RELATIVE] = "%gp_rel(";
 
       mips_split_p[SYMBOL_GOT_PAGE_OFST] = true;
       if (TARGET_NEWABI)
@@ -6439,7 +6439,7 @@ mips_rewrite_small_data_p (rtx x)
 
   return (TARGET_EXPLICIT_RELOCS
          && mips_symbolic_constant_p (x, &symbol_type)
-         && symbol_type == SYMBOL_SMALL_DATA);
+         && symbol_type == SYMBOL_GP_RELATIVE);
 }
 
 
@@ -8309,8 +8309,8 @@ mips_use_anchors_for_symbol_p (rtx symbol)
 {
   switch (mips_classify_symbol (symbol))
     {
-    case SYMBOL_CONSTANT_POOL:
-    case SYMBOL_SMALL_DATA:
+    case SYMBOL_PC_RELATIVE:
+    case SYMBOL_GP_RELATIVE:
       return false;
 
     default:
index c72569aa7b21010d178280ced63f3aae1c8792ee..e522f4e44ec12704df7920dc5aee77e3d168009c 100644 (file)
   [(set_attr "type" "store")
    (set_attr "mode" "<MODE>")])
 
-;; An instruction to calculate the high part of a 64-bit SYMBOL_GENERAL.
+;; An instruction to calculate the high part of a 64-bit SYMBOL_ABSOLUTE.
 ;; The required value is:
 ;;
 ;;     (%highest(op1) << 48) + (%higher(op1) << 32) + (%hi(op1) << 16)
 ;; to take effect.
 (define_insn_and_split "*lea_high64"
   [(set (match_operand:DI 0 "register_operand" "=d")
-       (high:DI (match_operand:DI 1 "general_symbolic_operand" "")))]
+       (high:DI (match_operand:DI 1 "absolute_symbolic_operand" "")))]
   "TARGET_EXPLICIT_RELOCS && ABI_HAS_64BIT_SYMBOLS"
   "#"
   "&& epilogue_completed"
 ;;     daddu   op1,op1,op0
 (define_peephole2
   [(set (match_operand:DI 1 "register_operand")
-       (high:DI (match_operand:DI 2 "general_symbolic_operand")))
+       (high:DI (match_operand:DI 2 "absolute_symbolic_operand")))
    (match_scratch:DI 0 "d")]
   "TARGET_EXPLICIT_RELOCS && ABI_HAS_64BIT_SYMBOLS"
   [(set (match_dup 1) (high:DI (match_dup 3)))
 })
 
 ;; On most targets, the expansion of (lo_sum (high X) X) for a 64-bit
-;; SYMBOL_GENERAL X will take 6 cycles.  This next pattern allows combine
+;; SYMBOL_ABSOLUTE X will take 6 cycles.  This next pattern allows combine
 ;; to merge the HIGH and LO_SUM parts of a move if the HIGH part is only
 ;; used once.  We can then use the sequence:
 ;;
 ;; which takes 4 cycles on most superscalar targets.
 (define_insn_and_split "*lea64"
   [(set (match_operand:DI 0 "register_operand" "=d")
-       (match_operand:DI 1 "general_symbolic_operand" ""))
+       (match_operand:DI 1 "absolute_symbolic_operand" ""))
    (clobber (match_scratch:DI 2 "=&d"))]
   "TARGET_EXPLICIT_RELOCS && ABI_HAS_64BIT_SYMBOLS && cse_not_expected"
   "#"
                                 (match_dup 4)] UNSPEC_LOAD_GOT))]
 {
   operands[2] = pic_offset_table_rtx;
-  operands[3] = mips_unspec_address (operands[0], SYMBOL_GENERAL);
+  operands[3] = mips_unspec_address (operands[0], SYMBOL_ABSOLUTE);
   operands[4] = mips_unspec_address (operands[1], SYMBOL_HALF);
 })
 
index f567b348162fbfc6e62b619440e11aff3d804bf3..7f69f983b6ce31007c43f4a286f71feaab0bd9bc 100644 (file)
 
   switch (symbol_type)
     {
-    case SYMBOL_GENERAL:
+    case SYMBOL_ABSOLUTE:
       /* We can only use direct calls for TARGET_ABSOLUTE_ABICALLS if we
         are sure that the target function does not need $25 to be live
         on entry.  This is true for any locally-defined function because
   return mips_symbolic_constant_p (op, &type);
 })
 
-(define_predicate "general_symbolic_operand"
+(define_predicate "absolute_symbolic_operand"
   (match_code "const,symbol_ref,label_ref")
 {
   enum mips_symbol_type type;
-  return mips_symbolic_constant_p (op, &type) && type == SYMBOL_GENERAL;
+  return mips_symbolic_constant_p (op, &type) && type == SYMBOL_ABSOLUTE;
 })
 
 (define_predicate "got_disp_operand"