74 lines
2.6 KiB
Diff
74 lines
2.6 KiB
Diff
2013-09-30 Venkataramanan Kumar <venkataramanan.kumar@linaro.org>
|
|
|
|
* config/aarch64/aarch64.h (MCOUNT_NAME): Define.
|
|
(NO_PROFILE_COUNTERS): Likewise.
|
|
(PROFILE_HOOK): Likewise.
|
|
(FUNCTION_PROFILER): Likewise.
|
|
* config/aarch64/aarch64.c (aarch64_function_profiler): Remove.
|
|
|
|
Index: gcc-4.8.2-r206703/gcc/config/aarch64/aarch64.c
|
|
===================================================================
|
|
--- gcc-4.8.2-r206703.orig/gcc/config/aarch64/aarch64.c
|
|
+++ gcc-4.8.2-r206703/gcc/config/aarch64/aarch64.c
|
|
@@ -3647,13 +3647,6 @@ aarch64_print_operand_address (FILE *f,
|
|
output_addr_const (f, x);
|
|
}
|
|
|
|
-void
|
|
-aarch64_function_profiler (FILE *f ATTRIBUTE_UNUSED,
|
|
- int labelno ATTRIBUTE_UNUSED)
|
|
-{
|
|
- sorry ("function profiling");
|
|
-}
|
|
-
|
|
bool
|
|
aarch64_label_mentioned_p (rtx x)
|
|
{
|
|
Index: gcc-4.8.2-r206703/gcc/config/aarch64/aarch64.h
|
|
===================================================================
|
|
--- gcc-4.8.2-r206703.orig/gcc/config/aarch64/aarch64.h
|
|
+++ gcc-4.8.2-r206703/gcc/config/aarch64/aarch64.h
|
|
@@ -758,8 +758,22 @@ do { \
|
|
#define PRINT_OPERAND_ADDRESS(STREAM, X) \
|
|
aarch64_print_operand_address (STREAM, X)
|
|
|
|
-#define FUNCTION_PROFILER(STREAM, LABELNO) \
|
|
- aarch64_function_profiler (STREAM, LABELNO)
|
|
+#define MCOUNT_NAME "_mcount"
|
|
+
|
|
+#define NO_PROFILE_COUNTERS 1
|
|
+
|
|
+/* Emit rtl for profiling. Output assembler code to FILE
|
|
+ to call "_mcount" for profiling a function entry. */
|
|
+#define PROFILE_HOOK(LABEL) \
|
|
+{ \
|
|
+ rtx fun,lr; \
|
|
+ lr = get_hard_reg_initial_val (Pmode, LR_REGNUM); \
|
|
+ fun = gen_rtx_SYMBOL_REF (Pmode, MCOUNT_NAME); \
|
|
+ emit_library_call (fun, LCT_NORMAL, VOIDmode, 1, lr, Pmode); \
|
|
+}
|
|
+
|
|
+/* All the work done in PROFILE_HOOK, but still required. */
|
|
+#define FUNCTION_PROFILER(STREAM, LABELNO) do { } while (0)
|
|
|
|
/* For some reason, the Linux headers think they know how to define
|
|
these macros. They don't!!! */
|
|
Index: gcc-4.8.2-r206703/gcc/testsuite/lib/target-supports.exp
|
|
===================================================================
|
|
--- gcc-4.8.2-r206703.orig/gcc/testsuite/lib/target-supports.exp
|
|
+++ gcc-4.8.2-r206703/gcc/testsuite/lib/target-supports.exp
|
|
@@ -487,13 +487,6 @@ proc check_profiling_available { test_wh
|
|
return 0
|
|
}
|
|
|
|
- # We don't yet support profiling for AArch64.
|
|
- if { [istarget aarch64*-*-*]
|
|
- && ([lindex $test_what 1] == "-p"
|
|
- || [lindex $test_what 1] == "-pg") } {
|
|
- return 0
|
|
- }
|
|
-
|
|
# cygwin does not support -p.
|
|
if { [istarget *-*-cygwin*] && $test_what == "-p" } {
|
|
return 0
|