diff options
author | Richard Henderson <rth@redhat.com> | 2002-05-30 14:01:20 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2002-05-30 14:01:20 -0700 |
commit | a7943381121420155a686f4d9a086acef1c95548 (patch) | |
tree | 3189b9893a9a67b8c812585c0cceff80317e6568 | |
parent | de215bc6c56442bfb501afca9d8eaef9a3594066 (diff) | |
download | gcc-a7943381121420155a686f4d9a086acef1c95548.zip gcc-a7943381121420155a686f4d9a086acef1c95548.tar.gz gcc-a7943381121420155a686f4d9a086acef1c95548.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 3 | ||||
-rw-r--r-- | gcc/config/i386/linux.h | 9 | ||||
-rw-r--r-- | gcc/defaults.h | 7 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 16 | ||||
-rw-r--r-- | gcc/toplev.c | 10 |
6 files changed, 15 insertions, 40 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2da1962..f145158 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +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> * langhooks.c: Fix formatting. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 1715ca0..f89d163 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 fd4d7a0..db1583f 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 8ff73b1..6a18027 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 f82fd60..cc87da6 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 ccbb4bc..b37a4f5 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) { |