Commit f258111a by John David Anglin

pa.c (pa_reloc_rw_mask): New function.

	* config/pa/pa.c (pa_reloc_rw_mask): New function.
	(TARGET_ASM_RELOC_RW_MASK): Define.
	(pa_cannot_force_const_mem): Revert previous change.

From-SVN: r220827
parent 81d43c6b
2015-02-19 John David Anglin <danglin@gcc.gnu.org>
* config/pa/pa.c (pa_reloc_rw_mask): New function.
(TARGET_ASM_RELOC_RW_MASK): Define.
(pa_cannot_force_const_mem): Revert previous change.
2015-02-19 Martin Jambor <mjmabor@suse.cz> 2015-02-19 Martin Jambor <mjmabor@suse.cz>
Jan Hubicka <hubicka@ucw.cz> Jan Hubicka <hubicka@ucw.cz>
......
...@@ -149,6 +149,7 @@ static void pa_output_function_epilogue (FILE *, HOST_WIDE_INT); ...@@ -149,6 +149,7 @@ static void pa_output_function_epilogue (FILE *, HOST_WIDE_INT);
static int pa_adjust_cost (rtx_insn *, rtx, rtx_insn *, int); static int pa_adjust_cost (rtx_insn *, rtx, rtx_insn *, int);
static int pa_adjust_priority (rtx_insn *, int); static int pa_adjust_priority (rtx_insn *, int);
static int pa_issue_rate (void); static int pa_issue_rate (void);
static int pa_reloc_rw_mask (void);
static void pa_som_asm_init_sections (void) ATTRIBUTE_UNUSED; static void pa_som_asm_init_sections (void) ATTRIBUTE_UNUSED;
static section *pa_som_tm_clone_table_section (void) ATTRIBUTE_UNUSED; static section *pa_som_tm_clone_table_section (void) ATTRIBUTE_UNUSED;
static section *pa_select_section (tree, int, unsigned HOST_WIDE_INT) static section *pa_select_section (tree, int, unsigned HOST_WIDE_INT)
...@@ -324,6 +325,9 @@ static size_t n_deferred_plabels = 0; ...@@ -324,6 +325,9 @@ static size_t n_deferred_plabels = 0;
#define TARGET_ASM_FILE_END output_deferred_plabels #define TARGET_ASM_FILE_END output_deferred_plabels
#endif #endif
#undef TARGET_ASM_RELOC_RW_MASK
#define TARGET_ASM_RELOC_RW_MASK pa_reloc_rw_mask
#undef TARGET_PRINT_OPERAND_PUNCT_VALID_P #undef TARGET_PRINT_OPERAND_PUNCT_VALID_P
#define TARGET_PRINT_OPERAND_PUNCT_VALID_P pa_print_operand_punct_valid_p #define TARGET_PRINT_OPERAND_PUNCT_VALID_P pa_print_operand_punct_valid_p
...@@ -1569,14 +1573,6 @@ force_mode (machine_mode mode, rtx orig) ...@@ -1569,14 +1573,6 @@ force_mode (machine_mode mode, rtx orig)
static bool static bool
pa_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x) pa_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x)
{ {
/* Reload sometimes tries to put const data symbolic operands in
readonly memory. The HP SOM linker doesn't allow symbolic data
in readonly memory. */
if (TARGET_SOM
&& !function_label_operand (x, VOIDmode)
&& symbolic_operand (x, VOIDmode))
return true;
return tls_referenced_p (x); return tls_referenced_p (x);
} }
...@@ -9707,6 +9703,19 @@ pa_select_section (tree exp, int reloc, ...@@ -9707,6 +9703,19 @@ pa_select_section (tree exp, int reloc,
return data_section; return data_section;
} }
/* Implement pa_reloc_rw_mask. */
static int
pa_reloc_rw_mask (void)
{
/* We force (const (plus (symbol) (const_int))) to memory when the
const_int doesn't fit in a 14-bit integer. The SOM linker can't
handle this construct in read-only memory and we want to avoid
this for ELF. So, we always force an RTX needing relocation to
the data section. */
return 3;
}
static void static void
pa_globalize_label (FILE *stream, const char *name) pa_globalize_label (FILE *stream, const char *name)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment