Warning fixes:

* Makefile.in (c-lang.o): Depend on c-tree.h, c-lex.h and toplev.h.
	(c-lex.o): Depend on output.h.
	(c-common.o): Likewise.
	(stmt.o): Likewise.
	(calls.o): Likewise.
	(integrate.o): Depend on toplev.h.
	(regclass.o): Depend on output.h.
	(final.o): Depend on reload.h.
	* c-common.c: Include output.h.
	(check_format_info): Remove unused variable `integral_format'.
	* c-decl.c (print_lang_decl): Mark parameters `file', `node' and
	`indent' with ATTRIBUTE_UNUSED.
	(print_lang_type): Likewise.
	(maybe_build_cleanup): Likewise for parameter `decl'.
	(copy_lang_decl): Likewise for parameter `node'.
	* c-lang.c: Include c-tree.h, c-lex.h and toplev.h.
	(lang_print_xnode): Mark parameters `file', `node' and `indent'
 	with ATTRIBUTE_UNUSED.
	(lookup_interface): Likewise for parameter `arg'.
	(is_class_name): Likewise.
	(maybe_objc_check_decl): Likewise for parameter `decl'.
	(maybe_objc_comptypes): Likewise for parameters `lhs', `rhs' and
	`reflexive'.
	(maybe_objc_method_name): Likewise for parameter `decl'.
	(build_objc_string): Likewise for parameters `len' and `str'.
	* c-lex.c: Include output.h.
	* c-lex.h (position_after_white_space): Correct typo in prototype.
	* c-tree.h (finish_file, c_expand_start_cond, c_expand_start_else,
 	c_expand_end_cond, init_iterators): Add prototypes.
	* caller-save.c (set_reg_live): Mark parameters `reg' and `setter'
	with ATTRIBUTE_UNUSED.
	* calls.c: Include output.h.
	* cccp.c (pipe_closed): Mark parameter `signo' with
 	ATTRIBUTE_UNUSED.
	* combine.c: Move inclusion of expr.h to after insn-config.h.
	* iris6.h (ASM_IDENTIFY_GCC, ASM_IDENTIFY_LANGUAGE): Don't define
	as empty, rather define as ((void)0).
	* sparc.c (sparc_check_64): Add braces around ambiguous `else'.
	Add parentheses around assignment used as truth value.
	* cplus-dem.c (squangle_mop_up): Change return type to void.
	(internal_cplus_demangle): Remove unused parameter `options'.
	All callers changed.
	(cplus_demangle_opname): Remove function wide variable `int i' and
 	replace with `size_t i' at each location where it is used.
	(cplus_demangle_opname): change type of `i' from int to size_t.
	* cppexp.c (right_shift): Mark parameter `pfile' with
	ATTRIBUTE_UNUSED.
	* cpphash.c (cpp_lookup): Likewise.
	(cpp_hash_cleanup): Likewise.
	* cpplib.c (parse_name): Add a prototype and make it static.
	(null_underflow): Mark parameter `pfile' with ATTRIBUTE_UNUSED.
	(null_cleanup): Likewise for parameters `pbuf' and `pfile'.
	(macro_cleanup): Likewise for parameter `pfile'.
	(file_cleanup): Likewise.
	* cpplib.h (cpp_reader_init, cpp_options_init, cpp_start_read,
 	cpp_read_check_assertion, skip_rest_of_line): Add prototypes.
	* crtstuff.c (force_to_data, __CTOR_LIST__, force_to_data,
	__DTOR_END__, __FRAME_END__): Mark with ATTRIBUTE_UNUSED.
	* cse.c (cse_check_loop_start): Mark parameter `set' with
 	ATTRIBUTE_UNUSED.
	* dbxout.c (flag_minimal_debug, have_used_extensions,
	source_label_number): Move inside macro wrapper check against
	defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO).
	* dwarf2out.c (gen_entry_point_die): Hide prototype and definition.
	* except.h (doing_eh): Provide prototype.
	* expr.c: Move inclusion of expr.h to after insn-config.h.
	* final.c: Include reload.h.
	(shorten_branches): Cast the first argument of bzero to char *.
	* fix-header.c (cpp_print_containing_files): Mark parameter
 	`pfile' with ATTRIBUTE_UNUSED.
	(cpp_fatal): Likewise.
	* flow.c (find_basic_blocks_1): Cast the first argument of bzero
	to char *.
	* genattrtab.c (make_length_attrs): Change the type of variable
	`i' from int to size_t.
	(zero_fn): Mark parameter `exp' with ATTRIBUTE_UNUSED.
	(one_fn): Likewise.
	* genextract.c (main): When generating insn-extract.c, mark
	variable `junk' with ATTRIBUTE_UNUSED.
	* gengenrtl.c (gencode): When generating genrtl.c, cast the first
	argument of bzero to char*.
	* integrate.c: Include toplev.h.
	* libgcc2.c: Wrap `struct exception_table' and
	`find_exception_handler' in macro DWARF2_UNWIND_INFO.
	* objc/Make-lang.in (objc-act.o): Depend on toplev.h.
	* objc/objc-act.c: Include toplev.h.
	(lang_print_xnode): Mark parameters `file', `node' and `indent'
	with ATTRIBUTE_UNUSED.
	(finish_protocol): Likewise for parameter `protocol'.
	* output.h (declare_weak): Add prototype.
	(decode_reg_name): Don't wrap with TREE_CODE macro.
	(assemble_alias): Add prototype.
	* regclass.c: Include output.h.
	* reload.h (reloads_conflict): Add prototype.
	* rtl.h (print_rtl_single, mark_elimiation, reg_class_subset_p,
	output_func_start_profiler): Add prototypes.
	* rtlanal.c (reg_set_p_1): Mark parameters `x' and `pat' with
 	ATTRIBUTE_UNUSED.
	* scan-decls.c: Include scan.h.
	* scan.h (recognized_function, recognized_extern): Add prototypes.
	* stmt.c: Include output.h.
	* toplev.c (error_for_asm, warning_for_asm): Remove prototypes.
	(output_lang_identify): Hide prototype and definition.
	(float_signal): Mark parameter `signo' with ATTRIBUTE_UNUSED.
	(pipe_closed): Likewise.
	* toplev.h (count_error, strip_off_ending, error_for_asm,
 	warning_for_asm): Add prototypes.

From-SVN: r19712
This commit is contained in:
Kaveh R. Ghazi 1998-05-13 12:40:39 +00:00 committed by Kaveh Ghazi
parent 32e705c434
commit d6f4ec5199
46 changed files with 184 additions and 102 deletions

View File

@ -1254,9 +1254,10 @@ c-decl.o : c-decl.c $(CONFIG_H) system.h $(TREE_H) c-tree.h c-lex.h flags.h \
output.h toplev.h
c-typeck.o : c-typeck.c $(CONFIG_H) system.h $(TREE_H) c-tree.h flags.h \
output.h expr.h insn-codes.h $(RTL_H) toplev.h
c-lang.o : c-lang.c $(CONFIG_H) system.h $(TREE_H)
c-lang.o : c-lang.c $(CONFIG_H) system.h $(TREE_H) c-tree.h c-lex.h toplev.h
c-lex.o : c-lex.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) c-lex.h c-tree.h \
$(srcdir)/c-parse.h input.h flags.h $(srcdir)/c-gperf.h c-pragma.h toplev.h
$(srcdir)/c-parse.h input.h flags.h $(srcdir)/c-gperf.h c-pragma.h \
toplev.h output.h
c-aux-info.o : c-aux-info.c $(CONFIG_H) system.h $(TREE_H) c-tree.h flags.h
c-convert.o : c-convert.c $(CONFIG_H) system.h $(TREE_H) flags.h toplev.h
c-pragma.o: c-pragma.c $(CONFIG_H) system.h $(TREE_H) except.h function.h \
@ -1299,7 +1300,7 @@ s-under: $(GCC_PASSES)
# A file used by all variants of C.
c-common.o : c-common.c $(CONFIG_H) system.h $(TREE_H) c-tree.h c-lex.h \
flags.h toplev.h
flags.h toplev.h output.h
# Language-independent files.
@ -1354,7 +1355,7 @@ function.o : function.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
insn-config.h $(RECOG_H) output.h toplev.h
stmt.o : stmt.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h function.h \
insn-flags.h insn-config.h insn-codes.h hard-reg-set.h expr.h except.h \
loop.h $(RECOG_H) toplev.h
loop.h $(RECOG_H) toplev.h output.h
except.o : except.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
function.h insn-flags.h insn-codes.h expr.h regs.h hard-reg-set.h \
insn-config.h $(RECOG_H) output.h except.h toplev.h
@ -1362,7 +1363,7 @@ expr.o : expr.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h function.h \
regs.h insn-flags.h insn-codes.h expr.h insn-config.h $(RECOG_H) output.h \
typeclass.h hard-reg-set.h toplev.h
calls.o : calls.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h expr.h \
insn-codes.h insn-flags.h regs.h toplev.h
insn-codes.h insn-flags.h regs.h toplev.h output.h
expmed.o : expmed.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
insn-flags.h insn-config.h insn-codes.h expr.h $(RECOG_H) real.h
explow.o : explow.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
@ -1389,7 +1390,7 @@ getpwd.o : getpwd.c $(CONFIG_H) system.h
integrate.o : integrate.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
integrate.h insn-flags.h insn-config.h insn-codes.h expr.h real.h regs.h \
function.h output.h $(RECOG_H) except.h
function.h output.h $(RECOG_H) except.h toplev.h
jump.o : jump.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h regs.h \
insn-config.h insn-codes.h insn-flags.h $(RECOG_H) expr.h real.h except.h
@ -1409,7 +1410,8 @@ combine.o : combine.c $(CONFIG_H) system.h $(RTL_H) flags.h \
insn-config.h insn-flags.h insn-codes.h insn-attr.h regs.h expr.h \
$(BASIC_BLOCK_H) $(RECOG_H) real.h hard-reg-set.h
regclass.o : regclass.c $(CONFIG_H) system.h $(RTL_H) hard-reg-set.h flags.h \
$(BASIC_BLOCK_H) regs.h insn-config.h $(RECOG_H) reload.h real.h toplev.h
$(BASIC_BLOCK_H) regs.h insn-config.h $(RECOG_H) reload.h real.h toplev.h \
output.h
local-alloc.o : local-alloc.c $(CONFIG_H) system.h $(RTL_H) flags.h \
$(BASIC_BLOCK_H) regs.h hard-reg-set.h insn-config.h $(RECOG_H) output.h
bitmap.o : bitmap.c $(CONFIG_H) system.h $(RTL_H) flags.h $(BASIC_BLOCK_H) \
@ -1439,7 +1441,7 @@ $(SCHED_PREFIX)sched.o : $(SCHED_PREFIX)sched.c $(CONFIG_H) system.h $(RTL_H) \
final.o : final.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h regs.h \
$(RECOG_H) conditions.h insn-config.h insn-attr.h except.h real.h output.h \
hard-reg-set.h insn-flags.h insn-codes.h gstab.h xcoffout.h defaults.h \
toplev.h
toplev.h reload.h
recog.o : recog.c $(CONFIG_H) system.h $(RTL_H) \
regs.h $(RECOG_H) hard-reg-set.h flags.h insn-config.h insn-attr.h \
insn-flags.h insn-codes.h real.h

View File

@ -26,6 +26,7 @@ Boston, MA 02111-1307, USA. */
#include "flags.h"
#include "obstack.h"
#include "toplev.h"
#include "output.h"
#ifndef WCHAR_TYPE_SIZE
#ifdef INT_TYPE_SIZE
@ -1235,7 +1236,6 @@ check_format_info (info, params)
int length_char;
int format_char;
int format_length;
int integral_format;
tree format_tree;
tree cur_param;
tree cur_type;

View File

@ -808,17 +808,17 @@ c_decode_option (p)
void
print_lang_decl (file, node, indent)
FILE *file;
tree node;
int indent;
FILE *file ATTRIBUTE_UNUSED;
tree node ATTRIBUTE_UNUSED;
int indent ATTRIBUTE_UNUSED;
{
}
void
print_lang_type (file, node, indent)
FILE *file;
tree node;
int indent;
FILE *file ATTRIBUTE_UNUSED;
tree node ATTRIBUTE_UNUSED;
int indent ATTRIBUTE_UNUSED;
{
}
@ -4083,7 +4083,7 @@ finish_decl (decl, init, asmspec_tree)
tree
maybe_build_cleanup (decl)
tree decl;
tree decl ATTRIBUTE_UNUSED;
{
/* There are no cleanups in C. */
return NULL_TREE;
@ -7296,6 +7296,6 @@ pop_c_function_context ()
void
copy_lang_decl (node)
tree node;
tree node ATTRIBUTE_UNUSED;
{
}

View File

@ -23,6 +23,9 @@ Boston, MA 02111-1307, USA. */
#include "system.h"
#include "tree.h"
#include "input.h"
#include "c-tree.h"
#include "c-lex.h"
#include "toplev.h"
/* Each of the functions defined here
is an alternative to a function in objc-actions.c. */
@ -65,9 +68,9 @@ print_lang_statistics ()
void
lang_print_xnode (file, node, indent)
FILE *file;
tree node;
int indent;
FILE *file ATTRIBUTE_UNUSED;
tree node ATTRIBUTE_UNUSED;
int indent ATTRIBUTE_UNUSED;
{
}
@ -75,35 +78,36 @@ lang_print_xnode (file, node, indent)
tree
lookup_interface (arg)
tree arg;
tree arg ATTRIBUTE_UNUSED;
{
return 0;
}
tree
is_class_name (arg)
tree arg;
tree arg ATTRIBUTE_UNUSED;
{
return 0;
}
void
maybe_objc_check_decl (decl)
tree decl;
tree decl ATTRIBUTE_UNUSED;
{
}
int
maybe_objc_comptypes (lhs, rhs, reflexive)
tree lhs, rhs;
int reflexive;
tree lhs ATTRIBUTE_UNUSED;
tree rhs ATTRIBUTE_UNUSED;
int reflexive ATTRIBUTE_UNUSED;
{
return -1;
}
tree
maybe_objc_method_name (decl)
tree decl;
tree decl ATTRIBUTE_UNUSED;
{
return 0;
}
@ -122,8 +126,8 @@ recognize_objc_keyword ()
tree
build_objc_string (len, str)
int len;
char *str;
int len ATTRIBUTE_UNUSED;
char *str ATTRIBUTE_UNUSED;
{
abort ();
return NULL_TREE;

View File

@ -25,6 +25,7 @@ Boston, MA 02111-1307, USA. */
#include "rtl.h"
#include "tree.h"
#include "input.h"
#include "output.h"
#include "c-lex.h"
#include "c-tree.h"
#include "flags.h"

View File

@ -75,7 +75,7 @@ extern char *token_buffer; /* Pointer to token buffer. */
extern tree make_pointer_declarator PROTO((tree, tree));
extern void reinit_parse_for_function PROTO((void));
extern void position_after_whitespace PROTO((void));
extern void position_after_white_space PROTO((void));
extern int check_newline PROTO((void));
extern int yylex PROTO((void));

View File

@ -149,6 +149,7 @@ struct lang_type
extern tree lookup_interface PROTO((tree));
extern tree is_class_name PROTO((tree));
extern void maybe_objc_check_decl PROTO((tree));
extern void finish_file PROTO((void));
extern int maybe_objc_comptypes PROTO((tree, tree, int));
extern tree maybe_building_objc_message_expr PROTO((void));
extern tree maybe_objc_method_name PROTO((tree));
@ -167,6 +168,9 @@ extern void check_function_format PROTO((tree, tree, tree));
NOP_EXPR is used as a special case (see truthvalue_conversion). */
extern void binary_op_error PROTO((enum tree_code));
extern void c_expand_expr_stmt PROTO((tree));
extern void c_expand_start_cond PROTO((tree, int, int));
extern void c_expand_start_else PROTO((void));
extern void c_expand_end_cond PROTO((void));
/* Validate the expression after `case' and apply default promotions. */
extern tree check_case_value PROTO((tree));
/* Concatenate a list of STRING_CST nodes into one STRING_CST. */
@ -366,6 +370,7 @@ extern void c_expand_return PROTO((tree));
extern tree c_expand_start_case PROTO((tree));
/* in c-iterate.c */
extern void init_iterators PROTO((void));
extern void iterator_expand PROTO((tree));
extern void iterator_for_loop_start PROTO((tree));
extern void iterator_for_loop_end PROTO((tree));

View File

@ -505,7 +505,8 @@ save_call_clobbered_regs (insn_mode)
static void
set_reg_live (reg, setter)
rtx reg, setter;
rtx reg;
rtx setter ATTRIBUTE_UNUSED;
{
register int regno, endregno, i;
enum machine_mode mode = GET_MODE (reg);

View File

@ -32,6 +32,7 @@ Boston, MA 02111-1307, USA. */
#include "regs.h"
#include "insn-flags.h"
#include "toplev.h"
#include "output.h"
/* Decide whether a function's arguments should be processed
from first to last or from last to first.

View File

@ -10224,7 +10224,7 @@ pfatal_with_name (name)
static void
pipe_closed (signo)
/* If this is missing, some compilers complain. */
int signo;
int signo ATTRIBUTE_UNUSED;
{
fatal ("output pipe has been closed");
}

View File

@ -88,9 +88,10 @@ Boston, MA 02111-1307, USA. */
#include "flags.h"
#include "regs.h"
#include "hard-reg-set.h"
#include "expr.h"
#include "basic-block.h"
#include "insn-config.h"
/* Include expr.h after insn-config.h so we get HAVE_conditional_move. */
#include "expr.h"
#include "insn-flags.h"
#include "insn-codes.h"
#include "insn-attr.h"

View File

@ -118,8 +118,8 @@ Boston, MA 02111-1307, USA. */
/* The Irix 6.0.1 assembler doesn't like labels in the text section, so
just avoid emitting them. */
#define ASM_IDENTIFY_GCC
#define ASM_IDENTIFY_LANGUAGE
#define ASM_IDENTIFY_GCC(x) ((void)0)
#define ASM_IDENTIFY_LANGUAGE(x) ((void)0)
/* Irix 5 stuff that we don't need for Irix 6. */
/* ??? We do need this for the -mabi=32 switch though. */

View File

@ -6724,12 +6724,14 @@ sparc_check_64 (x, insn)
set_once = 1;
if (insn == 0)
if (set_once)
insn = get_last_insn_anywhere ();
else
return 0;
{
if (set_once)
insn = get_last_insn_anywhere ();
else
return 0;
}
while (insn = PREV_INSN (insn))
while ((insn = PREV_INSN (insn)))
{
switch (GET_CODE (insn))
{

View File

@ -230,7 +230,7 @@ typedef struct string /* Beware: these aren't required to be */
static char *
mop_up PARAMS ((struct work_stuff *, string *, int));
static char *
static void
squangle_mop_up PARAMS ((struct work_stuff *));
#if 0
@ -239,7 +239,7 @@ demangle_method_args PARAMS ((struct work_stuff *, const char **, string *));
#endif
static char *
internal_cplus_demangle PARAMS ((struct work_stuff *, const char *, int));
internal_cplus_demangle PARAMS ((struct work_stuff *, const char *));
static int
demangle_template_template_parm PARAMS ((struct work_stuff *work,
@ -422,7 +422,7 @@ cplus_demangle_opname (opname, result, options)
char *result;
int options;
{
int len, i, len1, ret;
int len, len1, ret;
string type;
struct work_stuff work[1];
const char *tem;
@ -453,6 +453,7 @@ cplus_demangle_opname (opname, result, options)
if (opname[4] == '\0')
{
/* Operator. */
size_t i;
for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
{
if (strlen (optable[i].in) == 2
@ -470,6 +471,7 @@ cplus_demangle_opname (opname, result, options)
if (opname[2] == 'a' && opname[5] == '\0')
{
/* Assignment. */
size_t i;
for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
{
if (strlen (optable[i].in) == 3
@ -493,6 +495,7 @@ cplus_demangle_opname (opname, result, options)
if (len >= 10 /* op$assign_ */
&& memcmp (opname + 3, "assign_", 7) == 0)
{
size_t i;
for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
{
len1 = len - 10;
@ -509,6 +512,7 @@ cplus_demangle_opname (opname, result, options)
}
else
{
size_t i;
for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
{
len1 = len - 3;
@ -551,7 +555,7 @@ cplus_mangle_opname (opname, options)
const char *opname;
int options;
{
int i;
size_t i;
int len;
len = strlen (opname);
@ -605,7 +609,7 @@ cplus_demangle (mangled, options)
if ((work -> options & DMGL_STYLE_MASK) == 0)
work -> options |= (int) current_demangling_style & DMGL_STYLE_MASK;
ret = internal_cplus_demangle (work, mangled, options);
ret = internal_cplus_demangle (work, mangled);
squangle_mop_up (work);
return (ret);
}
@ -618,10 +622,9 @@ cplus_demangle (mangled, options)
calls go directly to this routine to avoid resetting that info. */
static char *
internal_cplus_demangle (work, mangled, options)
internal_cplus_demangle (work, mangled)
struct work_stuff *work;
const char *mangled;
int options;
{
string decl;
@ -679,7 +682,7 @@ internal_cplus_demangle (work, mangled, options)
/* Clear out and squangling related storage */
static char *
static void
squangle_mop_up (work)
struct work_stuff *work;
{
@ -1340,7 +1343,7 @@ demangle_template_value_parm (work, mangled, s)
char *p = xmalloc (symbol_len + 1), *q;
strncpy (p, *mangled, symbol_len);
p [symbol_len] = '\0';
q = internal_cplus_demangle (work, p, work->options);
q = internal_cplus_demangle (work, p);
string_appendn (s, "&", 1);
if (q)
{
@ -2073,7 +2076,7 @@ gnu_special (work, mangled, declp)
else if (strncmp (*mangled, "__thunk_", 8) == 0)
{
int delta = ((*mangled) += 8, consume_count (mangled));
char *method = internal_cplus_demangle (work, ++*mangled, work->options);
char *method = internal_cplus_demangle (work, ++*mangled);
if (method)
{
char buf[50];

View File

@ -617,7 +617,7 @@ left_shift (pfile, a, unsignedp, b)
static long
right_shift (pfile, a, unsignedp, b)
cpp_reader *pfile;
cpp_reader *pfile ATTRIBUTE_UNUSED;
long a;
int unsignedp;
unsigned long b;

View File

@ -58,7 +58,7 @@ hashf (name, len, hashsize)
HASHNODE *
cpp_lookup (pfile, name, len, hash)
cpp_reader *pfile;
cpp_reader *pfile ATTRIBUTE_UNUSED;
const U_CHAR *name;
int len;
int hash;
@ -193,7 +193,7 @@ install (name, len, type, ivalue, value, hash)
void
cpp_hash_cleanup (pfile)
cpp_reader *pfile;
cpp_reader *pfile ATTRIBUTE_UNUSED;
{
register int i;
for (i = HASHSIZE; --i >= 0; )

View File

@ -242,6 +242,7 @@ static char *savestring ();
static void conditional_skip ();
static void skip_if_group ();
static int parse_name PARAMS ((cpp_reader *, int));
/* Last arg to output_line_command. */
enum file_change_code {same_file, enter_file, leave_file};
@ -768,15 +769,15 @@ cpp_options_init (opts)
enum cpp_token
null_underflow (pfile)
cpp_reader *pfile;
cpp_reader *pfile ATTRIBUTE_UNUSED;
{
return CPP_EOF;
}
int
null_cleanup (pbuf, pfile)
cpp_buffer *pbuf;
cpp_reader *pfile;
cpp_buffer *pbuf ATTRIBUTE_UNUSED;
cpp_reader *pfile ATTRIBUTE_UNUSED;
{
return 0;
}
@ -784,7 +785,7 @@ null_cleanup (pbuf, pfile)
int
macro_cleanup (pbuf, pfile)
cpp_buffer *pbuf;
cpp_reader *pfile;
cpp_reader *pfile ATTRIBUTE_UNUSED;
{
HASHNODE *macro = (HASHNODE *) pbuf->data;
if (macro->type == T_DISABLED)
@ -797,7 +798,7 @@ macro_cleanup (pbuf, pfile)
int
file_cleanup (pbuf, pfile)
cpp_buffer *pbuf;
cpp_reader *pfile;
cpp_reader *pfile ATTRIBUTE_UNUSED;
{
if (pbuf->buf)
{
@ -5200,7 +5201,7 @@ cpp_get_non_space_token (pfile)
/* Parse an identifier starting with C. */
int
static int
parse_name (pfile, c)
cpp_reader *pfile; int c;
{

View File

@ -663,6 +663,11 @@ extern cpp_buffer *cpp_pop_buffer PARAMS ((cpp_reader *));
extern cpp_hashnode *cpp_lookup PARAMS ((cpp_reader *, const unsigned char *,
int, int));
extern void cpp_reader_init PARAMS ((cpp_reader *));
extern void cpp_options_init PARAMS ((cpp_options *));
extern int cpp_start_read PARAMS ((cpp_reader *, char *));
extern int cpp_read_check_assertion PARAMS ((cpp_reader *));
extern void skip_rest_of_line PARAMS ((cpp_reader *));
#ifdef __cplusplus
}

View File

@ -274,7 +274,7 @@ __frame_dummy ()
#endif /* defined(INIT_SECTION_ASM_OP) */
/* Force cc1 to switch to .data section. */
static func_ptr force_to_data[0] = { };
static func_ptr force_to_data[0] __attribute__ ((__unused__)) = { };
/* NOTE: In order to be able to support SVR4 shared libraries, we arrange
to have one set of symbols { __CTOR_LIST__, __DTOR_LIST__, __CTOR_END__,
@ -294,7 +294,8 @@ static func_ptr force_to_data[0] = { };
CTOR_LIST_BEGIN;
#else
asm (CTORS_SECTION_ASM_OP); /* cc1 doesn't know that we are switching! */
STATIC func_ptr __CTOR_LIST__[1] = { (func_ptr) (-1) };
STATIC func_ptr __CTOR_LIST__[1] __attribute__ ((__unused__))
= { (func_ptr) (-1) };
#endif
#ifdef DTOR_LIST_BEGIN
@ -421,7 +422,7 @@ __do_global_ctors ()
#endif /* defined(INIT_SECTION_ASM_OP) */
/* Force cc1 to switch to .data section. */
static func_ptr force_to_data[0] = { };
static func_ptr force_to_data[0] __attribute__ ((__unused__)) = { };
/* Put a word containing zero at the end of each of our two lists of function
addresses. Note that the words defined here go into the .ctors and .dtors
@ -440,7 +441,8 @@ STATIC func_ptr __CTOR_END__[1] = { (func_ptr) 0 };
DTOR_LIST_END;
#else
asm (DTORS_SECTION_ASM_OP); /* cc1 doesn't know that we are switching! */
STATIC func_ptr __DTOR_END__[1] = { (func_ptr) 0 };
STATIC func_ptr __DTOR_END__[1] __attribute__ ((__unused__))
= { (func_ptr) 0 };
#endif
#ifdef EH_FRAME_SECTION_ASM_OP
@ -449,7 +451,7 @@ STATIC func_ptr __DTOR_END__[1] = { (func_ptr) 0 };
typedef unsigned int ui32 __attribute__ ((mode (SI)));
asm (EH_FRAME_SECTION_ASM_OP);
STATIC ui32 __FRAME_END__[] = { 0 };
STATIC ui32 __FRAME_END__[] __attribute__ ((__unused__)) = { 0 };
#endif /* EH_FRAME_SECTION */
#endif /* defined(CRT_END) */

View File

@ -7933,7 +7933,7 @@ static rtx cse_check_loop_start_value;
static void
cse_check_loop_start (x, set)
rtx x;
rtx set;
rtx set ATTRIBUTE_UNUSED;
{
if (cse_check_loop_start_value == 0
|| GET_CODE (x) == CC0 || GET_CODE (x) == PC)

View File

@ -134,6 +134,13 @@ Boston, MA 02111-1307, USA. */
#endif
#endif
char *getpwd ();
/* Typical USG systems don't have stab.h, and they also have
no use for DBX-format debugging info. */
#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
static int flag_minimal_debug = MINIMAL_DEBUG;
/* Nonzero if we have actually used any of the GDB extensions
@ -148,13 +155,6 @@ static int have_used_extensions = 0;
static int source_label_number = 1;
char *getpwd ();
/* Typical USG systems don't have stab.h, and they also have
no use for DBX-format debugging info. */
#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
#ifdef DEBUG_SYMS_TEXT
#define FORCE_TEXT text_section ();
#else

View File

@ -2506,7 +2506,9 @@ static tree member_declared_type PROTO((tree));
static char *decl_start_label PROTO((tree));
static void gen_array_type_die PROTO((tree, dw_die_ref));
static void gen_set_type_die PROTO((tree, dw_die_ref));
#if 0
static void gen_entry_point_die PROTO((tree, dw_die_ref));
#endif
static void pend_type PROTO((tree));
static void output_pending_types_for_scope PROTO((dw_die_ref));
static void gen_inlined_enumeration_type_die PROTO((tree, dw_die_ref));
@ -7816,6 +7818,7 @@ gen_set_type_die (type, context_die)
add_type_attribute (type_die, TREE_TYPE (type), 0, 0, context_die);
}
#if 0
static void
gen_entry_point_die (decl, context_die)
register tree decl;
@ -7837,6 +7840,7 @@ gen_entry_point_die (decl, context_die)
else
add_AT_lbl_id (decl_die, DW_AT_low_pc, decl_start_label (decl));
}
#endif
/* Remember a type in the pending_types_list. */

View File

@ -139,6 +139,10 @@ extern rtx catch_clauses;
#endif
/* Test: is exception handling turned on? */
extern int doing_eh PROTO ((int));
/* Toplevel initialization for EH. */
extern void init_eh PROTO((void));

View File

@ -32,8 +32,9 @@ Boston, MA 02111-1307, USA. */
#include "function.h"
#include "insn-flags.h"
#include "insn-codes.h"
#include "expr.h"
#include "insn-config.h"
/* Include expr.h after insn-config.h so we get HAVE_conditional_move. */
#include "expr.h"
#include "recog.h"
#include "output.h"
#include "typeclass.h"

View File

@ -68,6 +68,7 @@ Boston, MA 02111-1307, USA. */
#include "output.h"
#include "except.h"
#include "toplev.h"
#include "reload.h"
/* Get N_SLINE and N_SOL from stab.h if we can expect the file to exist. */
#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
@ -989,7 +990,8 @@ shorten_branches (first)
min_labelno = get_first_label_num ();
label_align
= (short*) xmalloc ((max_labelno - min_labelno + 1) * sizeof (short));
bzero (label_align, (max_labelno - min_labelno + 1) * sizeof (short));
bzero ((char *) label_align,
(max_labelno - min_labelno + 1) * sizeof (short));
uid_shuid = (int *) xmalloc (max_uid * sizeof *uid_shuid);

View File

@ -1341,7 +1341,7 @@ cpp_file_line_for_message (filename, line, column)
void
cpp_print_containing_files (pfile)
cpp_reader *pfile;
cpp_reader *pfile ATTRIBUTE_UNUSED;
{
}
@ -1377,7 +1377,7 @@ fatal (str, arg)
void
cpp_fatal (pfile, str, arg)
cpp_reader *pfile;
cpp_reader *pfile ATTRIBUTE_UNUSED;
char *str, *arg;
{
fatal (str, arg);

View File

@ -414,7 +414,7 @@ find_basic_blocks_1 (f, nonlocal_label_list, live_reachable_p)
bzero (block_live, n_basic_blocks);
bzero (block_marked, n_basic_blocks);
bzero (basic_block_computed_jump_target, n_basic_blocks);
bzero (active_eh_handler, (max_uid_for_flow + 1) * sizeof (rtx));
bzero ((char *) active_eh_handler, (max_uid_for_flow + 1) * sizeof (rtx));
current_function_has_computed_jump = 0;
/* Initialize with just block 0 reachable and no blocks marked. */

View File

@ -2392,7 +2392,7 @@ make_length_attrs ()
"*insn_current_length"};
static rtx (*no_address_fn[]) PROTO((rtx)) = {identity_fn, zero_fn, zero_fn};
static rtx (*address_fn[]) PROTO((rtx)) = {max_fn, one_fn, identity_fn};
int i;
size_t i;
struct attr_desc *length_attr, *new_attr;
struct attr_value *av, *new_av;
struct insn_ent *ie, *new_ie;
@ -2443,14 +2443,14 @@ identity_fn (exp)
static rtx
zero_fn (exp)
rtx exp;
rtx exp ATTRIBUTE_UNUSED;
{
return make_numeric_value (0);
}
static rtx
one_fn (exp)
rtx exp;
rtx exp ATTRIBUTE_UNUSED;
{
return make_numeric_value (1);
}

View File

@ -459,7 +459,7 @@ from the machine description file `md'. */\n\n");
/* This variable exists only so it can be the "location"
of any missing operand whose numbers are skipped by a given pattern. */
printf ("static rtx junk;\n");
printf ("static rtx junk ATTRIBUTE_UNUSED;\n");
printf ("extern rtx recog_operand[];\n");
printf ("extern rtx *recog_operand_loc[];\n");

View File

@ -262,7 +262,7 @@ gencode (f)
fputs (" else if (sizeof(struct rtx_def) - sizeof(rtunion) == sizeof(HOST_WIDE_INT))\n", f);
fputs (" *(HOST_WIDE_INT *)rt = 0;\n", f);
fputs (" else\n", f);
fputs (" bzero(rt, sizeof(struct rtx_def) - sizeof(rtunion));\n\n", f);
fputs (" bzero((char *) rt, sizeof(struct rtx_def) - sizeof(rtunion));\n\n", f);
fputs (" return rt;\n}\n\n", f);
for (fmt = formats; *fmt; ++fmt)

View File

@ -36,6 +36,7 @@ Boston, MA 02111-1307, USA. */
#include "real.h"
#include "except.h"
#include "function.h"
#include "toplev.h"
#include "obstack.h"
#define obstack_chunk_alloc xmalloc

View File

@ -3360,6 +3360,7 @@ EH_TABLE_LOOKUP
#else
#ifdef DWARF2_UNWIND_INFO
typedef struct exception_table {
void *start;
void *end;
@ -3404,6 +3405,7 @@ find_exception_handler (void *pc, exception_table *table)
return (void *) 0;
}
#endif /* DWARF2_UNWIND_INFO */
#endif /* EH_TABLE_LOOKUP */
#ifdef DWARF2_UNWIND_INFO

View File

@ -88,7 +88,7 @@ $(srcdir)/objc/objc-parse.y: $(srcdir)/c-parse.in
objc-act.o : $(srcdir)/objc/objc-act.c \
$(CONFIG_H) $(TREE_H) $(RTL_H) system.h \
$(srcdir)/c-tree.h $(srcdir)/c-lex.h \
$(srcdir)/c-tree.h $(srcdir)/c-lex.h $(srcdir)/toplev.h \
$(srcdir)/flags.h $(srcdir)/objc/objc-act.h $(srcdir)/input.h \
$(srcdir)/function.h $(srcdir)/output.h $(srcdir)/c-parse.h
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -I$(srcdir)/objc \

View File

@ -49,6 +49,7 @@ Boston, MA 02111-1307, USA. */
#include "except.h"
#include "function.h"
#include "output.h"
#include "toplev.h"
/* This is the default way of generating a method name. */
/* I am not sure it is really correct.
@ -695,9 +696,9 @@ lang_decode_option (p)
void
lang_print_xnode (file, node, indent)
FILE *file;
tree node;
int indent;
FILE *file ATTRIBUTE_UNUSED;
tree node ATTRIBUTE_UNUSED;
int indent ATTRIBUTE_UNUSED;
{
}
@ -6419,7 +6420,7 @@ start_protocol (code, name, list)
void
finish_protocol (protocol)
tree protocol;
tree protocol ATTRIBUTE_UNUSED;
{
}

View File

@ -155,6 +155,10 @@ extern void exception_section PROTO((void));
The rtl is stored into DECL. */
extern void make_function_rtl PROTO((tree));
/* Declare DECL to be a weak symbol. */
extern void declare_weak PROTO ((tree));
#endif /* TREE_CODE */
/* Decode an `asm' spec for a declaration as a register name.
Return the register number, or -1 if nothing specified,
or -2 if the ASMSPEC is not `cc' or `memory' and is not recognized,
@ -164,6 +168,7 @@ extern void make_function_rtl PROTO((tree));
Prefixes such as % are optional. */
extern int decode_reg_name PROTO((char *));
#ifdef TREE_CODE
/* Create the DECL_RTL for a declaration for a static or external variable
or static or external function.
ASMSPEC, if not 0, is the string which the user specified
@ -180,6 +185,8 @@ extern void make_var_volatile PROTO((tree));
/* Output alignment directive to align for constant expression EXP. */
extern void assemble_constant_align PROTO((tree));
extern void assemble_alias PROTO((tree, tree));
/* Output a string of literal assembler code
for an `asm' keyword used between functions. */
extern void assemble_asm PROTO((tree));
@ -232,7 +239,7 @@ extern void assemble_variable PROTO((tree, int, int, int));
(Most assemblers don't need this, so we normally output nothing.)
Do nothing if DECL is not external. */
extern void assemble_external PROTO((tree));
#endif
#endif /* TREE_CODE */
#ifdef RTX_CODE
/* Similar, for calling a library function FUN. */

View File

@ -35,6 +35,7 @@ Boston, MA 02111-1307, USA. */
#include "reload.h"
#include "real.h"
#include "toplev.h"
#include "output.h"
#ifndef REGISTER_MOVE_COST
#define REGISTER_MOVE_COST(x, y) 2

View File

@ -217,6 +217,8 @@ extern int regno_clobbered_p PROTO((int, rtx));
/* Functions in reload1.c: */
extern int reloads_conflict PROTO ((int, int));
int count_occurrences PROTO((rtx, rtx));
/* Initialize the reload pass once per compilation. */

View File

@ -1202,6 +1202,7 @@ extern void debug_rtx_list PROTO ((rtx, int));
extern rtx debug_rtx_find PROTO ((rtx, int));
#ifdef BUFSIZ
extern void print_rtl PROTO ((FILE *, rtx));
extern void print_rtl_single PROTO ((FILE *, rtx));
extern void print_inline_rtx PROTO ((FILE *, rtx, int));
#endif
@ -1292,12 +1293,14 @@ extern rtx expand_mult_highpart PROTO ((enum machine_mode, rtx,
int, int));
/* In global.c */
extern void mark_elimiation PROTO ((int, int));
#ifdef BUFSIZ
extern int global_alloc PROTO ((FILE *));
extern void dump_global_regs PROTO ((FILE *));
#endif
/* In regclass.c */
extern int reg_class_subset_p PROTO ((enum reg_class, enum reg_class));
extern void globalize_reg PROTO ((int));
extern void init_regs PROTO ((void));
extern void init_reg_sets PROTO ((void));
@ -1329,6 +1332,7 @@ extern void init_caller_save PROTO ((void));
/* In profile.c */
extern void init_branch_prob PROTO ((char *));
extern void output_func_start_profiler PROTO ((void));
/* In reg-stack.c */
#ifdef BUFSIZ

View File

@ -455,7 +455,8 @@ static int reg_set_flag;
static void
reg_set_p_1 (x, pat)
rtx x, pat;
rtx x;
rtx pat ATTRIBUTE_UNUSED;
{
/* We don't want to return 1 if X is a MEM that contains a register
within REG_SET_REG. */

View File

@ -20,6 +20,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "hconfig.h"
#include "system.h"
#include "cpplib.h"
#include "scan.h"
int brace_nesting = 0;

View File

@ -60,6 +60,8 @@ extern int read_upto _PARAMS((FILE *, sstring *, int));
extern char *xmalloc _PARAMS((unsigned));
extern char *xrealloc _PARAMS((char *, unsigned));
extern unsigned long hash _PARAMS((const char *));
extern void recognized_function _PARAMS((char *, int, int, char *, int, int, char *, int));
extern void recognized_extern _PARAMS((char *, int, char *, int));
/* get_token is a simple C lexer. */
#define IDENTIFIER_TOKEN 300

View File

@ -51,6 +51,7 @@ Boston, MA 02111-1307, USA. */
#include "recog.h"
#include "machmode.h"
#include "toplev.h"
#include "output.h"
#define obstack_chunk_alloc xmalloc
#define obstack_chunk_free free

View File

@ -153,12 +153,10 @@ extern void print_rtl_with_bb ();
void rest_of_decl_compilation ();
void error_with_file_and_line PVPROTO((char *file, int line, char *s, ...));
void error_with_decl PVPROTO((tree decl, char *s, ...));
void error_for_asm PVPROTO((rtx insn, char *s, ...));
void error PVPROTO((char *s, ...));
void fatal PVPROTO((char *s, ...));
void warning_with_file_and_line PVPROTO((char *file, int line, char *s, ...));
void warning_with_decl PVPROTO((tree decl, char *s, ...));
void warning_for_asm PVPROTO((rtx insn, char *s, ...));
void warning PVPROTO((char *s, ...));
void pedwarn PVPROTO((char *s, ...));
void pedwarn_with_decl PVPROTO((tree decl, char *s, ...));
@ -189,7 +187,9 @@ static void vsorry PROTO((char *, va_list));
static void v_really_sorry PROTO((char *, va_list));
static void float_signal PROTO((int));
static void pipe_closed PROTO((int));
#if 0
static void output_lang_identify PROTO((FILE *));
#endif
static void open_dump_file PROTO((char *, char *));
static void close_dump_file PROTO((void (*) (FILE *, rtx), rtx));
static void dump_rtl PROTO((char *, tree, void (*) (FILE *, rtx), rtx));
@ -1989,7 +1989,7 @@ jmp_buf float_handler;
static void
float_signal (signo)
/* If this is missing, some compilers complain. */
int signo;
int signo ATTRIBUTE_UNUSED;
{
if (float_handled == 0)
abort ();
@ -2056,7 +2056,7 @@ pop_float_handler (handled, handler)
static void
pipe_closed (signo)
/* If this is missing, some compilers complain. */
int signo;
int signo ATTRIBUTE_UNUSED;
{
fatal ("output pipe has been closed");
}
@ -2138,6 +2138,7 @@ output_file_directive (asm_file, input_name)
/* Routine to build language identifier for object file. */
#if 0
static void
output_lang_identify (asm_out_file)
FILE *asm_out_file;
@ -2147,6 +2148,7 @@ output_lang_identify (asm_out_file)
sprintf (s, "__gnu_compiled_%s", lang_identify ());
ASM_OUTPUT_LABEL (asm_out_file, s);
}
#endif
/* Routine to open a dump file. */
static void

View File

@ -5,6 +5,8 @@
#ifndef __GCC_TOPLEV_H__
#define __GCC_TOPLEV_H__
extern int count_error PROTO ((int));
extern void strip_off_ending PROTO ((char *, int));
extern void print_time PROTO ((char *, int));
extern int get_run_time PROTO ((void));
extern void debug_start_source_file PROTO ((char *));
@ -40,4 +42,8 @@ extern void warning_with_decl PVPROTO ((union tree_node *, char *, ...));
extern void error_with_decl PVPROTO ((union tree_node *, char *, ...));
extern void announce_function PROTO ((union tree_node *));
extern void error_for_asm PVPROTO((struct rtx_def *, char *, ...))
ATTRIBUTE_PRINTF_2;
extern void warning_for_asm PVPROTO((struct rtx_def *, char *, ...))
ATTRIBUTE_PRINTF_2;
#endif /* __GCC_TOPLEV_H */

View File

@ -1,3 +1,12 @@
Wed May 13 14:24:38 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* cplus-dem.c (squangle_mop_up): Change return type to void.
(internal_cplus_demangle): Remove unused parameter `options'.
All callers changed.
(cplus_demangle_opname): Remove function wide variable `int i' and
replace with `size_t i' at each location where it is used.
(cplus_mangle_opname): change type of `i' from int to size_t.
Mon Apr 27 15:53:30 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
* cplus-dem.c (demangle_qualified): Replace missing else.

View File

@ -230,7 +230,7 @@ typedef struct string /* Beware: these aren't required to be */
static char *
mop_up PARAMS ((struct work_stuff *, string *, int));
static char *
static void
squangle_mop_up PARAMS ((struct work_stuff *));
#if 0
@ -239,7 +239,7 @@ demangle_method_args PARAMS ((struct work_stuff *, const char **, string *));
#endif
static char *
internal_cplus_demangle PARAMS ((struct work_stuff *, const char *, int));
internal_cplus_demangle PARAMS ((struct work_stuff *, const char *));
static int
demangle_template_template_parm PARAMS ((struct work_stuff *work,
@ -422,7 +422,7 @@ cplus_demangle_opname (opname, result, options)
char *result;
int options;
{
int len, i, len1, ret;
int len, len1, ret;
string type;
struct work_stuff work[1];
const char *tem;
@ -453,6 +453,7 @@ cplus_demangle_opname (opname, result, options)
if (opname[4] == '\0')
{
/* Operator. */
size_t i;
for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
{
if (strlen (optable[i].in) == 2
@ -470,6 +471,7 @@ cplus_demangle_opname (opname, result, options)
if (opname[2] == 'a' && opname[5] == '\0')
{
/* Assignment. */
size_t i;
for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
{
if (strlen (optable[i].in) == 3
@ -493,6 +495,7 @@ cplus_demangle_opname (opname, result, options)
if (len >= 10 /* op$assign_ */
&& memcmp (opname + 3, "assign_", 7) == 0)
{
size_t i;
for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
{
len1 = len - 10;
@ -509,6 +512,7 @@ cplus_demangle_opname (opname, result, options)
}
else
{
size_t i;
for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
{
len1 = len - 3;
@ -551,7 +555,7 @@ cplus_mangle_opname (opname, options)
const char *opname;
int options;
{
int i;
size_t i;
int len;
len = strlen (opname);
@ -605,7 +609,7 @@ cplus_demangle (mangled, options)
if ((work -> options & DMGL_STYLE_MASK) == 0)
work -> options |= (int) current_demangling_style & DMGL_STYLE_MASK;
ret = internal_cplus_demangle (work, mangled, options);
ret = internal_cplus_demangle (work, mangled);
squangle_mop_up (work);
return (ret);
}
@ -618,10 +622,9 @@ cplus_demangle (mangled, options)
calls go directly to this routine to avoid resetting that info. */
static char *
internal_cplus_demangle (work, mangled, options)
internal_cplus_demangle (work, mangled)
struct work_stuff *work;
const char *mangled;
int options;
{
string decl;
@ -679,7 +682,7 @@ internal_cplus_demangle (work, mangled, options)
/* Clear out and squangling related storage */
static char *
static void
squangle_mop_up (work)
struct work_stuff *work;
{
@ -1340,7 +1343,7 @@ demangle_template_value_parm (work, mangled, s)
char *p = xmalloc (symbol_len + 1), *q;
strncpy (p, *mangled, symbol_len);
p [symbol_len] = '\0';
q = internal_cplus_demangle (work, p, work->options);
q = internal_cplus_demangle (work, p);
string_appendn (s, "&", 1);
if (q)
{
@ -2073,7 +2076,7 @@ gnu_special (work, mangled, declp)
else if (strncmp (*mangled, "__thunk_", 8) == 0)
{
int delta = ((*mangled) += 8, consume_count (mangled));
char *method = internal_cplus_demangle (work, ++*mangled, work->options);
char *method = internal_cplus_demangle (work, ++*mangled);
if (method)
{
char buf[50];