Commit Graph

83 Commits

Author SHA1 Message Date
Zack Weinberg
c31a6508ee cppfiles.c: Include splay-tree.h, not hashtab.h.
* cppfiles.c: Include splay-tree.h, not hashtab.h.
	(redundant_include_p, make_IHASH, hash_IHASH, eq_IHASH): Delete.
	(destroy_include_file_node): New.
	(_cpp_init_include_hash): Rename _cpp_init_include_table.
	Create a splay tree, not a hash table.
	(open_include_file): Look up the path in the include table,
	do the multiple include optimization here, etc.
	(cpp_included): Walk the path.
	(find_include_file): Just walk the path calling
	open_include_file, or call it directly for an absolute path.
	(_cpp_fake_ihash): Rename _cpp_fake_include and update for new
	scheme.
	(read_include_file): Update for new scheme.  Don't close the
	file unless reading fails.
	(_cpp_execute_include, cpp_read_file): Tweak for new scheme.

	* cpphash.h (struct ihash, NEVER_REINCLUDE): Delete.
	(struct include_file): New.
	(NEVER_REREAD, DO_NOT_REREAD, CPP_IN_SYSTEM_HEADER): New
	macros.
	(CPP_PEDANTIC, CPP_WTRADITIONAL): Update.
	Update prototypes.

	* cppinit.c: Include splay-tree.h.
	(cpp_reader_init, cpp_cleanup): Update.

	* cpplib.h (struct cpp_buffer): Change ihash field to
	'struct include_file *inc'.  Remove system_header_p.
	(struct cpp_reader): Change all_include_files to a
	struct splay_tree_s *.

	* cpplex.c: Update all references to cpp_buffer->ihash and/or
	cpp_buffer->system_header_p.
	(cpp_pop_buffer): Close file here, only if DO_NOT_REREAD.

From-SVN: r34636
2000-06-21 18:33:51 +00:00
Zack Weinberg
f8f769ea4e cppfiles.c: Read files in, using mmap if possible, then prescan them separately.
* cppfiles.c: Read files in, using mmap if possible, then
	prescan them separately.
	(read_file, read_with_read): New functions.
	* cpplex.c: Don't define UCHAR_MAX.
	(_cpp_read_and_prescan): Rename to _cpp_prescan.  Don't read
	the file here.

	* cppinit.c (handle_option): Automatically define __cplusplus,
	__OBJC__, __ASEEMBLER__, _LANGUAGE_FORTRAN here when we see
	the respective -lang switch.

	* cpphash.h (enum node_type, struct hashnode, _cpp_lookup
	prototype): Move to...
	* cpplib.h: ... here.  Rename struct hashnode to struct
	cpp_hashnode and give it a typedef.  Rename _cpp_lookup to
	cpp_lookup.  Add 'fe_value' slot, a union tree_node *.

From-SVN: r34228
2000-05-28 05:56:38 +00:00
Neil Booth
6ab3e7dde0 cppinit.c (cpp_reader_init): Initialise col_adjust and default tab stop size.
* cppinit.c (cpp_reader_init): Initialise col_adjust and
	default tab stop size.
	(no_num, OPT_ftabstop): New.
	(handle_option): Handle "ftabstop=" command-line option.
	(print_help): Document it.
	* cpplex.c (COLUMN): Remove.
	(handle_newline): Reset col_adjust.
	(skip_whitespace): Update col_adjust as tabs encountered.
	(_cpp_lex_line): Update to use col_adjust.  Call
	skip_whitespace for all whitespace.
	* cpplib.h (struct cpp_options): New member tabstop.
	(struct cpp_reader): New member col_adjust.
	(CPP_BUF_COL): Update.
	(CPP_BUF_COLUMN): New.
	* cpp.texi: Document "-ftabstop=" command line option.

From-SVN: r33982
2000-05-18 11:09:27 +00:00
Zack Weinberg
12cf91fef0 cpphash.h (U): New define, to correct type of string constants.
gcc:
	* cpphash.h (U): New define, to correct type of string constants.
	(ustrcmp, ustrncmp, ustrlen, uxstrdup, ustrchr): New wrapper
	routines, to do casts when passing unsigned strings to libc.
	* cppexp.c, cppfiles.c, cpphash.c, cppinit.c, cpplib.c: Use them.

	* cppfiles.c (_cpp_execute_include): Make filename an U_CHAR *.
	* cpphash.c (_cpp_quote_string): Make string an U_CHAR *.
	* cppinit.c (dump_special_to_buffer): Make macro name an U_CHAR *.
	* cpplex.c (parse_ifdef, parse_include, validate_else): Make
	second argument an U_CHAR *.

	* cppinit.c (builtin_array): Make name and value U_CHAR *, add
	length field, clean up initializer.
	(ISTABLE): Add __extension__ to designated-
	initializers version.
	* cpplex.c (CHARTAB): Likewise.

	* mbchar.c: Add dummy external declaration to the !MULTIBYTE_CHARS
	case so the file won't be empty.

include:
	* symcat.h: Remove #endif label.

From-SVN: r33657
2000-05-04 04:38:01 +00:00
Zack Weinberg
a7abcbbf92 cpphash.c (_cpp_make_hashnode): Rename make_HASHNODE, now static.
* cpphash.c (_cpp_make_hashnode): Rename make_HASHNODE, now
	static.  Allocate the hashnode and its string in the same
	block of memory.
	(del_HASHNODE): Don't free h->name.
	(_cpp_lookup): If there is no entry for this string, create
	one, of type T_VOID.
	(_cpp_lookup_slot): Delete.
	* cpphash.h: Update prototypes.

	* cpplex.c (maybe_macroexpand): Check for hp->type == T_VOID,
	not hp == NULL.
	* cpplib.c (do_define, do_undef, do_pragma_poison, do_assert,
	do_unassert, cpp_defined): Use _cpp_lookup.  Don't create a
	node here, just fill in the value field properly.  "Delete"
	entries by setting the value field to T_VOID.  Check for
	hp->type == T_VOID, not hp == NULL.

	* Makefile.in (cpplib.o): Don't depend on $(HASHTAB_H).
	* cpperror.c, cppexp.c, cpplex.c, cpplib.c:  Don't include
	hashtab.h.

From-SVN: r33581
2000-05-01 18:20:10 +00:00
Zack Weinberg
d9e0bd53b2 cpphash.h (struct definition): Move file, line, col members...
* cpphash.h (struct definition): Move file, line, col members...
	(struct hashnode): ... here.  Also add 'disabled' flag.
	(enum node_type): Add T_VOID, T_XCONST, T_FMACRO, and
	T_IDENTITY.  Remove T_DISABLED.
	Update prototypes.

	* cpphash.c (_cpp_dump_definition): Split out dump_DEFINITION.
	(collect_expansion): Split into collect_objlike_expansion and
	collect_funlike_expansion.
	(_cpp_macroexpand): Split out scan_arguments, stringify, and
	funlike_macroexpand.
	(_cpp_compare_defs): Rename compare_defs, make static.
	(_cpp_make_hashnode): Initialize hp->disabled.
	(macro_cleanup): Adjust for new token types.  Clear
	m->disabled.
	(_cpp_create_definition): Move code here to determine what
	sort of macro it is, and code to check for redefinitions, from
	do_define.  Implement a few simple cases without creating a
	full DEFINITION.
	(_cpp_macroexpand, special_symbol, _cpp_dump_definition):
	Handle the simple cases.
	(push_macro_expansion): Set buf->has_escapes and hp->disabled
	here.

	* cppinit.c (builtin_array): Change MCONST to XCONST
	everywhere.
	* cpplex.c (maybe_macroexpand): Handle IDENTITY macros here;
	fix check for disabled and function-like macros.
	* cpplib.c (do_define): Move most logic to
	_cpp_create_definition.
	(do_undef): Handle new special token types.

From-SVN: r33355
2000-04-23 17:03:31 +00:00
Zack Weinberg
d88b89e506 cppinit.c (handle_option): Don't run error message through gettext twice.
* cppinit.c (handle_option): Don't run error message through
	gettext twice.

From-SVN: r33237
2000-04-18 21:49:16 +00:00
Richard Kenner
e38992e8d3 conflict.c (conflict_graph_add): Pass enum type to htab_find_slot.
* gcc/conflict.c (conflict_graph_add): Pass enum type to
	htab_find_slot.
	* gcc/cpperror.c (hashtab.h): Now include.
	* gcc/cppexp.c (hashtab.h): Likewise.
	* gcc/cpplex.c (hashtab.h): Likewise.
	* gcc/cppfiles.c (hashtab.h): Likewise.
	(find_include_file, _cpp_calc_hash, cpp_read_file): Pass enum type
	to htab_find_slot_with_hash.
	* gcc/cpphash.c (hashtab.h): Now include.
	(_cpp_lookup_slot): INSERT is now enum insert_option.
	* gcc/cpphash.h (_cpp_lookup_slot): Likewise.
	* gcc/cppinit.c (hashtab.h): Include earlier.
	(initialize_builtins): Pass enum to htab_find_slot.
	* gcc/cpplib.c (hashtab.h): Now include.
	(do_define, do_undef): Pass enum type to _cpp_lookup_slot.
	(do_pragma_poison, do_assert): Likewise.
	* gcc/emit-rtl.c (gen_rtx_CONST_INT): Pass enum to
	htab_find_slot_with_hash.
	* gcc/simplify-rtx.c (cselib_lookup_mem, cselib_lookup): Likewise.
	* gcc/tree.c (type_hash_add): Likewise.
	(build1): Minor cleanup.
	* include/hashtab.h (enum insert_option): New type.
	(htab_find_slot, htab_find_slot_with_hash): Use it.
	* libiberty/hashtab.c: Various minor cleanups.
	(htab_find_slot_with_hash): INSERT is now enum insert_option.
	(htab_find_slot): Likewise.

From-SVN: r33236
2000-04-18 16:42:00 -04:00
Dave Pitts
5f6d382330 Makefile.in ($(srcdir)/c-parse.y: c-parse.in): Enclose the whole message in quotes.
* Makefile.in ($(srcdir)/c-parse.y: c-parse.in): Enclose the whole
        message in quotes. Otherwise, IBM's make program treats the '#' as the
        start of a comment and ignores the remainder of the line.

        * c-lex.c (yylex): Change for EBCDIC, lower case characters preceed
        upper case.
        * cccp.c (initialize_char_syntax): Allow for holes in EBCDIC.
        * cexp.y (initialize_random_junk): Likewise.
        * cppfiles.c (find_include_file): Cast alloca return value.
        * cppinit.c (initialize_standard_includes): Likewise.
        * cpplib.c (cpp_define, cpp_undef): Likewise.
        * defaults.h (ASM_OUTPUT_ASCII): Use ISPRINT.
        * final.c (output_asm_insn): Allow for holes in EBCDIC.
        * fold-const.c (CHARMASK): New.
        (real_hex_to_f): Use it.
        * real.c (CHARMASK): New.
        (etoasc, asctoeg): Use it.
        (asctoeg): EBCDIC lower case characters preceed upper case.

From-SVN: r33192
2000-04-16 17:54:25 -07:00
Zack Weinberg
f2d5f0cca2 cpplex.c (cpp_output_tokens, [...]): New public interfaces.
* cpplex.c (cpp_output_tokens, cpp_scan_buffer_nooutput): New public
	interfaces.
	(safe_fwrite, output_line_command): New static functions.
	(cpp_expand_to_buffer): Now private to cpplib.
	(cpp_scan_buffer): Take a printer.

	* cpphash.h: Update prototypes.
	* cpplib.h: Update prototypes.
	(cpp_printer): New.
	(cpp_buffer): Remove last_nominal_fname.
	(cpp_reader): Remove lineno.

	* cppmain.c: Use a cpp_printer.
	* fix-header.c: No need to inhibit line commands.  Call
	cpp_start_read with no printer.

	* cpperror.c (cpp_notice_from_errno): Provide default name.
	* cppfiles.c (make_IHASH, _cpp_fake_ihash): New functions.
	(find_include_file, cpp_read_file): Use make_IHASH.
	(file_cleanup): Set control_macro and clear
	input_stack_listing_current here.
	(_cpp_execute_include): Don't output entering-file marker.
	* cpphash.c (special_symbol): Look for the line number in the
	buffer, not the reader.
	(_cpp_macroexpand): No need to disable line commands.
	(_cpp_dump_definition): No need to generate line commands.
	(dump_hash_helper): Remove excess newline from output.
	* cppinit.c (dump_special_to_buffer): No need to generate line
	commands.
	(cpp_printer_init): New.
	(cpp_start_read): Take a printer, and start it up if it's not
	NULL.  No need to generate line commands.
	(cpp_finish): Expect no buffers stacked at all.  Take a
	printer argument, and flush the output buffer if it's not
	NULL.
	* cpplex.c (_cpp_lex_token): Return EOF if there's no buffer.
	Don't put two hashes at the beginning of an assertion.
	(cpp_get_token): Don't increment pfile->lineno or emit line
	commands here.  Return EOF if there's no buffer when we get
	EOF.
	* cpplib.c (do_define, skip_if_group):
	No need to disable line commands.
	(_cpp_output_line_command): Delete function.
	(do_line): Don't emit line commands here, but set things up so
	they will be emitted if necessary.  Use _cpp_fake_ihash to
	make unique nominal_fnames if necessary.
	(do_elif, do_else, _cpp_handle_eof): Call cpp_error_with_line
	with 0 for column, not -1.
	(_cpp_handle_eof): Don't set the control macro here.  Don't
	clear input_stack_listing_current here.  Don't emit line
	commands.

From-SVN: r33159
2000-04-14 23:29:45 +00:00
Zack Weinberg
8c389f849a cpphash.c (timestamp): Delete.
* cpphash.c (timestamp): Delete.
	(del_HASHNODE): If type is T_MCONST, free value.cpval.
	(special_symbol): Remove unnecessary braces.  Remove
	T_VERSION.  Treat T_STDC like T_CONST unless
	STDC_0_IN_SYSTEM_HEADERS.  Render both __DATE__ and __TIME__
	when one is encountered, then convert them into T_MCONST
	nodes.
	* cppinit.c (builtin_array): version_string is T_MCONST.
	__STDC__ has a "1" in its cpval.  Don't have a terminator
	entry.  Clean up which entries are dumped.
	(initialize_builtins): Only __STDC__ gets the special
	-traditional treatment.  Count the length of builtin_array.
	Render version_string here.
	* cpphash.h: Remove T_VERSION.  Add T_MCONST.
	* cpplib.h (struct cpp_reader): Remove timebuf.

From-SVN: r33047
2000-04-10 03:27:21 +00:00
Neil Booth
64aaf40718 cppexp.c (parse_charconst): Null does not end character constants.
* cppexp.c (parse_charconst): Null does not end character
	constants.
	* cppinit.c (ISTABLE): Null character handled as whitespace.
	* cpplex.c (null_warning):  new function.
	(skip_string): Emit warning if nulls encountered.
	(_cpp_skip_hspace): Emit warning if nulls encountered.
	(_cpp_lex_token): Emit warning if nulls encountered.  Drop
	them.
	* cpp.texi: Update.

From-SVN: r33013
2000-04-08 04:00:02 +00:00
Zack Weinberg
bfab56e7ab cppinit.c (cpp_start_read): Turn off -Wtraditional if processing C++.
* cppinit.c (cpp_start_read): Turn off -Wtraditional if
	processing C++.
	* cpplib.c (_cpp_handle_directive): Improve warnings for
	traditional C and indented directives.

	* enquire.c, gsyslimits.h, limity.h, config/convex/fixinc.convex,
	fixinc/fixinc.irix, fixinc/fixinc.sco, fixinc/fixinc.wrap,
	fixinc/inclhack.def: Indent the # of #include_next one space.
	* cp/rtti.c: Un-indent #if and #endif.

	* cppexp.c (_cpp_parse_expr): If lex returns '#', it's a
	syntax error, but an error has already been printed.
	* cpplex.c (_cpp_parse_assertion): Give a more specific error
	message when called with nothing remaining on the line.
	(_cpp_lex_token): If _cpp_parse_assertion fails, return an
	OTHER token, not an ASSERTION.
	* cpplib.c (do_assert): When we create a 'base' node, clear
	its aschain pointer.

	* gcc.c-torture/compile/981211-1.c: Move to...
	* gcc.dg/cpp-as1.c: ...here.
	* gcc.dg/cpp-as2.c: New file.

	* gcc.dg/cpp-tradwarn1.c: Change warning regexps to match the
	compiler.

From-SVN: r32870
2000-04-02 22:50:55 +00:00
Zack Weinberg
07aa0b04f2 cpplib.c: Include symcat.h.
* cpplib.c: Include symcat.h.  Add 'origin' field to struct
	directive.  Add origin values to DIRECTIVE_TABLE.  Generate
	the strings and function names on the fly.  Take the #sccs
	entry out of the table if SCCS_DIRECTIVE is not defined.
	(_cpp_handle_directive): Decide if the # was at the beginning
	of the line here.  Issue -pedantic warnings for extended
	directives here.  Warn about K+R directives with the #
	indented, and C89/extended directives with the # not indented,
	here.
	(do_import, do_include_next, do_warning, do_ident, do_sccs,
	do_assert, do_unassert): Don't issue pedantic warning here.

	* cpphash.h: Add CPP_WTRADITIONAL macro.
	* cpplib.h (struct cpp_options): Rename warn_stringify to
	warn_traditional; update comments.
	* cppinit.c (handle_option): Set warn_traditional not
	warn_stringify.
	* cpphash.c: Replace CPP_OPTION (pfile, warn_stringify) with
	CPP_WTRADITIONAL (pfile).
	* cpplex.c (_cpp_lex_token): Don't decide if directives should
	be ignored in -traditional mode here.

	* cpplex.c: Copy ISTABLE macros from cppinit.c, and adapt them
	to initialize speccase[] and trigraph_map[].  Delete all
	references to pfile->input_speccase.  Always treat '?' as a
	special character.  Remove table-initialization code from
	_cpp_init_input_buffer.

	* cpplib.h (struct cpp_reader): Remove input_speccase field.
	* cppinit.c (cpp_cleanup): Don't free input_speccase.

From-SVN: r32860
2000-04-01 22:55:25 +00:00
Zack Weinberg
46d0749798 cpplex.c: Copy ISTABLE macros from cppinit.c...
* cpplex.c: Copy ISTABLE macros from cppinit.c, and adapt them
	to initialize speccase[] and trigraph_map[].  Delete all
	references to pfile->input_speccase.  Always treat '?' as a
	special character.  Remove table-initialization code from
	_cpp_init_input_buffer.

	* cpplib.h (struct cpp_reader): Remove input_speccase field.
	* cppinit.c (cpp_cleanup): Don't free input_speccase.

From-SVN: r32858
2000-04-01 22:02:31 +00:00
Zack Weinberg
ae79697b72 cpplib.h: Merge struct cpp_options into struct cpp_reader.
* cpplib.h: Merge struct cpp_options into struct cpp_reader.
	Reorder struct cpp_options and struct cpp_reader for better
	packing.  Replace CPP_OPTIONS macro with CPP_OPTION which
	takes two args.  Change all 'char' flags to 'unsigned char'.
	Move show_column flag into struct cpp_options.  Don't
	prototype cpp_options_init.
	* cpphash.h, cpperror.c, cppexp.c, cppfiles.c, cpphash.c,
	cppinit.c, cpplex.c, cpplib.c:
	Replace CPP_OPTIONS (pfile)->whatever with
	CPP_OPTION (pfile, whatever), and likewise for
	opts = CPP_OPTIONS (pfile); ... opts->whatever;

	* cppinit.c (merge_include_chains): Take a cpp_reader *.
	Extract CPP_OPTION (pfile, pending) and work with that
	directly.
	(cpp_options_init): Delete.
	(cpp_reader_init): Turn on on-by-default options here.
	Allocate the pending structure here.
	(cl_options, enum opt_code): Define these from the same table,
	kept in a large macro.  Add -fshow-column and -fno-show-column
	options.

	* cpperror.c (v_message): If show_column is off, don't print
	the column number.

	* cppmain.c: Update for new interface.
	* fix-header.c: Likewise.

From-SVN: r32850
2000-03-31 23:16:11 +00:00
Zack Weinberg
4b3fe5b65e cppinit.c (cpp_start_read): Call initialize_dependency_output only after reading in the primary source file.
* cppinit.c (cpp_start_read): Call initialize_dependency_output
	only after reading in the primary source file.

From-SVN: r32825
2000-03-30 07:42:55 +00:00
Zack Weinberg
29a72a4f09 cppfiles.c (hash_IHASH): Just return i->hash.
2000-03-28  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (hash_IHASH): Just return i->hash.
	(cpp_included): Set dummy.hash using _cpp_calc_hash.  Use
	htab_find_with_hash.
	(cpp_read_file): Likewise.
	(find_include_file): Likewise.  Properly initialize
	ih->nshort.  Share ih->name and ih->nshort if possible.
	* cpphash.c (_cpp_calc_hash): New function.
	(hash_HASHNODE): Just return h->hash.
	(_cpp_lookup): Set dummy.hash using _cpp_calc_hash.  Use
	htab_find_with_hash.
	* cpphash.h: Prototype _cpp_calc_hash.
	* cppinit.c (initialize_builtins): Provide a valid hash
	to _cpp_make_hashnode, using _cpp_calc_hash.

	* cpphash.c (collect_expansion): # is not a special character
	in object-like macros.  In -traditional mode, /**/ is not
	token paste at the beginning or end of the line.
	* cpplib.c (do_include, do_import, do_include_next): If
	parse_include fails, return immediately.

From-SVN: r32792
2000-03-28 21:45:02 +00:00
Neil Booth
e1e97c4f15 cppinit.c (handle_option): Implement #unassert directive as -A- command line option.
2000-03-16  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (handle_option):  Implement #unassert directive
        as -A- command line option.
	(print_help):  Update.
	* cpptexi.c:  Update.

From-SVN: r32584
2000-03-16 14:15:17 +00:00
Zack Weinberg
45b966db65 Makefile.in (LIBCPP_OBJS): Add cpplex.o.
* Makefile.in (LIBCPP_OBJS): Add cpplex.o.
	(cpplex.o): New target.
	* po/POTFILES.in: Add cpplex.c.

	* cpplex.c (_cpp_grow_token_buffer, null_cleanup,
	cpp_push_buffer, cpp_pop_buffer, cpp_scan_buffer,
	cpp_expand_to_buffer, cpp_buf_line_and_col, cpp_file_buffer,
	skip_block_comment, skip_line_comment, skip_comment,
	copy_comment, _cpp_skip_hspace, _cpp_skip_rest_of_line,
	_cpp_parse_name, skip_string, parse_string,
	_cpp_parse_assertion, cpp_get_token, cpp_get_non_space_token,
	_cpp_get_directive_token, find_position,
	_cpp_read_and_prescan, _cpp_init_input_buffer): Move here.
	(maybe_macroexpand, _cpp_lex_token): New functions.

	* cpplib.c (SKIP_WHITE_SPACE, eval_if_expr, parse_set_mark,
	parse_goto_mark): Delete.
	(_cpp_handle_eof): New function.
	(_cpp_handle_directive): Rename from handle_directive.
	(_cpp_output_line_command): Rename from output_line_command.
	(do_if, do_elif): Call _cpp_parse_expr directly.
	* cppfiles.c (_cpp_read_include_file): Don't call
	init_input_buffer here.
	* cpphash.c (quote_string): Move here, rename _cpp_quote_string.
	* cppexp.c (_cpp_parse_expr): Diddle parsing_if_directive
	here; pop the token_buffer and skip the rest of the line here.
	* cppinit.c (cpp_start_read): Call _cpp_init_input_buffer
	here.

	* cpphash.h (CPP_RESERVE, CPP_IS_MACRO_BUFFER, ACTIVE_MARK_P):
	Define here.
	(CPP_SET_BUF_MARK, CPP_GOTO_BUF_MARK, CPP_SET_MARK,
	CPP_GOTO_MARK): New macros.
	(_cpp_quote_string, _cpp_parse_name, _cpp_skip_rest_of_line,
	_cpp_skip_hspace, _cpp_parse_assertion, _cpp_lex_token,
	_cpp_read_and_prescan, _cpp_init_input_buffer,
	_cpp_grow_token_buffer, _cpp_get_directive_token,
	_cpp_handle_directive, _cpp_handle_eof,
	_cpp_output_line_command): Prototype them here.
	* cpplib.h (enum cpp_token): Add CPP_MACRO.
	(CPP_RESERVE, get_directive_token, cpp_grow_buffer,
	quote_string, output_line_command): Remove.

From-SVN: r32513
2000-03-13 22:01:08 +00:00
Zack Weinberg
6feb772821 cpphash.c: Don't include version.h.
* cpphash.c: Don't include version.h.
	(special_symbol) [case T_VERSION]: Look for the string in
	hp->value.cpval; don't use version_string.
	* cppinit.c (initialize_builtins): Set hp->value.cpval for
	__VERSION__ to version_string.
	* Makefile.in (cpphash.o): Update deps.

From-SVN: r32499
2000-03-13 00:10:13 +00:00
Zack Weinberg
d35364d13e Convert cpplib to use libiberty/hashtab.c.
* cpplib.h (struct cpp_reader): Make hashtab and
	all_include_files of type 'struct htab *'.  Delete HASHSIZE
	and ALL_INCLUDE_HASHSIZE macros.

	* cpphash.h: Update prototypes.
	(struct hashnode): Remove next, prev, and bucket_hdr members.
	Make length a size_t.  Add hash member.
	(struct ihash): Remove next member.  Add hash member.  Make
	name a flexible array member.

	* cppfiles.c: Include hashtab.h.
	(include_hash): Delete.
	(IHASHSIZE): New macro.
	(hash_IHASH, eq_IHASH, _cpp_init_include_hash): New functions.
	(cpp_included): Do the hash lookup here.
	(_cpp_find_include_file): Rewrite.
	(cpp_read_file): Put the "fake" hash entry into the hash
	table.  Honor the control_macro, if it turns out we've seen
	the file before.  Don't push the buffer here.
	(_cpp_read_include_file): Push the buffer here.
	(OMODES): New macro.  Use it whenever we call open(2).

	* cpphash.c: Include hashtab.h.
	(hash_HASHNODE, eq_HASHNODE, del_HASHNODE, dump_hash_helper,
	_cpp_init_macro_hash, _cpp_dump_macro_hash, _cpp_make_hashnode,
	_cpp_lookup_slot): New functions.
	(HASHSIZE): new macro.
	(hashf, _cpp_install, _cpp_delete_macro): Delete.
	(_cpp_lookup): Use hashtab.h routines.

	* cppinit.c: Include hashtab.h.
	(cpp_reader_init): Call _cpp_init_macro_hash and
	_cpp_init_include_hash.  Don't allocate hashtab directly.
	(cpp_cleanup): Just call htab_delete on pfile->hashtab and
	pfile->all_include_files.
	(initialize_builtins): Use _cpp_make_hashnode and
	htab_find_slot to add hash entries.
	(cpp_finish): Just call _cpp_dump_macro_hash.
	* cpplib.c: Include hashtab.h.
	(do_define): Use _cpp_lookup_slot and _cpp_make_hashnode to
	create hash entries.
	(do_pragma_poison, do_assert): Likewise.
	(do_include): Don't push the buffer here.  Don't increment
	system_include_depth unless _cpp_read_include_file succeeds.
	(do_undef, do_unassert): Use _cpp_lookup_slot and htab_clear_slot
	or htab_remove_elt.
	(do_pragma_implementation): Use alloca to create copy.

	* Makefile.in: Update dependencies.

From-SVN: r32497
2000-03-12 23:46:05 +00:00
Kaveh R. Ghazi
8be1ddcacc * cppinit.c (cl_directive_handler): More K&R fixing.
From-SVN: r32490
2000-03-12 13:55:52 +00:00
Kaveh R. Ghazi
5e2ee78da9 cppinit.c (no_arg, [...]): Change from char[] to macros.
* cppinit.c (no_arg, no_ass, no_dir, no_fil, no_mac, no_pth):
	Change from char[] to macros.

From-SVN: r32486
2000-03-12 04:33:26 +00:00
Neil Booth
b1b74f9370 cppinit.c (cpp_start_read): Update indirect function call to K&R C.
2000-03-12  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (cpp_start_read): Update indirect function
	call to K&R C.

From-SVN: r32485
2000-03-12 00:32:01 +00:00
Neil Booth
40eac643be cppinit.c (struct pending option): Replace undef with a pointer to a directive handling routine.
2000-03-11  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (struct pending option): Replace undef with a
	pointer to a directive handling routine.
	(struct cpp_pending): Replace separate assert_ and define_
	lists with one directive_ list.
	(new_pending_define): Rename new_pending_directive. Extra
	argument is the directive's handling routine.
	(handle_option): Update to use new_pending_directive.

From-SVN: r32481
2000-03-11 09:13:00 +00:00
Neil Booth
7ceb3598d8 cppfiles.c (file_cleanup, [...]): Replace bcopy(), index() etc calls.
* cppfiles.c (file_cleanup, _cpp_find_include_file,
	remap_filename, _cpp_read_include_file, actual_directory,
	hack_vms_include_specification): Replace bcopy(), index() etc
	calls.  Add casts to some allocations.  Make some variables
 	pointers to const [unsigned] char.
	* cpphash.c (_cpp_install, macro_cleanup, collect_expansion,
	collect_formal_parameters): Similarly.
	* cppinit.c (struct pending_option, append_include_chain,
	cpp_options_init, cpp_reader_init, initialize_standard_includes,
	cpp_start_read, new_pending_define, handle_option): Similarly.
	* cpplib.c (cpp_define, copy_comment, do_define, do_include,
	do_undef, do_error, do_warning, do_pragma, do_pragma_once,
	do_pragma_implementation, detect_if_not_defined,
	do_ifdef, skip_if_group, cpp_get_token, parse_string,
	do_assert, do_unassert): Similarly.
	* cpplib.h (cpp_buffer, cpp_options): Update types.  Update
	function prototypes.
	* mkdeps.c (deps_add_target, deps_add_dep): cast allocations.

From-SVN: r32477
2000-03-11 00:49:44 +00:00
Zack Weinberg
88ae23e71d Makefile.in (LIBCPP_DEPS): New macro.
* Makefile.in (LIBCPP_DEPS): New macro.
	(cpplib.o, cpphash.o, cpperror.o, cppexp.o, cppfiles.o): Use
	it to declare deps.
	* cpperror.c: Include cpphash.h.
	* cppexp.c: Include cpphash.h.  Remove MULTIBYTE_CHARS
	dingleberry.
	(lex): Don't use CPP_WARN_UNDEF.
	(_cpp_parse_expr): Return an int, the truth value.
	* cppfiles.c: Include cpphash.h.
	(_cpp_merge_include_chains): Move to cppinit.c and make static.
	* cppinit.c (include_defaults_array): Disentangle.
	(cpp_cleanup): Don't free the if stack here.
	(cpp_finish): Pop off all buffers, not just one.
	* cpplib.c (eval_if_expr): Return int.
	(do_xifdef): Rename do_ifdef.
	(handle_directive): Don't use CPP_PREPROCESSED.
	(cpp_get_token): Don't use CPP_C89.
	* fix-header.c: Don't use CPP_OPTIONS.

	* cpplib.h: Move U_CHAR, enum node_type, struct
	file_name_list, struct ihash, is_idchar, is_idstart,
	is_numchar, is_numstart, is_hspace, is_space, CPP_BUF_PEEK,
	CPP_BUF_GET, CPP_FORWARD, CPP_PUTS, CPP_PUTS_Q, CPP_PUTC,
	CPP_PUTC_Q, CPP_NUL_TERMINATE, CPP_NUL_TERMINATE_Q,
	CPP_BUMP_BUFFER_LINE, CPP_BUMP_LINE, CPP_PREV_BUFFER,
	CPP_PRINT_DEPS, CPP_TRADITIONAL, CPP_PEDANTIC, and prototypes
	of _cpp_simplify_pathname, _cpp_find_include_file,
	_cpp_read_include_file, and _cpp_parse_expr to cpphash.h.
	Move struct if_stack to cpplib.c.  Move struct cpp_pending to
	cppinit.c.
	Change all uses of U_CHAR to be unsigned char instead.
	Delete CPP_WARN_UNDEF, CPP_C89, and CPP_PREPROCESSED.

From-SVN: r32435
2000-03-08 23:35:19 +00:00
Zack Weinberg
38b24ee220 cpplib.h (parse_underflow_t, [...]): Delete.
* cpplib.h (parse_underflow_t, CPP_NULL_BUFFER): Delete.
	(struct cpp_buffer): Remove fname and underflow fields.
	(struct cpp_reader): Remove get_token field.
	(struct include_hash): Rename to struct ihash.  Add typedef to
	IHASH.
	(struct if_stack): Remove fname field.
	(IF_STACK_FRAME): Rename to IF_STACK.

	* cpperror.c (print_containing_files): Trust that there are no
	macro buffers below the top file buffer.
	* cppfiles.c: Replace all references to 'struct include_hash'
	with 'IHASH'.  Rename initialize_input_buffer to
	init_input_buffer.  Don't set or reference cpp_buffer->fname,
	use buffer->ihash->name instead.
	* cpphash.c (special_symbol): Use cpp_file_buffer.  Use NULL
	not CPP_NULL_BUFFER.
	* cppinit.c: Use NULL not CPP_NULL_BUFFER, IF_STACK not
	IF_STACK_FRAME, IHASH not struct include_hash.
	* cpplib.c: Rename eval_if_expression to eval_if_expr.  Remove
	null_underflow.  Use IF_STACK not IF_STACK_FRAME, IHASH not
	struct include_hash, NULL not CPP_NULL_BUFFER.  Remove all
	references to cpp_buffer->fname (delete entirely, or use
	->ihash->name instead) and IF_STACK->fname.
	(cpp_push_buffer): Don't set new->underflow.
	(do_include): Use cpp_file_buffer.

	* cpphash.c (collect_formal_parameters): Remove duplicate
	increment of argslen.  Pedwarn in C99 mode if __VA_ARGS__ is
	used as a macro argument name.  Don't append "..." to namebuf
	for varargs macros.  After we're done scanning, go through
	namebuf and make it NUL separated, not comma separated.
	(_cpp_compare_defs): Remove register tag from variables.
	Expect defn->argnames to be NUL separated.
	(_cpp_dump_definition): Expect defn->argnames to be NUL
	separated and in forward order.
	* cpphash.h: Update documentation of argnames field.

From-SVN: r32430
2000-03-08 20:37:23 +00:00
Zack Weinberg
e23c0ba36f [multiple changes]
2000-03-07  Neil Booth  <NeilB@earthling.net>

	* cppexp.c (struct operation, left_shift, right_shift,
	cpp_parse_expr): Change some "char"s to "U_CHAR"s, and some
	"int"s to "unsigned int"s.
	* cpplib.c (detect_if_not_defined, do_assert, do_unassert):
	Similarly.
	* cpplib.h: Update for above.
	* mkdeps.c (deps_init, deps_calc_target): Cast pointers
	returned from allocations.

	* cppinit.c (opt_comp, parse_options): New functions.
	(handle_option): Use parse_option to parse a single command
	line option, that possibly takes an argument.
	(cpp_handle_options): Sort the array of command line options on
	first invocation (non-ASCII hosts only).
	(print_help): Update.

2000-03-07  Zack Weinberg  <zack@wolery.cumb.org>

	* mkdeps.c (munge): Fix off-by-one bug and inconsistencies in
	backslash counting loops.  Problem noted by Matt Kraai <kraai@ghs.com>.

From-SVN: r32394
2000-03-07 23:11:06 +00:00
Zack Weinberg
b0699daddf cppfiles.c (_cpp_find_include_file): Make sure ih->name is initialized.
* cppfiles.c (_cpp_find_include_file): Make sure ih->name is
	initialized.
	* cppinit.c (cpp_cleanup): Free imp->nshort also.

	* cpperror.c (cpp_print_containing_files,
	cpp_print_file_and_line, v_cpp_message): Rename to
	print_containing_files, print_file_and_line, and v_message.
	* cppexp.c (cpp_parse_expr, cpp_parse_escape, cpp_lex): Rename
	to _cpp_parse_expr, parse_escape, and lex.
	(parse_charconst): Remove broken multibyte support.
	* cppfiles.c (include_hash): Make static.
	(cpp_included): New function.
	(merge_include_chains, find_include_file, finclude,
	simplify_pathname): Rename to _cpp_merge_include_chains,
	_cpp_find_include_file, _cpp_read_include_file, and
	_cpp_simplify_pathname.
	* cpphash.c (cpp_lookup, free_definition, delete_macro,
	cpp_install, create_definition, macroexpand, compare_defs,
	dump_definition): Rename to _cpp_lookup, _cpp_free_definition,
	_cpp_delete_macro, _cpp_install, _cpp_create_definition,
	_cpp_macroexpand, _cpp_compare_defs, and _cpp_dump_definition.
	* cppinit.c (cpp_handle_option): Rename to handle_option, make
	static.
	* cpplib.c: Remove extern prototype of cpp_parse_expr.

	* cpphash.h: Update prototypes.
	* cpplib.h: Likewise.  Prototype _cpp_parse_expr here.

From-SVN: r32390
2000-03-07 20:58:47 +00:00
Kaveh R. Ghazi
fd05eb8097 builtins.c (built_in_class_names, [...]): Constify a char*.
* builtins.c (built_in_class_names, built_in_names): Constify a
	char*.

	* gmon-sol2.c (monstartup, moncontrol): Cast ptrs to long, not
	int.
	(_mcleanup): Ensure value matches format specifier in sprintf.

	* cpphash.c (special_symbol): Don't needlessly cast away
	const-ness.

	* cppinit.c (base_name): Delete unused prototype.

	* mkdeps.c (deps_init): Make definition K&R safe.

	* tree.h (built_in_class_names, built_in_names): Constify a
	char*.

f:
	* ansify.c (die_unless): Don't use ANSI string concatenation.
	(die): Mark with ATTRIBUTE_NORETURN.

From-SVN: r32364
2000-03-06 18:03:55 +00:00
Zack Weinberg
49e6c08e21 mkdeps.c, mkdeps.h: New files.
* mkdeps.c, mkdeps.h: New files.
	* po/POTFILES.in: Add them.
	* Makefile.in (LIBCPP_OBJS): Add mkdeps.o.
	(cpplib.o, cppinit.o): Depend on mkdeps.h.
	(mkdeps.o): New target.

	* cppfiles.c: Delete deps_output.
	* cppinit.c: Include mkdeps.h.  Delete known_suffixes,
	OBJECT_SUFFIX, and base_name.
	(cpp_cleanup): Use deps_free.  Free ihash->name when clearing
	the include hash.
	(initialize_dependency_output): Use deps_init,
	deps_add_target, deps_calc_target, and deps_add_dep.  Remove
	all the unnecessary string bashing.
	(cpp_finish): Use deps_write.  Remove an unnecessary nesting
	level.
	* cpplib.c (do_include): Use deps_add_dep.
	* cpplib.h (struct cpp_reader): Replace deps_buffer,
	deps_allocated_size, deps_size, deps_column members with
	single pointer to a struct deps.  Delete prototype of
	deps_output.

From-SVN: r32329
2000-03-04 19:42:04 +00:00
Zack Weinberg
c649121029 * cppinit.c: Fix thinko in previous patch.
From-SVN: r32327
2000-03-04 17:53:04 +00:00
Zack Weinberg
455d25861f cpplib.h (_dollar_ok): New macro.
* cpplib.h (_dollar_ok): New macro.
	(is_idchar, is_idstart): Use it.
	(IStable): Rename to _cpp_IStable.  Declare it const if
	gcc >=2.7 or C99.  Delete all references to FAKE_CONST.
	(is_idchar, is_idstart, is_numchar, is_numstart, is_hspace,
	is_space): Update for renamed IStable.

	* cppinit.c: Delete all references to FAKE_CONST and CAT
	macros. Define init_IStable as empty macro if gcc >=2.7 or
	C99. Change TABLE() to ISTABLE and hardcode name of table.
	(cpp_start_read): Don't change the IStable based on
	dollars_in_ident.

	* cpphash.c (unsafe_chars): Add pfile argument.  All callers
	changed.  Handle '$' for char1 correctly.
	* cpplib.c (cpp_get_token): Use is_numchar when parsing numbers.

	* cppexp.c (tokentab2): Make const.
	(cpp_lex): Make toktab const.
	* cppinit.c (include_defaults_array): Make const.
	(initialize_standard_includes): Make default_include const.

From-SVN: r32321
2000-03-04 01:42:56 +00:00
Zack Weinberg
49634cde48 cppinit.c (cpp_handle_option): Set opts->pedantic directly.
* cppinit.c (cpp_handle_option): Set opts->pedantic directly.
	* cpplib.h: Delete SET_CPP_PEDANTIC.

From-SVN: r32318
2000-03-04 00:11:40 +00:00
Jason Merrill
6fdf191de4 * cppinit.c (cpp_handle_option): Use SET_CPP_PEDANTIC.
From-SVN: r32312
2000-03-03 12:09:46 -05:00
Zack Weinberg
c45da1ca92 cppfiles.c (cpp_read_file): New function.
* cppfiles.c (cpp_read_file): New function.

	* cpphash.c (collect_expansion): Make sure to reset last_token
	to NORM when we hit a string.  Handle trailing whitespace
	properly when the expansion is empty.
	(create_definition): Disable line commands while parsing the
	directive line.
	(dump_definition): If pfile->lineno == 0, output a line
	command ahead of the dump, and add a trailing newline.

	* cppinit.c (append_include_chain): Add fifth argument, which
	indicates whether or not system headers are C++ aware.
	(initialize_standard_includes): New function,
	broken out of read_and_prescan.  Pass 'cxx_aware' value from
	the include_defaults_array on to append_include_chain.
	(dump_special_to_buffer): Const-ify char array.
	(builtin_array): Don't dump __BASE_FILE__.
	(cpp_start_read): Use cpp_read_file.  Reorder code for
	clarity.  Don't output line commands here for -D/-A/-U
	switches.  Don't call deps_output for files included with
	-include or -imacros.

	* cpplib.c (do_define): Don't pay any attention to the second
	argument.
	(cpp_expand_to_buffer): Disable line commands while scanning.
	(output_line_command): Work in the file buffer.
	* cpplib.h: Remove no_record_file flag from struct cpp_reader.
	Fix formatting of comments.  Prototype cpp_read_file.

From-SVN: r32293
2000-03-02 20:14:32 +00:00
Zack Weinberg
ba412f14ad cpplib.h (CPP_ASSERTION, [...]): New token types.
* cpplib.h (CPP_ASSERTION, CPP_STRINGIZE, CPP_TOKPASTE): New
	token types.
	(struct cpp_reader): Add parsing_if_directive and
	parsing_define_directive flags.
	(struct cpp_options): Remove output_conditionals flag.
	(check_macro_name): Delete prototype.

	* cpphash.h (struct macrodef): Delete.
	(struct reflist): Separate from struct definition.
	(struct definition): Remove unused fields.  Add column number.
	(create_definition): Returns a DEFINITION *.  Takes a
	cpp_reader * and an int.

	* cpphash.c (SKIP_WHITE_SPACE): Delete.
	(PEEKC): Copy defn from cpplib.c.
	(rest_extension, REST_EXTENSION_LENGTH): Delete.
	(struct arg): New.
	(struct arglist): Simplify.
	(collect_expansion): Rewrite.  Get tokens by calling
	cpp_get_token.  Add more error checking.
	(collect_formal_parameters): New function, broken out of
	create_definition and reworked to use get_directive_token.
	(create_definition): All real work is now in collect_expansion
	and collect_formal_parameters.  do_define handles finding the
	macro name.  Return a DEFINITION, not a MACRODEF.
	(macroexpand): Replace bcopy with memcpy throughout.  Replace
	character-at-a-time copy loop with memcpy and pointer increments.
	(compare-defs): d1->argnames / d2->argnames might be null.

	* cpplib.c (copy_rest_of_line): Delete function.
	(skip_rest_of_line): Do all the work ourselves.
	(skip_string): New function.
	(parse_string): Use skip_string.
	(get_macro_name): New function.
	(check_macro_name): Delete.
	(copy_comment): Use CPP_RESERVE and CPP_PUTC_Q.
	(cpp_skip_hspace): Use CPP_BUMP_LINE.
	(handle_directive): ICE if we're called on a macro buffer.
	(do_define): Determine macro name and type (funlike/objlike)
	here.  Expunge all uses of MACRODEF.
	(cpp_push_buffer): Set line_base to NULL.
	(do_undef, read_line_number): Don't worry about getting a POP token.
	(eval_if_expression): Set/reset parsing_if_directive around
	cpp_parse_expr. Don't clear only_seen_white.
	(skip_if_group): Remove output_conditionals logic.  Use
	skip_rest_of_line.
	(cpp_get_token): Return ASSERTION, STRINGIZE, and TOKPASTE
	tokens under appropriate conditions.
	(cpp_unassert): Call do_unassert not do_assert.  Oops.

	* cppexp.c (parse_defined): New function, break out of
	cpp_lex.
	(cpp_lex): We now get CPP_ASSERTION tokens and can check them
	ourselves, with cpp_defined.
	* cppinit.c (cpp_handle_option, print_help): Delete -ifoutput.

	* gcc.dg/20000209-2.c: Turn off -pedantic-errors.
	* gcc.dg/strpaste-2.c: New.

From-SVN: r32274
2000-03-01 00:57:09 +00:00
Zack Weinberg
0209c3409d tm.texi: Document new target switch, NO_BUILTIN_WCHAR_TYPE.
* tm.texi: Document new target switch, NO_BUILTIN_WCHAR_TYPE.
	* cppinit.c (builtin_array): Define __WCHAR_TYPE__ only if
	NO_BUILTIN_WCHAR_TYPE is not defined.
	(CPP_WCHAR_TYPE): Delete.
	* cccp.c (main): Don't change wchar_type if cplusplus.
	(special_symbol, initialize_builtins): Honor NO_BUILTIN_WCHAR_TYPE.

From-SVN: r32241
2000-02-28 21:09:54 +00:00
Jeff Law
5e7b4e2509 Fix copyrights.
From-SVN: r32173
2000-02-25 22:59:31 -07:00
Richard Kenner
c8d8ed65a5 bitmap.c (bitmap_operation): Avoid using -1 for index since unsigned.
* bitmap.c (bitmap_operation): Avoid using -1 for index since unsigned.
	* cppinit.c (new_pending_define): Add cast to avoid warning.
	* expmed.c (extract_bit_field): Likewise.
	* flow.c (enum reorder_skip_type): New type.
	(skip_insns_between_blcok): New it.
	Rework to avoid warning about possibly undefined variable.
	* function.c (assign_parms): Make thisparm_boundary unsigned.
	* genrecog.c (write_switch): Cast XWINT result to int.
	* lcm.c: Many static fcns and vars now #ifdef OPTIMIZE_MODE_SWITCHING.
	* mips-tfile.c (init_file): Make two versions of FDR intializer:
	one for MIPS and one for Alpha.
	(get_tag, copy_object): Add casts to avoid warnings.
	* optabs.c (init_one_libfunc): Cast NAME to (char *).
	* reload.c (find_reloads): Make TYPE enum reload_type.
	* sbitmap.c (dump_sbitmap): J is unsigned; don't use "1L".
	* unroll.c (unroll_loop): Initialize UNROLL_NUMBER.
	* varasm.c (compare_constant_1): Add cast to avoid warning.
	* config/alpha/alpha.c (alpha_emit_xfloating_libcall): Cast FUNC
	to (char *).
	(alpha_expand_unaligned_load, alpha_expand_unaligned_store):
 	Cast switch operand of size to int.
	(alpha_expand_epilogue): Always initialize fp_offset and sa_reg.
	* config/alpha/alpha.h (INITIAL_ELIMINATION_OFFSET): Add abort
	in unhandled case.

From-SVN: r32060
2000-02-18 20:27:00 -05:00
Kaveh R. Ghazi
9f8f4efee3 Makefile.in (TREE_H, [...]): Depend on version.h.
* Makefile.in (TREE_H, collect2.o, gcc.h, mips-tfile.o, cccp.o,
	cpphash.o, cppinit.o, protoize.o, unprotoize.o): Depend on version.h.

	* cccp.c: Include version.h and/or don't declare `version_string'.
	* collect2.c: Likewise.
	* alpha.c: Likewise.
	* arm/aof.h: Likewise.
	* arm/coff.h: Likewise.
	* arm/elf.h: Likewise.
	* arm/pe.h: Likewise.
	* arm/tcoff.h: Likewise.
	* arm/telf.h: Likewise.
	* arm/tpe.h: Likewise.
	* arm/vxarm.h: Likewise.
	* convex/convex.c: Likewise.
	* i386/dgux.c: Likewise.
	* i386/sun386.h: Likewise.
	* m88k/m88k.c: Likewise.
	* mcore/mcore-pe.h: Likewise.
	* mips/mips.h: Likewise.
	* romp/romp.h: Likewise.
	* sh/sh.c: Likewise.
	* cpphash.c: Likewise.
	* cppinit.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* gcc.c: Likewise.
	* gcc.h: Likewise.
	* mips-tfile.c: Likewise.
	* protoize.c: Likewise.
	* toplev.c: Likewise.
	* tree.h: Likewise.

	* version.c (version_string): Constify a char*.

	* version.h: New file.

ch:
	* grant.c: Don't declare `version_string'.

f:
	* g77spec.c: Don't declare `version_string'.

java:
	* Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
	version.o.
	(jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.

	* gjavah.c: Include version.h.

	* jcf-dump.c: Likewise.

	* jv-scan.c: Likewise.

From-SVN: r31984
2000-02-15 16:36:35 +00:00
Zack Weinberg
a2a76ce71b cpphash.c: Fix formatting, update commentary.
* cpphash.c: Fix formatting, update commentary.
	(dump_definition): Take three separate arguments instead of a
	MACRODEF structure argument.
	* cpphash.h: Update prototype of dump_definition.
	* cppinit.c (cpp_finish): Update call of dump_definition.

	* cpplib.c (do_define): Always create new hash entry with
	T_MACRO type.  Remove redundant check for redefinition of
	poisoned identifier.  Update call of dump_definition.
	(do_undef): Don't call check_macro_name.  Rename sym_length to
	len.
	(do_error, do_warning): Don't use copy_rest_of_line or
	SKIP_WHITE_SPACE.
	(do_warning): Don't use pedwarn for the actual warning,
	only the notice about its not being in the standard.  (Fixes
	bug with #warning in system headers.)
	(do_ident): Stricter argument checking - accept only a single
	string after #ident.  Also, macro-expand the line.
	(do_xifdef): Use cpp_defined.  De-obfuscate.

	(do_pragma): Split out specific pragma handling to separate
	functions.  Use get_directive_token.  Update commentary.  Do
	not pass on #pragma once or #pragma poison to the front end.
	(do_pragma_once, do_pragma_implementation, do_pragma_poison,
	do_pragma_default): New.

From-SVN: r31931
2000-02-11 20:17:27 +00:00
Zack Weinberg
bb52fa7f86 cpplib.h: Provide HASHNODE typedef and forward decl of struct hashnode only.
* cpplib.h: Provide HASHNODE typedef and forward decl of
	struct hashnode only.  Kill cpp_hashnode typedef.  MACRODEF,
	DEFINITION, struct hashnode, struct macrodef, struct
	definition, scan_decls prototype, default defn of
	INCLUDE_LEN_FUDGE moved elsewhere.

	* cpphash.h: MACRODEF, DEFINITION, struct macrodef, struct
	definition, and struct hashnode moved here. Remove the unused
	'predefined' field from struct definition.  Replace the 'args'
	union with its sole member.  All users updated (cpphash.c).
	Delete HASHSTEP and MAKE_POS macros, and hashf prototype.  Add
	multiple include guard.

	* cpphash.c (hashf): Make static; use better algorithm; drop
	HASHSIZE parameter; return an unsigned int.
	(cpp_lookup): Drop HASH parameter.  PFILE parameter is
	used. Calculate HASHSIZE modulus here.
	(cpp_install): Drop HASH parameter. Calculate HASHSIZE modulus
	here.
	(create_definition): Drop PREDEFINITION parameter.
	* cpplib.c (do_define): Don't calculate a hash value here.
	Don't pass (keyword == NULL) to create_definition.

	* scan.h: Prototype scan_decls here.
	* cppfiles.c: Move INCLUDE_LEN_FUDGE default defn here.
	* cppexp.c, cppfiles.c, cppinit.c, cpplib.c, fix-header.c: All
	callers of cpp_lookup and cpp_install updated.

From-SVN: r31881
2000-02-10 02:23:08 +00:00
Zack Weinberg
564ad5f49e cpphash.c (macarg): Hoist all the flag diddling out of the function...
* cpphash.c (macarg): Hoist all the flag diddling out of the
	function...
	(macroexpand): ... and out of the loop that calls macarg.
	Skip over the initial paren before macro arguments with
	cpp_get_non_space_token; point may be some distance before
	that paren.  Abort if it's not there.

	* cpplib.c (parse_clear_mark): Delete function.
	(parse_set_mark, parse_goto_mark): Make static.
	(ACTIVE_MARK_P): New macro.
	(skip_block_comment, skip_line_comment): Do not bump the line
	if ACTIVE_MARK_P is true.
	(cpp_pop_buffer): The buffer to be popped may not have an
	active mark.
	(cpp_get_token): When looking for the initial paren before
	macro arguments, only set a mark in a file buffer, Always
	return to that mark before proceeding to call macroexpand or
	return a NAME token.

	* cpplib.h: Remove prototypes of parse_set_mark,
	parse_clear_mark, parse_goto_mark.
	(struct cpp_options): Rename 'put_out_comments' to
	'discard_comments' and invert its sense.
	* cppinit.c, cpphash.c, cpplib.c: All users of
	put_out_comments changed to use discard_comments, with
	opposite sense.

From-SVN: r31879
2000-02-10 00:26:47 +00:00
Zack Weinberg
981cb4378a [multiple changes]
2000-02-07  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (deps_output): Count spacers in deps_column.

2000-02-07  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (initialize_dependency_output): If there is no
	suffix, don't try to look for known suffixes.  Use strrchr.
	(cpp_start_read): Remove duplicate initialization.

From-SVN: r31832
2000-02-07 18:34:05 +00:00
Zack Weinberg
c1212d2f09 cpplib.c (my_strerror, [...]): Move to cpperror.c.
* cpplib.c (my_strerror, cpp_error, cpp_error_with_line,
	cpp_error_from_errno, cpp_warning, cpp_warning_with_line,
	cpp_pedwarn, cpp_pedwarn_with_line,
	cpp_pedwarn_with_file_and_line): Move to cpperror.c.
	(cpp_print_file_and_line, v_cpp_error, v_cpp_warning,
	v_cpp_error_with_line, v_cpp_warning_with_line,
	cpp_message_from_errno, cpp_perror_with_name): Delete.

	* cpperror.c (cpp_print_containing_files): Take starting
	buffer as argument.
	(cpp_file_line_for_message): Rename to cpp_print_file_and_line.
	(v_cpp_message): Now called directly by all entry points.
	Remove -1 case.
	(cpp_pfatal_with_name, cpp_message): Delete.
	(cpp_notice_from_errno, cpp_ice): New functions.
	(cpp_notice): Is now for reporting error conditions, just
	without an associated file.
	(cpp_error, cpp_error_with_line): Don't do anything if
	opts->inhibit_errors is on.
	(cpp_pedwarn_with_file_and_line): Take column argument also.

	* cpplib.h: Update prototypes of exported functions.
	(struct cpp_options): Add inhibit_errors.

	* cppalloc.c, cppfiles.c: Use fprintf not cpp_notice for
	non-error messages.  Include intl.h.

	* cppinit.c, cppmain.c: Likewise.  Also, use
	cpp_notice_from_errno instead of cpp_perror_with_name or
	cpp_pfatal_with_name, and cpp_notice instead of cpp_message.

	* cppexp.c, cpphash.c, cppinit.c, cpplib.c: Use cpp_ice to
	report internal errors.

	* cpplib.c (do_define): Switch bcopy to memcpy.
	Give cpp_pedwarn_with_file_and_line a dummy column argument.

From-SVN: r31829
2000-02-06 23:46:18 +00:00
Zack Weinberg
40ea76de51 cpperror.c: Remove #ifdef EMACS block.
* cpperror.c: Remove #ifdef EMACS block.
	* cppmain.c: Likewise.
	* cpphash.c: Remove #if 0 blocks.
	* cppinit.c: Remove #if 0 blocks, and the -lint option.
	* cpplib.c: Remove #if 0 blocks and code referencing
	pcp_inside_if or for_lint.  Remove duplicate error message.
	Fix error messages for #else after #else or #elif.  Reformat.
	Remove archaic TODO list.
	* cpplib.h: Remove pcp_inside_if and for_lint flags.

From-SVN: r31817
2000-02-06 07:30:25 +00:00
Kaveh R. Ghazi
c69916605c Makefile.in (c-common.o): Depend on $(EXPR_H).
* Makefile.in (c-common.o): Depend on $(EXPR_H).

	* c-common.c: Include expr.h.

	* c-pragma.c (mark_align_stack): Add prototype.

	* caller-save.c (add_stored_regs): Likewise.

	* combine.c (record_promoted_value): Likewise.

	* i386.c (ix86_sched_reorder_pentium, ix86_sched_reorder_ppro):
	Likewise.

	* cppinit.c (new_pending_define): Likewise.

	* cpplib.c (skip_block_comment, skip_line_comment): Likewise.

	* dwarf2out.c (save_rtx, splice_child_die, reverse_die_lists,
	AT_class, AT_flag, AT_int, AT_unsigned, AT_string, AT_ref, AT_loc,
	AT_addr, AT_lbl, get_AT_ref, free_AT, free_die, local_scope_p,
	class_scope_p): Likewise.

	* dwarf2out.h (dwarf2out_set_demangle_name_func,
	dwarf2out_add_library_unit_info): Likewise.

	* ggc.h (ggc_page_print_statistics): Likewise.

	* haifa-sched.c (propagate_deps): Likewise.

	* reg-stack.c (next_flags_user, record_label_references): Likewise.

	* rtl.h (set_stack_check_libfunc): Likewise.

	* toplev.h (set_fatal_function): Likewise.

	* toplev.c (set_fatal_function): Delete prototype.

	* diagnostic.c: Deconstify functions returning malloc'ed ptrs.

From-SVN: r31810
2000-02-06 03:40:46 +00:00