summaryrefslogtreecommitdiffstats
path: root/gcc/cppmacro.c
Commit message (Collapse)AuthorAgeFilesLines
* * c-parse.in (_yylex): Use _cpp_backup_tokens.neil2001-09-131-181/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45582 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpphash.h (struct tokenrun): New.neil2001-09-111-0/+2
| | | | | | | | | | | | | | | | | | (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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45534 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppmacro.c (funlike_invocation_p): No need to restore context.neil2001-09-051-6/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45395 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppfiles.c (stack_include_file): line-map.c now handles includeneil2001-08-211-4/+4
| | | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45085 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpperror.c (print_location): Don't take a file name; use theneil2001-08-171-9/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44986 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppmacro.c (enter_macro_context): Push macro expansions evenneil2001-08-111-9/+5
| | | | | | | if empty. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44813 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-lex.c (map): Make const.neil2001-08-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44789 138bc75d-0d04-0410-961f-82ee72b054a4
* PR preprocessor/3081neil2001-08-051-17/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44650 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.in (CPPLIB_H): New, so that dependencies on cpplib.hneil2001-08-041-7/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44634 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c: Fix comment formatting.kazu2001-08-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44547 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpphash.h (struct cpp_reader): New members line, pseudo_newlines.neil2001-08-011-1/+8
| | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44533 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppexp.c (parse_defined): Always record the macro name.neil2001-07-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | (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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44459 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppmacro.c (make_string_token): Avoid warning.neil2001-06-231-7/+13
| | | | | | | | | | (cpp_macro_definition): Prepend the macro name. Update comments. * cppmain.c (cb_define, dump_macro): Update for changes to cpp_macro_definition. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43528 138bc75d-0d04-0410-961f-82ee72b054a4
* PR preprocessor/3260neil2001-06-211-1/+2
| | | | | | | * cppmacro.c (make_string_token): Null terminate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43492 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.in (OBJS, LIBCPP_OBJS, LIBCPP_DEPS,neil2001-05-201-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42334 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppexp.c (lex): Use NODE_NAME and NODE_LEN.neil2001-05-161-16/+17
| | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42174 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppmacro.c (stringify_arg): Null terminate strings.neil2001-03-271-2/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40880 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-parse.in (yylexname): New function, split out of _yylex.zack2001-03-071-2/+1
| | | | | | | | | | | | | | | | | (objc_rid_sans_at): New table. (init_reswords): Initialize it. (_yylex): Give labels clearer names. Handle CPP_ATSIGN by retrieving the next token and checking it for significance as an ObjC keyword or string constant. * cpplex.c (_cpp_lex_token): Just return CPP_ATSIGN for '@'. * cpplib.h (TTYPE_TABLE): Add CPP_ATSIGN, drop CPP_OSTRING. * c-lex.c, c-parse.in, cppmacro.c, cpplex.c, cp/spew.c: Remove references to CPP_OSTRING. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40279 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpplex.c (_cpp_lex_token): Don't warn about directives inneil2001-03-031-3/+5
| | | | | | | | | | | macro arguments when looking for the '('. * cppmacro.c (funlike_invocation_p): Set parsing_args to 2 when really parsing arguments; 1 when looking for '('. Always restore the lexer position. * gcc.dg/cpp/cppmacro7.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40223 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpp.texi: Update.neil2001-03-031-2/+2
| | | | | | | | | | | | | * cppexp.c (parse_number): Update. * cpplex.c (parse_string): Pedwarn if multiline string does not result from a system header's macro. * cpplib.h (sys_objmacro_p): Rename sys_macro_p. * cppmacro.c (sys_objmacro_p): Rename sys_macro_p. Return true for function-like macros too. * c-lex.c (parse_number): Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40211 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppinit.c (builtin_array): Update.neil2001-02-251-30/+22
| | | | | | | | | | | | | | | | | (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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40053 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-lex.c (lex_number): Only warn traditionally for U suffixneil2001-02-141-2/+18
| | | | | | | | | | | | | | | | outside system macros. * cppexp.c (parse_number): Similarly. * cpplib.h (NODE_SYSHDR, cpp_sys_objmacro_p): New. * cppmacro.c (struct cpp_macro): New member node. (parse_args): Only warn about missing rest args if not a system macro. (funlike_invocation_p): Similarly for uninvoked funlike macros. (cpp_sys_objmacro_p): New. (_cpp_create_definition): Store the node with the macro defn. Remember if the macro is defined in a system header. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39661 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppmacro.c (cpp_get_token): Avoid pasting after a builtin.neil2001-02-061-0/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39498 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppinit.c (BC): New macro.mmitchel2001-02-041-0/+4
| | | | | | | | | | | (builtin_array): Add __GXX_WEAK__. * cpplib.h (builtin_type): Add BT_WEAK. * cppmacro.c (builtin_macro): Handle BT_WEAK. * defaults.h (SUPPORTS_ONE_ONLY): Define. * varasm.c (SUPPORTS_ONE_ONLY): Do not define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39436 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpphash.h (struct cpp_buffer): Move saved_flags from cpp_reader.neil2001-02-011-15/+15
| | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39393 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpphash.h (struct cpp_reader): New saved_flags.neil2001-01-311-2/+7
| | | | | | | | * cppmacro.c (cpp_get_token): Use saved_flags to remember to avoid a paste after a pasted token. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39366 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpphash.c (_cpp_cleanup_hashtable, _cpp_lookup_with_hash)neil2001-01-281-11/+21
| | | | | | | | | | | | | | | | | : Don't set fe_value. * cpplib.h (AVOID_LPASTE): New flag. (struct cpp_hashnode): Remove fe_value. * cpplex.c (cpp_avoid_paste): Don't paste '.' with a number. * cppmacro.c (builtin_macro): Don't set flags here. (replace_args): Set AVOID_LPASTE flag on first token of an argument, and the token following it. (cpp_get_token): Set AVOID_LPASTE flag on first token of a macro expansion, and on the token following it. Do it for builtins too. * cppmain.c (scan_buffer): Avoid pasting only flagged tokens. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39318 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppmacro.c (funlike_invocation_p): Don't move back up to theneil2001-01-201-9/+1
| | | | | | | context of the top of the stack. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39152 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppinit.c (cpp_cleanup): NULLify macro_buffer and zeroaoliva2001-01-091-2/+5
| | | | | | | | | macro_buffer_len. * cppmacro.c (cpp_macro_definition): Reset macro_buffer_len when realloc()ing macro_buffer. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38821 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpplib.h (struct cpp_reader): Remove references to string_poolneil2000-12-171-8/+4
| | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38336 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpperror.c (print_location): New function.neil2000-12-111-13/+7
| | | | | | | | | | | | | | | | | | | | | | | (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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38186 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppfiles.c (NEVER_REREAD, DO_NOT_REREAD): Move from cpphash.h.neil2000-12-091-17/+16
| | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38150 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppmacro.c (funlike_invocation_p): Re-disable macros enabledneil2000-12-031-10/+17
| | | | | | | | | | by contexts drops AFTER argument pre-expansion, so that they remain enabled during argument pre-expansion. (_cpp_pop_context): Unconditionally re-enable a macro when dropping a context level. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37971 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppinit.c (initialize): Forgotten prototype.neil2000-12-011-14/+13
| | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37927 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppmacro.c (cpp_scan_buffer_nooutput): Take a booleanneil2000-11-281-2/+3
| | | | | | | | | | | indicating whether to scan all buffers on the stack or just one. * cppinit.c (do_includes): Update. * cppmain.c (main): Update. * cpplib.h: Update prototype. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37829 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppinit.c (cpp_reader_init): Remove handling of warn_pasteneil2000-11-271-5/+8
| | | | | | | | | | | command line options. (cpp_handle_option): Similarly. * cpplib.h (struct cpp_options): Remove warn_paste. * cppmacro.c (paste_tokens): Apart from assembler, make unpasteable token warning mandatory. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37804 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppmacro.c (cpp_scan_buffer_nooutput): Only scan theneil2000-11-261-1/+2
| | | | | | | current buffer. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37764 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpplib.h (struct cpp_reader): Remove lang_asm.neil2000-11-261-3/+3
| | | | | | | | | | | | | | | (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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37761 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppmacro.c (paste_tokens): Rename from paste_payloads.neil2000-11-201-74/+84
| | | | | | | | Change token type after pasting spellings. (paste_all_tokens): Use it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37596 138bc75d-0d04-0410-961f-82ee72b054a4
* Warning fixes:ghazi2000-11-191-1/+1
| | | | | | | | | | | | | | | | | | | | * builtins.c (c_getstr): Constify variable. * gmon-sol2.c (_mcleanup): Comment out #endif labels. * conflict.c (const_conflict_graph_arc): New typedef. (arc_hash, arc_eq): Avoid needlessly casting away const-ness. * cppmacro.c (builtin_macro): Likewise. * dwarf2out.c (output_comp_unit): Constify variable. * fix-header.c (v_fatal): Add ATTRIBUTE_PRINTF. * protoize.c (IS_SAME_PATH_CHAR): Use TOUPPER, not toupper. * ssa.c (ssa_rename_from_hash_function): Avoid needlessly casting away const-ness. * tradcpp.c (rescan, do_line, macroexpand, macarg): Use ISALNUM/ISDIGIT/ISPRINT, not isalnum/isdigit/isprint. * varasm.c (const_str_htab_hash, const_str_htab_eq, compare_constant_1, record_constant_1): Constify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37565 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpplib.c (start_directive, end_directive): New functions.neil2000-11-151-1/+4
| | | | | | | | | | | | | (_cpp_handle_directive, run_directive): Use them. (_cpp_handle_directive): Don't -Wtraditional on indented null directives. (_cpp_push_buffer): Don't re-clear was_skipping. * cpplib.h (struct cpp_reader): New member la_saved. * cppmacro.c (cpp_get_token): Don't interpret _Pragma in directives. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37487 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppexp.c (parse_defined): Call cpp_get_token notneil2000-11-141-30/+26
| | | | | | | | | | | | | | | | | | | _cpp_get_token. (lex): Similarly. * cpplex.c (cpp_output_line): Similarly. * cpplib.c (glue_header_name, do_line, do_ident, parse_answer, parse_assertion): Similarly. (_cpp_handle_diretive): Don't save to lookaheads when processing directives. * cppmacro.c (parse_arg, expand_arg): Call cpp_get_token not _cpp_get_token. (funlike_invocation_p): Don't save to lookaheads when pre-expanding arguments. (_cpp_get_token): Delete. (cpp_get_token): Merge contents of _cpp_get_token. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37462 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpplex.c (_cpp_lex_token): CPP_COMMENT and true CPP_EOFneil2000-11-131-44/+36
| | | | | | | | | | | | | | | | cases return without MI check. * cpplib.c (do_diagnostic): Take boolean of whether to print the directive name. (do_error, do_warning): Update. (do_pragma_dependency): Use it. * cpplib.h (VARARGS_FIRST): Delete. (struct cpp_token): Delete integer. * cppmacro.c (enter_macro_context): Move disabled check to _cpp_get_token. (_cpp_get_token): Simplify into a single loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37434 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppexp.c: Don't worry about pfile->skipping.neil2000-11-121-31/+9
| | | | | | | | | | | | | | | | | | | | | | | | * cpplib.c (struct if_stack): Make was_skipping unsigned char. (cpp_handle_directive): Save pfile->skipping in struct cpp_buffer for handled directives. (skip_rest_of_line): Use _cpp_lex_token after popping contexts and releasing lookaheads. (do_ifdef, do_ifndef, do_if): Use buffer->was_skipping. (do_else, do_elif, push_conditional): Update logic. (do_endif): Set buffer->was_skipping rather than pfile->skipping. (unwind_if_stack): Inline into cpp_pop_buffer. (cpp_push_buffer): Clear ifs->was_skipping for cpp_handle_directive. * cpplex.c (_cpp_lex_token): Clear skipping on EOF. Handle multiple-include optimisation. * cpplib.h (struct cpp_buffer): New member was_skipping. * cppmacro.c (_cpp_get_token): Loop whilst pfile->skipping. This works because skipping == 0 in directives. (_cpp_release_lookahead): Renamed from release_lookahead. (cpp_get_token): No need to check skipping as _cpp_get_token does this for us. No need to handle MI optimisation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37404 138bc75d-0d04-0410-961f-82ee72b054a4
* Remove CPP_PLACEMARKERsneil2000-11-111-130/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | * cppexp.c (lex): Don't handle CPP_PLACEMARKER. * cpplex.c (_cpp_lex_token): Rename skip_newlines to next_bol * cpplib.c (skip_rest_of_line, check_eol, cpp_push_buffer): Similarly. * cpplib.h: Remove CPP_PLACEMARKER. (struct lexer_state): Rename skip_newlines to next_bol. * cppmacro.c (stringify_arg): Don't handle CPP_PLACEMARKER. Simplify prev_white handling as a result. (paste_all_tokens): Don't worry about CPP_PLACEMARKERs. (parse_arg): Empty arguments are now empty, not CPP_PLACEMARKERs. (parse_args): Similarly. Update argument count tests. (enter_macro_context): Return 2 to indicate an empty macro. (replace_args): Don't bother pre-expanding an empty argument. Handle placemarkers and ## extension during pre-expansion. (cpp_get_token): Handle empty macro expansions. Don't worry about CPP_PLACEMARKERs. (_cpp_create_definition): Empty macros are now empty. (cpp_macro_defintion): Don't special case empty macros. * scan-decls.c: Don't bother with CPP_PLACEMARKERs. * c-lex.c: Similarly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37385 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpphash.c: Move cpp_defined here from cpplib.c.neil2000-11-091-15/+12
| | | | | | | | | | * cpplib.c: Update comments, move cpp_defined to cpphash.c. * cpplex.c (_cpp_lex_token): Don't leave the lexer at EOL. * cppmacro.c (cpp_get_token): Update comments, no need now to catch the CPP_EOF meaning EOL case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37345 138bc75d-0d04-0410-961f-82ee72b054a4
* Move directive handling into the lexer itself.neil2000-11-081-25/+0
| | | | | | | | | | | | | * cpplex.c (_cpp_lex_token): Handle directives directly. In the case of a directive interrupting a function-like macro invocation, use extra_char since read_ahead is used to store the '#'. Return a CPP_EOF in this case. * cppmacro.c (parse_arg): No need to handle CPP_DHASH any more. (cpp_get_token): Don't handle directives here. * cpplib.h: Remove CPP_DHASH token type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37329 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-lex.c (c_lex): Replace tok.val.aux with tok.val.c orneil2000-11-061-8/+8
| | | | | | | | | | | | | tok.val.arg_no as appropriate. * cppexp.c (lex): Similarly. * cpplex.c (_cpp_lex_token, cpp_spell_token, cpp_output_token, cpp_equiv_tokens, cpp_can_paste, cpp_avoid_paste): Similarly. * cppmacro.c (stringify_arg, replace_args, lex_expansion_token, cpp_macro_definition): Similarly. * cpplib.h (struct cpp_token): Replace aux with c and arg_no. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37276 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-parse.in (_yylex): Remove CPP_BACKSLASH case.neil2000-11-011-1/+1
| | | | | | | | | | * cp/spew.c: Similarly. * cpplex.c (_cpp_lex_token): Backslashes are now CPP_OTHER. * cppmacro.c (stringify_arg): Similarly. * cpplib.h (CPP_BACKSLASH): Delete. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37182 138bc75d-0d04-0410-961f-82ee72b054a4
* * cppmacro.c (STDC_0_IN_SYSTEM_HEADERS): Define to 0 ifneil2000-10-311-3/+5
| | | | | | | | | undefined. Remove #ifdef check. * config/i386/sol2.h, config/rs6000/sol2.h, config/sparc/sol2.h: Define STDC_0_IN_SYSTEM_HEADERS to 1. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37163 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud