aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpplib.c
AgeCommit message (Collapse)AuthorFilesLines
2001-08-22cpperror.c (print_location): Don't show _Pragma.Neil Booth1-34/+19
* 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-21cppfiles.c (stack_include_file): line-map.c now handles include depth.Neil Booth1-3/+1
* 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-21cpphash.h (_cpp_push_next_buffer): New.Neil Booth1-0/+1
* 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-17cpperror.c (print_location): Don't take a file name; use the line map instead.Neil Booth1-27/+13
* 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-11cpphash.c (_cpp_destroy_hashtable): Use ht_destroy.Neil Booth1-2/+4
* 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-11cpphash.h, cpplib.c: Correct erroneous previous checkin.Neil Booth1-4/+2
* cpphash.h, cpplib.c: Correct erroneous previous checkin. Co-Authored-By: Franz Sirl <Franz.Sirl-kernel@lauterbach.com> From-SVN: r44790
2001-08-11c-lex.c (map): Make const.Neil Booth1-27/+21
* 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-06cpperror.c (print_containing_files): Moved to line-map.c.Neil Booth1-111/+44
* 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-05* cpplib.c (do_line): Update line number after pop_buffer.Neil Booth1-0/+1
From-SVN: r44653
2001-08-05re PR preprocessor/3081 (Preprocessor merges 2 first lines when -imacros is ↵Neil Booth1-41/+44
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-04cpphash.h (struct cpp_reader): New member directive_line.Neil Booth1-5/+7
* 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-04Makefile.in (CPPLIB_H): New, so that dependencies on cpplib.h are also on ↵Neil Booth1-9/+11
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-02line-map.c: New.Neil Booth1-52/+51
* 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-01alias.c: Fix comment formatting.Kazu Hirata1-6/+6
* alias.c: Fix comment formatting. * bitmap.c: Likewise. * builtins.c: Likewise. * calls.c: Likewise. * c-common.c: Likewise. * c-decl.c: Likewise. * c-dump.c: Likewise. * c-lex.c: Likewise. * collect2.c: Likewise. * combine.c: Likewise. * conflict.c: Likewise. * cppfiles.c: Likewise. * cppinit.c: Likewise. * cpplex.c: Likewise. * cpplib.c: Likewise. * cppmacro.c: Likewise. * cppspec.c: Likewise. * c-pragma.c: Likewise. * crtstuff.c: Likewise. * cse.c: Likewise. * cselib.c: Likewise. * c-semantics.c: Likewise. * c-typeck.c: Likewise. From-SVN: r44547
2001-07-29cpphash.h (struct cpp_reader): Remove import_warning.Neil Booth1-34/+20
* 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-29cppexp.c (parse_defined): Always record the macro name.Neil Booth1-17/+13
* 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-26cpphash.h (struct_lexer_state): Delete was_skipping.Neil Booth1-45/+37
* 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-01c-common.h (enum rid): Add RID_FIRST_AT, RID_LAST_AT, RID_LAST_PQ.Zack Weinberg1-15/+19
* c-common.h (enum rid): Add RID_FIRST_AT, RID_LAST_AT, RID_LAST_PQ. Move RID_FIRST_PQ down with the other FIRST/LAST enumerators. (OBJC_IS_AT_KEYWORD, OBJC_IS_PQ_KEYWORD): New macros. * c-parse.in (OBJC_STRING): Kill. (objc_string): Decompose to [objc_string] '@' STRING. (reswords): Take the leading '@' off all the Objective C keywords. (objc_rid_sans_at): Kill. (init_reswords): Don't initialize it. (yylexname): Use OBJC_IS_AT_KEYWORD and OBJC_IS_PQ_KEYWORD. (_yylex): Kill reconsider label. Look ahead one token after an '@'; if we get an identifier, check whether it's an Objective C @-keyword. If so, return the keyword. Otherwise, put back the token and return the '@' as a terminal. * cpplib.c (lex_macro_node): Remove unnecessary check for leading '@' on identifier. Clarify control flow and commentary. From-SVN: r43674
2001-05-27* cpplib.c (run_directive): Set pfile->directive.Neil Booth1-1/+2
From-SVN: r42661
2001-05-20Makefile.in (OBJS, [...]): Update.Neil Booth1-20/+7
* 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-16cppexp.c (lex): Use NODE_NAME and NODE_LEN.Neil Booth1-14/+13
* cppexp.c (lex): Use NODE_NAME and NODE_LEN. * cpphash.c (_cpp_lookup_with_hash): Similarly. * cpplex.c (cpp_ideq, parse_identifier, cpp_token_len, cpp_spell_token, cpp_output_token): Similarly. * cpplib.c (lex_macro_node, do_undef, do_pragma, do_pragma_poison, parse_assertion, do_assert): Similarly. * cppmacro.c (builtin_macro, parse_args, funlike_invocation_p, save_parameter, _cpp_create_definition, check_trad_stringification, cpp_macro_definition): Similarly. * cppmain.c (cb_define, cb_undef, dump_macro): Similarly. * c-lex.c (cb_undef, c_lex): Similarly. * fix-header.c (recognized_function): Similarly. * cpplib.h (NODE_LEN, NODE_NAME): New. (cpp_hashnode): Rename length len. From-SVN: r42174
2001-05-10cppinit.c (cpp_post_options): Shut off macro expansion if -fpreprocessed.Zack Weinberg1-1/+26
* cppinit.c (cpp_post_options): Shut off macro expansion if -fpreprocessed. * cpplib.c (_cpp_handle_directive): If -fpreprocessed, accept IN_I directives only if the # is in column 1 and the directive name begins in column 2. * cppmain.c (scan_buffer): Insert a space between # and an identifier, when that identifier is a directive name. * tradcpp.c (struct file_buf): Add a pointer to the next entry in the header search path. (enum node_type): Add T_INCLUDE_NEXT. (directive_table): Add entry for include_next. (do_include_next): New function. (process_include): New routine, broken out of do_include. (finclude): Insert 'nhd' argument, to be copied into next_header_dir of the new buffer. (main): Adjust to match. * gsyslimits.h, limity.h: Un-indent #include_next. testsuite: * gcc.dg/cpp/direct2.c: New test. * gcc.dg/cpp/direct2s.c: New test. * gcc.c-torture/execute/920730-1t.c: #undef __GNUC__ at head. From-SVN: r41932
2001-04-11* cpplib.c (do_line): Sanity check iff enable checking.Neil Booth1-0/+2
From-SVN: r41265
2001-04-08cpperror.c (print_location): Don't special case <stdin>.Neil Booth1-1/+2
* 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-06* cpplib.c (cpp_push_buffer): Give stdin buffers the name <stdin>.Neil Booth1-1/+4
From-SVN: r41166
2001-04-06configure.in: Add check for lstat.Neil Booth1-6/+1
* configure.in: Add check for lstat. * configure, config.in: Regenerate. * cppinit.c (append_include_chain): Make empty path ".". * cpplib.c (do_line): Don't simplify #line paths. * cppfiles.c (remove_component_p): New function. (find_or_create_entry): Acknowledge stat () errors during path simplification. (handle_missing_header): Don't simplify paths. (_cpp_simplify_pathname): Don't simplify VMS paths. Return the empty path untouched. Don't leave a trailing '/'. From-SVN: r41148
2001-03-27system.h: Include symcat.h.Kaveh R. Ghazi1-1/+0
* system.h: Include symcat.h. (STRINGIFY): Don't define. * configure.in: Adjust comment. * builtins.c: Use STRINGX, not STRINGIFY. * gencheck.c: Likewise. * gengenrtl.c: Likewise. * protoize.c: Likewise. * cpplex.c: Don't include symcat.h. * cpplib.c: Likewise. * gansidecl.h (HAVE_STRINGIZE): Don't define. From-SVN: r40875
2001-03-15cpp.texi: Update documentation for -include and -imacros.Neil Booth1-17/+32
* 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-13cppfiles.c (NO_INCLUDE_PATH): New macro.Neil Booth1-1/+8
* cppfiles.c (NO_INCLUDE_PATH): New macro. (find_include_file): Decide here which part of the include chain to start the search. Complain about an empty include chain in all cases apart from an abolsute file name. (_cpp_execute_include): Don't choose the search chain here. Don't call handle_missing_include in the case of an empty include chain. (_cpp_compare_file_date): Don't choose the search chain here. * cpplib.c (do_include_next): Move the in-main-file diagnostic here from _cpp_execute_include. Behave like #include if we're in the main file. From-SVN: r40445
2001-03-04cppfiles.c (_cpp_execute_include): Don't make a null-terminated copy of the ↵Neil Booth1-7/+4
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-02cpplib.c (_cpp_init_stacks): Cast enum for comparison.John David Anglin1-1/+1
* cpplib.c (_cpp_init_stacks): Cast enum for comparison. * cppexp.c (lex): Cast enums for comparison. * cppinit.c (parse_option): Cast enum for comparison. * cpplex.c (cpp_spell_token): Cast enums to int for minus. (cpp_output_token): Likewise. (cpp_can_paste): Cast enums for comparsion and plus/minus. (cpp_avoid_paste): Cast enums for minus and comparison. From-SVN: r40174
2001-02-25cppinit.c (builtin_array): Update.Neil Booth1-1/+1
* cppinit.c (builtin_array): Update. (init_builtins): Flag builtins to warn if redefined or undefined. Define __GXX_WEAK as a normal macro. * cpplib.c (do_undef): Warn if flagged NODE_WARN. * cpplib.h (NODE_WARN): New flag. * cppmacro.c (builtin_macro): Remove handling of __GXX_WEAK__. Handle __STDC__ as a builtin only on Solaris. (warn_of_redefinition): Renamed from check_macro_definition. Reverse sense of test. Always warn if NODE_WARN. (_cpp_create_definition): Use warn_of_redefinition. Flag any macro beginning with "__STDC_" to require a mandatory warning if redefined or undefined. From-SVN: r40053
2001-01-31cpplib.c (T_ELIF): Move to STDC89, not that it matters.Neil Booth1-2/+5
* cpplib.c (T_ELIF): Move to STDC89, not that it matters. (_cpp_handle_directive): Suggest not using #elif with -Wtraditional. From-SVN: r39368
2001-01-29cpplib.c (T_BAD_DIRECTIVE): Remove.Neil Booth1-5/+4
* cpplib.c (T_BAD_DIRECTIVE): Remove. (_cpp_init_stacks): Loop from 0 to N_DIRECTIVES - 1. From-SVN: r39334
2001-01-18cpplib.c (_cpp_handle_directive): Use buffer->was_skipping, not ↵Neil Booth1-1/+1
pfile->skipping (== 0). * cpplib.c (_cpp_handle_directive): Use buffer->was_skipping, not pfile->skipping (== 0). From-SVN: r39108
2001-01-13cppfiles.c (_cpp_fake_include): New function.Neil Booth1-1/+5
* 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-13cppinit.c (cpp_handle_option): help_only is now part of the cpp_options ↵Neil Booth1-0/+33
structure. * cppinit.c (cpp_handle_option): help_only is now part of the cpp_options structure. * cpplib.c (cpp_errors, cpp_get_options, cpp_get_callbacks, cpp_set_callbacks): New functions. * cpplib.h (cpp_callbacks): Break out as a named structure. (cpp_options): Move help_only here from cpp_reader. (CPP_FATAL_ERRORS): Update to use cpp_errors. (cpp_errors, cpp_get_options, cpp_get_callbacks, cpp_set_callbacks): New prototypes. * cppmain.c (main): Update for help_only. From-SVN: r38971
2000-12-18c-lex.c: s/change_file/file_change.Neil Booth1-54/+55
* c-lex.c: s/change_file/file_change. * cpplib.h: Similarly. * cppmain.c: Similarly. * fix-header.c: Similarly. * cppfiles.c (stack_include_file): Pass the buffer location and size to cpp_push_buffer. Generate the file_change callback, so that sysp is already set. * cpphash.h: Add _cpp_do_file_change. * cpplib.c (do_line): Set buffer->sysp directly. Generate the file_change callback after setting sysp. (_cpp_do_file_change): Handle FC_ENTER and the FC_RENAME exception here. (cpp_push_buffer): Don't generate a callback. Clear sysp. (cpp_pop_buffer): Clean up logic. From-SVN: r38357
2000-12-17cpplib.h (struct cpp_reader): Remove references to string_pool and ↵Neil Booth1-11/+1
temp_string_pool. * cpplib.h (struct cpp_reader): Remove references to string_pool and temp_string_pool. * cppinit.c (cpp_create_reader, cpp_cleanup): Similarly; using ident_pool in place. * cpplex.c (parse_number, unescaped_terminator_p, parse_string, save_comment, cpp_token_as_text): Similarly. * cpplib.c (do_define, glue_header_name, parse_assertion): Similarly. * cppmacro.c (make_number_token, builtin_macro, lock_pools, unlock_pools, stringify_arg, paste_tokens): Similarly. From-SVN: r38336
2000-12-17c-lex.c: Move main_input_filename handling to FC_ENTER.Neil Booth1-48/+122
* c-lex.c: Move main_input_filename handling to FC_ENTER. Clean up. * cpperror.c (print_containing_files): Get right line number. (print_location): Output column of 1 if 0. * cppfiles.c (stack_include_file): cpp_push_buffer handles the callback. * cpphash.h (_cpp_do_file_change): No longer external. * cpplib.c (do_file_change): Now local to cpplib.c. (do_line): Fake a buffer stack for preprocessed files. (cpp_push_buffer): Create a file_change callback. Handle faked buffers. (cpp_pop_buffer): Similarly. * cpplib.h: BUF_FAKE: New buffer type. * cppmain.c: Update to handle correct file renaming where a #line is the first line of the main file, and produce only the renamed file, not the original file, as output. From-SVN: r38319
2000-12-11cpperror.c (print_location): New function.Neil Booth1-48/+51
* cpperror.c (print_location): New function. (print_containing_files): Simplify. (_cpp_begin_message): Simplify and use print_location. * cppfiles.c (stack_include_file): Update. (_cpp_pop_file_buffer): Update. * cpphash.h (struct cpp_buffer): New members include_stack_listed and type. * cpplib.c (_cpp_handle_directive): Buffer->inc is not null. (run_directive): Take buffer type. cpp_push_buffer cannot fail. (_cpp_do__Pragma, cpp_define, _cpp_define_builtin, cpp_undef, handle_assertion): Update. (cpp_push_buffer): Take a buffer type and file name. (cpp_pop_buffer): Update. Clear include_stack_listed. * cpplib.h (input_stack_listing_current): Remove. (enum cpp_buffer_type): New. (cpp_push_buffer): New prototype. * cppmacro.c (builtin_macro): Simplify; buffer cannot be null. * fix-header.c (read_scan_file): Update. From-SVN: r38186
2000-12-09cppfiles.c (NEVER_REREAD, [...]): Move from cpphash.h.Neil Booth1-21/+27
* cppfiles.c (NEVER_REREAD, DO_NOT_REREAD): Move from cpphash.h. * cpphash.h (NEVER_REREAD, DO_NOT_REREAD, ABSOLUTE_PATH): Delete. * cpplex.c (parse_identifier): Improve diagnostic. (_cpp_lex_token): Return unconditionally at the end of a directive. * cpplib.c (read_flag): Verify legality of each flag. (end_directive): Resotre pfile->skipping before skip_rest_of_line. (do_line): Use the new read_flag. * cppmacro.c (struct cpp_macro, parse_arg, replace_args, check_macro_redefinition, parse_params): Rename var_args to variadic. From-SVN: r38150
2000-12-07cppfiles.c (struct include_file): Move from cpphash.h.Neil Booth1-63/+31
* cppfiles.c (struct include_file): Move from cpphash.h. (_cpp_never_reread): New function. (open_file, read_include_file): Use it. (stack_include_file): Set the buffer's sysp according to the path in which the file was found. (find_include_file): Don't set sysp. (cpp_make_system_header, actual_directory): Update. (_cpp_execute_include): Do #include_next lookup handling here, not in cpplib.c. Use _cpp_never_reread. * cpphash.h (struct_include_file): Remove. (struct cpp_buffer): New member sysp. (CPP_IN_SYSTEM_HEADER, _cpp_execute_include): Update. (_cpp_never_reread): New. * cpplib.c (read_line_number): Rename read_flag. Rework slightly. (end_directive): Clear line_extension flag. (_cpp_handle_directive): Set line_extension flag for #number. (do_include_next): Handle path lookup in _cpp_execute_include. (do_line): Cleanup to use read_flag. Don't allow flags in #line. (_cpp_do_file_change): Update. (do_pragma_once): Use cpp_never_reread. Clean up. * cpplib.h (struct lexer_state): New member line_extension. From-SVN: r38120
2000-12-07c-common.c (parse_in): Make a cpp_reader *.Neil Booth1-12/+6
* c-common.c (parse_in): Make a cpp_reader *. * cppfiles.c (_cpp_fake_include): Remove. * cpphash.h: Similarly. * cpplib.c (do_line): Don't call _cpp_fake_include. A valid #line always creates a callback; FC_RENAME if there are no #line flags. * fix-header.c (read_scan_file): cpp_push_buffer cannot fail. The first EOF must be our get_char buffer. From-SVN: r38101
2000-12-05cppfiles.c (stack_include_file): Push zero-length buffers in case of failure.Neil Booth1-19/+11
* cppfiles.c (stack_include_file): Push zero-length buffers in case of failure. Return void, as we don't fail any more. (read_include_file): Check for files we shouldn't re-read. Don't return an error code; errors are implied by marking the file NEVER_REREAD. (_cpp_execute_include): Move the recursion and in-macro checks here. Update for stack_include_file not failing. * cpplib.c (cpp_push_buffer): Always succeed, since _cpp_execute_include performs the recursion check. Tidy up. * cpplib.h (cpp_push_buffer): Update prototype. From-SVN: r38057
2000-12-04cppfiles.c (cpp_make_system_header): Take 2 booleans, and operate on current ↵Neil Booth1-8/+9
buffer. * cppfiles.c (cpp_make_system_header): Take 2 booleans, and operate on current buffer. (cpp_read_file): Rename _cpp_read_file. * cpplib.c (do_line, do_pragma_system_header): Update calls to cpp_make_system_header. * fix-header.c: Similarly. * cpphash.h (_cpp_read_file): Move from... * cpplib.h: ... here. * cppinit.c (do_includes, cpp_start_read): Update appropriately. From-SVN: r37989
2000-12-02cpplib.c (do_ifdef): Add check_eol() call.Geoffrey Keating1-0/+6
* cpplib.c (do_ifdef): Add check_eol() call. (do_ifndef): Likewise. * gcc.dg/20001201-1.c: New testcase. From-SVN: r37960
2000-12-01cppinit.c (initialize): Forgotten prototype.Neil Booth1-4/+4
* cppinit.c (initialize): Forgotten prototype. * cpplex.c (_cpp_lex_token): Loop until not skipping. Always clear PREV_WHITE upon meeting a new line. * cpplib.c (end_directive): Set pfile->skipping after skip_rest_of_line. * cpplib.h (cpp_reader): Remove macro_pos. * cppmacro.c (cpp_get_line): Don't do anything special inside macros. (parse_arg): Add PREV_WHITE if a token appears after new lines. (funlike_invocation_p): Save and restore the output position over a successful check for a '('. (enter_macro_context): Delete uses of macro_pos. (cpp_get_token): Don't use pfile->skipping. From-SVN: r37927
2000-11-27c-lex.c (cb_enter_file, [...]): Combine into the new function cb_change_file.Neil Booth1-36/+60
* c-lex.c (cb_enter_file, cb_leave_file, cb_rename_file): Combine into the new function cb_change_file. (init_c_lex): Update. * cppfiles.c (stack_include_file): Use _cpp_do_file_change. (cpp_syshdr_flags): Delete. * cpphash.h (_cpp_do_file_change): New prototype. Move struct cpp_buffer here from... * cpplib.h (struct cpp_buffer): ... here. (enum cpp_fc_reason, struct cpp_file_loc, struct_cpp_file_change, change_file): New. (enter_file, leave_file, rename_file, cpp_syshdr_flags): Delete. * cpplib.c (do_line): Update for new cb_change_file callback. (_cpp_do_file_change): New function. (_cpp_pop_buffer): Update to use it. * cppmain.c (move_printer): Delete. (main): Set up single callback cb_change_file. (cb_enter_file, cb_leave_file, cb_rename_file): Delete. (cb_change_file): New. * fix-header.c (cur_file, cb_change_file): New. (recognized_function, read_scan_file): Update. * scan-decls.c (scan_decls): Update. * scan.h (recognized_function): Update prototype. From-SVN: r37784
2000-11-26cpplib.h (struct cpp_reader): Remove lang_asm.Neil Booth1-2/+2
* cpplib.h (struct cpp_reader): Remove lang_asm. (struct cpp_options): Remove c89. New members lang, extended_numbers. * cppexp.c (parse_number): Use them. * cpphash.h (VALID_SIGN): Use them. * cppinit.c (set_lang, cpp_start_read): Update. * cpplex.c (parse_string, _cpp_lex_token): Update. * cpplib.c (_cpp_handle_directive): Update. * cppmacro.c (parse_args): Update. * cppmain.c (scan_buffer): Update. From-SVN: r37761