Commit Graph

69 Commits

Author SHA1 Message Date
Zack Weinberg
cf4ed945ea cppexp.c: Don't include cpphash.h.
* cppexp.c: Don't include cpphash.h.
	(parse_charconst, cpp_lex): Use cpp_defined.
	(cpp_lex): Use get_directive_token throughout.  Remove
	unnecessary cases from switch.  Move assertion-handling code
	down to OTHER case.
	(cpp_parse_expr): If we see '+' or '-', check the context to
	determine if they are unary or binary operators.  Streamline
	the jumps a bit.  Do not call skip_rest_of_line.

	* cpplib.c: Make skip_rest_of_line and cpp_skip_hspace
	static.  Export get_directive_token.  Update commentary.
	(cpp_defined): New function.
	(do_define): Remove reference to T_PCSTRING.  Call
	free_definition to release memory for old definition, when
	redefining a macro.
	(eval_if_expression): Set only_seen_white to 0 before calling
	cpp_parse_expr.  Call skip_rest_of_line after it returns.
	(cpp_read_check_assertion): Don't preserve a pointer into the
	token buffer across a call to cpp_get_token.

	* Makefile.in (cppexp.o): Don't depend on cpphash.h.
	* cppfiles.c (redundant_include_p): Use cpp_defined.
	* cpphash.c (free_definition): New function.
	(delete_macro): Use it.  Update commentary.
	* cpphash.h: Typedef HASHNODE here.  Prototype cpp_lookup and
	free_definition.
	* cpplib.h: Don't typedef HASHNODE here. Delete T_PCSTRING
	from enum node_type.  Prototype cpp_defined and get_directive_token.
	Don't prototype cpp_lookup, skip_rest_of_line, or cpp_skip_hspace.

	* fix-header.c (check_macro_names): Use cpp_defined.
	(read_scan_file): Set inhibit_warnings and inhibit_errors in
	the options structure.

From-SVN: r31908
2000-02-10 23:47:04 +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
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
1316f1f7fc cppalloc.c: Update copyright.
* cppalloc.c: Update copyright.
	* cpplib.c: Merge all the static function prototypes into one
	block.
	* cpplib.h: Remove #if 0 block.

From-SVN: r31818
2000-02-06 07:53:50 +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
Zack Weinberg
5237f531da cpplib.h (cpp_reader): Add new flag, no_directives.
* cpplib.h (cpp_reader): Add new flag, no_directives.
	* cpphash.c (macarg): Set it.
	* cpplib.c (handle_directive): If no_directives is on and we
	find a directive, issue an error and discard the line.

From-SVN: r31763
2000-02-02 21:41:35 +00:00
Ulrich Drepper
3194854770 Adjust variable names, comments, help strings to c99.
From-SVN: r31689
2000-01-29 18:59:40 +00:00
Zack Weinberg
75ec21db30 cppinit.c (cpp_handle_option): Recognize C++ comments under -std=gnu89.
* cppinit.c (cpp_handle_option): Recognize C++ comments under
	-std=gnu89.
	* cpplib.c (skip_block_comment, skip_line_comment): Split code
	out of...
	(skip_comment) ... here.  Permit C++ comments in system
	headers always.  Warn about C++ comments in user code under
	-std=gnu89 -pedantic.
	(copy_comment): Use skip_comment.
	(cpp_skip_hspace, cpp_get_token): skip_comment can no longer
	return EOF.
	(consider_directive_while_skipping, do_else, do_endif): Call
	validate_else unconditionally.
	(validate_else): Check CPP_PEDANTIC here.  Accept non-comment
	text after the conditional in a system header.
	* cpplib.h (struct cpp_buffer): Add flag
	warned_cplusplus_comments.

From-SVN: r31654
2000-01-27 22:29:07 +00:00
Kaveh Ghazi
e774613011 more copyright nits
From-SVN: r31527
2000-01-19 23:47:13 +00:00
Kaveh R. Ghazi
f84c201879 cppalloc.c: PROTO -> PARAMS.
* cppalloc.c: PROTO -> PARAMS.
        * cpperror.c: Likewise.
        * cppfiles.c: Likewise.
        * cpplib.c: Likewise.
        * cpplib.h: Likewise.

From-SVN: r31521
2000-01-19 22:52:43 +00:00
Zack Weinberg
40c79d58a3 cpplib.h (struct cpp_options): Change lang_asm to char.
2000-01-11 16:24 -0800  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (struct cpp_options): Change lang_asm to char.
	Add lang_fortran.
	* cppinit.c (builtin_array): Take out __STDC_VERSION__, it's
	done in cpp_handle_option now.
	(initialize_builtins): Take out special case code used only by
	__STDC_VERSION__.
	(cpp_handle_option): Turn off trigraphs and trigraph warnings
	if -traditional.  Recognize -lang-fortran and set
	lang_fortran, also turn off cplusplus_comments.
	(print_help): Document -lang-fortran.
	* cpplib.c (handle_directive): Ignore `# 123 "file"' if
	lang_asm. Ignore all directives other than `# 123 "file"' if
	CPP_PREPROCESSED.
	(cpp_get_token): If -traditional, don't recognize directives
	unless the # is in column 1.
	(parse_string): If lang_fortran or lang_asm, silently
	terminate strings ('' or "") at end of line.
	Remove unnecessary braces.

From-SVN: r31342
2000-01-12 00:35:36 +00:00
Zack Weinberg
a9ae448346 cpplib.h (struct cpp_buffer: fname, [...]): Mark const.
1999-10-28 21:27 -0700  Zack Weinberg  <zack@bitmover.com>

	* cpplib.h (struct cpp_buffer: fname, nominal_fname,
	last_nominal_fname): Mark const.
	(struct include_hash: name, nshort, control_macro): Mark
	const.
	(struct macrodef: symnam): Mark const.
	(struct if_stack: fname): Mark const.
	(is_idchar, is_idstart, is_hor_space, trigraph_table): Delete.
	(IStable): New character-syntax array which encompasses all
	the old is_foo arrays.
	(is_idchar, is_numchar, is_idstart, is_numstart, is_hspace,
	is_space): New macros for interrogating IStable.
	(check_macro_name): Kill last argument.  All callers changed.

	* cppinit.c (initialize_char_syntax): Delete.
	(is_idchar, is_idstart, is_hor_space, is_space,
	trigraph_table): Delete.
	(IStable): New.  Initialize with clever macros to avoid
	information duplication.
	(builtin_array): Table of builtins to get rid of explicit list
	in initialize_builtins.
	(initialize_builtins): Use builtins_array.
	(cpp_start_read): Call init_IStable, and set IStable['$'] if
	opts->dollars_in_ident.

	* cppexp.c: Change all refs to is_xyz[] arrays to use new
	is_xyz() macros.
	(cpp_parse_expr): Avoid 'format string is not constant'
	warning. Use ISGRAPH to identify printable chars.
	* cppfiles.c: Change all refs to is_xyz[] arrays to use new
	is_xyz() macros.
	(read_and_prescan): Map trigraphs to chars with open-coded
	if-else-if-... sequence, not a lookup table.
	* cpphash.c: Change all refs to is_xyz[] arrays to use new
	is_xyz() macros.
	* cpplib.c: Change all refs to is_xyz[] arrays to use new
	is_xyz() macros.  Kill SKIP_ALL_WHITE_SPACE (unused).
	(check_macro_name): Remove ability to report an invalid
	assertion name, which is never used.
	(do_line): Constify a couple of char *'s.
	* cppmain.c (main): Call cpp_cleanup before returning.

From-SVN: r30252
1999-10-29 04:31:14 +00:00
Zack Weinberg
a2c8e14464 cppexp.c (cpp_parse_escape): Make static.
1999-10-15 11:16 -0700  Zack Weinberg  <zack@bitmover.com>

	* cppexp.c (cpp_parse_escape): Make static.  Change second arg
	to U_CHAR **.
	(parse_charconst): Delete unnecessary cast when calling
	cpp_parse_escape.
	(cpplib.h): Kill prototype of cpp_parse_escape.

From-SVN: r30022
1999-10-15 18:18:46 +00:00
Jason Merrill
c857e3b470 * cpplib.h (CPP_PREPROCESSED): New macro.
From-SVN: r29636
1999-09-23 16:40:51 -04:00
Geoff Keating
fc009f966c Makefile.in (cppexp.o): Depend on cpphash.h.
* Makefile.in (cppexp.o): Depend on cpphash.h.
	* cppexp.c (cpp_lex): Handle `defined (xxx)' for poisoned xxx.
	Include cpphash.h.
	* cpphash.c (special_symbol): Handle plain `xxx' for poisoned xxx.
	* cpplib.c (do_define): Generalise to handle poisoned definitions,
	redefining poisoned identifiers, etc.
	(do_undef): Don't allow poisoned identifiers to be undefined.
	(do_pragma): Add #pragma poison.
	(do_xifdef): Handle `#ifdef xxx' for poisoned xxx.

	* cccp.c: Add T_POISON node type.
	(special_symbol): Handle `defined(xxx)' and plain `xxx' for
	poisoned xxx.
	(do_define): Generalise to handle poisoned definitions,
	redefining poisoned identifiers, etc.
	(do_undef): Don't allow poisoned identifiers to be undefined.
	(do_pragma): Add #pragma poison.
	(do_xifdef): Handle `#ifdef xxx' for poisoned xxx.

	* c-pragma.c (handle_pragma_token): Ignore #pragma poison.
	* c-pragma.h: Add ps_poison state.  We now always have generic
	pragmas.

From-SVN: r29224
1999-09-09 04:00:37 +00:00
Kaveh R. Ghazi
bcc5cac9a7 cpperror.c (cpp_file_line_for_message): Constify a char*.
* cpperror.c (cpp_file_line_for_message): Constify a char*.

	* cppexp.c (parse_number, parse_charconst, cpp_lex,
	cpp_parse_expr): Add static prototypes.
	(parse_charconst): Don't cast away const-ness.
	(token): Constify a char*.

	* cppfiles.c (file_name_list, include_hash, find_include_file,
	finclude, initialize_input_buffer): Constify a char*.
	(file_cleanup, find_position): Add static prototypes.

	* cpphash.c (macro_cleanup, macarg, timestamp, special_symbol,
	collect_expansion): Add static prototypes.
	(cpp_install, create_definition, monthnames): Constify a char*.

	* cpphash.h (cpp_install): Likewise.

	* cppinit.c (known_suffixes, default_include,
	dump_special_to_buffer, NAME, cpp_start_read, cpp_finish): Likewise.
	(base_name, dump_special_to_buffer, initialize_dependency_output):
	Add static prototypes.

	* cpplib.c (my_strerror): Constify a char*.
	(null_underflow, null_cleanup, skip_comment, copy_comment,
	copy_rest_of_line, handle_directive, pass_thru_directive,
	get_directive_token, read_line_number, cpp_print_file_and_line,
	v_cpp_error, v_cpp_warning, v_cpp_error_with_line,
	v_cpp_warning_with_line, detect_if_not_defined,
	consider_directive_while_skipping): Add static prototypes.
	(pass_thru_directive, check_macro_name, cpp_expand_to_buffer,
	cpp_pedwarn_with_file_and_line): Constify a char*.

	* cpplib.h (cpp_options, include_hash, progname, definition,
	cpp_pedwarn_with_file_and_line, cpp_expand_to_buffer,
	check_macro_name, cpp_pfatal_with_name, cpp_file_line_for_message,
	find_include_file, deps_output, include_hash): Constify a char*.

	* cppmain.c (progname): Constify.
	(main): Add prototype.  Use return, not exit.

	* fix-header.c (fatal, add_symbols, lookup_std_proto, write_lbrac,
	recognized_macro, check_macro_names, read_scan_file, write_rbrac,
	inf_skip_spaces, inf_read_upto, inf_scan_ident, inf_scan_ident,
	check_protection): Add static prototype.
	(xfree): Remove.
	(progname, recognized_macrom, recognized_extern): Constify a char*.
	(main): Add prototype.

	* gen-protos.c (progname): Constify a char*.

From-SVN: r29171
1999-09-07 15:41:26 +00:00
Jason Merrill
3773a46b93 gcc.c (default_compilers, cpp-output): Pass -fpreprocessed.
* gcc.c (default_compilers, cpp-output): Pass -fpreprocessed.
	* toplev.c (documented_lang_options): Add -fpreprocessed.
	* cpplib.h (struct cpp_buffer): Add preprocessed.
	* cppinit.c (cpp_handle_option): Handle -fpreprocessed.
	(cpp_start_read): Don't expand macros or emit an initial #line
	directive if -fpreprocessed.

	* cpplib.h (struct cpp_buffer): Added manual_pop for
	better C++ tokenization.
	* cpplib.c (cpp_get_token): Return CPP_EOF if manual_pop.
	Also, support C++ tokenization for ->*, .*, <?, and >? operators.
	* c-common.c (cpp_token): Make non-static.

From-SVN: r28190
1999-07-20 15:13:01 -04:00
Zack Weinberg
2c826217f4 cppfiles.c (initialize_input_buffer): New function.
1999-05-10 18:21 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
	* cppfiles.c (initialize_input_buffer): New function.
	(finclude): Call it, if pfile->input_buffer is NULL.  Accept
	any character device as an input file.
	(read_and_prescan): Use pfile->input_buffer and
	pfile->input_speccase.
	* cppinit.c (cpp_cleanup): Free pfile->input_buffer and
	pfile->input_speccase.
	* cpplib.h (cpp_reader): Add input_buffer, input_speccase, and
	input_buffer_len members.  Use memcpy in CPP_PUTS_Q.
	* cppmain.c: Buffer output in the token_buffer; throttle
	number of calls to fwrite; check for errors from fwrite.

From-SVN: r26869
1999-05-10 11:24:36 -04:00
Zack Weinberg
80e9dcb4b2 cpplib.c (output_line_command): Drop CONDITIONAL argument.
1999-04-19 14:51 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
	* cpplib.c (output_line_command): Drop CONDITIONAL argument.
	We can omit unnecessary line commands if file_change ==
	same_file and pfile->lineno != 0.  All callers changed.
	(cpp_get_token [case '\n']): Don't bump pfile->lineno if
	CPP_OPTIONS (pfile)->no_line_commands is set.
	* cpplib.h: Fix prototype of output_line_command.

From-SVN: r26547
1999-04-19 11:55:04 +00:00
Zack Weinberg
ed45de9838 cpphash.c (collect_expansion, [...]): Make the escape character in macro buffers '\r', not '@'.
1999-04-12 14:55 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
	* cpphash.c (collect_expansion, macroexpand,
	push_macro_expansion): Make the escape character in macro
	buffers '\r', not '@'.  Remove code to protect literal
	occurences of the escape character; '\r' cannot appear
	in a macro buffer unless we put it there.
	* cpplib.c (skip_comment, copy_comment, cpp_skip_hspace,
	copy_rest_of_line, cpp_get_token, parse_string,
	parse_assertion): '\r' might be a backslash-newline marker, or
	it might be a macro escape marker, depending on
	CPP_BUFFER (pfile)->has_escapes.  '@' is not a special
	character.
	* cpplib.h: Update commentary.

From-SVN: r26371
1999-04-12 12:03:10 +00:00
Zack Weinberg
507df93940 cppinit.c (install_predefs): Delete function.
1999-04-06 12:51 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
	* cppinit.c (install_predefs): Delete function.
	(cpp_start_read): Don't call install_predefs.
	(cpp_handle_option): Remove case 'u' and all refs to
	opts->inhibit_predefs.
	(print_help): Don't mention -undef.
	(initialize_builtins): Define __HAVE_BUILTIN_SETJMP__, to
	match cccp.
	* cpplib.h (struct cpp_options): Remove inhibit_predefs
	member.
	* cccp.c (predefs): Delete variable.
	(main): Remove case 'u' in argument parse loop,
	'inhibit_predefs' variable, and the code block that would
	process CPP_PREDEFINES.
	(initialize_builtins): Don't define __OBJC__, the driver will
	do that.
	* gcc.c (default_compilers): Remove -undef from all specs that
	invoke a C preprocessor.
	* ch/lang-specs.h: Likewise.
	* cp/lang-specs.h: Likewise.
	* f/lang-specs.h: Likewise.
	* objc/lang-specs.h: Likewise.

From-SVN: r26212
1999-04-06 09:54:30 +00:00
Zack Weinberg
3fdc651fed cppfiles.c (read_and_prescan): Map backslash-newline to '\r' (which cannot otherwise appear in the processed...
1999-03-16 16:06 -0500  Zack Weinberg  <zack@rabi.columbia.edu>
	* cppfiles.c (read_and_prescan): Map backslash-newline to '\r'
	(which cannot otherwise appear in the processed buffer) and
	move it out of tokens that it appears in the middle of.
	Improve performance.
	(find_position): New function.
	* cpplib.c: \r (one character) indicates backslash
	newline, not \\\n (two characters).  It cannot appear in the
	middle of a token.  Call CPP_BUMP_LINE (pfile) whenever
	parsing moves past \n or \r.  Increment pfile->lineno whenever
	a \n is placed into token_buffer.  Only one mark can exist at
	a time, and CPP_BUMP_LINE must not be used while it is
	active.  It is automatically cleared by cpp_pop_buffer and
	parse_goto_mark.  \r is not in is_hor_space or is_space.
	(NEWLINE_FIX, NEWLINE_FIX1, adjust_position,
	update_position, count_newlines, parse_move_mark): Removed.
	(parse_string, copy_comment): New functions.
	(parse_name): Returns void.
	(parse_set_mark, parse_clear_mark, parse_goto_mark): Take only
	one argument, a cpp_reader *.  Change for new marking scheme.
	(skip_comment): Handle CHILL line comments too.  Second
	argument is now first character of comment marker; all callers
	changed.  Issue error for unterminated block comment here.
	(cpp_skip_hspace): Recognize CHILL comments.
	(copy_rest_of_line): Likewise.  Call skip_comment and
	parse_string directly, don't go through cpp_get_token.  Emit
	"/**/" for block comments if -traditional (create_definition
	needs this).
	(do_define): Don't play with put_out_comments.
	(cpp_push_buffer): Initialize ->mark to -1.
	(cpp_buf_line_and_col): Just read out the values in the buffer
	structure.
	(output_line_command): Use cpp_buf_line_and_col.  Fix
	formatting.  Remove stale code.
	(cpp_get_token): Break out string parsing code to
	parse_string.  Use skip_comment for CHILL comments too.  Use
	copy_comment for put_out_comments instead of dinking with
	marks.  Remove stale code.  Don't call output_line_command
	unless it's necessary.
	* cpplib.h (parse_marker): Removed.
	(struct cpp_buffer): line_base is now a unsigned char *; add
	`mark' [long], remove `marks' [struct parse_marker *].
	(parse_set_mark, parse_clear_mark, parse_goto_mark): Update
	prototypes.
	(CPP_BUMP_LINE, CPP_BUMP_BUFFER_LINE): New macros.
	* cppinit.c (is_hor_space, is_space): '\r' is not considered
	whitespace.
	* cppexp.c (cpp_parse_expression): Use cpp_skip_hspace, not
	SKIP_WHITE_SPACE.
	* cpphash.c (macarg): Disable line commands while expanding.

From-SVN: r25802
1999-03-16 08:10:15 -05:00
Zack Weinberg
0b22d65c9a cppinit.c: Instead of one pending list...
1999-03-15 21:39 -0500  Zack Weinberg  <zack@rabi.columbia.edu>
	* cppinit.c: Instead of one pending list, keep separate lists
	for each category of pending option: -D/-U, -A, -include,
	-imacros.  Move the four partial include-path lists into the
	pending block.  Use head and tail pointers so we don't ever
	have to reverse the lists.
	(cpp_start_read): Break out blocks of code to their own
	functions: install_predefs and initialize_dependency_output.
	Use path_include for C_INCLUDE_PATH and friends as well as
	CPATH.  Remove include_defaults gunk.  Warn about the
	combination of -lang-chill and -trigraphs.  Optimize string
	bashing.  Walk each pending list once, deallocating as we go.
	(append_include_chain): Brought over from cppfiles.c.  Mark
	dirs as system include dirs if and only if appending to
	system include path. If opts->verbose, print a notice when a
	dir is dropped from the include path because it doesn't
	exist.  Fix memory leak: this function is not supposed to copy
	its DIR argument.
	(nreverse_pending, push_pending): Removed.
	(APPEND): New macro for adding to pending lists.
	(path_include): Can now add to any partial include path.
	(base_name): Bring over from cccp.c.
	(cpp_options_init): Allocate the pending block.
	(cpp_handle_option): Add --version.  Exit after --help.  Fix
	formatting.  Order -ifoo options by frequency of usage.
	(install_predefs): New function, simplified version of code
	that was in cpp_start_read.
	(initialize_dependency_output): Likewise.  Understand OBJECT_SUFFIX.
	* cppfiles.c (simplify_pathname): Export.
	(merge_include_chains):  Don't nreverse the lists.  If
	opts->verbose, print a notice when a duplicate dir is detected
	and dropped from the include path.
	(finclude): Fix excessive cleverness in setting
	fp->system_header_p.
	(actual_directory): Set x->sysp from
	CPP_BUFFER (pfile)->system_header_p so that one system header
	may include another with "".
	(deps_output): Fix double adjustment of deps_size which would
	cause all dependencies after the first two lines to be lost.
	* cpplib.c (cpp_unassert): New function.
	* cpplib.h: Lay out struct cpp_pending here.  Adjust
	prototypes.  Add include_prefix_len to struct cpp_options.

From-SVN: r25793
1999-03-15 18:42:46 +00:00
Kaveh R. Ghazi
e915b770d9 Makefile.in (cppmain.o, [...]): Don't depend on machmode.h.
* Makefile.in (cppmain.o, cpplib.o, cpphash.o, cppalloc.o,
        cpperror.o, cppexp.o, cppfiles.o, cppinit.o, fix-header.o,
        scan-decls.o): Don't depend on machmode.h.
        * cppexp.c: Don't define CHAR_BIT or HOST_BITS_PER_WIDE_INT anymore.
        Replace all instances of HOST_WIDE_INT with HOST_WIDEST_INT.
        * cppfiles.c: Likewise.
        * cpplib.c: Likewise.
        * cpplib.h: Likewise.  Also don't include machmode.h anymore.

From-SVN: r25446
1999-02-25 20:40:21 +00:00
Zack Weinberg
122ae89b14 cpphash.c (install): Rename to cpp_install, add cpp_reader* first argument.
1999-02-25 17:14 -0500  Zack Weinberg  <zack@rabi.columbia.edu>
	* cpphash.c (install): Rename to cpp_install, add cpp_reader*
	first argument.  All callers changed.
	(hashtab): Removed.
	(cpp_lookup, cpp_install): Change all refs to hashtab to
	pfile->hashtab.
	(cpp_hash_cleanup): Removed.
	* cpphash.h: Adjust prototypes.
	* cpplib.h (struct cpp_reader): Add hashtab pointer.
	* cppinit.c (cpp_reader_init): Also allocate space for the
	hashtab.
	(cpp_cleanup): Delete all macros and free the hashtab.

From-SVN: r25441
1999-02-25 14:24:40 +00:00
Zack Weinberg
6de1e2a978 cpplib.c: Kill define of STDC_VALUE.
1999-02-18 18:32 -0500  Zack Weinberg  <zack@rabi.columbia.edu>
	* cpplib.c: Kill define of STDC_VALUE.  Don't include output.h
          or prefix.h. Change CPP_IS_MACRO_BUFFER to not refer to
          macro_cleanup.
	  (GET_ENV_PATH_LIST, PATH_SEPARATOR, STANDARD_INCLUDE_DIR,
          predefs, SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE,
          CPP_WCHAR_TYPE, USER_LABEL_PREFIX, REGISTER_PREFIX, struct
          cpp_pending, version_string, struct default_include,
          include_defaults_array, path_include, cpp_options_init,
          dump_special_to_buffer, initialize_builtins, cpp_start_read,
          cpp_reader_init, nreverse_pending, push_pending, print_help,
          cpp_handle_option, cpp_handle_options, cpp_finish,
          cpp_cleanup): Move to cppinit.c.
	  (macro_cleanup, struct arglist, collect_expansion,
	  create_definition, compare_defs, comp_def_part, ARG_BASE,
	  struct argdata, macarg, change_newlines, timestamp,
	  monthnames, special_symbol, unsafe_chars, macroexpand,
	  push_macro_expansion): Move to cpphash.c.
	  (quote_string, check_macro_name, cpp_expand_to_buffer,
	  output_line_command, cpp_undef): Export.
	  (null_underflow, null_cleanup, handle_directive): Make static.
	* cpplib.h: Prototype now-exported functions.  Adjust decls of
          syntax tables so we can include cpplib.h in cppinit.c.
	* cpphash.h: Prototype all functions exported by cpphash.c.
	* cppinit.c: Make syntax tables initialized data if possible
          (uses GCC designated-initializer extension).
	* cppexp.c:  Make cpp_lex static.
	* Makefile.in: Move -D switches for the various include dirs
          from cpplib.o rule to cppinit.o rule.  Adjust dependencies.

From-SVN: r25287
1999-02-18 15:35:49 +00:00
Zack Weinberg
4d9a1b48f9 c-common.c (UNGETC [USE_CPPLIB=1]): Do nothing if c is EOF.
1999-02-15 16:59 -0500  Zack Weinberg  <zack@midnite.ec.rhno.columbia.edu>
	* c-common.c (UNGETC [USE_CPPLIB=1]): Do nothing if c is EOF.
	* c-lex.c: Likewise.
	* cpplib.c (cpp_push_buffer, cpp_pop_buffer): Use a linked
	list in malloced memory for the buffer stack.
	(cpp_get_token): Don't pop the last buffer off the stack.
	Calls after CPP_EOF has been returned produce CPP_EOF with no
	state change.
	(cpp_finish): Pop last buffer here.
	(do_line): Don't free ip->last_nominal_fname if it is equal to
	ip->fname.
	(special_symbol): If a T_CONST is the empty string, push a
	single `@ ' escape instead.
	(macroexpand): Special symbol buffers have escapes too.
	* cpplib.h (struct cpp_buffer): Remove unused fields, add prev
	buffer pointer.
	(struct cpp_reader): Remove buffer_stack.  Add
	buffer_stack_depth.
	(CPP_PREV_BUFFER, CPP_NULL_BUFFER): Buffer stack is now a
	linked list.

From-SVN: r25218
1999-02-15 14:04:21 +00:00
Zack Weinberg
5dfa4da130 cpplib.c (special_symbol): Rewrite.
1999-02-08 23:25 -0500  Zack Weinberg  <zack@midnite.ec.rhno.columbia.edu>
	* cpplib.c (special_symbol): Rewrite.  Don't copy things
	  multiple times.  Handle __STDC__ specially.  T_CONST
	  indicates a constant /string/.  Don't handle T_*_TYPE and
	  T_SPEC_DEFINED.  Use cpp_buf_line_and_col instead of
	  adjust_position.  Determine the file buffer only if needed.
	  (initialize_builtins): Handle __SIZE_TYPE__,
	  __PTRDIFF_TYPE__, __WCHAR_TYPE__, __USER_LABEL_PREFIX__, and
	  __REGISTER_PREFIX__ with T_CONST special hashtab entries.
	  Don't provide __OBJC__; the driver does that.	 Provide
	  __STDC_VERSION__, using T_CONST.  Use T_STDC for
	  __STDC__.  Give install the length of all symbols defined.
	  (eval_if_expression): Drop code to insert and remove the
	  "defined" special symbol.
	* cpplib.h: Remove SELF_DIR_DUMMY (no longer used).  Remove
	  T_*_TYPE and T_SPEC_DEFINED from enum node_type; add T_STDC.
	* cpphash.c (install): Drop the `ivalue' parameter.  Constify
	  the `value' parameter.  All callers changed.
	* cpphash.h (install): Change prototype to match.
	  (union hashval): Remove `ival' member.
	* cppexp.c (cpp_lex): Handle `defined' here.

From-SVN: r25097
1999-02-08 20:27:27 +00:00
Zack Weinberg
5538ada62f cpplib.c (initialize_char_syntax): Move to cppinit.c.
1999-02-04 14:33 -0500  Zack Weinberg  <zack@rabi.phys.columbia.edu>
	* cpplib.c (initialize_char_syntax): Move to cppinit.c.
	(cpp_define): Remove redundant syntax checks.
	(make_assertion): Rename cpp_assert, remove redundant syntax
	checks, export.
	(cpp_options_init): Don't init things to zero twice.
	(cpp_expand_to_buffer): Use memcpy, not a char-by-char loop.
	(do_include): Kill excessively verbose import warning that
	snuck back in in the gcc2 merge.
	(convert_string): Removed.
	(do_line): Rewrite with simple last-name-used cache instead of
	private hashtable.
	(cpp_start_read): Call initialize_char_syntax here, not...
	(cpp_reader_init): ...here.
	(cpp_handle_options): Support the -std switch.
	* cpplib.h (cpp_buffer): Add last_nominal_fname member.
	(cpp_options): Add c9x flag.
	Declare all the is_* tables and trigraph table here, as const.
	Prototype cpp_assert and initialize_char_syntax.
	* cppinit.c: New file.
	* cppfiles.c (read_and_prescan): Optimize.
	* Makefile.in (LIBCPP_OBJS): Add cppinit.o.

From-SVN: r25024
1999-02-04 06:36:54 -05:00
Kaveh R. Ghazi
1c5d09e4af collect2.c (error): Fix typo in declaration.
* collect2.c (error): Fix typo in declaration.
        * cpperror.c (cpp_message): Likewise.
        * cpplib.c (cpp_warning): Likewise.
        * cpplib.h (cpp_notice): Use PVPROTO not VPROTO, also add
        ATTRIBUTE_PRINTF_1.
        * toplev.c (error): Fix typo in declaration.

From-SVN: r24904
1999-01-29 11:41:02 +00:00
Dave Brolley
d5a06ad917 cpplib.h (cpp_notice): Add prototype.
Wed Jan 27 11:58:18 1999  Dave Brolley  <brolley@cygnus.com>
	* cpplib.h (cpp_notice): Add prototype.

From-SVN: r24884
1999-01-27 04:04:57 -05:00
Zack Weinberg
554fbeef31 cppfiles.c (safe_read): Deleted.
1999-01-26 12:11 -0500  Zack Weinberg  <zack@midnite.ec.rhno.columbia.edu>
	* cppfiles.c (safe_read): Deleted.
	(read_and_prescan): New function, replaces safe_read, converts
	and/or warns about trigraphs, silently converts odd line
	terminators (\r, \n\r, \r\n).  Warns about no newline at EOF.
	(finclude): Use read_and_prescan; turn off nonblocking mode on
	the input descriptor; remove file-size-examination and
	no-newline-at-EOF gunk which is	longer necessary; be more
	careful about checking that we've been handed a legitimate
	file to read (only real files, pipes, and ttys are acceptable).
	* cpplib.h (cpp_options): Rename no_trigraphs flag to
	`trigraphs' and invert its sense.
	(trigraph_table): Declare.
	(cpp_warning_with_line): Prototype.
	* cpplib.c: Remove all references to trigraph_pcp. Define
	trigraph_table; initialize it in initialize_char_syntax.  Open
	files in nonblocking mode.  s/no_trigraphs/trigraphs/
	throughout, and invert sense.  Put cpp_warning_with_line back
	in and export it.

From-SVN: r24870
1999-01-26 04:12:47 -05:00
Jeff Law
3881c0c10b Minor copyright tweak.
From-SVN: r24776
1999-01-19 17:40:49 -07:00
Jeff Law
44ba0e9336 Fix copyright dates.
From-SVN: r24530
1999-01-06 12:54:35 -07:00
Kaveh R. Ghazi
460ee1120c Makefile.in (gcc.o, [...]): Depend on prefix.h.
* Makefile.in (gcc.o, prefix.o, cccp.o, cpplib.o): Depend on prefix.h.
        * cccp.c: Include prefix.h, don't prototype prefix.c functions.
        (new_include_prefix): Constify char* parameters.
        * cppfiles.c (read_name_map): Likewise.
        (append_include_chain): Likewise.  Also, use a writable char* copy
        of parameter `dir' which we then modify, rather than using the
        parameter itself to store the new writable string.
        (remap_filename): Constify some variables.  Also, use a writable
        char* to store an allocated string which we will be modifying.
        * cpplib.c: Include prefix.h, don't prototype prefix.c functions.
        (cpp_start_read): Constify variable `str'.
        * cpplib.h (append_include_chain): Constify a char* parameter.
        * gcc.c Include prefix.h, don't prototype prefix.c functions.
        (add_prefix, save_string): Constify char* parameters.
        (fatal, error): Add ATTRIBUTE_PRINTF_1 to prototypes.
        * prefix.c: Include prefix.h.
        (get_key_value, translate_name, save_string, update_path,
        set_std_prefix): Constify various char* parameters and variables.
        (save_string): Use xmalloc, not malloc.
        (translate_name): Use a writable temporary variable to create and
        modify a string before setting it to a const char*.
        * prefix.h: New file to prototype functions exported from prefix.c.

From-SVN: r24498
1999-01-05 19:11:22 +00:00
Zack Weinberg
c49445e001 cppalloc.c: Add xstrdup here.
1998-12-15  Zack Weinberg  <zack@rabi.phys.columbia.edu>
	* cppalloc.c: Add xstrdup here.
	* cpplib.h: Remove savestring prototype.
	* cpplib.c: Remove savestring function. s/savestring/xstrdup/
	  throughout.
	* cppfiles.c: s/savestring/xstrdup/ throughout.

From-SVN: r24327
1998-12-15 06:23:27 -05:00
Zack Weinberg
7061aa5a9e cpphash.h (union hash_value): Remove keydef' member, add a struct hashnode *aschain' member for #assert.
1998-12-15  Zack Weinberg  <zack@rabi.phys.columbia.edu>
	* cpphash.h (union hash_value): Remove `keydef' member, add a
          `struct hashnode *aschain' member for #assert.
	  * cpplib.c (struct tokenlist_list, struct
          assertion_hashnode): Delete structure definitions.
          (assertion_install, assertion_lookup, delete_assertion,
          check_assertion, compare_token_lists, reverse_token_list,
          read_token_list, free_token_list): Delete functions.
          (parse_assertion): New function.
	  (cpp_cleanup): Don't destroy the assertion_hashtable.
          (do_assert): Gut and rewrite.  #assert foo (bar) places
          entries for `#foo' and `#foo(bar)' in the macro hash table,
          type T_ASSERT.  The value union's `aschain' member is used
          to chain all answers for a given predicate together.
          (do_unassert): Also rewritten.  Take an un-asserted
          answer off the chain from its predicate and call
          delete_macro on the hashnode, or walk a predicate chain
          calling delete_macro on all the entries.
          (cpp_read_check_assertion): Simply call parse_assertion to
          get the canonical assertion name, and look that up in the
          hash table.
	* cpplib.h (ASSERTION_HASHNODE,ASSERTION_HASHSIZE,assertion_hashtab):
 	Removed.
	* cpphash.c (install): Use bcopy instead of an explicit loop
          to copy the macro name.
	* cppexp.c (cpp_lex): Convert the result of
          cpp_read_check_assertion to a `struct operation' directly;
          don't go through parse_number.

From-SVN: r24325
1998-12-15 06:09:16 -05:00
Manfred Hollstein
276140faae cccp.c: Do not #include <sys/stat.h> here; this is already done by "system.h".
�
	* cccp.c: Do not #include <sys/stat.h> here; this is already done
	by "system.h".
	* collect2.c: Likewise.
	* cpplib.h: Likewise.
	* gcc.c: Likewise.
	* gcov.c: Likewise.
	* getpwd.c: Likewise.
	* protoize.c: Likewise.
	* toplev.c: Likewise.

From-SVN: r24263
1998-12-11 08:32:49 +00:00
Manfred Hollstein
5e36733735 cpplib.h (HOST_WIDE_INT): Get definition from "machmode.h" and don't try to define it here.
�
	* cpplib.h (HOST_WIDE_INT): Get definition from "machmode.h"
	and don't try to define it here.
	* Makefile.in (cppmain.o): Depend on machmode.h.
	(cpplib.o): Likewise.
	(cpperror.o): Likewise.
	(cppexp.o): Likewise.
	(cppfiles.o): Likewise.
	(cpphash.o): Likewise.
	(cppalloc.o): Likewise.
	(fix-header.o): Likewise.
	(scan-decls.o): Likewise.

From-SVN: r24260
1998-12-11 08:27:07 +00:00
Zack Weinberg
c50bca0894 cpplib.c (initialize_char_syntax): Use ISALPHA and ISALNUM so it'll work on non-ASCII platforms.
1998-12-07  Zack Weinberg  <zack@rabi.phys.columbia.edu>
	* cpplib.c (initialize_char_syntax): Use ISALPHA and ISALNUM
          so it'll work on non-ASCII platforms.  Always consider $ an
          identifier character.  Take no arguments.
	  (cpp_reader_init): Call initialize_char_syntax with no
          arguments.
	  (cpp_start_read): Don't call initialize_char_syntax again.
          Clear is_idchar['$'] and is_idstart['$'] if not
          opts->dollars_in_ident.
	* cpplib.h (struct cpp_reader): Replace void *data element by
          cpp_options *opts.  Rearrange elements to make gdb printout
          less annoying (put buffer stack at end).
	  (CPP_OPTIONS): Get rid of now-unnecessary cast.
	* cppmain.c: s/data/opts/ when initializing cpp_reader
          structure.
	* c-decl.c: Likewise.
	* objc/objc-act.c: Likewise.
	* fix-header.c: Likewise.

From-SVN: r24154
1998-12-07 09:15:29 -05:00
Zack Weinberg
f1a86df6cb cpplib.h (struct cpp_buffer): Replace dir and dlen members with a struct file_name_list pointer.
1998-11-26 01:17 -0500  Zack Weinberg  <zack@rabi.phys.columbia.edu>
	* cpplib.h (struct cpp_buffer): Replace dir and dlen members
	with a struct file_name_list pointer.
	(struct cpp_reader): Add pointer to chain of `actual
	directory' include searchpath entries.
	(struct file_name_list): Add *alloc pointer for the sake of
	the actual-directory chain.
	Move definition of HOST_WIDE_INT here.
	(cpp_parse_escape): Change prototype to match changes in
	cppexp.c.
	* cppfiles.c (actual_directory): New function.
	(finclude): Use it to initialize the buffer's actual_dir
	entry.
	(find_include_file): We don't need to fix up max_include_len
	here.
	* cpplib.c (do_include): Don't allocate a file_name_list on
	the fly for current directory "" includes, use the one that's
	been preallocated in pfile->buffer->actual_dir.  Hoist out
	duplicate code from the search_start selection logic.
	(cpp_reader_init): Initialize pfile->actual_dirs.
	Remove definition of HOST_WIDE_INT.  Change calls
	to cpp_parse_escape to match changes in cppexp.c (note
	hardcoded MASK, which is safe since this is the source
	character set).
	* cppexp.c: Bring over changes to cpp_parse_escape from cccp.c
	to handle wide character constants in #if directives.  The
	function now returns a HOST_WIDE_INT, and takes a third
	argument which is a binary mask for all legal values (0x00ff
	for 8-bit `char', 0xffff for 16-bit `wchar_t', etc.)  Define
	MAX_CHAR_TYPE_MASK and MAX_WCHAR_TYPE_MASK.  Change callers of
	cpp_parse_escape to match.  [Fixes c-torture/execute/widechar-1.c]

From-SVN: r24153
1998-12-07 08:35:20 -05:00
Zack Weinberg
0b3d776a42 cpplib.h: Delete struct import_file.
Wed Nov 25 14:54:46 1998  Zack Weinberg  <zack@rabi.phys.columbia.edu>
        * cpplib.h: Delete struct import_file.  Add ihash element to
        struct cpp_buffer.  Delete dont_repeat_files and
        import_hash_table elements from cpp_reader; change
        all_include_files to a hash table.  Delete all foobar_include
        / last_foobar_include elements from struct cpp_options; put
        back four such: quote_include, bracket_include,
        system_include, after_include.  Redo struct file_name_list
        completely.  Add new structure type include_hash.  Add
        prototypes for merge_include_chains and include_hash.  Change
        prototypes for finclude, find_include_file, and
        append_include_chain to match changes below.
        * cppfiles.c (simplify_pathname, include_hash,
        remap_filename, merge_include_chains): New functions.
        (add_import, lookup_import, open_include_file): Removed.
        (INO_T_EQ): Define this (copied from cccp.c).
        (hack_vms_include_specification): Remove all calls and #if 0
        out the definition.  It was being called incorrectly and at
        the wrong times.  Until a VMSie can look at this, it's better
        to not pretend to support it.
        (append_include_chain): Change calling convention; now takes
        only one directory at a time, and sets up the data structure
        itself.
        (redundant_include_p): Rewritten - this is now used for all
        include redundancy, whether by #ifndef, #import, or #pragma
        once.  Looks up things in the include hash table.
        (file_cleanup): Decrement pfile->system_include_depth here if
        it's >0.
        (find_include_file): Calling convention changed; now passes
        around a struct include_hash instead of 3 separate parameters.
        Guts ripped out and replaced with new include_hash mechanism.
        (finclude): Calling convention changed as for
        find_include_file.  Error exits pulled out-of-line.  Reformat.
        (safe_read): Return a long, not an int.
        (deps_output): Don't recurse.
        * cpplib.c (is_system_include): Deleted.
        (path_include): Fix up call to append_include_chain.
        (do_include): Fix up calls to find_include_file and finclude.
        Clean up dependency output a bit.  Shorten obnoxiously lengthy
        #import warning message.  Don't decrement
        pfile->system_include_depth here.
        (do_pragma): Understand the include_hash structure.  Reformat.
        (do_endif): Correct handling of control macros.  Understand
        the include_hash.
        (cpp_start_read): Fix up calls to finclude.  Call
        merge_include_chains.
        (cpp_handle_option): Fix up calls to append_include_chain.
        Understand the four partial include chains.
        (cpp_finish): Add debugging code (#if 0-ed out) for the
        include_hash.
        (cpp_cleanup): Free the include_hash, not the import hash and
        the all_include and dont_repeat lists which no longer exist.

From-SVN: r23857
1998-11-25 06:56:54 -05:00
Kaveh R. Ghazi
5148a72b33 gansidecl.h: Prepend a "G" to the macro wrapping this file (to distinguish it from the macro...
* gansidecl.h: Prepend a "G" to the macro wrapping this file
        (to distinguish it from the macro wrapping ansidecl.h.)
        Include libiberty's ansidecl.h.  Remove all redundant definitions.
        Define the PROTO() style macros in terms of the PARAMS() ones.
        * calls.c (emit_library_call): Switch on ANSI_PROTOTYPES, not
        __STDC__, when deciding whether to use ANSI variable args.
        (emit_library_call_value): Likewise.
        * cccp.c (error): Likewise.
        (warning): Likewise.
        (error_with_line): Likewise.
        (warning_with_line): Likewise.
        (pedwarn): Likewise.
        (pedwarn_with_line): Likewise.
        (pedwarn_with_file_and_line): Likewise.
        (fatal): Likewise.
        * cexp.y (error): Likewise.
        (pedwarn): Likewise.
        (warning): Likewise.
        * collect2.c (fatal_perror): Likewise.
        (fatal): Likewise.
        (error): Likewise.
        * combine.c (gen_rtx_combine): Likewise.
        * cpperror.c (cpp_message): Likewise.
        (cpp_fatal): Likewise.
        * cpplib.c (cpp_error): Likewise.
        (cpp_warning): Likewise.
        (cpp_pedwarn): Likewise.
        (cpp_error_with_line): Likewise.
        (cpp_warning_with_line): Likewise.
        (cpp_pedwarn_with_line): Likewise.
        (cpp_pedwarn_with_file_and_line): Likewise.
        * cpplib.h: Don't define PARAMS() macro.
        * demangle.h: Likewise.
        * doprint.c (checkit): Switch on ANSI_PROTOTYPES, not __STDC__,
        when deciding whether to use ANSI variable args.
        * emit-rtl.c (gen_rtx): Likewise.
        (gen_rtvec): Likewise.
        * final.c (asm_fprintf): Likewise.
        * fix-header.c (cpp_message): Likewise.
        (fatal): Likewise.
        (cpp_fatal): Likewise.
        * gcc.c (concat): Likewise.
        (fatal): Likewise.
        (error): Likewise.
        * genattr.c (fatal): Likewise.
        * genattrtab.c (attr_rtx): Likewise.
        (attr_printf): Likewise.
        (fatal): Likewise.
        * gencodes.c (fatal): Likewise.
        * genconfig.c (fatal): Likewise.
        * genemit.c (fatal): Likewise.
        * genextract.c (fatal): Likewise.
        * genflags.c (fatal): Likewise.
        * genopinit.c (fatal): Likewise.
        * genoutput.c (fatal): Likewise.
        (error): Likewise.
        * genpeep.c (fatal): Likewise.
        * genrecog.c (fatal): Likewise.
        * halfpic.h: Switch on ANSI_PROTOTYPES, not __STDC__, when
        deciding whether to declare `tree_node' and `rtx_def'.
        * hash.h: Don't define stuff we get from gansidecl.h.
        * mips-tfile.c: Likewise.  Define __proto() in terms of PARAMS().
        (fatal): Switch on ANSI_PROTOTYPES, not __STDC__, when deciding
        whether to use ANSI variable args.
        (error): Likewise.
        * prefix.c (concat): Likewise.
        * scan.h: Likewise.
        * system.h: Likewise.
        * toplev.c (error_with_file_and_line): Likewise.
        (error_with_decl): Likewise.
        (error_for_asm): Likewise.
        (error): Likewise.
        (fatal): Likewise.
        (warning_with_file_and_line): Likewise.
        (warning_with_decl): Likewise.
        (warning_for_asm): Likewise.
        (warning): Likewise.
        (pedwarn): Likewise.
        (pedwarn_with_decl): Likewise.
        (pedwarn_with_file_and_line): Likewise.
        (sorry): Likewise.
        (really_sorry): Likewise.
        * toplev.h: Switch on ANSI_PROTOTYPES, not __STDC__, when deciding
        whether to declare `tree_node' and `rtx_def'.
        * tree.c (build): Switch on ANSI_PROTOTYPES, not __STDC__, when
        deciding whether to use ANSI variable args.
        (build_nt): Likewise.
        (build_parse_node): Likewise.

From-SVN: r23577
1998-11-08 15:10:24 +00:00
Zack Weinberg
add7091b5b [multiple changes]
1998-10-28 16:10 -0500	Zack Weinberg  <zack@rabi.phys.columbia.edu>
	 * c-lang.c: Declare extern char *yy_cur if USE_CPPLIB.
	   (lang_init): Call check_newline always.
	 * c-lex.c (init_parse) [USE_CPPLIB=1]: After calling
	   cpp_start_read, set yy_cur and yy_lim to read from
	   parse_in.token_buffer, so that we'll see the first #line
	   directive.
	 * cpplib.c (cpp_start_read): finclude the main input file
	   before processing -include/-imacros.	 Process -imacros and
	   -include separately, and handle -include by stacking a
	   buffer for the file in question as if it'd been #included.
	 * toplev.c (documented_lang_options) Recognize -H when
	   USE_CPPLIB is on.
1998-10-28 16:09 -0500	Zack Weinberg  <zack@rabi.phys.columbia.edu>
	 * cpplib.c: Merge do_once into do_pragma.  Break file handling
	   code out of do_include.
	   Move append_include_chain, deps_output,
	   file_cleanup, redundant_include_p, import_hash,
	   lookup_import, add_import, read_filename_string, read_name_map,
	   open_include_file, finclude, safe_read to cppfiles.c.
	   Move prototypes for deps_output, append_include_chain,
	   finclude to cpplib.h.  Move definition of struct
	   file_name_list there also.
	 * cppfiles.c: New file.  Contains all the above functions
	   broken out of cpplib.c; also hack_vms_include_specification
	   from cccp.c and find_include_file, a new function broken out of
	   do_include.
	 * Makefile.in (cppmain): Depend on cppfiles.o.
	   (fix-header): Likewise.
	   (cppfiles.o): New target.
	 * configure.in (--enable-c-cpplib): Add cppfiles.o to
	   extra_c_objs.  Add ../cppfiles.o to extra_cxx_objs.

From-SVN: r23424
1998-10-29 06:54:13 -05:00
Zack Weinberg
faa765969f cppexp.c: When forcing unsigned comparisons, cast both sides of the operation.
* cppexp.c: When forcing unsigned comparisons, cast both sides
        of the operation.
        * cpphash.h: Move static declaration of hashtab[]...
        * cpphash.c: ...here.
        * cpplib.c: Cast difference of two pointers to size_t before
        comparing it to size_t.  Cast signed to unsigned
        before comparing to size_t. (FIXME: struct argdata should use
        unsigned buffer sizes.)
        * cpplib.h (struct cpp_reader): Declare token_buffer_size as
        unsigned int. (CPP_WRITTEN): Cast return value to size_t.
        (CPP_RESERVE): Parenthesize N for evaluation order, cast to
        size_t before comparison.

From-SVN: r22980
1998-10-10 18:05:11 -06:00
Jeff Law
990c642c89 emit-rtl.c (init_emit_once): Call INIT_EXPANDERS.
* emit-rtl.c (init_emit_once): Call INIT_EXPANDERS.
        * cpplib.h: Protect from multiple inclusions.
        * cpplib.c: Fix minor formatting problems.

From-SVN: r22937
1998-10-08 15:09:20 -06:00
Kaveh R. Ghazi
789f983ab1 system.h: Include stdarg.h/varargs.h...
* system.h: Include stdarg.h/varargs.h, make sure they are ordered
        correctly with regards to stdio.h.
        * calls.c: Remove stdarg.h/varargs.h.
        * cccp.c: Likewise.
        * cexp.y: Likewise.
        * combine.c: Likewise.
        * cpperror.c: Likewise.
        * cpplib.c: Likewise.
        * cpplib.h: Likewise.
        * doprint.c: Likewise.
        * emit-rtl.c: Likewise.
        * final.c: Likewise.
        * fix-header.c: Likewise.
        * gcc.c: Likewise.
        * genattr.c: Likewise.
        * genattrtab.c: Likewise.
        * gencodes.c: Likewise.
        * genconfig.c: Likewise.
        * genemit.c: Likewise.
        * genextract.c: Likewise.
        * genflags.c: Likewise.
        * genopinit.c: Likewise.
        * genoutput.c: Likewise.
        * genpeep.c: Likewise.
        * genrecog.c: Likewise.
        * mips-tfile.c: Likewise.
        * prefix.c: Likewise.
        * protoize.c: Likewise.
        * regmove.c: Likewise.
        * toplev.c: Likewise.
        * tree.c: Likewise.
        * cp/errfn.c: Remove stdarg.h/varargs.h.
        * cp/tree.c: Likewise.

From-SVN: r21997
1998-08-26 08:11:47 +00:00
Dave Brolley
d2f8cffa1d cpplib.c (do_line): Typo broke #line directive.
Tue Jun 23 16:44:21 1998  Dave Brolley  <brolley@cygnus.com>
	* cpplib.c (do_line): Typo broke #line directive.
	(cpp_message_from_errno): New function.
	(cpp_error_from_errno): Call cpp_message_from_errno.
	* cpplib.h (cpp_message_from_errno): New function.

From-SVN: r20675
1998-06-23 09:51:33 -04:00
Dave Brolley
a0d85b7572 Integrate cpplib into the C and C++ front ends.
Wed Jun 10 13:07:02 1998  Dave Brolley  <brolley@cygnus.com>
	* objc/objc-act.c: Add cpplib declarations.
	(lang_decode_option): Initialize cpplib if necessary.
	(lang_decode_option): New argc/argv interface.
	* tree.h (lang_decode_option): New argc/argv interface.
	* toplev.c (lang_options): Add cpp options.
	(main): New interface for lang_decode_option.
	* gcc.c (default_compilers): Don't call cpp for a cpplib-enabled C compiler
	unless -E, -M or -MM is specified.
	* cpplib.h (cpp_handle_option): New function.
	* cpplib.c (cpp_handle_option): New function.
	(cpp_handle_options): Now calls cpp_handle_option.
	* c-tree.h (c_decode_option): New argc/argv interface.
	* c-lex.c (init_parse): cpplib now initialized in c_decode_option.
	* c-lang.c (lang_decode_option): New argc/argv interface.
	* c-decl.c: Add cpplib declarations.
	(c_decode_option): New argc/argv interface.
	(c_decode_option): Call cpp_handle_option.
	(c_decode_option): Now returns number of strings processed.

From-SVN: r20407
1998-06-10 06:12:36 -04:00