From: Richard Henderson Date: Thu, 30 May 2002 21:01:20 +0000 (-0700) Subject: defaults.h (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): Kill. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a7943381121420155a686f4d9a086acef1c95548;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2da19626416..f1451581a5a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2002-05-30 Richard Henderson + + * 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 * langhooks.c: Fix formatting. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 1715ca02a21..f89d1630bb9 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3885,7 +3885,8 @@ ix86_frame_pointer_required () /* In override_options, TARGET_OMIT_LEAF_FRAME_POINTER turns off the frame pointer by default. Turn it back on now if we've not 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 0; diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index fd4d7a0ccd3..db1583ff9d5 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -62,14 +62,11 @@ Boston, MA 02111-1307, USA. */ fprintf (FILE, "\tcall\tmcount\n"); \ } -/* True if it is possible to profile code that does not have a frame - pointer. - - The GLIBC version of mcount for the x86 assumes that there is a +/* The GLIBC version of mcount for the x86 assumes that there is a frame, so we cannot allow profiling without a frame pointer. */ -#undef TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER -#define TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER false +#undef SUBTARGET_FRAME_POINTER_REQUIRED +#define SUBTARGET_FRAME_POINTER_REQUIRED current_function_profile #undef SIZE_TYPE #define SIZE_TYPE "unsigned int" diff --git a/gcc/defaults.h b/gcc/defaults.h index 8ff73b160a0..6a180272265 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -397,13 +397,6 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0) ? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta) #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 #define DEFAULT_GDB_EXTENSIONS 1 #endif diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index f82fd609908..cc87da63325 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -4160,22 +4160,6 @@ must not use the @var{labelno} argument to @code{FUNCTION_PROFILER}. @item PROFILE_BEFORE_PROLOGUE Define this macro if the code for function profiling should come before 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 @node Tail Calls diff --git a/gcc/toplev.c b/gcc/toplev.c index ccbb4bc08a5..b37a4f5a323 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -4893,16 +4893,6 @@ process_options () warning ("this target machine does not have delayed branches"); #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; if (flag_leading_underscore != -1) {