aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpphash.h
AgeCommit message (Collapse)AuthorFilesLines
2002-08-12c-opts.c (deps_seen, [...]): New.Neil Booth1-2/+1
* c-opts.c (deps_seen, deps_file, deferred_count, deferred_size, handle_deferred_opts, sanitize_cpp_opts, defer_opt, struct deferred_opt): New. (COMMAND_LINE_OPTIONS): Add -M*. (missing_arg): Update. (c_common_decode_option): Handle -M*. (c_common_post_options): Handle -M*. Use sanitize_cpp_opts; don't call cpp_post_options. (c_common_finish, check_deps_environment_vars): Update. * cppfiles.c (stack_include_file, handle_missing_header): Update. * cpphash.h (CPP_PRINT_DEPS): Remove. * cppinit.c: Don't include version.h. (cpp_create_reader): Don't call deps_init. Initialize warn_long_long. (cpp_read_main_file): Init deps if necessary. (cpp_destroy): Conditionally free deps. (cpp_finish): Update. (no_tgt): Remove. (COMMAND_LINE_OPTIONS, cpp_handle_option): Remove -M*. (cpp_post_options): Rename post_options. * cpplib.h (struct cpp_options): Remove some dependency options; move others to a new structure. (cpp_post_options): Remove. (cpp_finish): Comment. * fix-header.c (read_scan_file): Don't call cpp_post_options. treelang: * treelang.c: Remove cpp_post_options. From-SVN: r56239
2002-08-12cpphash.h (struct printer): New from cppmain.c.Neil Booth1-0/+15
* cpphash.h (struct printer): New from cppmain.c. (cpp_reader): New member. * cppmain.c (struct printer): Move to cpphash.h. (options, print): Remove. (account_for_newlines, print_line, maybe_print_line, cpp_preprocess_file, setup_callbacks, scan_translation_unit, scan_translation_unit_trad, cb_line_change, cb_ident, cb_define, cb_undef, cb_include, cb_file_change, dump_macro, cb_def_pragma): Make reentrant. From-SVN: r56233
2002-07-23cppexp.c (parse_defined): Mark macro used.Neil Booth1-0/+12
* cppexp.c (parse_defined): Mark macro used. * cpphash.h (struct cpp_macro): New member "used". (_cpp_mark_macro_used, _cpp_warn_if_unused_macro): New. (struct cpp_reader): New member. * cppinit.c (cpp_finish_options): Set first_unused_line. (cpp_finish): Warn of unused macros if requested. (OPT_TABLE): New switches. (cpp_handle_option): Handle them. * cpplib.c (do_undef): Warn if macro unused. (do_ifdef, do_ifndef): Mark macro used. * cpplib.h (struct cpp_options): New member. * cppmacro.c (_cpp_warn_if_unused_macro): New. (enter_macro_context): Mark macro used. (_cpp_create_definition): Mark macro unused; warn if unused when redefined. * cpptrad.c (scan_out_logcial_line, push_replacement_text): Mark macros used. * doc/cppopts.texi: Update. testsuite: * gcc.dg/cpp/trad/Wunused.c, gcc.dg/cpp/trad/Wunused.h, gcc.dg/cpp/Wunused.c, gcc.dg/cpp/Wunused.h: New tests. From-SVN: r55692
2002-06-27cpphash.h (_cpp_set_trad_context): Remove.Neil Booth1-1/+0
* cpphash.h (_cpp_set_trad_context): Remove. * cpplib.c (prepare_directive_trad): Do nothing for #define. (cpp_push_buffer, _cpp_pop_buffer): Don't call _cpp_set_trad_context. * cpptrad.c: Update comments. (_cpp_read_logical_line_trad): Let scan_logical_line handle updating the current context. (scan_logical_line): Update the current context. (_cpp_create_trad_definition): Similarly. (_cpp_set_trad_context): Remove. From-SVN: r55022
2002-06-19cpphash.h (struct cpp_reader): Make date and time strings.Neil Booth1-4/+7
* cpphash.h (struct cpp_reader): Make date and time strings. (_cpp_builtin_macro_text, _cpp_copy_replacement_text, _cpp_replacement_text_len): New. * cppinit.c (cpp_create_reader): Update. (init_builtins): Register appropriate builtins for -traditional-cpp. * cppmacro.c (new_number_token): Remove. (_cpp_builtin_macro_text): New. (builtin_macro): Use it. (cpp_macro_definition): Update to handle traditional macros. * cppmain.c (cb_line_change): Don't do column positioning for traditional output. * cpptrad.c (enum ls): Rename ls_fun_macro to ls_fun_open. New state ls_fun_close. (skip_whitespace): Fix. (maybe_start_funlike): Don't set state.parsing_args. (scan_out_logical_line): Remove duplicate error. Use lex_state rather than state.parsing_args. (push_replacement_text): Handle builtins. (_cpp_replacement_text_len, _cpp_copy_replacement_text): New. From-SVN: r54771
2002-06-18cpplib.c (dtable): Update.Neil Booth1-0/+6
* cpplib.c (dtable): Update. (end_directive): Decrement expansion prevention count. Clear state.in_expression. (prepare_directive_trad): Set state.in_expression. Increment expansion prevention count. * cpptrad.c (enum ls): New. (_cpp_overlay_buffer): Set overlaid_buffer. (_cpp_remove_overlay): Use overlaid_buffer. (_cpp_read_logcial_line_trad): Update buffer when it might have changed. (scan_out_logical_line): Handle state transitions for assertions and defined() in #if, and for funlike invocations including the directive case. Handle '<' and '>' as a quote mechanism in #include. Warn about unterminated macro invocations. * cpphash.h (struct lexer_state): New member in_expression. (struct cpp_reader): New member overlaid buffer. From-SVN: r54732
2002-06-14cpphash.h (struct cpp_buffer): Remove saved_line_base.Neil Booth1-1/+1
* cpphash.h (struct cpp_buffer): Remove saved_line_base. * cpptrad.c: Update comments. (skip_whitespace, copy_comment): Take a new parameter. (skip_escaped_newlines): Don't duplicate escaped newline test. (copy_comment): Different location for CUR, decide here how to copy / replace the comment. (skip_whitespace): Copy whitespace. (_cpp_overlay_buffer, _cpp_remove_overlay): Don't play with line_base. (scan_out_logical_line): Let copy comment handle keeping or replacing comments. (scan_parameters, _cpp_create_trad_definition): Update. From-SVN: r54605
2002-06-13cpphash.h (_cpp_lex_identifier_trad): Remove.Neil Booth1-1/+0
* cpphash.h (_cpp_lex_identifier_trad): Remove. * cpplib.c (end_directive): Don't skip, always remove overlay apart from #define. (prepare_directive_trad): Handle NULL pfile->directive. (_cpp_handle_directive): Always call prepare_directive_trad if traditional. * cppmain.c (check_multiline_token): Rename account_for_newlines, generalize inputs. (scan_translation_unit_trad): Use it. * cpptrad.c (skip_comment): Rename copy_comment, copy comment to output, get escaped newline in comment close correct. (check_output_buffer, skip_whitespace): Update. (_cpp_lex_identifier_trad): Remove. (scan_out_logical_line): Handle -C and comments in directives properly. From-SVN: r54599
2002-06-11Makefile.in: Update cppmain.o.Neil Booth1-5/+14
* Makefile.in: Update cppmain.o. * cpphash.h (struct cpp_reader): Move some members to a nested structure. (trad_line): Rename saved_line. (_cpp_read_logical_line_trad): Update. (_cpp_remove_overlay): New. * cppinit.c (cpp_create_reader): No need to set saved_line. (cpp_destroy): Update. (cpp_read_main_file): Only overlay if compiling. * cpplex.c (continue_after_nul): Return false if in directive. * cpplib.c (EXPAND): New. (directive_table, SEEN_EOL): Update. (end_directive): Remove overlay if traditional; don't skip line in traditional #define. (prepare_directive_trad): New. (_cpp_handle_directive, run_directive): Update for traditional directives. (lex_macro_node): Simplify, don't use lex_identifier_trad. * cpplib.h (struct options): Add preprocess_only. * cppmain.c: Don't include intl.h. (cpp_preprocess_file): Set options->preprocess_only. (scan_translation_unit_trad): Fix, and print line numbers. * cpptrad.c (check_output_buffer, lex_identifier, scan_parameters, maybe_start_funlike, scan_out_logical_line, replace_args_and_push, save_replacement_text, _cpp_create_trad_definition): Update for variable renaming. (_cpp_overlay_buffer): Save line number. (_cpp_remove_overlay): Rename from restore_buff, restore line. (_cpp_read_logical_line_trad): Don't handle overlays here. (scan_out_logical_line): Process directives. From-SVN: r54485
2002-06-10cpphash.h (_cpp_read_logical_line_trad, [...]): Update prototypes.Neil Booth1-2/+3
* cpphash.h (_cpp_read_logical_line_trad, _cpp_expansions_different_trad): Update prototypes. * cpplex.c (continue_after_nul): New. * cppmain.c: Include cpphash.h. (scan_translation_unit_trad): New. (cpp_preprocess_file): Call it. * cpptrad.c (_cpp_read_logical_line_trad): Take new parameter overlay. (_cpp_expansions_different_trad): Update prototype. From-SVN: r54446
2002-06-10cpphash.h (struct cpp_macro): Put comments on their own lines.Neil Booth1-9/+27
* cpphash.h (struct cpp_macro): Put comments on their own lines. (_cpp_expansions_different_trad): New. * cppmacro.c (warn_of_redefinition): Fix for traditional case. * cpptrad.c (canonicalize_text): New. (scan_out_logical_line): Handle no arguments correctly. (save_replacement_text): Commit memory when finished. (_cpp_expansions_different_trad): New. From-SVN: r54432
2002-06-09cpphash.h (_cpp_push_text_context): Update.Neil Booth1-1/+4
* cpphash.h (_cpp_push_text_context): Update. (_cpp_arguments_ok): New. * cppmacro.c (_cpp_arguments_ok): New, split out from... (collect_args): ...here. (_cpp_push_text_context): Change inputs. * cpptrad.c (struct fun_macro, maybe_start_funlike, save_argument, replace_args_and_push): New. (lex_identifier, _cpp_lex_identifier_trad, scan_parameters): Don't use IS macros directly. (scan_out_logical_line): Handle function-like macro argument collection. (push_replacement_text): Update. (replacement_length): Remove. (_cpp_create_trad_definition): Don't skip whitespace before checking for '('. From-SVN: r54412
2002-06-09Makefile.in (LIBCPP_OBJS): Take out version.o.Zack Weinberg1-4/+0
* Makefile.in (LIBCPP_OBJS): Take out version.o. * cpphash.h (cpp_reader): Take out print_version member. * cppinit.c: (cpp_handle_option): Don't do anything with -version. Just set help_only for --version, --target-help. Just set verbose option for -v. (cpp_post_options): Don't print a version string. From-SVN: r54390
2002-06-07cpptrad.c (struct block, [...]): New.Neil Booth1-1/+18
* cpptrad.c (struct block, BLOCK_HEADER_LEN, BLOCK_LEN, scan_parameters, save_replacement_text, replacement_length): New. (scan_out_logical_line): Take a macro and save parameters if non-NULL. (_cpp_logical_line_trad): Update. (_cpp_create_trad_definition): Update to handle function-like macros. * cpplex.c (new_buff): Update. (struct dummy, DEFAULT_ALIGNMENT, CPP_ALIGN): Move... * cpphash.h: ...here. (CPP_ALIGN2, _cpp_save_parameter): New. * cppmacro.c (save_parameter): Rename, export. (parse_params): Update. From-SVN: r54331
2002-06-05cpphash.h (_cpp_create_definition): Update prototype.Neil Booth1-1/+6
* cpphash.h (_cpp_create_definition): Update prototype. (_cpp_push_text_context, _cpp_create_trad_definition): New. ( cpp_lex_identifier_trad): New. (_cpp_set_trad_context): New. * cppinit.c (cpp_finish_options): Don't conditionalize builtins. * cpplib.c (SEEN_EOL): Update. (lex_macro_node): Update for -traditional. (cpp_push_buffer, _cpp_pop_buffer): Similarly. * cppmacro.c (_cpp_create_definition): Split into create_iso_definition() and _cpp_create_trad_definition(). (warn_of_redefinition): Update prototype; handle traditional macros. (_cpp_push_text_context): New. * cpptrad.c (skip_whitespace, push_replacement_text): New. (lex_identifier): Call ht_lookup with correct start. (_cpp_lex_identifier_tradm _cpp_create_trad_definition, _cpp_set_trad_context): New. (scan_out_logical_line): Update to handle changing contexts. From-SVN: r54293
2002-06-04cpphash.h (FIRST, [...]): New.Neil Booth1-4/+24
* cpphash.h (FIRST, LAST, CUR, RLIMIT): New. (struct cpp_context): Add traditional fields. * cppmacro.c (paste_all_tokens, push_ptoken_context, push_token_context, cpp_get_token, _cpp_backup_tokens): Update. * cpptrad.c (skip_comment, lex_identifier, _cpp_read_logical_line_trad, scan_out_logical_line): Update. From-SVN: r54242
2002-05-29cppexp.c (cpp_num): Move to cpplib.h.Neil Booth1-1/+0
2002-05-29 Neil Booth <neil@daikokuya.demon.co.uk> Zack Weinberg <zack@codesourcery.com> * cppexp.c (cpp_num): Move to cpplib.h. (CPP_ERROR): Remove. (interpret_float_suffix, interpret_int_suffix): New. (struct suffix, vsuf_1, vsuf_2, vsuf_3): Remove. (cpp_classify_number, cpp_interpret_integer): New. (interpret_number): Remove. (eval_token): Update to use new routines. * cpphash.h (cpp_num_part): Move to cpplib.h. * cppinit.c (cpp_post_options): Set warn_long_long. * cpplib.h (struct cpp_options): Add warn_long_long. (cpp_num, cpp_num_part, CPP_N_CATEGORY, CPP_N_INVALID, CPP_N_INTEGER, CPP_N_FLOATING, CPP_N_WIDTH, CPP_N_SMALL, CPP_N_MEDIUM, CPP_N_LARGE, CPP_N_RADIX, CPP_N_DEC, CPP_N_HEX, CPP_N_OCTAL, CPP_N_UNSIGNED, CPP_N_IMAGINARY, cpp_classify_number, cpp_interpret_integer): New. testsuite: * gcc.dg/cpp/c++98-pedantic.c, gcc.dg/cpp/c89-pedantic.c, gcc.dg/cpp/c94-pedantic.c, gcc.dg/cpp/gnuc89-pedantic.c, gcc.dg/cpp/if-1.c: Update for modified diagnostics. Co-Authored-By: Zack Weinberg <zack@codesourcery.com> From-SVN: r54007
2002-05-27c-common.c (c_common_init): Set CPP arithmetic precision.Neil Booth1-0/+1
* c-common.c (c_common_init): Set CPP arithmetic precision. * cppexp.c (cpp_num_part): Move typedef ... * cpphash.h: ...here; make unsigned HOST_WIDE_INT. * cppinit.c (cpp_create_reader): Default to host long arithmetic. (sanity_checks): Update. testsuite: * gcc.dg/cpp/arith-2.c, gcc.dg/cpp/arith-3.c: New tests. * gcc.dg/cpp/if-3.c: Remove. From-SVN: r53911
2002-05-22cpperror.c: Fix formatting.Kazu Hirata1-2/+2
* cpperror.c: Fix formatting. * cppexp.c: Likewise. * cppfiles.c: Likewise. * cpphash.c: Likewise. * cpphash.h: Likewise. * cppinit.c: Likewise. * cpplex.c: Likewise. * cpplib.c: Likewise. * cppmacro.c: Likewise. * cppmain.c: Likewise. * cppspec.c: Likewise. From-SVN: r53751
2002-05-21c-common.c (c_common_init): Set options->unsigned_char from flag_signed_char.Zack Weinberg1-1/+0
* c-common.c (c_common_init): Set options->unsigned_char from flag_signed_char. (cb_register_builtins): Define __STRICT_ANSI__ and __CHAR_UNSIGNED__ here... * cppinit.c (init_builtins): Not here. (cpp_create_reader): unsigned_char option defaults to 0, not !DEFAULT_SIGNED_CHAR. (COMMAND_LINE_OPTIONS, cpp_handle_option): Lose -fsigned-char and -funsigned-char. * cpphash.h (struct spec_nodes): Kill n__STRICT_ANSI__. * cpphash.c (_cpp_init_hashtable): Don't set it. * cppmacro.c (builtin_macro) [BT_STDC]: Use the language setting directly. Clarify comment. From-SVN: r53703
2002-05-17Makefile.in: Update for cpptrad.c.Neil Booth1-0/+13
* Makefile.in: Update for cpptrad.c. * cpphash.h (struct cpp_buffer): New members for buffer overlays. (struct cpp_reader): New members for traditional output. (_cpp_read_logical_line, _cpp_overlay_buffer): New. * cppinit.c (cpp_create_reader): Set trad_line. (cpp_destroy): Free trad_out_base if used. (cpp_read_main_file): Overlay an empty buffer if traditional. (cpp_finish_options): Don't do builtins. (COMMAND_LINE_OPTIONS): Add -traditional-cpp. (cpp_handle_option): Handle it. * cpplex.c (continue_after_nul): New. (_cpp_lex_direct): Use handle_nul. * cpplib.h (struct cpp_options): New traditional option. * cpptrad.c: New file. From-SVN: r53568
2002-05-16cpphash.h (cpp_macro): Move here, and make expansion a union.Neil Booth1-3/+21
* cpphash.h (cpp_macro): Move here, and make expansion a union. * cppmacro.c (cpp_macro): Remove. (enter_macro_context, replace_args, warn_of_redefinition, _cpp_create_definition, cpp_macro_definition): Update. From-SVN: r53509
2002-05-04c-lex.c (lex_string): Let cpp_parse_escape handles truncation and ↵Neil Booth1-0/+2
sign-extension. * c-lex.c (lex_string): Let cpp_parse_escape handles truncation and sign-extension. (lex_charconst): Update for change in prototype of cpp_interpret_charconst. Extend from cppchar_t to HOST_WIDE_INT appropriately. * cpphash.h (BITS_PER_CPPCHAR_T): New. * cppinit.c (cpp_create_reader): Initialize them for no change in semantics. (cpp_post_options): Add sanity checks. * cpplex.c (cpp_parse_escape): Handle precision, sign-extension and truncation issues. Calculate in type cppchar_t. (MAX_CHAR_TYPE_SIZE, MAX_WCHAR_TYPE_SIZE): Remove. (cpp_interpret_charconst): Calculate in type cppchar_t. Handle run-time dependent precision correctly. Return whether the result is signed or not. * cpplib.c (dequote_string): Use cppchar_t; update. * cpplib.h (cppchar_signed_t): New. struct cpp_options): New precision members. (cpp_interpret_charconst, cpp_parse_escape): Update prototypes. From-SVN: r53152
2002-04-28cppexp.c (lex): Move some code to _cpp_parse_expr, but keep most cases as ↵Neil Booth1-1/+1
function eval_token. * cppexp.c (lex): Move some code to _cpp_parse_expr, but keep most cases as function eval_token. (eval_token): New function. (_cpp_parse_expr): Read token here for improved diagnostics. Don't use op_as_text. Detect bad ':' here. (reduce): Don't detect bad ':' here. (op_as_text): Remove. * cpphash.h (_cpp_test_assertion): Change prototype. * cpplib.c (_cpp_test_assertion): Change prototype. testsuite: * gcc.dg/cpp/if-cexp.c: Add a test. From-SVN: r52866
2002-04-28cppexp.c (lex): Update to use state.skip_eval.Neil Booth1-1/+9
* cppexp.c (lex): Update to use state.skip_eval. (struct op): Remove prio and flags members. (FLAG_BITS, FLAG_MASK, PRIO_SHIFT, EXTRACT_PRIO, EXTRACT_FLAGS, SHORT_CIRCUIT, RIGHT_ASSOC, ..._PRIO, op_to_prio): Remove. (LEFT_ASSOC): New macro. (optab): New table of operator priorities and flags. (SHIFT): Update. (_cpp_parse_expr): Clean up logic. Return bool. Use a malloc-ed parser stack. (reduce): New; reduce the operator stack. (_cpp_expand_op_stack): Expand the operator stack as necessary. * cpphash.h (struct op): Predeclare. (struct cpp_reader): New members op_stack, op_limit. (struct lexer_state): New member skip_eval. (_cpp_parse_expr): Update. (_cpp_expand_op_stack): New. * cpplib.c (do_if): Update. * cppinit.c (cpp_create_reader): Create op stack. (cpp_destroy): And destroy it. * cpplib.h (CPP_LAST_CPP_OP): Correct. (TTYPE_TABLE): Correct. testsuite: * gcc.dg/cpp/if-mop.c: Update. * gcc.dg/cpp/if-mpar.c: Add test. * gcc.dg/cpp/if-oppr.c: Update. From-SVN: r52853
2002-04-22cppfiles.c (_cpp_pop_file_buffer): Return void.Neil Booth1-2/+8
* cppfiles.c (_cpp_pop_file_buffer): Return void. Move file change and include code to _cpp_pop_buffer. * cpphash.h (struct pending_option): Predeclare. (struct cpp_reader): New member next_include_file. (_cpp_pop_file_buffer): Update. (_cpp_push_next_buffer): Update, rename. * cppinit.c (cpp_destroy): Free include chain and pending here. (cpp_finish_options): Simplify. (_cpp_push_next_buffer): Rename and clean up. * cpplib.c (cpp_pop_buffer): Move code from _cpp_pop_file_buffer. Clarify. * cppmacro.c (cpp_scan_nooutput): Set return_at_eof here. From-SVN: r52621
2002-04-21cppexp.c (struct op, [...]): Replace U_CHAR with uchar.Neil Booth1-19/+19
* cppexp.c (struct op, parse_number): Replace U_CHAR with uchar. * cppfiles.c (read_include_file): Similarly. * cpphash.h (DSC, U_CHAR, ustrcmp, ustrncmp, ustrlen, uxstrdup ustrchr, ufputs): Similarly. * cppinit.c (TRIGRAPH_MAP, cpp_destroy): Similarly. * cpplex.c (parse_slow, unescaped_terminator_p, save_comment, cpp_ideq, parse_identifier, parse_number): Similarly. * cpplib.c (struct directive, dequote_string, D, run_directive, cpp_push_buffer): Similarly. * cppmacro.c (new_string_token, builtin_macro, cpp_quote_string, _cpp_create_definition, check_trad_stringification, cpp_macro_definition): Similarly. From-SVN: r52587
2002-04-14cpperror.c (print_location): Don't print include chain if line == 0.Neil Booth1-2/+1
* cpperror.c (print_location): Don't print include chain if line == 0. (cpp_begin_message): Update to use DL_ macros. (cpp_ice, cpp_fatal, cpp_error_from_errno, cpp_warning, cpp_warning_with_line, cpp_pedwarn, cpp_pedwarn_with_line, cpp_notice, cpp_notice_from_errno): Remove. (cpp_error, cpp_error_with_line): Update to take a diagnostic level. (cpp_errno): New. * cppexp.c (CPP_ICE): Remove. (SYNTAX_ERROR, SYNTAX_ERROR2, parse_number, parse_defined, lex, integer_overflow, _cpp_parse_expr): Update. * cppfiles.c (read_include_file, find_include_file, handle_missing_header, _cpp_read_file, remap_filename): Update. * cpphash.h (enum error_type): Remove. (_cpp_begin_message): Update. * cppinit.c (append_include_chain, remove_dup_dirs, output_deps, cpp_handle_option, cpp_post_options): Update. * cpplex.c (trigraph_p, skip_escaped_newlines, skip_block_comment, skip_whitespace, parse_identifier, parse_slow, parse_string, _cpp_lex_direct, cpp_spell_token, maybe_read_ucs, cpp_parse_escape, cpp_interpret_charconst): Update. * cpplib.c (check_eol, directive_diagnostics, _cpp_handle_directive, lex_macro_node, do_undef, glue_header_name, parse_include, do_include_common, read_flag, do_line, do_linemarker, do_ident, cpp_register_pragma, do_pragma_once, do_pragma_system_header, do_pragma_poison, do_pragma_dependency, _cpp_do__Pragma, do_else, do_elif, do_endif, parse_answer, parse_assertion, do_assert, _cpp_pop_buffer, do_diagnostic): Update. * cpplib.h (DL_WARNING, DL_WARNING_SYSHDR, DL_PEDWARN, DL_ERROR, DL_FATAL, DL_ICE, DL_EXTRACT, DL_WARNING_P): New. (cpp_ice, cpp_fatal, cpp_error_from_errno, cpp_warning, cpp_warning_with_line, cpp_pedwarn, cpp_pedwarn_with_line, cpp_notice, cpp_notice_from_errno): Remove. (cpp_error, cpp_error_with_line): Update to take a diagnostic level. (cpp_errno): New. * cppmacro.c (builtin_macro, stringify_arg, paste_all_tokens, collect_args, enter_macro_context, save_parameter, parse_params, _cpp_create_definition, check_trad_stringification, cpp_macro_definition): Update. * cppmain.c (cpp_preprocess_file): Update. * fix-header.c (read_scan_file): Update. From-SVN: r52302
2002-03-22cpphash.h (struct cpp_reader): Remove mls_line and mls_col.Neil Booth1-5/+0
* cpphash.h (struct cpp_reader): Remove mls_line and mls_col. * cpplex.c (unterminated): Delete. (parse_string): No string literal may extend over multiple lines. Suppress the error when preprocessing assembly. * cppmain.c (scan_translation_unit): Strings are single-line. * doc/cpp.texi: Update to match. * testsuite/gcc.dg/cpp/multiline.c: Update to match. From-SVN: r51195
2002-03-14cpphash.h (struct lexer_state): Remove line_extension member.Zack Weinberg1-3/+0
* cpphash.h (struct lexer_state): Remove line_extension member. * cpplib.c (dequote_string, do_linemarker): New functions. (linemarker_dir): New data object. (DIRECTIVE_TABLE): No longer need to interpret #line in preprocessed source. Delete obsolete comment about return values of handlers. (end_directive, directive_diagnostics, _cpp_handle_directive): Don't muck with line_extension. (directive_diagnostics): No need to issue warnings for linemarkers here. (_cpp_handle_directive): Issue warnings for linemarkers here, when appropriate. Dispatch linemarkers to do_linemarker, not do_line. (do_line): Code to handle linemarkers split out to do_linemarker. Convert escape sequences in filename argument, both places. * cppmacro.c (quote_string): Rename cpp_quote_string and export. All callers changed. * cpplib.h (cpp_quote_string): Prototype. * cppmain.c (print_line): Call cpp_quote_string on to_file before printing it. * doc/cpp.texi: Document that escapes are now interpreted in #line and in linemarkers, and that non-printing characters are converted to octal escapes when linemarkers are generated. From-SVN: r50779
2002-02-02cpphash.h (struct spec_nodes): Remove n__CHAR_UNSIGNED__.Neil Booth1-1/+0
* 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-01-03cpperror.c: Update comments and copyright.Neil Booth1-3/+4
* 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-03cppfiles.c (_cpp_pop_file_buffer): Change return type to bool and return ↵Andreas Schwab1-1/+1
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
2001-11-27cpphash.c (_cpp_init_hashtable): Update.Neil Booth1-1/+0
* 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-10-21cpphash.h (struct cpp_buffer): Delete read_ahead and extra_char.Neil Booth1-2/+1
* 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-02cpphash.h: Update comments.Neil Booth1-5/+5
* 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-09-30cpphash.h (POOL_ALIGN, [...]): Remove.Neil Booth1-42/+6
* 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-28cpphash.h (struct cpp_buff): Make unsigned.Neil Booth1-6/+9
* 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-27cpphash.h: Update comment.Neil Booth1-1/+1
* 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-26cpphash.h (struct cpp_pool): Remove locks and locked.Neil Booth1-5/+5
* 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-26cpphash.h (struct _cpp_buff, [...]): New.Neil Booth1-0/+18
* 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-24c-lex.c (cb_def_pragma): Update.Neil Booth1-5/+13
* 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-17cpphash.h (_cpp_lex_direct): New.Neil Booth1-0/+1
* 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-16cpphash.h (_cpp_lex_token): Update prototype.Neil Booth1-1/+1
* 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-15cpphash.h (struct cpp_reader): Remove lexer_pos, directive_pos.Neil Booth1-4/+3
* 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-14cpperror.c (print_location): Take line and column, for default positioning ↵Neil Booth1-1/+1
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-13c-parse.in (_yylex): Use _cpp_backup_tokens.Neil Booth1-14/+2
* 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-11cpphash.h (struct tokenrun): New.Neil Booth1-0/+18
* 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-08-22cpperror.c (print_location): Don't show _Pragma.Neil Booth1-8/+5
* 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-9/+0
* 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