Commit Graph

140 Commits

Author SHA1 Message Date
Neil Booth
0fef3fd0ea cpphash.h (struct spec_nodes): Remove n__CHAR_UNSIGNED__.
* cpphash.h (struct spec_nodes): Remove n__CHAR_UNSIGNED__.
	* cpphash.c (_cpp_init_hashtable): Similarly.
	* cppinit.c (cpp_create_reader): Default the signed_char flag.
	(init_builtins): Define __CHAR_UNSIGNED__ appropriately.
	(COMMAND_LINE_OPTIONS): Recognise -f{un,}signed-char.
	(cpp_handle_option): Handle the new options.
	* cpplex.c (cpp_interpret_charconst): Use new flag.
	* cpplib.h (struct cpp_options): New member signed_char.
	* gcc.c (cpp_unique_options): Remove %c spec and documentation.
	(cpp_options): Handle -fsigned-char and -funsigned-char.
	(static_specs): Remove signed_char_spec.
	(do_spec1): Don't handle %c.
	* system.h: Poison SIGNED_CHAR_SPEC.
	* tradcif.y (yylex): Use flag_signed_char.
	* tradcpp.h (flag_signed_char): New.
	* tradcpp.c (flag_signed_char): New.
	(main): Handle new command-line options.
	(initialize_builtins): Define __CHAR_UNSIGNED__ if appropriate.
config:
	* alpha/alpha.h (SIGNED_CHAR_SPEC): Remove.
	* avr/avr.h: Remove old comments.
	* i960/i960.h (CPP_SPEC): Pass -fsigned-char if -mic*.
	(CC1_SPEC): Pass -fsigned-char if -mic*.
	(SIGNED_CHAR_SPEC): Remove.
doc:
	* tm.texi (SIGNED_CHAR_SPEC): Remove documentation.
testsuite:
	* gcc.dg/cpp/uchar-1.c, uchar-2.c, uchar-3.c: New tests.

From-SVN: r49444
2002-02-02 18:56:37 +00:00
Neil Booth
5d8ebbd862 cpperror.c: Update comments and copyright.
* cpperror.c: Update comments and copyright.
	* cppexp.c, cppfiles.c, cpphash.c, cpphash.h, cppinit.c,
	cpplex.c, cpplib.c, cpplib.h, cppmacro.c, cppmain.c: Similarly.

From-SVN: r48522
2002-01-03 21:43:09 +00:00
Andreas Schwab
b7e30d8ad0 cppfiles.c (_cpp_pop_file_buffer): Change return type to bool and return true if...
* cppfiles.c (_cpp_pop_file_buffer): Change return type to bool
	and return true if _cpp_push_next_buffer pushed a new include
	file.
	* cpplib.c (_cpp_pop_buffer): Only call obstack_free if
	_cpp_pop_file_buffer did not push a new file.
	* cpphash.h (_cpp_pop_file_buffer): Update declaration.

From-SVN: r48507
2002-01-03 09:41:00 +00:00
Neil Booth
0abc6a6a4f cpphash.c (_cpp_init_hashtable): Update.
* cpphash.c (_cpp_init_hashtable): Update.
	* cpphash.h (struct spec_nodes): Remove n_L.
	* cpplex.c (_cpp_lex_direct): Check for prefix L separately.

	* Makefile.in: Update, and add c-objc-common.o dependencies.
	* c-lang.c: Remove unnecessary includes.
	(c_init): Move bulk of code to c_objc_common_init, and call it.
	(c_tree_printer, c_missing_noreturn_ok_p, c_disregard_inline_limits,
	inline_forbidden_p, c_cannot_inline_tree_fn): Move to
	c-objc-common.c.
	* c-objc-common.c: New.  Mostly pulled from c-lang.c.
	* c-tree.h (c_disregard_inline_limits, c_cannot_inline_fn,
	c_objc_common_init, c_missing_noreturn_ok_p): New.
	* toplev.c: Update comment.
	* doc/passes.texi: Update.
	* objc/ojbc-act.c (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
	LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS,
	LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Override.
	(objc_init): Update to use c_objc_common_init.

From-SVN: r47388
2001-11-27 22:31:34 +00:00
Neil Booth
480709cc6c cpphash.h (struct cpp_buffer): Delete read_ahead and extra_char.
* cpphash.h (struct cpp_buffer): Delete read_ahead and extra_char.
	* cpplex.c (lex_percent, lex_dot): Remove.
	(get_effective_char, skip_block_comment, skip_line_comment,
	parse_identifier_slow, parse_number, parse_string, save_comment,
	_cpp_lex_direct): Update to do lookback freely.
	(IF_NEXT_IS, BACKUP): New macros.
	* cpplib.c (cpp_push_buffer): Don't set read_ahead and extra_char.
	* cppmacro.c (paste_tokens): Update.

From-SVN: r46392
2001-10-21 14:04:42 +00:00
Neil Booth
644eddaac5 cpphash.h: Update comments.
* cpphash.h: Update comments.
	(cpp_context): Update.
	(spec_nodes): Remove n__Pragma.
	* cppinit.c (cpp_create_reader): Update.
	(builtin_array): Add _Pragma.
	* cpplib.h: Update comments.
	(NODE_DISABLED, BT_PRAGMA): New.
	(cpp_start_lookahead, cpp_stop_lookahead): Remove prototypes.
	* cppmacro.c (struct cpp_macro): Remove disabled.
	(builtin_macro): Return int, handle _Pragma, push the new token
	on the context stack.
	(funlike_invocation_p): Unconstify, update.
	(enter_macro_context): Handle builtins here.
	(replace_args, push_token_context, push_ptoken_context):
	Update for prototype changes.
	(_cpp_pop_context): Update.
	(cpp_get_token): Don't handle buitins, nor _Pragma here.
	(cpp_sys_macro_p): Update.
	(_cpp_free_definition): Clear disabled flag.
	(_cpp_create_definition): Upate.
	* cppmain.c: Update comments.

From-SVN: r45948
2001-10-02 12:57:24 +00:00
Neil Booth
8c3b269309 cpphash.h (POOL_ALIGN, [...]): Remove.
* cpphash.h (POOL_ALIGN, POOL_FRONT, POOL_LIMIT, POOL_BASE,
	POOL_SIZE, POOL_ROOM, POOL_COMMIT, struct cpp_chunk,
	struct cpp_pool, _cpp_init_pool, _cpp_free_pool, _cpp_pool_reserve,
	_cpp_pool_alloc, _cpp_next_chunk): Remove.
	(_cpp_extend_buff, BUFF_ROOM): Update.
	(_cpp_append_extend_buff): New.
	(struct cpp_reader): Remove macro_pool, add a_buff.
	* cppinit.c (cpp_create_reader): Initialize a_buff, instead of
	macro_pool.
	(cpp_destroy): Free a_buff instead of macro_pool.
	* cpplex.c (new_chunk, chunk_suitable, _cpp_next_chunk,
	new_chunk, _cpp_init_pool, _cpp_free_pool, _cpp_pool_reserve,
	_cpp_pool_alloc, ): Remove.
	(parse_number, parse_string): Update use of _cpp_extend_buff.
	(_cpp_extend_buff): Update.
	(_cpp_append_extend_buff, cpp_aligned_alloc): New.
	* cpplib.c (glue_header_name, parse_answer):
	Update use of _cpp_extend_buff.
	(cpp_register_pragma, cpp_register_pragma_space): Use
	_cpp_aligned_alloc.
	(do_assert, do_unassert): Check for EOL, update.
	* cppmacro.c (stringify_arg, collect_args): Update to use
	_cpp_extend_buff and _cpp_append_extend_buff.
	(save_parameter, parse_params, alloc_expansion_token,
	_cpp_create_definition): Rework memory management.

	* gcc.dg/cpp/redef2.c: Add test.

From-SVN: r45899
2001-09-30 10:03:11 +00:00
Neil Booth
ece54d544d cpphash.h (struct cpp_buff): Make unsigned.
* cpphash.h (struct cpp_buff): Make unsigned.
	(_cpp_get_buff): Take length of size_t.
	(_cpp_unaligned_alloc): New.
	(BUFF_ROOM, BUFF_FRONT, BUFF_LIMIT): New.
	(struct cpp_reader): Remove ident_pool.  Add u_buff.
	* cppinit.c (cpp_create_reader): Initialize u_buff, not ident_pool.
	(cpp_destroy): Destroy u_buff, not ident_pool.
	* cpplex.c (parse_number, parse_string, save_comment,
	cpp_token_as_text): Update to use the unaligned buffer.
	(new_buff): Make unsigned.
	(_cpp_unaligned_alloc): New.
	* cpplib.c (glue_header_name): Update to use the unaligned buffer.
	* cppmacro.c (new_number_token, builtin_macro, stringify_arg):
	Similarly.
	(collect_args): Make unsigned.

From-SVN: r45858
2001-09-28 09:40:22 +00:00
Neil Booth
c9e7a60950 cpphash.h: Update comment.
* cpphash.h: Update comment.
	* cpplex.c: Update comments.
	(_cpp_can_paste): Remove.
	* cpplib.h (_cpp_can_paste): Remove.
	* cppmacro.c (paste_tokens, paste_all_tokens): Update to use the
	lexer rather than _cpp_can_paste.

From-SVN: r45840
2001-09-27 12:59:38 +00:00
Neil Booth
1e013d2ee5 cpphash.h (struct cpp_pool): Remove locks and locked.
* cpphash.h (struct cpp_pool): Remove locks and locked.
	(struct cpp_context): Add member buff.
	(struct cpp_reader): Remove member argument_pool.
	(_cpp_lock_pool, _cpp_unlock_pool): Remove.
	* cppinit.c (cpp_create_reader, cpp_destroy): Argument_pool is dead.
	* cpplex.c (chunk_suitable): Remove pool argument.
	(MIN_BUFF_SIZE, BUFF_SIZE_UPPER_BOUND, EXTENDED_BUFF_SIZE): New.
	(new_buff, _cpp_extend_buff): Update.
	(_cpp_get_buff): Fix silly pointer bug.  Be more selective about
	which buffer is returned.
	(_cpp_next_chunk, _cpp_init_pool): Pool locking removed.
	(_cpp_lock_pool, _cpp_unlock_pool): Remove.
	* cppmacro.c (lock_pools, unlock_pools): Remove.
	(push_ptoken_context): Take a _cpp_buff.
	(enter_macro_context): Pool locking removed.
	(replace_args): Use a _cpp_buff for the replacement list with
	arguments replaced.
	(push_token_context): Clear buff.
	(expand_arg): Use _cpp_pop_context.
	(_cpp_pop_context): Free a context's buffer, if any.

From-SVN: r45833
2001-09-26 21:44:35 +00:00
Neil Booth
b8af0ca5c7 cpphash.h (struct _cpp_buff, [...]): New.
* cpphash.h (struct _cpp_buff, _cpp_get_buff, _cpp_release_buff,
	_cpp_extend_buff, _cpp_free_buff): New.
	(struct cpp_reader): New member free_buffs.
	* cppinit.c (cpp_destroy): Free buffers.
	* cpplex.c (new_buff, _cpp_release_buff, _cpp_get_buff,
	_cpp_extend_buff, _cpp_free_buff): New.
	* cpplib.h (struct cpp_options): Remove unused member.
	* cppmacro.c (collect_args): New.  Combines the old parse_arg
	and parse_args.  Use _cpp_buff for memory allocation.
	(funlike_invocation_p, replace_args): Update.

From-SVN: r45827
2001-09-26 17:52:50 +00:00
Neil Booth
4ed5bcfb1e c-lex.c (cb_def_pragma): Update.
* c-lex.c (cb_def_pragma): Update.
	(c_lex): Update, and skip padding.
	* cppexp.c (lex, parse_defined): Update, remove unused variable.
	* cpphash.h (struct toklist): Delete.
	(union utoken): New.
	(struct cpp_context): Update.
	(struct cpp_reader): New members eof, avoid_paste.
	(_cpp_temp_token): New.
	* cppinit.c (cpp_create_reader): Update.
	* cpplex.c (_cpp_temp_token): New.
	(_cpp_lex_direct): Add PREV_WHITE when parsing args.
	(cpp_output_token): Don't print leading whitespace.
	(cpp_output_line): Update.
	* cpplib.c (glue_header_name, parse_include, get__Pragma_string,
	do_include_common, do_line, do_ident, do_pragma,
	do_pragma_dependency, _cpp_do__Pragma, parse_answer,
	parse_assertion): Update.
	(get_token_no_padding): New.
	* cpplib.h (CPP_PADDING): New.
	(AVOID_LPASTE): Delete.
	(struct cpp_token): New union member source.
	(cpp_get_token): Update.
	* cppmacro.c (macro_arg): Convert to use pointers to const tokens.
	(builtin_macro, paste_all_tokens, paste_tokens, funlike_invocation_p,
	replace_args, quote_string, stringify_arg, parse_arg, next_context,
	enter_macro_context, expand_arg, _cpp_pop_context, cpp_scan_nooutput,
	_cpp_backup_tokens, _cpp_create_definition): Update.
	(push_arg_context): Delete.
	(padding_token, push_token_context, push_ptoken_context): New.
	(make_string_token, make_number_token): Update, rename.
	(cpp_get_token): Update to handle tokens as pointers to const,
	and insert padding appropriately.
	* cppmain.c (struct printer): New member prev.
	(check_multiline_token): Constify.
	(do_preprocessing, cb_line_change): Update.
	(scan_translation_unit): Update to handle spacing.
	* scan-decls.c (get_a_token): New.
	(skip_to_closing_brace, scan_decls): Update.
	* fix-header.c (read_scan_file): Update.

	* doc/cpp.texi: Update.

	* gcc.dg/cpp/macro10.c: New test.
	* gcc.dg/cpp/strify3.c: New test.
	* gcc.dg/cpp/spacing1.c: Add tests.
	* gcc.dg/cpp/19990703-1.c: Remove bogus test.
	* gcc.dg/cpp/20000625-2.c: Fudge to pass.

From-SVN: r45793
2001-09-24 22:53:12 +00:00
Neil Booth
14baae01f6 cpphash.h (_cpp_lex_direct): New.
* cpphash.h (_cpp_lex_direct): New.
	* cpplex.c (_cpp_lex_token): Update.
	(lex_token): Rename _cpp_lex_direct; lex into pfile->cur_token,
	and increment that pointer.
	* cppmacro.c (alloc_expansion_token): New.
	(lex_expansion_token): Lex macro expansion directly into
	macro storage.

From-SVN: r45656
2001-09-17 18:26:12 +00:00
Neil Booth
345894b43f cpphash.h (_cpp_lex_token): Update prototype.
* cpphash.h (_cpp_lex_token): Update prototype.
	* cpplex.c (_cpp_lex_token): New prototype.
	* cpplib.c (skip_rest_of_line, check_eol, _cpp_handle_directive,
	lex_macro_node, read_flag, do_pragma_poison): Update.
	* cppmacro.c (cpp_get_token, parse_params,
	lex_expansion_token): Update.

From-SVN: r45646
2001-09-16 13:44:29 +00:00
Neil Booth
5041042620 cpphash.h (struct cpp_reader): Remove lexer_pos, directive_pos.
* cpphash.h (struct cpp_reader): Remove lexer_pos, directive_pos.
	Split mlstring_pos into mls_line and mls_col.
	* cppinit.c (cpp_create_reader): Initialize line to 1.
	(cpp_destroy): Free tokenruns.
	(push_include): Don't update lexer_pos.
	* cpplex.c (unterminated, parse_string): Update.
	(lex_token): Don't update lexer_pos, update.
	* cpplib.c (if_stack): Save line instead of line + col.
	(start_directive, _cpp_do__Pragma, do_else, do_elif,
	push_conditional, _cpp_pop_buffer): Update.
	* cppmacro.c (funlike_invocation_p): Don't save lexer_pos.
	(_cpp_create_definition): Update.

From-SVN: r45627
2001-09-15 10:18:03 +00:00
Neil Booth
9729389786 cpperror.c (print_location): Take line and column, for default positioning use the previously lexed token.
* cpperror.c (print_location): Take line and column, for
	default positioning use the previously lexed token.
	(_cpp_begin_message): Take line and column.
	(cpp_ice, cpp_fatal, cpp_error, cpp_error_with_line, cpp_warning,
	cpp_warning_with_line, cpp_pedwarn, cpp_pedwarn_with_line): Update.
	* cpphash.h (_cpp_begin_message): Update prototype.
	* cppinit.c (push_include): Don't set output line.
	* cpplex.c (_cpp_lex_token): Callback for start of new output lines.
	* cpplib.c (do_diagnostic, _cpp_pop_buffer): Update.
	(do_pragma): Kludge for front ends.  Don't expand macros at all.
	* cpplib.h (cpp_lookahead, cpp_token_with_pos, cpp_get_line): Remove.
	(struct cpp_token): Remove output_line.
	(struct cpp_callbacks): New member line_change.
	* cppmacro.c (builtin_macro, paste_all_tokens, replace_args,
	cpp_get_token): Preserve BOL flag.
	(cpp_get_line): Remove.
	(_cpp_backup_tokens): Remove useless abort().
	* cppmain.c (cb_line_change): New.
	(scan_translation_unit): Don't worry about starting new lines here.
	* scan-decls.c (scan_decls): Update.
	* c-lex.c (c_lex, init_c_lex): Update.
	(cb_line_change, src_lineno): New.

From-SVN: r45613
2001-09-14 22:04:46 +00:00
Neil Booth
bdcbe49686 c-parse.in (_yylex): Use _cpp_backup_tokens.
* c-parse.in (_yylex): Use _cpp_backup_tokens.
	* cpphash.h (struct tokenrun): Add prev.
	(struct lexer_state): Remove bol.
	(struct cpp_reader): Remove old lookahead stuff, add lookaheads.
	(_cpp_free_lookaheads, _cpp_release_lookahead, _cpp_push_token)
	: Remove.
	* cppinit.c (cpp_create_reader): Don't set bol.
	(cpp_destroy): Don't free lookaheads.
	* cpplex.c (lex_directive): Remove.
	(next_tokenrun): Update.
	(_cpp_lex_token): Clean up logic.
	(lex_token): Update to return a pointer to lexed token, since it
	can move to the start of the buffer.  Simpify newline handling.
	* cpplib.c (SEEN_EOL): Update.
	(skip_rest_of_line): Remove lookahead stuff.
	(end_directive): Line numbers are already incremented.  Revert
	to start of lexed token buffer if we can.
	(_cpp_handle_directive, do_pragma, do_pragma_dependency,
	parse_answer): Use _cpp_backup_tokens.
	(run_directive, cpp_pop_buffer): Don't set bol, set saved_flags
	instead.  Don't check for EOL.
	(do_include_common, do_line, do_pragma_system_header): Use
	skip_rest_of_line.
	* cpplib.h (BOL, _cpp_backup_tokens): New.
	* cppmacro.c (save_lookahead_token, take_lookahead_token,
	alloc_lookahead, free_lookahead, _cpp_free_lookaheads,
	cpp_start_lookahead, cpp_stop_lookahead, _cpp_push_token): Remove.
	(builtin_macro): Don't use cpp_get_line.
	(cpp_get_line): Short term kludge.
	(parse_arg): Handle directives in arguments here.  Back up when
	appropriate.  Store EOF at end of argument list.
	(funlike_invocation_p): Use _cpp_backup_tokens.
	(push_arg_context): Account for EOF at end of list.
	(cpp_get_token): Remove lookahead stuff.  Update.

	* gcc.dg/cpp/directiv.c: Update.
	* gcc.dg/cpp/undef1.c: Update.

From-SVN: r45582
2001-09-13 20:05:17 +00:00
Neil Booth
5fddcffc8a cpphash.h (struct tokenrun): New.
* cpphash.h (struct tokenrun): New.
	(struct cpp_context): New member bol.
	(struct cpp_reader): New members.
	(_cpp_init_tokenrun): New.
	* cppinit.c (cpp_create_reader): Set up the token runs.
	* cpplex.c (lex_directive, lex_token, next_tokenrun): New.
	(lex_token): New internalised version of _cpp_lex_token.  Don't
	handle directives or the multiple include opimisation here any
	more.  Simply lex a token.
	* cpplib.c (run_directive): Clear bol.
	(_cpp_pop_buffer): Set bol.
	* cppmacro.c (funlike_invocation_p): Keep tokens whilst parsing
	arguments.

From-SVN: r45534
2001-09-11 07:00:12 +00:00
Neil Booth
29401c300b cpperror.c (print_location): Don't show _Pragma.
* cpperror.c (print_location): Don't show _Pragma.
	* cppfiles.c (_cpp_pop_file_buffer): Handle -include file pushing
	and file change callback generation here.
	(stack_include_file): Update use of cpp_push_buffer.
	* cpphash.h (_cpp_pop_file_buffer): Update prototype.
	(struct cpp_buffer): Remove type, pfile members.
	* cppinit.c (cpp_handle_option): Use free_chain.
	* cpplex.c (_cpp_lex_token): Don't do -include file pushing here.
	(skip_escaped_newlines, get_effective_char, lex_percent): Take
	a cpp_reader rather than a cpp_buffer.
	(skip_escaped_newlines, get_effective_char, skip_block_comment,
	skip_line_comment, parse_string, lex_percent, lex_dot,
	_cpp_lex_token): Update accordingly.
	* cpplib.c (_cpp_pop_buffer): Don't do file change callback
	generation here.
	(cpp_push_buffer): Update prototype.
	(run_directive): Update use of cpp_push_buffer.
	(_cpp_do__Pragma, cpp_define, cpp_define_builtin, cpp_undef,
	handle_assertion): Update use of run_directive.
	* cpplib.h (enum cpp_buffer_type): Remove.
	(cpp_push_buffer): Update prototype.
	* fix-header.c (read_scan_file): Update.

From-SVN: r45112
2001-08-22 20:37:20 +00:00
Neil Booth
d8693c6fa4 cppfiles.c (stack_include_file): line-map.c now handles include depth.
* cppfiles.c (stack_include_file): line-map.c now handles include
	depth.
	(handle_missing_handler): Similarly.
	(_cpp_execute_include): Similarly.
	(_cpp_pop_file_buffer): Similarly.
	* cpphash.h (struct cpp_reader): Remove system_include_depth,
	buffer_stack_depth and include_depth.
	* cpplib.c (do_include_common): line-map.c now handles include depth.
	(cpp_push_buffer): Similarly.
	(_cpp_pop_buffer): Similarly.
	* cppmacro.c (builtin_macro): Update.
	* line-map.c (init_line_maps): Set depth.
	(add_line_map): Increment "used" earlier.  Update and use the
	include depth.
	(trace_include): Use the include depth.
	* line-map.h (struct line_maps): New member depth.

From-SVN: r45085
2001-08-21 23:05:12 +00:00
Neil Booth
e5eba70ac7 cppfiles.c (stack_include_file): Harmonize system headerness tests.
* cppfiles.c (stack_include_file): Harmonize system headerness tests.
	* cppfiles.c (stack_include_file): Only stack a file if there
	is something to do.  Return a boolean indicating whether a
	buffer was stacked or not.
	(_cpp_execute_include): Similarly.
	(_cpp_read_file): Similarly.
	* cpphash.h (_cpp_read_file, _cpp_execute_include): Update prototypes.

From-SVN: r45083
2001-08-21 19:23:24 +00:00
Neil Booth
d7bc7a9850 cpphash.h (_cpp_push_next_buffer): New.
* cpphash.h (_cpp_push_next_buffer): New.
	* cppinit.c (do_includes): Remove.
	(push_include, free_chain, _cpp_push_next_buffer): New.
	(cpp_start_read): Use them to rework command line option handling.
	(cpp_handle_option): Combine handling of -include and -imacros.
	* cpplex.c (_cpp_lex_token): Push a new -include buffer if
	appropriate.  Always insert missing \n at EOF.
	* cpplib.c (start_directive): Get the directive position right.
	* cppmain.c (cb_file_change): Always print the first line, unless
	preprocessed.

From-SVN: r45070
2001-08-21 06:20:18 +00:00
Neil Booth
bb74c96301 cpperror.c (print_location): Don't take a file name; use the line map instead.
* cpperror.c (print_location):  Don't take a file name; use the
	line map instead.
	(_cpp_begin_message): Similarly.
	(cpp_ice, cpp_fatal, cpp_error, cpp_error_with_line, cpp_warning,
	cpp_warning_with_line, cpp_pedwarn, cpp_pedwarn_with_line): Update.
	(cpp_pedwarn_with_file_and_line): Remove.
	* cppfiles.c (stack_include_file): Update; set filename to stdin
	here when appropriate.
	* cpphash.h (struct cpp_buffer): Remove nominal_fname.
	(_cpp_begin_message): Don't take a file name.
	* cppinit.c: Add comment.
	* cpplex.c: Fix end-of-directive indicator.
	* cpplib.c: Don't include intl.h.
	(run_directive, do_diagnostic): Update.
	(do_line): Update to not use nominal_fname.
	(cpp_push_buffer): Don't take a filename.
	* cpplib.h (struct ht): Remove.
	(cpp_push_buffer): Don't take a filename.
	(cpp_pedwarn_with_file_and_line): Remove.
	* cppmacro.c (struct cpp_macro): Remove file.
	(builtin_macro): Update.
	(_cpp_create_definition): Update.
	* cppmain.c: Correct comment.
	* fix-header.c (read_scan_file): Update.

From-SVN: r44986
2001-08-17 22:23:49 +00:00
Neil Booth
bef985f3f6 cpphash.c (_cpp_destroy_hashtable): Use ht_destroy.
* cpphash.c (_cpp_destroy_hashtable): Use ht_destroy.
	* cpphash.h (CPP_IN_SYSTEM_HEADER): Fix.
	(struct cpp_pool): New member first.
	* cppinit.c (append_include_chain): Plug memory leaks.
	* cpplib.c (cpp_register_pragma, cpp_register_pragma_space):
	Allocate pragma structures from the (aligned) macro pool to
	avoid leaking memory.
	* cpplex.c (_cpp_init_pool, _cpp_free_pool): Use pool->first
	so we don't leak memory.
	* hashtable.c (ht_destroy): New.
	* hashtable.h (ht_destroy): New.

From-SVN: r44794
2001-08-11 12:37:19 +00:00
Neil Booth
f80f7e8cd8 cpphash.h, cpplib.c: Correct erroneous previous checkin.
* cpphash.h, cpplib.c: Correct erroneous previous checkin.

Co-Authored-By: Franz Sirl <Franz.Sirl-kernel@lauterbach.com>

From-SVN: r44790
2001-08-11 08:02:54 +00:00
Neil Booth
47d89cf3e6 c-lex.c (map): Make const.
* c-lex.c (map): Make const.
	(cb_file_change): Update for callback passing a line map.
	Don't assume we have a previous map.  Remove sanity check
	about popping too many files.
	* cpperror.c (print_location): Make map const.
	* cppfiles.c (stack_include_file): Update; line maps now hold sysp.
	(cpp_make_system_header): Similarly.
	(search_from): Similarly.
	(_cpp_execute_include): Don't remember where we came from.
	* cpphash.h (struct cpp_buffer): Remove return_to_line, sysp.
	(struct cpp_reader): Make map const.
	(CPP_IN_SYSTEM_HEADER, _cpp_do_file_change): Update.
	* cpplib.c (do_line): Update; line maps now hold sysp.
	(cpp_push_buffer): Similarly.
	(_cpp_do_file_change): Similarly; callback with map instead.
	(cpp_get_line_maps): Constify return value.
	(_cpp_pop_buffer): Update.
	* cpplib.h (struct cpp_file_change): Remove.
	(struct cpp_callbacks): Update.
	(cpp_get_line_maps): Constify return value.
	* cppmacro.c (_cpp_create_definition): Update.
	* cppmain.c (struct printer): Constify map.
	(maybe_print_line): Similarly.
	(print_line): Similarly.  Deduce flags 1 and 2 here.
	(cb_file_change): Update.
	* line-map.c (free_line_maps): Warn regardless.
	(add_line_map): Return pointer to const.  When passed NULL to_file
	with LC_LEAVE, use the obvious values for the return point so the
	caller doesn't have to figure them out.
	(lookup_line): Return pointer to const.
	(print_containing_files): Take pointer to const.
	* line-map.h (struct line_map): New members reason, sysp.
	(add_line_map): Return pointer to const.
	(lookup_line): Similarly.
	(print_containing_files): Take pointer to const.

From-SVN: r44789
2001-08-11 07:33:39 +00:00
Neil Booth
fde84349be cpperror.c (print_containing_files): Moved to line-map.c.
* cpperror.c (print_containing_files): Moved to line-map.c.
	(print_location): line-map.c handles re-listing or otherwise.
	* cpphash.h (struct lexer_state): Remove next_bol.
	(struct cpp_buffer): Remove include_stack_listed.
	* cpplib.c (do_line, cpp_push_buffer, _cpp_pop_buffer):
	Remove faked buffer handling.
	(_cpp_do_file_change): Tweak.
	* cpplib.h (enum cpp_buffer_type): Remove BUF_FAKE.
	* cppmain.c (struct printer): Remove filename.
	(print_line, cb_file_change): Update accordingly.
	* line-map.c: Include intl.h.
	(init_line_maps): Initialize last_listed.
	(free_line_maps): Sanity check, warn if ENABLED_CHECKING.
	(add_line_map): Sanity check inputs, warn if ENABLED_CHECKING.
	(print_containing_files): New.
	* line-map.h (struct line_maps): New member last_listed.
	(print_containing_files, INCLUDED_FROM): New.
	* Makefile.in: Update.
	* po/POTFILES.in: Add line-map.c.

From-SVN: r44670
2001-08-06 21:07:41 +00:00
Neil Booth
67821e3a9e re PR preprocessor/3081 (Preprocessor merges 2 first lines when -imacros is being used)
PR preprocessor/3081
	* c-lex.c (map): New.
	(cb_file_change): Update map and use it.
	(cb_def_pragma, cb_define, cb_undef): Use map and line.
	(c_lex): Update to use map.
	* cpperror.c (print_location): Move to using logical line numbers.
	* cppfiles.c (stack_include_file): Update for new _cpp_do_file_change.
	(cpp_make_system_header): Similarly.
	(_cpp_execute_include): Stop line numbering hacks.  Store the
	line we will return to.
	* cpphash.h (CPP_BUF_LINE): Remove.
	(struct cpp_buffer): Remove lineno and pseudo_newlines.
	Add map and return_to_line.
	(_cpp_do_file_change): Update.
	* cppinit.c (cpp_start_read): Update line kludge.
	* cpplex.c (handle_newline): Don't update lineno and pseudo_newlines.
	(trigraph_ok): Use logical line numbers for diagnostics.
	(skip_block_comment): Likewise.
	(skip_whitespace): Likewise.
	(skip_line_comment): Use pfile->line instead.
	(_cpp_lex_token): Update to use logical line numbering exclusively.
	Handle BOL locally.  Accept new lines in directives, but keep
	pfile->line decremented.  Diagnostics use logical lines.  Update
	directive handling.
	* cpplib.c (SEEN_EOL): New.
	(skip_rest_of_line, check_eol): Use it.
	(end_directive): Increase line number when accepting the newline
	at the end of a directive.
	(run_directive): Simplify.
	(do_line): Bad LC_LEAVEs become LC_RENAMEs.  Update.
	(_cpp_do_file_change): Update to take buffer line number as an
	argument, and store the current map in the cpp_reader.  Remove
	line number kludges.
	(_cpp_do__Pragma): Restore output position after a _Pragma.
	(cpp_push_buffer): Don't set output line or lineno.
	(_cpp_pop_buffer): Transfer more info from a faked buffer.
	Remove line kludge.  Set output_line.
	* cppmacro.c (builtin_macro): Update handling of __LINE__.
	(parse_arg): Use logical lines.
	(save_lookahead_token): Save EOFs too now.
	* cppmain.c (struct printer): Fix comments.
	(printer_init): Simplify, let caller do errors.
	(scan_translation_unit, check_multiline_token, dump_macro): Update.
	(maybe_print_line): Simplify.
	(print_line): Don't print a linemarker if -P.
	(cb_define, cb_undef, cb_def_pragma, cb_ident, cb_include): Update.
	(cb_file_change): Simplify.
	* line-map.h (LAST_SOURCE_LINE): Fix.
	(CURRENT_LINE_MAP): New.

	* gcc.dg/cpp/19951025-1.c: Revert.
	* gcc.dg/cpp/directiv.c: We no longer process directives that
	interrupt macro arguments.

From-SVN: r44650
2001-08-05 17:31:25 +00:00
Neil Booth
8bbbef3434 cpphash.h (struct cpp_reader): New member directive_line.
* cpphash.h (struct cpp_reader): New member directive_line.
	* cpplib.h (struct cpp_callbacks): Update prototypes of callbacks.
	* cpplib.c (do_define, do_undef, do_ident, do_include_common,
	do_pragma): Pass line to callbacks.
	(start_directive): Record line of directive.
	* cppmain.c (cb_ident, cb_define, cb_undef, cb_def_pragma,
	cb_include): Similarly.
	* c-lex.c (cb_ident, cb_define, cb_undef, cb_def_pragma):
	Similarly.

From-SVN: r44637
2001-08-04 16:28:14 +00:00
Neil Booth
ef6e958a86 Makefile.in (CPPLIB_H): New, so that dependencies on cpplib.h are also on line-map.h.
* Makefile.in (CPPLIB_H): New, so that dependencies on cpplib.h
	are also on line-map.h.
	* cppfiles.c (stack_include_file): Update.
	* cpphash.h (struct cpp_buffer): New member return_at_eof.
	(_cpp_pop_buffer): New.
	* cppinit.c (cpp_destroy, cpp_finish): Update.
	(do_includes): Mark each buffer to return at EOF.
	* cpplex.c (_cpp_lex_token): Pop buffers at EOF.  Continue or
	return as requested.
	* cpplib.c (run_directive, do_line, cpp_push_buffer): Update.
	(cpp_pop_buffer): Rename _cpp_pop_buffer.  Stop skipping.
	* cpplib.h (cpp_pop_buffer): Remove.
	(cpp_scan_buffer_nooutput): Rename cpp_scan_nooutput.
	* cppmacro.c (cpp_scan_buffer_nooutput): Similarly.  No need to pop
	buffers.
	* cppmain.c (scan_buffer): Rename scan_translation_unit.  No need
	to pop buffers.
	(do_preprocessing): Update.
	* fix-header.c (read_scan_file): Update.  No need to pop buffers.
	* c-parse.in (_yylex): Similarly.
	* scan-decls.c (scan_decls): Similarly.
	* line-map.h: Update comments.

	* cp/spew.c (read_token): No need to pop buffers.

	* objc/Make-lang.in (objc-act.o): Update dependencies.

From-SVN: r44634
2001-08-04 12:01:59 +00:00
Neil Booth
d82fc1085f line-map.c: New.
* line-map.c: New.
	* line-map.h: New.
	* Makefile.in (line-map.o): New.
	(LIBCPP_OBJS, LIBCPP_DEPS): Update.
	* c-lex.c (cb_file_change): Update for new cpp_file_change structure.
	* cpperror.c (print_containing_files): Similarly.
	(print_location): Update.  Don't output a space before _Pragma.
	* cppfiles.c (stack_include_file): Set to line 1 immediately.
	(stack_include_filee, cpp_make_system_header): Update.
	(_cpp_execute_include): Get logical line number right for calling
	as-yet-unterminated #include.
	* cpphash.h (struct cpp_reader): Add line_maps.
	(_cpp_do_file_change): Update.
	* cppinit.c (cpp_create_reader): Initialize line maps.
	(cpp_destroy): Destroy line maps.
	(cpp_start_read): Get logical line number right.
	* cpplex.c (parse_string): Only warn once for multi-line strings.
	Use boolean variable for null warning.
	* cpplib.c (_cpp_handle_directive): End the directive if it isn't
	already.
	(do_include_common): End the directive early.
	(do_line): Don't warn about out-of-range lines in preprocessed
	source.  Update.  Remove unused variables.
	(_cpp_do_file_change): Update for new line mapping.
	(pragma_cb): New typedef.
	(cpp_register_pragma): Stop looking ahead before calling the
	handler.  Clean up.
	(do_pragma_system_header): End directive early.
	(cpp_get_line_maps): New.
	(cpp_pop_buffer): Fudge logical line.  Update.
	* cpplib.h: Include line-map.h
	(enum cpp_fc_reason): Remove.
	(struct cpp_file_change): Update.
	(cpp_get_line_maps): New.
	* cppmain.c (struct_printer): New member map.
	(cb_file_change): Update for new mappings.
	* fix-header.c (cb_file_change): Similarly.
testsuite:
	* gcc.dg/cpp/19951025-1.c: Update.

From-SVN: r44584
2001-08-02 23:03:31 +00:00
Neil Booth
1444f2ed7c cpphash.h (struct cpp_reader): New members line, pseudo_newlines.
* cpphash.h (struct cpp_reader): New members line, pseudo_newlines.
	* cpplex.c (handle_newline): Update prototype.  Maintain logical
	line number.
	(skip_escaped_newlines, skip_block_comment, parse_string):
	Update accordingly.
	(_cpp_lex_token): Update, and store token position within the token.
	* cpplib.h (struct cpp_token): Add line and column entries.
	* cppmacro.c (replace_args): Position stringified tokens correctly.

From-SVN: r44533
2001-08-01 06:19:39 +00:00
Neil Booth
09b822537f cpphash.h (struct cpp_reader): Remove import_warning.
* cpphash.h (struct cpp_reader): Remove import_warning.
	* cpplib.c (skip_rest_of_line): Don't bother turning off
	macro expansion.
	(parse_include): Move include handling to...
	(do_include_common): ... here.  Move import warning from...
	(do_import): ... here.
	(do_pragma_poison): Don't do a callback for poison identifiers.
	* cpplib.h (struct cpp_callbacks): Don't do poison callbacks.
	* cppmain.c (setup_callbacks): Similarly.

From-SVN: r44466
2001-07-29 22:27:20 +00:00
Neil Booth
6d18adbc2c cppexp.c (parse_defined): Always record the macro name.
* cppexp.c (parse_defined): Always record the macro name.
	(lex): Don't worry about identifiers, or special-case
	CPP_NOT here.
	(_cpp_parse_expr): Figure out at the end of the routine
	whether we saw a valid !defined() expression.
	* cppfiles.c (stack_include_file): Update for mi_valid.
	(_cpp_pop_file_buffer): Similarly.
	* cpplex.c (_cpp_lex_token): Similarly.
	* cpphash.h (enum mi_state, enum mi_ind, mi_state,
	mi_if_not_defined, mi_lexed): Remove.
	(mi_valid): New.
	* cpplib.c (do_if): Simplify.
	(do_endif, push_conditional, _cpp_handle_directive): Update
	for renaming of mi_state to mi_valid.

	* cpp.texi: Add index entries for digraphs, and add comment
	that C++ refers to them as alternative tokens.

From-SVN: r44459
2001-07-29 17:27:57 +00:00
Neil Booth
cef0d199d2 cpphash.h (struct_lexer_state): Delete was_skipping.
* cpphash.h (struct_lexer_state): Delete was_skipping.
	Move skipping here from struct cpp_reader.
	* cpplex.c (parse_identifier): Update.
	(_cpp_lex_token): Don't skip tokens in a directive.
	* cpplib.c (struct if_stack): Update.
	(start_directive, end_directive): Don't change skipping state.
	(_cpp_handle_directive): Update.
	(do_ifdef, do_ifndef, do_if, do_elif): Similarly.
	(do_else, do_endif): Update; only check for excess tokens if not
	in a skipped conditional block.
	(push_conditional): Update for new struct if_stack.

	* gcc.dg/cpp/extratokens.c: Fix.
	* gcc.dg/cpp/skipping2.c: New tests.

From-SVN: r44380
2001-07-26 06:02:47 +00:00
Richard Henderson
88657302b7 Standardize header guards.
From-SVN: r42615
2001-05-25 18:31:47 -07:00
Neil Booth
2a967f3d3a Makefile.in (OBJS, [...]): Update.
* Makefile.in (OBJS, LIBCPP_OBJS, LIBCPP_DEPS,
	cpplib.o, cpphash.o, fix-header): Update.
	(hashtable.o): New target.
	* c-common.h: Include cpplib.h.  Define C_RID_CODE and
	struct c_common_identifier here.
	* c-lang.c (c_init_options): Update.  Call set_identifier_size.
	* c-lex.c (c_lex): Update.
	* c-pragma.h: Update.
	* c-tree.h (struct lang_identifier): Contain c_common_identifier.
	Delete rid_code.
	(C_RID_CODE): Delete.
	* cpphash.c: Rewrite to use hashtable.c.
	* cpphash.h: Update include guards.
	(struct cpp_reader): Remove hashtab.
	hash_ob and buffer_ob are no longer pointers.  Add hash_table
	and our_hashtable.
	(HASHSTEP, _cpp_init_hashtable,	_cpp_lookup_with_hash): Delete.
	(_cpp_cleanup_hashtable): Rename _cpp_destroy_hashtable.
	(_cpp_cleanup_stacks): Rename _cpp_init_directives.
	* cppinit.c (cpp_create_reader): Update.
	* cpplex.c (cpp_ideq, parse_identifier, cpp_output_token): Update.
	(cpp_interpret_charconst): Eliminate warning.
	* cpplib.c (do_pragma, do_endif, push_conditional,
	cpp_push_buffer, cpp_pop_buffer): Update.
	(_cpp_init_stacks): Rename cpp_init_directives.
	(_cpp_cleanup_stacks): Remove.
	* cpplib.h: Update include guards.  Include tree-core.h and c-rid.h.
	(cpp_hashnode, cpp_token, NODE_LEN, NODE_NAME,
	 cpp_forall_identifiers, cpp_create_reader): Update.
	(C_RID_CODE, cpp_make_node): New.
	(c_common_identifier): New identifier node for C front ends.
	* cppmain.c (main): Update.
	* fix-header.c (read_scan_file): Update.
	* flags.h (id_clash_len): Make unsigned.
	* ggc.h (ggc_mark_nonnull_tree): New.
	* hashtable.c: New.
	* hashtable.h: New.
	* stringpool.c: Update comments and copyright.  Update to use
	hashtable.c.
	* toplev.c (approx_sqrt): Move to hashtable.c.
	(id_clash_len): Make unsigned.
	* toplev.h (ident_hash): New.
	* tree.c (gcc_obstack_init): Move to hashtable.c.
	* tree.h: Include hashtable.h.
	(IDENTIFIER_POINTER, IDENTIFIER_LENGTH): Update.
	(GCC_IDENT_TO_HT_IDENT, HT_IDENT_TO_GCC_IDENT): New.
	(struct tree_identifier): Update.
	(make_identifier): New.
cp:
	* cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
	(C_RID_CODE): Remove.
	* lex.c (cxx_init_options): Call set_identifier_size.  Update.
	(init_parse): Don't do it here.
objc:
	* objc-act.c (objc_init_options): Call set_identifier_size. Update.

From-SVN: r42334
2001-05-20 06:26:45 +00:00
Neil Booth
2f878973cd cpperror.c (print_location): Don't special case <stdin>.
* cpperror.c (print_location): Don't special case <stdin>.
	(_cpp_begin_message): Handle WARNING_SYSHDR the same as
	WARNING, but we don't check if we're in system headers.
	* cpplib.h (enum error_type): WARNING_SYSHDR: New.
	* cpplib.c (do_warning): Warn in system headers.

From-SVN: r41186
2001-04-08 10:01:18 +00:00
Neil Booth
ba133c968c cpp.texi: Update documentation for -include and -imacros.
* cpp.texi: Update documentation for -include and -imacros.
	* cppfiles.c (struct include_file): Remove "defined" memeber.
	(find_or_create_entry): Make a copy of the file name, and
	simplify it.
	(open_file): Update to ensure we use the simplified filename.
	(stack_include_file): Don't set search_from.
	(cpp_included): Don't simplify the path name here.
	(find_include_file): New prototype.  Call search_from to
	get the start of the "" include chain.  Don't simplify the
	filenames here.
	(_cpp_execute_include): New prototype.  Move diagnostics to
	do_include_common.  Update.
	(_cpp_pop_file_buffer): Don't set defined.
	(search_from): New prototype.  Use the preprocessor's cwd
	for files included from the command line.
	(read_name_map): Don't simplify the pathname here.
	* cpphash.h (enum include_type): New.
	(struct buffer): Delete search from.  New search_cached.
	(_cpp_execute_include): Update prototype.
	* cppinit.c (do_includes): Use _cpp_execute_include.
	* cpplib.c (do_include_common): New function.
	(do_include, do_include_next, do_import): Use it.

From-SVN: r40486
2001-03-15 07:57:13 +00:00
Neil Booth
e7182666e6 cppfiles.c (stack_include_file): Only increase the include count if we actually process the file properly...
* cppfiles.c (stack_include_file): Only increase the include
	count if we actually process the file properly, as opposed
	to treating it as length zero.  Only call read_include_file
	if not DO_NOT_REREAD.  Handle the -H include file output
	here.
	(read_include_file): Remove now redundant DO_NOT_REREAD check.
	(cpp_included, find_include_file): Simplify pathnames after
	remapping them.  If remapping, don't use the remapped file
	name's buffer as our scratch buffer.
	(cpp_pop_file_buffer): Replace the multiple include macro
	only if it isn't yet set.
	(read_name_map): Simplify remapped names when reading in.
	(remap_filename): Move code to code path that uses it.
	(_cpp_simplify_pathname): Return the input pointer.
	* cpphash.h (_cpp_simplify_pathname): Update prototype.

From-SVN: r40467
2001-03-14 19:35:08 +00:00
Neil Booth
7868b4a252 cppfiles.c (_cpp_execute_include): Don't make a null-terminated copy of the filename.
* cppfiles.c (_cpp_execute_include): Don't make a null-terminated
	copy of the filename.  Don't use CPP_PREV_BUFFER.  Don't call
	strlen or strcpy; we already know the length.
	(_cpp_compare_file_date): Similarly.
	* cpphash.h (struct cpp_reader): Delete done_initialising.
	(CPP_PREV_BUFFER): Delete.
	* cppinit.c (cpp_start_read): Don't set done_initialising.
	* cpplex.c (parse_string): Guarantee null-termination.
	(_cpp_equiv_toklists): Remove.
	* cpplib.c (glue_header_name): Null-terminate.
	(do_line): Don't leak memory.
	* cpplib.h (BT_WEAK): Delete.
	* cppmain.c (cb_ident): Strings are now null-terminated.

From-SVN: r40233
2001-03-04 12:02:02 +00:00
Neil Booth
591e15a110 cppfiles.c (struct include_file): Update.
* cppfiles.c (struct include_file): Update.
        (stack_include_file): Use search_from.
        (cpp_included, find_include_file): Update.
        (cpp_execute_include): Update.  ptr->name may not be
        null terminated.  Use the new search_from member variable
        of cpp_buffer.
        (_cpp_compare_file_date): Similarly.
        (search_from): New function, similiar to actual_directory.
        (actual_directory): Delete.
        (remap_filename): Update.  loc->name may not be null terminated.
        (struct file_name_list): Rename search_path.  Update.
        * cpphash.h (struct cpp_buffer): Delete actual_dir.  New members
        search_from and dir.
        (struct cpp_reader): Remove actual_dirs.
        * cppinit.c (struct cpp_pending): Update for renamed objects.
        (append_include_chain, remove_dup_dir, remove_dup_dirs,
        merge_include_chains, cpp_destroy, cpp_start_read): Similarly.
        * cpplib.h (struct cpp_options): Similarly.

From-SVN: r40178
2001-03-02 07:35:12 +00:00
Zack Weinberg
cb7738452f cpphash.h (struct cpp_reader): Add print_version field.
* cpphash.h (struct cpp_reader): Add print_version field.
	* cppinit.c (cpp_handle_option): For -v, -version, and --version,
	just set print_version and other flags as appropriate.
	(cpp_post_options): Print version here if print_version is set.

	* toplev.c (exit_after_options): New flag.
	(independent_decode_option): Don't exit here; just set
	exit_after_options.
	(main): Exit after calling lang_hooks.post_options if
	exit_after_options is true.

	* cppinit.c (append_include_chain): Drop never-used case QUOTE.
	(merge_include_chains): Adjust comment to match code.

From-SVN: r40171
2001-03-02 00:42:28 +00:00
Zack Weinberg
037313ae8d cpphash.h (struct spec_nodes): Add n_true and n_false.
* cpphash.h (struct spec_nodes): Add n_true and n_false.
	* cppinit.c (cpp_create_reader): Initialize them.
	(append_include_chain): cxx_aware arg might be unused.
	* cppexp.c (lex): In C++ mode, recognize 'true' and 'false'
	keywords and give them their phase 7 meaning.  Pedwarn about
	this unless '__bool_true_false_are_defined' is defined.

	* g++.dg/stdbool-if.C: New test.

From-SVN: r39530
2001-02-07 23:13:46 +00:00
Neil Booth
269592a892 cpphash.h: Rename _ALIGN POOL_ALIGN.
* cpphash.h: Rename _ALIGN POOL_ALIGN.
        * cpplex.c (new_chunk, _cpp_pool_reserve): Update.

From-SVN: r39434
2001-02-03 18:21:34 +00:00
Neil Booth
2da6090f5e cpphash.h: Rename ALIGN _ALIGN.
* cpphash.h: Rename ALIGN _ALIGN.
        * cpplex.c (new_chunk, _cpp_pool_reserve): Update.

From-SVN: r39433
2001-02-03 17:52:31 +00:00
Neil Booth
bd9697727b cpphash.h (struct cpp_buffer): Move saved_flags from cpp_reader.
* cpphash.h (struct cpp_buffer): Move saved_flags from cpp_reader.
        * cpplex.c (_cpp_lex_token): New token picks up the saved flags,
        and AVOID_LPASTE is cleared on meeting an unescaped newline.
        * cppmacro.c (builtin_macro): Set builtin flags here.
        (paste_all_tokens): Preserve AVOID_LPASTE on pasted token.
        (replace_args): Clarify intent.
        (cpp_get_token): Macro expansion tokens get the saved flags.
        Update.
        * cppmain.c (scan_buffer): Remove now-redundant print.printed
        check.

From-SVN: r39393
2001-02-01 19:13:53 +00:00
Neil Booth
ec1a23e60b cpphash.h (struct cpp_reader): New saved_flags.
* cpphash.h (struct cpp_reader): New saved_flags.
        * cppmacro.c (cpp_get_token): Use saved_flags to remember
        to avoid a paste after a pasted token.

From-SVN: r39366
2001-01-31 07:48:54 +00:00
Neil Booth
d6d52dd655 cppfiles.c (_cpp_fake_include): New function.
* cppfiles.c (_cpp_fake_include): New function.
        * cpphash.h (_cpp_fake_include): New.
        * cpplib.c (do_line): Call _cpp_fake_include when entering
        header files in preprocessed input.
        * cppmain.c (cb_pragma_implementation): Remove handling.
	(setup_callbacks): Don't register pragmas.

From-SVN: r38987
2001-01-13 18:39:26 +00:00
Neil Booth
8121d2c384 cpplib.h (cpp_pool, [...]): Move to cpphash.h (struct macro_args): Delete.
* cpplib.h (cpp_pool, mi_state, mi_ind, struct cpp_macro,
        struct cpp_chunk, struct htab, struct toklist,
        struct cpp_context, CPP_STACK_MAX, struct lexer_state,
        struct spec_nodes, struct cpp_reader, CPP_OPTION, CPP_BUFFER,
        CPP_BUF_LINE, CPP_BUF_COL, CPP_BUF_COLUMN, U, ustrcmp, ustrncmp,
        ustrlen, uxstrdup, ustrchr, ufputs): Move to cpphash.h
        (struct macro_args): Delete.
        * cpphash.h: See above.

From-SVN: r38984
2001-01-13 14:32:59 +00:00