aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-04-16 21:52:57 -0700
committerRichard Henderson <rth@gcc.gnu.org>2003-04-16 21:52:57 -0700
commit74b66b3c09e3e2019a29bc877ee0df58d3096884 (patch)
tree6855ee426a14b079afa5fa6d3c38dfc4748a87f8 /gcc
parent9e57d5caf27099facc4fba0bdc176b88568f9c58 (diff)
downloadgcc-74b66b3c09e3e2019a29bc877ee0df58d3096884.zip
gcc-74b66b3c09e3e2019a29bc877ee0df58d3096884.tar.gz
gcc-74b66b3c09e3e2019a29bc877ee0df58d3096884.tar.bz2
avr.c (avr_encode_section_info): Remove.
* 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. From-SVN: r65718
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/avr/avr.c40
2 files changed, 28 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4aa7b39..711701a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 2380059..ebc8964 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -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;
}
}