]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
pa.c (pa_reloc_rw_mask): New function.
authorJohn David Anglin <danglin@gcc.gnu.org>
Thu, 19 Feb 2015 23:50:10 +0000 (23:50 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Thu, 19 Feb 2015 23:50:10 +0000 (23:50 +0000)
* 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: r220828

gcc/ChangeLog
gcc/config/pa/pa.c

index 54506807fd51365cd2255f66b6ccfe0d2a502fc3..ca756c994fd16cf39ae60b145abf0d7ae788f967 100644 (file)
@@ -1,3 +1,7 @@
+       * 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  Richard Biener  <rguenther@suse.de>
 
        Backport from mainline
index 6a17970d1e4a9894e5e2338bf49d35285e78626c..e9c4b0b0789dc45e9a3cc415fa09335e5e74985d 100644 (file)
@@ -119,6 +119,7 @@ static void pa_output_function_epilogue (FILE *, HOST_WIDE_INT);
 static int pa_adjust_cost (rtx, rtx, rtx, int);
 static int pa_adjust_priority (rtx, int);
 static int pa_issue_rate (void);
+static int pa_reloc_rw_mask (void);
 static void pa_som_asm_init_sections (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)
@@ -294,6 +295,9 @@ static size_t n_deferred_plabels = 0;
 #define TARGET_ASM_FILE_END output_deferred_plabels
 #endif
 
+#undef TARGET_ASM_RELOC_RW_MASK
+#define TARGET_ASM_RELOC_RW_MASK pa_reloc_rw_mask
+
 #undef TARGET_PRINT_OPERAND_PUNCT_VALID_P
 #define TARGET_PRINT_OPERAND_PUNCT_VALID_P pa_print_operand_punct_valid_p
 
@@ -1565,14 +1569,6 @@ pa_tls_referenced_p (rtx x)
 static bool
 pa_cannot_force_const_mem (enum 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 pa_tls_referenced_p (x);
 }
 
@@ -9825,6 +9821,19 @@ pa_select_section (tree exp, int reloc,
     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
 pa_globalize_label (FILE *stream, const char *name)
 {