diff options
author | Zack Weinberg <zack@wolery.cumb.org> | 2000-07-13 04:40:23 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2000-07-13 04:40:23 +0000 |
commit | dcacfa04fe67a4f0c957d0b37e0c750d2036d34d (patch) | |
tree | 368fea8b37e9a35afe1a0e8331dd2883719c3905 /gcc | |
parent | 6e993bdb628abac7f0400cc068c5a03e1897840d (diff) | |
download | gcc-dcacfa04fe67a4f0c957d0b37e0c750d2036d34d.zip gcc-dcacfa04fe67a4f0c957d0b37e0c750d2036d34d.tar.gz gcc-dcacfa04fe67a4f0c957d0b37e0c750d2036d34d.tar.bz2 |
final.c (profile_function): Do not emit profile counters in the data section, if NO_PROFILE_COUNTERS is defined.
* final.c (profile_function): Do not emit profile counters in
the data section, if NO_PROFILE_COUNTERS is defined.
* tm.texi: Document NO_PROFILE_COUNTERS. Update doc for
FUNCTION_PROFILER.
* config/i386/linux.h (NO_PROFILE_COUNTERS): Define.
(FUNCTION_PROFILER): Just emit a call to mcount.
From-SVN: r35005
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/i386/linux.h | 18 | ||||
-rw-r--r-- | gcc/final.c | 4 |
3 files changed, 21 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ad325ba..3863813 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,15 @@ 2000-07-12 Zack Weinberg <zack@wolery.cumb.org> + * final.c (profile_function): Do not emit profile counters in + the data section, if NO_PROFILE_COUNTERS is defined. + * tm.texi: Document NO_PROFILE_COUNTERS. Update doc for + FUNCTION_PROFILER. + + * config/i386/linux.h (NO_PROFILE_COUNTERS): Define. + (FUNCTION_PROFILER): Just emit a call to mcount. + +2000-07-12 Zack Weinberg <zack@wolery.cumb.org> + * tradcpp.c (main): Rename 'perror' label to 'sys_error'. * cppexp.c, cpphash.c, cpphash.h, cppinit.c, cpplex.c, diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index c661e37..9cb332c 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -54,23 +54,19 @@ Boston, MA 02111-1307, USA. */ #undef DBX_REGISTER_NUMBER #define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n] -/* Output assembler code to FILE to increment profiler label # LABELNO - for profiling a function entry. */ +/* Output assembler code to FILE to call the profiler. + To the best of my knowledge, no Linux libc has required the label + argument to mcount. */ + +#define NO_PROFILE_COUNTERS #undef FUNCTION_PROFILER #define FUNCTION_PROFILER(FILE, LABELNO) \ { \ if (flag_pic) \ - { \ - fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%edx\n", \ - LPREFIX, (LABELNO)); \ - fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \ - } \ + fprintf (FILE, "\tcall\t*mcount@GOT(%%ebx)\n"); \ else \ - { \ - fprintf (FILE, "\tmovl $%sP%d,%%edx\n", LPREFIX, (LABELNO)); \ - fprintf (FILE, "\tcall mcount\n"); \ - } \ + fprintf (FILE, "\tcall\tmcount\n"); \ } #undef SIZE_TYPE diff --git a/gcc/final.c b/gcc/final.c index be4a01e..e655637 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -1705,7 +1705,9 @@ static void profile_function (file) FILE *file; { +#ifndef NO_PROFILE_COUNTERS int align = MIN (BIGGEST_ALIGNMENT, LONG_TYPE_SIZE); +#endif #if defined(ASM_OUTPUT_REG_PUSH) #if defined(STRUCT_VALUE_INCOMING_REGNUM) || defined(STRUCT_VALUE_REGNUM) int sval = current_function_returns_struct; @@ -1715,10 +1717,12 @@ profile_function (file) #endif #endif /* ASM_OUTPUT_REG_PUSH */ +#ifndef NO_PROFILE_COUNTERS data_section (); ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT)); ASM_OUTPUT_INTERNAL_LABEL (file, "LP", profile_label_no); assemble_integer (const0_rtx, LONG_TYPE_SIZE / BITS_PER_UNIT, 1); +#endif function_section (current_function_decl); |