system.h (BLOCK_PROFILER, [...]): Poison.

* system.h (BLOCK_PROFILER, BLOCK_PROFILER_CODE,
	FUNCTION_BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER_EXIT,
	MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Poison.

	* toplev.c (display_help): Kill -a -ax help.

	* config/1750a/1750a.h, config/alpha/alpha.h,
	config/clipper/clipper.h, config/dsp16xx/dsp16xx.h,
	config/h8300/h8300.h, config/i960/i960.h, config/m68k/tower-as.h,
	config/m88k/m88k.h, config/vax/vax.h, config/we32k/we32k.h:
	(FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): Kill.

	* libgcc2.c [L_bb] (BLOCK_PROFILER_CODE): Kill.
	* config/m68k/sun3.h (BLOCK_PROFILER_CODE): Kill.

	* config/i386/i386-protos.h (ix86_output_block_profiler): Kill.
	(ix86_output_function_block_profiler): Kill.
	* config/m68hc11/m68hc11.c (m68hc11_block_profiler): Kill.
	(m68hc11_function_block_profiler): Kill.
	* config/m68hc11/m68hc11-protos.h: Update.
	* config/m88k/m88k.c (output_block_profiler): Kill.
	(output_function_block_profiler): Kill.
	* config/m88k/m88k-protos.h: Update.

From-SVN: r53712
This commit is contained in:
Richard Henderson 2002-05-21 16:45:18 -07:00 committed by Richard Henderson
parent ecf898ecdf
commit 33bd1f778e
20 changed files with 30 additions and 305 deletions

View File

@ -1,3 +1,29 @@
2002-05-21 Richard Henderson <rth@redhat.com>
* system.h (BLOCK_PROFILER, BLOCK_PROFILER_CODE,
FUNCTION_BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER_EXIT,
MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Poison.
* toplev.c (display_help): Kill -a -ax help.
* config/1750a/1750a.h, config/alpha/alpha.h,
config/clipper/clipper.h, config/dsp16xx/dsp16xx.h,
config/h8300/h8300.h, config/i960/i960.h, config/m68k/tower-as.h,
config/m88k/m88k.h, config/vax/vax.h, config/we32k/we32k.h:
(FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): Kill.
* libgcc2.c [L_bb] (BLOCK_PROFILER_CODE): Kill.
* config/m68k/sun3.h (BLOCK_PROFILER_CODE): Kill.
* config/i386/i386-protos.h (ix86_output_block_profiler): Kill.
(ix86_output_function_block_profiler): Kill.
* config/m68hc11/m68hc11.c (m68hc11_block_profiler): Kill.
(m68hc11_function_block_profiler): Kill.
* config/m68hc11/m68hc11-protos.h: Update.
* config/m88k/m88k.c (output_block_profiler): Kill.
(output_function_block_profiler): Kill.
* config/m88k/m88k-protos.h: Update.
2002-05-21 NIIBE Yutaka <gniibe@m17n.org>
* reload1.c (do_output_reload): Run delete_output_reload

View File

@ -556,16 +556,6 @@ enum reg_class { NO_REGS, R2, R0_1, INDEX_REGS, BASE_REGS, ALL_REGS, LIM_REG_CLA
#define FUNCTION_PROFILER(FILE, LABELNO) \
fprintf (FILE, "; got into FUNCTION_PROFILER with label # %d\n", (LABELNO))
/* Output assembler code to FILE to initialize this source file's
basic block profiling info, if that has not already been done. */
#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) \
fprintf (FILE, "; got into FUNCTION_BLOCK_PROFILER with label # %d\n",LABELNO)
/* Output assembler code to FILE to increment the entry-count for
the BLOCKNO'th basic block in this source file. */
#define BLOCK_PROFILER(FILE, BLOCKNO) \
fprintf (FILE, "; got into BLOCK_PROFILER with block # %d\n",BLOCKNO)
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
functions that have frame pointers.

View File

@ -1224,42 +1224,6 @@ extern struct alpha_compare alpha_compare;
#define FUNCTION_PROFILER(FILE, LABELNO)
/* Output assembler code to FILE to initialize this source file's
basic block profiling info, if that has not already been done.
This assumes that __bb_init_func doesn't garble a1-a5. */
#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) \
do { \
ASM_OUTPUT_REG_PUSH (FILE, 16); \
fputs ("\tlda $16,$PBX32\n", (FILE)); \
fputs ("\tldq $26,0($16)\n", (FILE)); \
fputs ("\tbne $26,1f\n", (FILE)); \
fputs ("\tlda $27,__bb_init_func\n", (FILE)); \
fputs ("\tjsr $26,($27),__bb_init_func\n", (FILE)); \
fputs ("\tldgp $29,0($26)\n", (FILE)); \
fputs ("1:\n", (FILE)); \
ASM_OUTPUT_REG_POP (FILE, 16); \
} while (0);
/* Output assembler code to FILE to increment the entry-count for
the BLOCKNO'th basic block in this source file. */
#define BLOCK_PROFILER(FILE, BLOCKNO) \
do { \
int blockn = (BLOCKNO); \
fputs ("\tsubq $30,16,$30\n", (FILE)); \
fputs ("\tstq $26,0($30)\n", (FILE)); \
fputs ("\tstq $27,8($30)\n", (FILE)); \
fputs ("\tlda $26,$PBX34\n", (FILE)); \
fprintf ((FILE), "\tldq $27,%d($26)\n", 8*blockn); \
fputs ("\taddq $27,1,$27\n", (FILE)); \
fprintf ((FILE), "\tstq $27,%d($26)\n", 8*blockn); \
fputs ("\tldq $26,0($30)\n", (FILE)); \
fputs ("\tldq $27,8($30)\n", (FILE)); \
fputs ("\taddq $30,16,$30\n", (FILE)); \
} while (0)
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
functions that have frame pointers.

View File

@ -551,16 +551,6 @@ do \
#define FUNCTION_PROFILER(FILE, LABELNO) /* FIXME */
/* Output assembler code to FILE to initialize this source file's
basic block profiling info, if that has not already been done. */
#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) /* FIXME */
/* Output assembler code to FILE to increment the entry-count for
the BLOCKNO'th basic block in this source file. */
#define BLOCK_PROFILER(FILE, BLOCKNO) /* FIXME */
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
functions that have frame pointers.

View File

@ -1218,17 +1218,6 @@ extern struct dsp16xx_frame_info current_frame_info;
#define FUNCTION_PROFILER(FILE, LABELNO) \
internal_error ("profiling not implemented yet")
/* Output assembler code to FILE to initialize this source file's
basic block profiling info, if that has not already been done. */
#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) \
internal_error ("profiling not implemented yet")
/* Output assembler code to FILE to increment the entry-count for
the BLOCKNO'th basic block in this source file. */
#define BLOCK_PROFILER(FILE, BLOCKNO) \
internal_error ("profiling not implemented yet")
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
functions that have frame pointers.

View File

@ -693,33 +693,6 @@ struct cum_arg
fprintf (FILE, "\t%s\t#LP%d,%s\n\tjsr @mcount\n", \
h8_mov_op, (LABELNO), h8_reg_names[0]);
/* Output assembler code to FILE to initialize this source file's
basic block profiling info, if that has not already been done. */
/* ??? @LPBX0 is moved into r0 twice. */
#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) \
fprintf (FILE, "\t%s\t%s\n\t%s\t@LPBX0,%s\n\tbne LPI%d\n\t%s\t@LPBX0,%s\n\t%s\t%s\n\tjsr\t@__bb_init_func\nLPI%d:\t%s\t%s\n", \
h8_push_op, h8_reg_names[0], \
h8_mov_op, h8_reg_names[0], \
(LABELNO), \
h8_mov_op, h8_reg_names[0], \
h8_push_op, h8_reg_names[0], \
(LABELNO), \
h8_pop_op, h8_reg_names[0]);
/* Output assembler code to FILE to increment the entry-count for
the BLOCKNO'th basic block in this source file. This is a real pain in the
sphincter on a VAX, since we do not want to change any of the bits in the
processor status word. The way it is done here, it is pushed onto the stack
before any flags have changed, and then the stack is fixed up to account for
the fact that the instruction to restore the flags only reads a word.
It may seem a bit clumsy, but at least it works. */
/* ??? This one needs work. */
#define BLOCK_PROFILER(FILE, BLOCKNO) \
fprintf (FILE, "\tmovpsl -(sp)\n\tmovw (sp),2(sp)\n\taddl2 $2,sp\n\taddl2 $1,LPBX2+%d\n\tbicpsw $255\n\tbispsw (sp)+\n", \
4 * BLOCKNO)
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
functions that have frame pointers.

View File

@ -33,9 +33,6 @@ extern HOST_WIDE_INT ix86_initial_elimination_offset PARAMS((int, int));
extern void ix86_expand_prologue PARAMS ((void));
extern void ix86_expand_epilogue PARAMS ((int));
extern void ix86_output_function_block_profiler PARAMS ((FILE *, int));
extern void ix86_output_block_profiler PARAMS ((FILE *, int));
extern void ix86_output_addr_vec_elt PARAMS ((FILE *, int));
extern void ix86_output_addr_diff_elt PARAMS ((FILE *, int, int));

View File

@ -1456,25 +1456,6 @@ extern struct rtx_def *i960_compare_op0, *i960_compare_op1;
( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 10), \
sprintf ((OUTPUT), "%s.%d", (NAME), (LABELNO)))
/* Output assembler code to FILE to initialize this source file's
basic block profiling info, if that has not already been done. */
#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) \
{ fprintf (FILE, "\tld LPBX0,g12\n"); \
fprintf (FILE, "\tcmpobne 0,g12,LPY%d\n",LABELNO);\
fprintf (FILE, "\tlda LPBX0,g12\n"); \
fprintf (FILE, "\tcall ___bb_init_func\n"); \
fprintf (FILE, "LPY%d:\n",LABELNO); }
/* Output assembler code to FILE to increment the entry-count for
the BLOCKNO'th basic block in this source file. */
#define BLOCK_PROFILER(FILE, BLOCKNO) \
{ int blockn = (BLOCKNO); \
fprintf (FILE, "\tld LPBX2+%d,g12\n", 4 * blockn); \
fprintf (FILE, "\taddo g12,1,g12\n"); \
fprintf (FILE, "\tst g12,LPBX2+%d\n", 4 * blockn); }
/* Print operand X (an rtx) in assembler syntax to file FILE.
CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified.
For `%' followed by punctuation, CODE is the punctuation and X is null. */

View File

@ -30,9 +30,6 @@ extern int m68hc11_initial_elimination_offset PARAMS((int, int));
extern void expand_prologue PARAMS((void));
extern void expand_epilogue PARAMS((void));
extern int m68hc11_function_block_profiler PARAMS((FILE*,int));
extern int m68hc11_block_profiler PARAMS((FILE*,int));
extern void m68hc11_asm_file_start PARAMS((FILE*, const char*));

View File

@ -1126,25 +1126,6 @@ m68hc11_unary_operator (op, mode)
|| GET_CODE (op) == SIGN_EXTEND || GET_CODE (op) == ZERO_EXTEND;
}
/* Profiling. */
int
m68hc11_block_profiler (out, blockno)
FILE *out ATTRIBUTE_UNUSED;
int blockno ATTRIBUTE_UNUSED;
{
return 0;
}
int
m68hc11_function_block_profiler (out, block_or_label)
FILE *out ATTRIBUTE_UNUSED;
int block_or_label ATTRIBUTE_UNUSED;
{
return 0;
}
/* Emit the code to build the trampoline used to call a nested function.
68HC11 68HC12

View File

@ -235,21 +235,3 @@ Boston, MA 02111-1307, USA. */
asm_fprintf (FILE, "%I0r%s", dstr); \
} \
} while (0)
#if 0
/* This was turned off as it caused linking errors on sunos4.1.
`gcc -a' links in /usr/lib/bb_link.o which does not provide __bb_link
but its own version of __bb_init_func. */
#undef BLOCK_PROFILER_CODE
#define BLOCK_PROFILER_CODE \
extern int ___tcov_init; \
\
__bb_init_func (blocks) \
struct bb *blocks; \
{ \
if (! ___tcov_init) \
___tcov_init_func (); \
\
___bb_link (blocks->filename, blocks->counts, blocks->ncounts); \
}
#endif

View File

@ -157,26 +157,6 @@ Boston, MA 02111-1307, USA. */
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (68k, Motorola/SGS/Tower32 syntax)");
#undef FUNCTION_BLOCK_PROFILER
#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) \
do { \
char label1[20], label2[20]; \
ASM_GENERATE_INTERNAL_LABEL (label1, "LPBX", 0); \
ASM_GENERATE_INTERNAL_LABEL (label2, "LPI", LABELNO); \
fprintf (FILE, "\ttst.l %s\n\tbne %s\n\tpea %s\n\tjsr __bb_init_func\n\taddq.l &4,%%sp\n", \
label1, label2, label1); \
ASM_OUTPUT_INTERNAL_LABEL (FILE, "LPI", LABELNO); \
putc ('\n', FILE); \
} while (0)
#undef BLOCK_PROFILER
#define BLOCK_PROFILER(FILE, BLOCKNO) \
do { \
char label[20]; \
ASM_GENERATE_INTERNAL_LABEL (label, "LPBX", 2); \
fprintf (FILE, "\taddq.l &1,%s+%d\n", label, 4 * BLOCKNO); \
} while (0)
#undef FUNCTION_PROFILER
#define FUNCTION_PROFILER(FILE, LABEL_NO) \
fprintf (FILE, "\tmov.l &LP%%%d,%%a0\n\tjsr mcount%%\n", (LABEL_NO))

View File

@ -86,8 +86,6 @@ extern void m88k_layout_frame PARAMS ((void));
extern void m88k_expand_prologue PARAMS ((void));
extern void m88k_expand_epilogue PARAMS ((void));
extern void output_function_profiler PARAMS ((FILE *, int, const char *, int));
extern void output_function_block_profiler PARAMS ((FILE *, int));
extern void output_block_profiler PARAMS ((FILE *, int));
extern void output_ascii PARAMS ((FILE *, const char *, int,
const char *, int));
extern void output_label PARAMS ((int));

View File

@ -2468,73 +2468,6 @@ output_function_profiler (file, labelno, name, savep)
fprintf (file, "\taddu\t %s,%s,64\n", reg_names[31], reg_names[31]);
}
}
/* Output assembler code to FILE to initialize basic-block profiling for
the current module. LABELNO is unique to each instance. */
void
output_function_block_profiler (file, labelno)
FILE *file;
int labelno;
{
char block[256];
char label[256];
/* Remember to update FUNCTION_BLOCK_PROFILER_LENGTH. */
ASM_GENERATE_INTERNAL_LABEL (block, "LPBX", 0);
ASM_GENERATE_INTERNAL_LABEL (label, "LPY", labelno);
/* @@ Need to deal with PIC. I'm not sure what the requirements are on
register usage, so I used r26/r27 to be safe. */
fprintf (file, "\tor.u\t %s,%s,%shi16(%s)\n", reg_names[27], reg_names[0],
m88k_pound_sign, &block[1]);
fprintf (file, "\tld\t %s,%s,%slo16(%s)\n", reg_names[26], reg_names[27],
m88k_pound_sign, &block[1]);
fprintf (file, "\tbcnd\t %sne0,%s,%s\n",
m88k_pound_sign, reg_names[26], &label[1]);
fprintf (file, "\tsubu\t %s,%s,64\n", reg_names[31], reg_names[31]);
fprintf (file, "\tst.d\t %s,%s,32\n", reg_names[2], reg_names[31]);
fprintf (file, "\tst.d\t %s,%s,40\n", reg_names[4], reg_names[31]);
fprintf (file, "\tst.d\t %s,%s,48\n", reg_names[6], reg_names[31]);
fprintf (file, "\tst.d\t %s,%s,56\n", reg_names[8], reg_names[31]);
fputs ("\tbsr.n\t ", file);
ASM_OUTPUT_LABELREF (file, "__bb_init_func");
putc ('\n', file);
fprintf (file, "\tor\t %s,%s,%slo16(%s)\n", reg_names[2], reg_names[27],
m88k_pound_sign, &block[1]);
fprintf (file, "\tld.d\t %s,%s,32\n", reg_names[2], reg_names[31]);
fprintf (file, "\tld.d\t %s,%s,40\n", reg_names[4], reg_names[31]);
fprintf (file, "\tld.d\t %s,%s,48\n", reg_names[6], reg_names[31]);
fprintf (file, "\tld.d\t %s,%s,56\n", reg_names[8], reg_names[31]);
fprintf (file, "\taddu\t %s,%s,64\n", reg_names[31], reg_names[31]);
ASM_OUTPUT_INTERNAL_LABEL (file, "LPY", labelno);
}
/* Output assembler code to FILE to increment the count associated with
the basic block number BLOCKNO. */
void
output_block_profiler (file, blockno)
FILE *file;
int blockno;
{
char block[256];
/* Remember to update BLOCK_PROFILER_LENGTH. */
ASM_GENERATE_INTERNAL_LABEL (block, "LPBX", 2);
/* @@ Need to deal with PIC. I'm not sure what the requirements are on
register usage, so I used r26/r27 to be safe. */
fprintf (file, "\tor.u\t %s,%s,%shi16(%s+%d)\n", reg_names[27], reg_names[0],
m88k_pound_sign, &block[1], 4 * blockno);
fprintf (file, "\tld\t %s,%s,%slo16(%s+%d)\n", reg_names[26], reg_names[27],
m88k_pound_sign, &block[1], 4 * blockno);
fprintf (file, "\taddu\t %s,%s,1\n", reg_names[26], reg_names[26]);
fprintf (file, "\tst\t %s,%s,%slo16(%s+%d)\n", reg_names[26], reg_names[27],
m88k_pound_sign, &block[1], 4 * blockno);
}
/* Determine whether a function argument is passed in a register, and
which register.

View File

@ -1055,22 +1055,6 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
/* Maximum length in instructions of the code output by FUNCTION_PROFILER. */
#define FUNCTION_PROFILER_LENGTH (5+3+1+5)
/* Output assembler code to FILE to initialize basic-block profiling for
the current module. LABELNO is unique to each instance. */
#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) \
output_function_block_profiler (FILE, LABELNO)
/* Maximum length in instructions of the code output by
FUNCTION_BLOCK_PROFILER. */
#define FUNCTION_BLOCK_PROFILER_LENGTH (3+5+2+5)
/* Output assembler code to FILE to increment the count associated with
the basic block number BLOCKNO. */
#define BLOCK_PROFILER(FILE, BLOCKNO) output_block_profiler (FILE, BLOCKNO)
/* Maximum length in instructions of the code output by BLOCK_PROFILER. */
#define BLOCK_PROFILER_LENGTH 4
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
functions that have frame pointers.

View File

@ -453,26 +453,6 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_REG_CLASSES };
#define FUNCTION_PROFILER(FILE, LABELNO) \
fprintf (FILE, "\tmovab LP%d,r0\n\tjsb mcount\n", (LABELNO));
/* Output assembler code to FILE to initialize this source file's
basic block profiling info, if that has not already been done. */
#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) \
fprintf (FILE, "\ttstl LPBX0\n\tjneq LPI%d\n\tpushal LPBX0\n\tcalls $1,__bb_init_func\nLPI%d:\n", \
LABELNO, LABELNO);
/* Output assembler code to FILE to increment the entry-count for
the BLOCKNO'th basic block in this source file. This is a real pain in the
sphincter on a VAX, since we do not want to change any of the bits in the
processor status word. The way it is done here, it is pushed onto the stack
before any flags have changed, and then the stack is fixed up to account for
the fact that the instruction to restore the flags only reads a word.
It may seem a bit clumsy, but at least it works.
*/
#define BLOCK_PROFILER(FILE, BLOCKNO) \
fprintf (FILE, "\tmovpsl -(sp)\n\tmovw (sp),2(sp)\n\taddl2 $2,sp\n\taddl2 $1,LPBX2+%d\n\tbicpsw $255\n\tbispsw (sp)+\n", \
4 * BLOCKNO)
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
functions that have frame pointers.

View File

@ -402,19 +402,6 @@ enum reg_class { NO_REGS, GENERAL_REGS,
#define FUNCTION_PROFILER(FILE, LABELNO) \
fprintf (FILE, "\tmovw &.LP%d,%%r0\n\tjsb _mcount\n", (LABELNO))
/* Output assembler code to FILE to initialize this source file's
basic block profiling info, if that has not already been done. */
#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) \
fprintf (FILE, "\tcmpw .LPBX0,&0\n\tjne .LPI%d\n\tpushw &.LPBX0\n\tcall &1,__bb_init_func\n.LPI%d:\n", \
LABELNO, LABELNO);
/* Output assembler code to FILE to increment the entry-count for
the BLOCKNO'th basic block in this source file. */
#define BLOCK_PROFILER(FILE, BLOCKNO) \
fprintf (FILE, "\taddw2 &1,.LPBX2+%d\n", 4 * BLOCKNO)
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
functions that have frame pointers.

View File

@ -1288,9 +1288,6 @@ struct bb
char *flags;
};
#ifdef BLOCK_PROFILER_CODE
BLOCK_PROFILER_CODE
#else
#ifndef inhibit_libc
/* Simple minded basic block profiling output dumper for
@ -1491,7 +1488,6 @@ __bb_fork_func (void)
}
#endif /* not inhibit_libc */
#endif /* not BLOCK_PROFILER_CODE */
#endif /* L_bb */
#ifdef L_clear_cache

View File

@ -605,7 +605,10 @@ typedef char _Bool;
OMIT_EH_TABLE EASY_DIV_EXPR IMPLICIT_FIX_EXPR \
LONGJMP_RESTORE_FROM_STACK MAX_INT_TYPE_SIZE ASM_IDENTIFY_GCC \
STDC_VALUE TRAMPOLINE_ALIGN ASM_IDENTIFY_GCC_AFTER_SOURCE \
SLOW_ZERO_EXTEND SUBREG_REGNO_OFFSET DWARF_LINE_MIN_INSTR_LENGTH
SLOW_ZERO_EXTEND SUBREG_REGNO_OFFSET DWARF_LINE_MIN_INSTR_LENGTH \
BLOCK_PROFILER BLOCK_PROFILER_CODE FUNCTION_BLOCK_PROFILER \
FUNCTION_BLOCK_PROFILER_EXIT MACHINE_STATE_SAVE \
MACHINE_STATE_RESTORE
#endif /* IN_GCC */

View File

@ -3636,12 +3636,6 @@ display_help ()
printf (_(" -Wunused Enable unused warnings\n"));
printf (_(" -Wlarger-than-<number> Warn if an object is larger than <number> bytes\n"));
printf (_(" -p Enable function profiling\n"));
#if defined (BLOCK_PROFILER) || defined (FUNCTION_BLOCK_PROFILER)
printf (_(" -a Enable block profiling \n"));
#endif
#if defined (BLOCK_PROFILER) || defined (FUNCTION_BLOCK_PROFILER) || defined FUNCTION_BLOCK_PROFILER_EXIT
printf (_(" -ax Enable jump profiling \n"));
#endif
printf (_(" -o <file> Place output into <file> \n"));
printf (_("\
-G <number> Put global and static data smaller than <number>\n\