re PR target/90751 (-fpatchtable-function-entry broken on hppa-linux-gnu-gcc/hppa64...
authorJohn David Anglin <danglin@gcc.gnu.org>
Fri, 7 Jun 2019 23:13:08 +0000 (23:13 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Fri, 7 Jun 2019 23:13:08 +0000 (23:13 +0000)
PR target/90751
* config/pa/pa-linux.h (ASM_DECLARE_FUNCTION_NAME): Update comment.
Call pa_output_function_label>
(TARGET_ASM_FUNCTION_PROLOGUE): define.
* config/pa/pa-protos.h (pa_output_function_label): Declare.
* config/pa/pa.c (pa_output_function_prologue): Add ATTRIBUTE_UNUSED
to declaration.
(pa_linux_output_function_prologue): Declare.
(TARGET_ASM_FUNCTION_PROLOGUE): Delete define.
(pa_output_function_label): New.
(pa_output_function_prologue): Revise to use pa_output_function_label.
(pa_linux_output_function_prologue): New.
* config/pa/pa.h (TARGET_ASM_FUNCTION_PROLOGUE): Define.

From-SVN: r272059

gcc/ChangeLog
gcc/config/pa/pa-linux.h
gcc/config/pa/pa-protos.h
gcc/config/pa/pa.c
gcc/config/pa/pa.h

index 7e84da73316a488d904aa25c2275b6e2e000a494..3721c87caebc3a860e532ab7a270fd385ec219a4 100644 (file)
@@ -1,3 +1,19 @@
+2019-06-07  John David Anglin  <danglin@gcc.gnu.orig>
+
+       PR target/90751
+       * config/pa/pa-linux.h (ASM_DECLARE_FUNCTION_NAME): Update comment.
+       Call pa_output_function_label.
+       (TARGET_ASM_FUNCTION_PROLOGUE): define.
+       * config/pa/pa-protos.h (pa_output_function_label): Declare.
+       * config/pa/pa.c (pa_output_function_prologue): Add ATTRIBUTE_UNUSED
+       to declaration.
+       (pa_linux_output_function_prologue): Declare.
+       (TARGET_ASM_FUNCTION_PROLOGUE): Delete define.
+       (pa_output_function_label): New.
+       (pa_output_function_prologue): Revise to use pa_output_function_label.
+       (pa_linux_output_function_prologue): New.
+       * config/pa/pa.h (TARGET_ASM_FUNCTION_PROLOGUE): Define.
+
 2019-06-07  Aldy Hernandez  <aldyh@redhat.com>
 
        * tree-vrp.h (value_range_base::intersect): New.
index 0d02ebc7fb21d719675aad1d67fc3c02bb12147e..23812e4aded72c51eb4425d1193b07f80c6d7f76 100644 (file)
@@ -101,7 +101,7 @@ along with GCC; see the file COPYING3.  If not see
 
 /* FIXME: Hacked from the <elfos.h> one so that we avoid multiple
    labels in a function declaration (since pa.c seems determined to do
-   it differently)  */
+   it differently).  */
 
 #undef ASM_DECLARE_FUNCTION_NAME
 #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)            \
@@ -109,9 +109,14 @@ along with GCC; see the file COPYING3.  If not see
     {                                                          \
       ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function");      \
       ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));           \
+      pa_output_function_label (FILE);                         \
     }                                                          \
   while (0)
 
+/* Output function prologue for linux.  */
+#undef TARGET_ASM_FUNCTION_PROLOGUE
+#define TARGET_ASM_FUNCTION_PROLOGUE pa_linux_output_function_prologue
+
 /* As well as globalizing the label, we need to encode the label
    to ensure a plabel is generated in an indirect call.  */
 
index 2504ac8daf375fc9ee5a90402fa602532d0fcb96..a62eeb732dcbea872c96a6f09a024b06e43ab06a 100644 (file)
@@ -108,6 +108,7 @@ extern void pa_asm_output_aligned_local (FILE *, const char *,
 extern void pa_hpux_asm_output_external (FILE *, tree, const char *);
 extern HOST_WIDE_INT pa_initial_elimination_offset (int, int);
 extern HOST_WIDE_INT pa_function_arg_size (machine_mode, const_tree);
+extern void pa_output_function_label (FILE *);
 
 extern const int pa_magic_milli[];
 
index 51c879d5a0a58dcd41f48216946f6da5320bdb23..deb2d439b09afc2f7ba0622c3bf65239c63e82d5 100644 (file)
@@ -118,7 +118,8 @@ static void set_reg_plus_d (int, int, HOST_WIDE_INT, int);
 static rtx pa_function_value (const_tree, const_tree, bool);
 static rtx pa_libcall_value (machine_mode, const_rtx);
 static bool pa_function_value_regno_p (const unsigned int);
-static void pa_output_function_prologue (FILE *);
+static void pa_output_function_prologue (FILE *) ATTRIBUTE_UNUSED;
+static void pa_linux_output_function_prologue (FILE *) ATTRIBUTE_UNUSED;
 static void update_total_code_bytes (unsigned int);
 static void pa_output_function_epilogue (FILE *);
 static int pa_adjust_cost (rtx_insn *, int, rtx_insn *, int, unsigned int);
@@ -262,8 +263,6 @@ static size_t n_deferred_plabels = 0;
 #undef TARGET_ASM_INTEGER
 #define TARGET_ASM_INTEGER pa_assemble_integer
 
-#undef TARGET_ASM_FUNCTION_PROLOGUE
-#define TARGET_ASM_FUNCTION_PROLOGUE pa_output_function_prologue
 #undef TARGET_ASM_FUNCTION_EPILOGUE
 #define TARGET_ASM_FUNCTION_EPILOGUE pa_output_function_epilogue
 
@@ -3842,16 +3841,10 @@ pa_compute_frame_size (poly_int64 size, int *fregs_live)
          & ~(PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT - 1));
 }
 
-/* On HP-PA, move-double insns between fpu and cpu need an 8-byte block
-   of memory.  If any fpu reg is used in the function, we allocate
-   such a block here, at the bottom of the frame, just in case it's needed.
+/* Output function label, and associated .PROC and .CALLINFO statements.  */
 
-   If this function is a leaf procedure, then we may choose not
-   to do a "save" insn.  The decision about whether or not
-   to do this is made in regclass.c.  */
-
-static void
-pa_output_function_prologue (FILE *file)
+void
+pa_output_function_label (FILE *file)
 {
   /* The function's label and associated .PROC must never be
      separated and must be output *after* any profiling declarations
@@ -3897,7 +3890,22 @@ pa_output_function_prologue (FILE *file)
     fprintf (file, ",ENTRY_FR=%d", fr_saved + 11);
 
   fputs ("\n\t.ENTRY\n", file);
+}
+
+/* Output function prologue.  */
 
+static void
+pa_output_function_prologue (FILE *file)
+{
+  pa_output_function_label (file);
+  remove_useless_addtr_insns (0);
+}
+
+/* The label is output by ASM_DECLARE_FUNCTION_NAME on linux.  */
+
+static void
+pa_linux_output_function_prologue (FILE *file ATTRIBUTE_UNUSED)
+{
   remove_useless_addtr_insns (0);
 }
 
index 146ffa2a1e2137bd65c686cfd1944dda63fe4444..561efa518829b381b1c7f28412cee8286f575b1d 100644 (file)
@@ -1305,3 +1305,6 @@ do {                                                                           \
 
 /* Target CPU versions for D.  */
 #define TARGET_D_CPU_VERSIONS pa_d_target_versions
+
+/* Output default function prologue for hpux.  */
+#define TARGET_ASM_FUNCTION_PROLOGUE pa_output_function_prologue