OSDN Git Service

* config/avr/avr.c (avr_encode_section_info): Remove.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Apr 2003 04:52:57 +0000 (04:52 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Apr 2003 04:52:57 +0000 (04:52 +0000)
        (avr_insert_attributes): New.
        (print_operand_address): Use SYMBOL_REF_FUNCTION_P.
        (avr_assemble_integer): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65718 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/avr/avr.c

index 4aa7b39..711701a 100644 (file)
@@ -1,5 +1,12 @@
 2003-04-16  Richard Henderson  <rth@redhat.com>
 
+       * config/avr/avr.c (avr_encode_section_info): Remove.
+       (avr_insert_attributes): New.
+       (print_operand_address): Use SYMBOL_REF_FUNCTION_P.
+       (avr_assemble_integer): Likewise.
+
+2003-04-16  Richard Henderson  <rth@redhat.com>
+
        * arc.c (arc_encode_section_info): Remove.
        (arc_assemble_integer): Use SYMBOL_REF_FUNCTION_P.      
        (arc_print_operand, arc_print_operand_address): Likewise.
index 2380059..ebc8964 100644 (file)
@@ -66,7 +66,7 @@ static bool   avr_assemble_integer PARAMS ((rtx, unsigned int, int));
 static void   avr_output_function_prologue PARAMS ((FILE *, HOST_WIDE_INT));
 static void   avr_output_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
 static void   avr_unique_section PARAMS ((tree, int));
-static void   avr_encode_section_info PARAMS ((tree, int));
+static void   avr_insert_attributes PARAMS ((tree, tree *));
 static unsigned int avr_section_type_flags PARAMS ((tree, const char *, int));
 
 static void   avr_asm_out_ctor PARAMS ((rtx, int));
@@ -226,8 +226,8 @@ int avr_case_values_threshold = 30000;
 #define TARGET_ATTRIBUTE_TABLE avr_attribute_table
 #undef TARGET_ASM_UNIQUE_SECTION
 #define TARGET_ASM_UNIQUE_SECTION avr_unique_section
-#undef TARGET_ENCODE_SECTION_INFO
-#define TARGET_ENCODE_SECTION_INFO avr_encode_section_info
+#undef TARGET_INSERT_ATTRIBUTES
+#define TARGET_INSERT_ATTRIBUTES avr_insert_attributes
 #undef TARGET_SECTION_TYPE_FLAGS
 #define TARGET_SECTION_TYPE_FLAGS avr_section_type_flags
 #undef TARGET_RTX_COSTS
@@ -1088,7 +1088,7 @@ print_operand_address (file, addr)
 
     default:
       if (CONSTANT_ADDRESS_P (addr)
-         && ((GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_FLAG (addr))
+         && ((GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_FUNCTION_P (addr))
              || GET_CODE (addr) == LABEL_REF))
        {
          fprintf (file, "pm(");
@@ -4569,7 +4569,7 @@ avr_assemble_integer (x, size, aligned_p)
      int aligned_p;
 {
   if (size == POINTER_SIZE / BITS_PER_UNIT && aligned_p
-      && ((GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_FLAG (x))
+      && ((GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_FUNCTION_P (x))
          || GET_CODE (x) == LABEL_REF))
     {
       fputs ("\t.word\tpm(", asm_out_file);
@@ -4838,23 +4838,25 @@ avr_progmem_p (decl)
   return 0;
 }
 
-/* Encode section information about tree DECL.  */
-  
+/* Add the section attribute if the variable is in progmem.  */
+
 static void
-avr_encode_section_info (decl, first)
-     tree decl;
-     int first;
+avr_insert_attributes (node, attributes)
+     tree node;
+     tree *attributes;
 {
-  if (TREE_CODE (decl) == FUNCTION_DECL)
-    SYMBOL_REF_FLAG (XEXP (DECL_RTL (decl), 0)) = 1;
-  else if (first
-          && (TREE_STATIC (decl) || DECL_EXTERNAL (decl))
-          && TREE_CODE (decl) == VAR_DECL
-          && avr_progmem_p (decl))
+  if (TREE_CODE (node) == VAR_DECL
+      && (TREE_STATIC (node) || DECL_EXTERNAL (node))
+      && avr_progmem_p (node))
     {
-      static const char *const dsec = ".progmem.data";
-      DECL_SECTION_NAME (decl) = build_string (strlen (dsec), dsec);
-      TREE_READONLY (decl) = 1;
+      static const char dsec[] = ".progmem.data";
+      *attributes = tree_cons (get_identifier ("section"),
+               build_tree_list (NULL, build_string (strlen (dsec), dsec)),
+               *attributes);
+
+      /* ??? This seems sketchy.  Why can't the user declare the
+        thing const in the first place?  */
+      TREE_READONLY (node) = 1;
     }
 }