Commit a7943381 by Richard Henderson Committed by Richard Henderson

defaults.h (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): Kill.

        * defaults.h (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): Kill.
        * toplev.c (process_options): Don't check it.
        * doc/tm.texi: Don't document it.
        * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): New.
        (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): Kill.
        * config/i386/i386.c (ix86_frame_pointer_required): Suppress leaf
        frame pointer optimization if current_function_profile.

From-SVN: r54072
parent de215bc6
2002-05-30 Richard Henderson <rth@redhat.com>
* defaults.h (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): Kill.
* toplev.c (process_options): Don't check it.
* doc/tm.texi: Don't document it.
* config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): New.
(TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): Kill.
* config/i386/i386.c (ix86_frame_pointer_required): Suppress leaf
frame pointer optimization if current_function_profile.
2002-05-30 Kazu Hirata <kazu@cs.umass.edu> 2002-05-30 Kazu Hirata <kazu@cs.umass.edu>
* langhooks.c: Fix formatting. * langhooks.c: Fix formatting.
......
...@@ -3885,7 +3885,8 @@ ix86_frame_pointer_required () ...@@ -3885,7 +3885,8 @@ ix86_frame_pointer_required ()
/* In override_options, TARGET_OMIT_LEAF_FRAME_POINTER turns off /* In override_options, TARGET_OMIT_LEAF_FRAME_POINTER turns off
the frame pointer by default. Turn it back on now if we've not the frame pointer by default. Turn it back on now if we've not
got a leaf function. */ got a leaf function. */
if (TARGET_OMIT_LEAF_FRAME_POINTER && ! leaf_function_p ()) if (TARGET_OMIT_LEAF_FRAME_POINTER
&& (!current_function_is_leaf || current_function_profile))
return 1; return 1;
return 0; return 0;
......
...@@ -62,14 +62,11 @@ Boston, MA 02111-1307, USA. */ ...@@ -62,14 +62,11 @@ Boston, MA 02111-1307, USA. */
fprintf (FILE, "\tcall\tmcount\n"); \ fprintf (FILE, "\tcall\tmcount\n"); \
} }
/* True if it is possible to profile code that does not have a frame /* The GLIBC version of mcount for the x86 assumes that there is a
pointer.
The GLIBC version of mcount for the x86 assumes that there is a
frame, so we cannot allow profiling without a frame pointer. */ frame, so we cannot allow profiling without a frame pointer. */
#undef TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER #undef SUBTARGET_FRAME_POINTER_REQUIRED
#define TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER false #define SUBTARGET_FRAME_POINTER_REQUIRED current_function_profile
#undef SIZE_TYPE #undef SIZE_TYPE
#define SIZE_TYPE "unsigned int" #define SIZE_TYPE "unsigned int"
......
...@@ -397,13 +397,6 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) ...@@ -397,13 +397,6 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0)
? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta) ? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta)
#endif #endif
/* True if it is possible to profile code that does not have a frame
pointer. */
#ifndef TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
#define TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER true
#endif
#ifndef DEFAULT_GDB_EXTENSIONS #ifndef DEFAULT_GDB_EXTENSIONS
#define DEFAULT_GDB_EXTENSIONS 1 #define DEFAULT_GDB_EXTENSIONS 1
#endif #endif
......
...@@ -4160,22 +4160,6 @@ must not use the @var{labelno} argument to @code{FUNCTION_PROFILER}. ...@@ -4160,22 +4160,6 @@ must not use the @var{labelno} argument to @code{FUNCTION_PROFILER}.
@item PROFILE_BEFORE_PROLOGUE @item PROFILE_BEFORE_PROLOGUE
Define this macro if the code for function profiling should come before Define this macro if the code for function profiling should come before
the function prologue. Normally, the profiling code comes after. the function prologue. Normally, the profiling code comes after.
@findex TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
@item TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
On some targets, it is impossible to use profiling when the frame
pointer has been omitted. For example, on x86 GNU/Linux systems,
the @code{mcount} routine provided by the GNU C Library finds the
address of the routine that called the routine that called @code{mcount}
by looking in the immediate caller's stack frame. If the immediate
caller has no frame pointer, this lookup will fail.
By default, GCC assumes that the target does allow profiling when the
frame pointer is omitted. This macro should be defined to a C
expression that evaluates to @code{false} if the target does not allow
profiling when the frame pointer is omitted.
@end table @end table
@node Tail Calls @node Tail Calls
......
...@@ -4893,16 +4893,6 @@ process_options () ...@@ -4893,16 +4893,6 @@ process_options ()
warning ("this target machine does not have delayed branches"); warning ("this target machine does not have delayed branches");
#endif #endif
/* Some operating systems do not allow profiling without a frame
pointer. */
if (!TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
&& profile_flag
&& flag_omit_frame_pointer)
{
error ("profiling does not work without a frame pointer");
flag_omit_frame_pointer = 0;
}
user_label_prefix = USER_LABEL_PREFIX; user_label_prefix = USER_LABEL_PREFIX;
if (flag_leading_underscore != -1) if (flag_leading_underscore != -1)
{ {
......
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