]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ia64.h (FUNCTION_PROFILER): Move implementation ...
authorRichard Henderson <rth@redhat.com>
Wed, 8 Jun 2005 19:23:07 +0000 (12:23 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 8 Jun 2005 19:23:07 +0000 (12:23 -0700)
* config/ia64/ia64.h (FUNCTION_PROFILER): Move implementation ...
        * config/ia64/ia64.c (ia64_output_function_profiler): ... here; add
        unwind markup.
        * config/ia64/ia64-protos.h (ia64_output_function_profiler): Declare.

From-SVN: r100774

gcc/ChangeLog
gcc/config/ia64/ia64-protos.h
gcc/config/ia64/ia64.c
gcc/config/ia64/ia64.h

index 9ad8e4434c08977075a3dcf965207593c63a4866..2d5c57c183cdb3aeb3a7ad0c87a6edde97ba5e0e 100644 (file)
@@ -1,3 +1,10 @@
+2005-06-08  Richard Henderson  <rth@redhat.com>
+
+       * config/ia64/ia64.h (FUNCTION_PROFILER): Move implementation ...
+       * config/ia64/ia64.c (ia64_output_function_profiler): ... here; add
+       unwind markup.
+       * config/ia64/ia64-protos.h (ia64_output_function_profiler): Declare.
+
 2005-06-08  Joseph S. Myers  <joseph@codesourcery.com>
 
        * config/sol2-c.c (cmn_err_char_table): Allow width for %b
index 31b854ce475cfadbd8f9090426eeb74174577f8f..7b097bf56c4586b1eb1b9a073860e43f2166e30f 100644 (file)
@@ -113,3 +113,4 @@ extern enum direction ia64_hpux_function_arg_padding (enum machine_mode, tree);
 #endif /* ARGS_SIZE_RTX */
 
 extern void ia64_hpux_handle_builtin_pragma (struct cpp_reader *);
+extern void ia64_output_function_profiler (FILE *, int);
index d175a842ae6bd65e38903be9055ce4d0725d089e..5297f5efe7982a01de1b86db9ce393a7e0c00683 100644 (file)
@@ -8551,4 +8551,31 @@ ia64_vector_mode_supported_p (enum machine_mode mode)
     }
 }
 
+void
+ia64_output_function_profiler (FILE *file, int labelno)
+{
+  char buf[20];
+  ASM_GENERATE_INTERNAL_LABEL (buf, "LP", labelno);
+
+  if (TARGET_GNU_AS)
+    fputs ("\t.prologue 4, r40\n", file);
+  else
+    fputs ("\t.prologue\n\t.save ar.pfs, r40\n", file);
+  fputs ("\talloc out0 = ar.pfs, 8, 0, 4, 0\n", file);
+  fputs ("\t.save rp, r42\n", file);
+  fputs ("\tmov out2 = b0\n\t;;\n", file);
+  fputs ("\t.body\n", file);
+  if (TARGET_AUTO_PIC)
+    fputs ("\tmovl out3 = @gprel(", file);
+  else
+    fputs ("\taddl out3 = @ltoff(", file);
+  assemble_name (file, buf);
+  if (TARGET_AUTO_PIC)
+    fputs (")\n", file);
+  else
+    fputs ("), r1\n", file);
+  fputs ("\tmov out1 = r1\n", file);
+  fputs ("\tbr.call.sptk.many b0 = _mcount\n\t;;\n", file);
+}
+
 #include "gt-ia64.h"
index 3bef0d3a93700ebd80ae087d45cd346a3923a660..b9b431a8c4f93c9dfc418a1595d0ae2279b494f2 100644 (file)
@@ -1265,24 +1265,8 @@ do {                                                                     \
    call the profiling subroutine `mcount'.  */
 
 #undef FUNCTION_PROFILER
-#define FUNCTION_PROFILER(FILE, LABELNO)                               \
-do {                                                                   \
-  char buf[20];                                                                \
-  ASM_GENERATE_INTERNAL_LABEL (buf, "LP", LABELNO);                    \
-  fputs ("\talloc out0 = ar.pfs, 8, 0, 4, 0\n", FILE);                 \
-  if (TARGET_AUTO_PIC)                                                 \
-    fputs ("\tmovl out3 = @gprel(", FILE);                             \
-  else                                                                 \
-    fputs ("\taddl out3 = @ltoff(", FILE);                             \
-  assemble_name (FILE, buf);                                           \
-  if (TARGET_AUTO_PIC)                                                 \
-    fputs (");;\n", FILE);                                             \
-  else                                                                 \
-    fputs ("), r1;;\n", FILE);                                         \
-  fputs ("\tmov out1 = r1\n", FILE);                                   \
-  fputs ("\tmov out2 = b0\n", FILE);                                   \
-  fputs ("\tbr.call.sptk.many b0 = _mcount;;\n", FILE);                        \
-} while (0)
+#define FUNCTION_PROFILER(FILE, LABELNO) \
+  ia64_output_function_profiler(FILE, LABELNO)
 \f
 /* Trampolines for Nested Functions.  */