aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/avr
diff options
context:
space:
mode:
authorSenthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>2016-06-16 16:50:40 +0000
committerDenis Chertykov <denisc@gcc.gnu.org>2016-06-16 19:50:40 +0300
commit2d761a3733c10868e8ca8d81e846a1940c5e48a2 (patch)
tree88ea0d64f37292a69aaac4ab9fb186b99e4c4cd1 /gcc/config/avr
parentd3606ee3ea6a8a30844f997aac61b4a1ecd30242 (diff)
downloadgcc-2d761a3733c10868e8ca8d81e846a1940c5e48a2.zip
gcc-2d761a3733c10868e8ca8d81e846a1940c5e48a2.tar.gz
gcc-2d761a3733c10868e8ca8d81e846a1940c5e48a2.tar.bz2
avr.c (avr_asm_init_sections): Remove setup of progmem_swtable_section.
gcc/ChangeLog: * config/avr/avr.c (avr_asm_init_sections): Remove setup of progmem_swtable_section. (progmem_swtable_section): Remove. (avr_asm_function_rodata_section): Remove. (TARGET_ASM_FUNCTION_RODATA_SECTION): Remove. * config/avr/avr.h (JUMP_TABLES_IN_TEXT_SECTION: Define to 1. gcc/testsuite/ChangeLog: * gcc.target/avr/pr71151-1.c: New test. * gcc.target/avr/pr71151-2.c: New test. * gcc.target/avr/pr71151-3.c: New test. * gcc.target/avr/pr71151-4.c: New test. * gcc.target/avr/pr71151-5.c: New test. * gcc.target/avr/pr71151-6.c: New test. * gcc.target/avr/pr71151-7.c: New test. * gcc.target/avr/pr71151-8.c: New test. * gcc.target/avr/pr71151-common.h: New test. From-SVN: r237536
Diffstat (limited to 'gcc/config/avr')
-rw-r--r--gcc/config/avr/avr.c83
-rw-r--r--gcc/config/avr/avr.h2
2 files changed, 1 insertions, 84 deletions
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index b327624..d13f4fd 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -203,9 +203,6 @@ static GTY(()) rtx xstring_e;
/* Current architecture. */
const avr_arch_t *avr_arch;
-/* Section to put switch tables in. */
-static GTY(()) section *progmem_swtable_section;
-
/* Unnamed sections associated to __attribute__((progmem)) aka. PROGMEM
or to address space __flash* or __memx. Only used as singletons inside
avr_asm_select_section, but it must not be local there because of GTY. */
@@ -9461,24 +9458,6 @@ avr_output_progmem_section_asm_op (const void *data)
static void
avr_asm_init_sections (void)
{
- /* Set up a section for jump tables. Alignment is handled by
- ASM_OUTPUT_BEFORE_CASE_LABEL. */
-
- if (AVR_HAVE_JMP_CALL)
- {
- progmem_swtable_section
- = get_unnamed_section (0, output_section_asm_op,
- "\t.section\t.progmem.gcc_sw_table"
- ",\"a\",@progbits");
- }
- else
- {
- progmem_swtable_section
- = get_unnamed_section (SECTION_CODE, output_section_asm_op,
- "\t.section\t.progmem.gcc_sw_table"
- ",\"ax\",@progbits");
- }
-
/* Override section callbacks to keep track of `avr_need_clear_bss_p'
resp. `avr_need_copy_data_p'. */
@@ -9488,65 +9467,6 @@ avr_asm_init_sections (void)
}
-/* Implement `TARGET_ASM_FUNCTION_RODATA_SECTION'. */
-
-static section*
-avr_asm_function_rodata_section (tree decl)
-{
- /* If a function is unused and optimized out by -ffunction-sections
- and --gc-sections, ensure that the same will happen for its jump
- tables by putting them into individual sections. */
-
- unsigned int flags;
- section * frodata;
-
- /* Get the frodata section from the default function in varasm.c
- but treat function-associated data-like jump tables as code
- rather than as user defined data. AVR has no constant pools. */
- {
- int fdata = flag_data_sections;
-
- flag_data_sections = flag_function_sections;
- frodata = default_function_rodata_section (decl);
- flag_data_sections = fdata;
- flags = frodata->common.flags;
- }
-
- if (frodata != readonly_data_section
- && flags & SECTION_NAMED)
- {
- /* Adjust section flags and replace section name prefix. */
-
- unsigned int i;
-
- static const char* const prefix[] =
- {
- ".rodata", ".progmem.gcc_sw_table",
- ".gnu.linkonce.r.", ".gnu.linkonce.t."
- };
-
- for (i = 0; i < sizeof (prefix) / sizeof (*prefix); i += 2)
- {
- const char * old_prefix = prefix[i];
- const char * new_prefix = prefix[i+1];
- const char * name = frodata->named.name;
-
- if (STR_PREFIX_P (name, old_prefix))
- {
- const char *rname = ACONCAT ((new_prefix,
- name + strlen (old_prefix), NULL));
- flags &= ~SECTION_CODE;
- flags |= AVR_HAVE_JMP_CALL ? 0 : SECTION_CODE;
-
- return get_section (rname, flags, frodata->named.decl);
- }
- }
- }
-
- return progmem_swtable_section;
-}
-
-
/* Implement `TARGET_ASM_NAMED_SECTION'. */
/* Track need of __do_clear_bss, __do_copy_data for named sections. */
@@ -13747,9 +13667,6 @@ avr_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED, tree *arg,
#undef TARGET_FOLD_BUILTIN
#define TARGET_FOLD_BUILTIN avr_fold_builtin
-#undef TARGET_ASM_FUNCTION_RODATA_SECTION
-#define TARGET_ASM_FUNCTION_RODATA_SECTION avr_asm_function_rodata_section
-
#undef TARGET_SCALAR_MODE_SUPPORTED_P
#define TARGET_SCALAR_MODE_SUPPORTED_P avr_scalar_mode_supported_p
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h
index 01da708..ab5e465 100644
--- a/gcc/config/avr/avr.h
+++ b/gcc/config/avr/avr.h
@@ -391,7 +391,7 @@ typedef struct avr_args
#define SUPPORTS_INIT_PRIORITY 0
-#define JUMP_TABLES_IN_TEXT_SECTION 0
+#define JUMP_TABLES_IN_TEXT_SECTION 1
#define ASM_COMMENT_START " ; "