OSDN Git Service

PR bootstrap/50237
[pf3gnuchains/gcc-fork.git] / libcpp / ChangeLog
index 2630138..890075d 100644 (file)
@@ -1,3 +1,434 @@
+2011-12-07  Jakub Jelinek  <jakub@redhat.com>
+
+       PR bootstrap/50237
+       * internal.h (_cpp_init_lexer): New prototype.
+       * init.c (init_library): Call it.
+       * lex.c (init_vectorized_lexer): Remove constructor attribute,
+       add inline keyword.
+       (HAVE_init_vectorized_lexer): Define.
+       (_cpp_init_lexer): New function.
+
+2011-12-03  Dodji Seketeli  <dodji@redhat.com>
+
+       * macro.c (tokens_buff_remove_last_token)
+       (tokens_buff_put_token_to): Add an 'inline' function specifier to
+       the prototype.
+
+2011-11-22   Diego Novillo  <dnovillo@google.com>
+
+       * include/line-map.h (linemap_dump): Declare.
+       (line_table_dump): Declare.
+       * line-map.c (linemap_dump): New.
+       (line_table_dump): New.
+
+2011-11-21  Ed Smith-Rowland  <3dw4rd@verizon.net>
+
+       PR c++/50958
+       * expr.c (cpp_userdef_char_remove_type): Fix typo.
+
+2011-11-03  Michael Matz  <matz@suse.de>
+
+       PR bootstrap/50857
+       * configure.ac: Check for -fno-exceptions -fno-rtti.
+       * configure: Regenerate.
+       * Makefile.in (NOEXCEPTION_FLAGS): New flag.
+       (ALL_CXXFLAGS): Use it.
+
+2011-11-02  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * internal.h (uxstrdup, ustrchr): Return const unsigned char *.
+
+2011-11-02  Jason Merrill  <jason@redhat.com>
+
+       PR c++/50810
+       * configure.ac: Add -Wno-narrowing to warning options.
+
+2011-10-31  Jason Merrill  <jason@redhat.com>
+
+       PR libstdc++/1773
+       * init.c (cpp_init_builtins): Set __cplusplus for C++11.
+
+       PR c++/50920
+       * include/cpplib.h (enum c_lang): Rename CLK_CXX0X to CLK_CXX11,
+       CLK_GNUCXX0X to CLK_GNUCXX11.
+
+2011-10-26  Ed Smith-Rowland  <3dw4rd@verizon.net>
+
+       Implement C++11 user-defined literals.
+       * expr.c: (cpp_interpret_float_suffix, cpp_interpret_int_suffix,
+       cpp_userdef_string_remove_type, cpp_userdef_string_add_type,
+       cpp_userdef_char_remove_type, cpp_userdef_char_add_type,
+       cpp_userdef_string_p, cpp_userdef_char_p, cpp_get_userdef_suffix): New.
+       (cpp_classify_number): Classify unrecognized tokens as user-defined
+       literals.
+       * include/cpplib.h: Add new tokens for user-defined literals.
+       * init.c: Add new preprocessor flag (cxx11).
+       * lex.c: (lex_string, lex_raw_string): Handle user-defined literals
+       including concatenation and promotion with suffixes.
+
+2011-10-24  Dodji Seketeli  <dodji@redhat.com>
+
+       * line-map.c (linemap_macro_map_lookup): Fix logic.
+
+2011-10-24  Dodji Seketeli  <dodji@redhat.com>
+
+       * include/line-map.h (linemap_expand_location): Take a line table
+       parameter.  Update comment.
+       (linemap_resolve_location): Update comment.
+       (linemap_expand_location_full): Remove.
+       * line-map.c (linemap_resolve_location):  Handle reserved
+       locations; return a NULL map in those cases.
+       (linemap_expand_location): If location is reserved, return a
+       zeroed expanded location.  Update comment.  Take a line table to
+       assert that the function takes non-virtual locations only.
+       (linemap_expand_location_full): remove.
+       (linemap_dump_location): Handle the fact that
+       linemap_resolve_location can return NULL line maps when the
+       location resolves to a reserved location.
+
+       * line-map.c (linemap_macro_map_lookup): Fix logic.
+
+2011-10-22  Dodji Seketeli  <dodji@redhat.com>
+
+       PR bootstrap/50778
+       * include/internal.h (_cpp_remaining_tokens_num_in_context): Take the
+       context to act upon.
+       * lex.c (_cpp_remaining_tokens_num_in_context): Likewise.  Update
+       comment.
+       (cpp_token_from_context_at): Likewise.
+       (cpp_peek_token): Use the context to peek tokens from.
+
+2011-10-20  Dodji Seketeli  <dodji@redhat.com>
+
+       PR bootstrap/50801
+       * lex.c (_cpp_remaining_tokens_num_in_context): Fix computation of
+       number of tokens.
+
+2011-10-18  Dodji Seketeli  <dodji@redhat.com>
+
+       PR bootstrap/50760
+       * include/line-map.h (struct linemap_stats): Change the type of
+       the members from size_t to long.
+       * macro.c (macro_arg_token_iter_init): Unconditionally initialize
+       iter->location_ptr.
+
+2011-10-17  Dodji Seketeli  <dodji@redhat.com>
+
+       * line-map.c (linemap_macro_map_loc_to_exp_point): Avoid setting a
+       variable without using it if ENABLE_CHECKING is not defined.  Mark
+       the LOCATION parameter as being unused.
+
+2011-10-15  Tom Tromey  <tromey@redhat.com>
+           Dodji Seketeli  <dodji@redhat.com>
+
+       * include/line-map.h (struct line_maps::alloced_size_for_request):
+       New member.
+       * line-map.c (new_linemap): Use set->alloced_size_for_request to
+       get the actual allocated size of line maps.
+
+2011-10-15  Tom Tromey  <tromey@redhat.com>
+           Dodji Seketeli  <dodji@redhat.com>
+
+       * line-map.h (struct linemap_stats): Declare new struct.
+       (linemap_get_statistics): Declare ...
+       * line-map.c (linemap_get_statistics):  ... new function.
+       * macro.c (num_expanded_macros_counter, num_macro_tokens_counter):
+       Declare new counters.
+       (enter_macro_context, replace_args): Update
+       num_macro_tokens_counter.
+       (cpp_get_token_1): Update num_expanded_macros_counter.
+
+2011-10-15  Tom Tromey  <tromey@redhat.com>
+           Dodji Seketeli  <dodji@redhat.com>
+
+       * include/cpplib.h (struct cpp_options)<debug>: New struct member.
+       * include/line-map.h (linemap_dump_location): Declare ...
+       * line-map.c (linemap_dump_location): ... new function.
+
+2011-10-15  Tom Tromey  <tromey@redhat.com>
+           Dodji Seketeli  <dodji@redhat.com>
+
+       * include/cpplib.h (struct cpp_options)<track_macro_expansion>:
+       New option.
+       * internal.h (struct macro_context): New struct.
+       (enum context_tokens_kind): New enum.
+       (struct cpp_context)<tokens_kind>: New member of type enum
+       context_tokens_kind.
+       (struct cpp_context)<macro>: Remove this.  Replace it with an enum
+       of macro and  macro_context.
+       (struct cpp_context)<direct_p>: Remove.
+       (_cpp_remaining_tokens_num_in_context): Declare new function.
+       * directives.c (destringize_and_run): Adjust.
+       * lex.c (_cpp_remaining_tokens_num_in_context)
+       (_cpp_token_from_context_at): Define new functions
+       (cpp_peek_token): Use them.
+       * init.c (cpp_create_reader): Initialize the base context to zero.
+       (_cpp_token_from_context_at): Define new static function.
+       (cpp_peek_token): Use new _cpp_remaining_tokens_num_in_context and
+       _cpp_token_from_context_at.
+       * macro.c (struct macro_arg)<virt_locs, expanded_virt_locs>: New
+       members.
+       (enum macro_arg_token_kind): New enum.
+       (struct macro_arg_token_iter): New struct.
+       (maybe_adjust_loc_for_trad_cpp, push_extended_tokens_context)
+       (alloc_expanded_arg_mem, ensure_expanded_arg_room)
+       (delete_macro_args, set_arg_token, get_arg_token_location)
+       (arg_token_ptr_at, macro_arg_token_iter_init)
+       (macro_arg_token_iter_get_token)
+       (macro_arg_token_iter_get_location, macro_arg_token_iter_forward)
+       (expanded_token_index, tokens_buff_new, tokens_buff_count)
+       (tokens_buff_last_token_ptr, tokens_buff_put_token_to)
+       (tokens_buff_add_token, tokens_buff_remove_last_token)
+       (reached_end_of_context, consume_next_token_from_context): New
+       static functions.
+       (cpp_get_token_1): New static function. Split and extended from
+       cpp_get_token.  Use reached_end_of_context and
+       consume_next_token_from_context.  Unify its return point.  Move
+       the location tweaking from cpp_get_token_with_location in here.
+       (cpp_get_token): Use cpp_get_token_1
+       (stringify_arg): Use the new arg_token_at.
+       (paste_all_tokens): Support tokens coming from extended tokens
+       contexts.
+       (collect_args): Return the number of collected arguments, by
+       parameter.  Store virtual locations of tokens that constitute the
+       collected args.
+       (funlike_invocation_p): Return the number of collected arguments,
+       by parameter.
+       (enter_macro_context): Add a parameter for macro expansion point.
+       Pass it to replace_args and to the "used" cpp callback.  Get the
+       number of function-like macro arguments from funlike_invocation_p,
+       pass it to the new delete_macro_args to free the memory used by
+       macro args.  When -ftrack-macro-expansion is in effect, for macros
+       that have no arguments, create a macro map for the macro expansion
+       and use it to allocate proper virtual locations for tokens
+       resulting from the expansion.  Push an extended tokens context
+       containing the tokens resulting from macro expansion and their
+       virtual locations.
+       (replace_args): Rename the different variables named 'count' into
+       variables with more meaningful names.  Create a macro map;
+       allocate virtual locations of tokens resulting from this
+       expansion.  Use macro_arg_token_iter to iterate over tokens of a
+       given macro.  Handle the case of the argument of
+       -ftrack-macro-expansion being < 2.  Don't free macro arguments
+       memory resulting from expand_arg here, as these are freed by the
+       caller of replace_arg using delete_macro_args now.  Push extended
+       token context.
+       (next_context, push_ptoken_context, _cpp_push_token_context)
+       (_cpp_push_text_context): Properly initialize the context.
+       (expand_arg): Use the new alloc_expanded_arg_mem,
+       push_extended_tokens_context, cpp_get_token_1, and set_arg_token.
+       (_cpp_pop_context): Really free the memory held by the context.
+       Handle freeing memory used by extended tokens contexts.
+       (cpp_get_token_with_location): Use cpp_get_token_1.
+       (cpp_sys_macro_p): Adjust.
+       (_cpp_backup_tokens): Support the new kinds of token contexts.
+       * traditional.c (recursive_macro): Adjust.
+
+2011-10-15  Tom Tromey  <tromey@redhat>
+           Dodji Seketeli  <dodji@redhat.com>
+
+       * include/line-map.h (enum lc_reason)<LC_ENTER_MACRO>: New enum
+       member.
+       (MAX_SOURCE_LOCATION): New constant.
+       (struct line_map_ordinary, struct line_map_macro): New structs.
+       (struct line_map): Turn this into a union of the two above.  Add
+       comments.
+       (struct maps_info): New struct.
+       (struct line_maps)<info_ordinary, info_macro>: Two new fields.
+       These now carry the map information that was previously scattered
+       in struct line_maps.
+       (struct map_info::allocated): Fix comment.
+       (MAP_START_LOCATION, ORDINARY_MAP_FILE_NAME)
+       (ORDINARY_MAP_STARTING_LINE_NUMBER)
+       (ORDINARY_MAP_INCLUDER_FILE_INDEX)
+       (ORDINARY_MAP_IN_SYSTEM_HEADER_P)
+       (ORDINARY_MAP_NUMBER_OF_COLUMN_BITS, MACRO_MAP_MACRO)
+       (MACRO_MAP_NUM_MACRO_TOKENS MACRO_MAP_LOCATIONS)
+       (MACRO_MAP_EXPANSION_POINT_LOCATION)
+       (LOCATION_POSSIBLY_IN_MACRO_MAP_P, LINEMAPS_MAP_INFO)
+       (LINEMAPS_MAPS, LINEMAPS_ALLOCATE, LINEMAPS_USED, LINEMAPS_CACHE)
+       (LINEMAPS_LAST_MAP, LINEMAPS_LAST_ALLOCATED_MAP)
+       (LINEMAPS_ORDINARY_MAPS, LINEMAPS_ORDINARY_ALLOCATED)
+       (LINEMAPS_ORDINARY_USED, LINEMAPS_ORDINARY_CACHE)
+       (LINEMAPS_LAST_ORDINARY_MAP, LINEMAPS_LAST_ALLOCATED_ORDINARY_MAP)
+       (LINEMAPS_MACRO_MAPS, LINEMAPS_MACRO_ALLOCATED)
+       (LINEMAPS_MACRO_USED, LINEMAPS_MACRO_CACHE)
+       (LINEMAPS_LAST_MACRO_MAP, LINEMAPS_LAST_ALLOCATED_MACRO_MAP)
+       (LINEMAPS_MAP_AT, LINEMAPS_ORDINARY_MAP_AT)
+       (LINEMAPS_MACRO_MAP_AT): New accessors for ordinary and macro map
+       information.
+       (linemap_check_ordinary, linemap_assert)
+       (linemap_location_before_p): New macros.
+       (linemap_position_for_line_and_column)
+       (linemap_tracks_macro_expansion_locs_p, linemap_add_macro_token)
+       (linemap_macro_expansion_map_p)
+       (linemap_macro_map_loc_to_def_point)
+       (linemap_macro_map_loc_unwind_once)
+       (linemap_macro_map_loc_to_exp_point, linemap_step_out_once)
+       (linemap_get_source_line linemap_get_source_column)
+       (linemap_map_get_macro_name, linemap_get_file_path)
+       (linemap_location_in_system_header_p)
+       (linemap_location_from_macro_expansion_p): Declare new functions.
+       (SOURCE_LINE, SOURCE_COLUMN, LAST_SOURCE_LINE_LOCATION)
+       (LINEMAP_FILE, LINEMAP_LINE, LINEMAP_SYSP): Assert that this
+       accessors act on ordinary maps only.
+       (INCLUDED_FROM): Return NULL for main files; use the new
+       accessors.
+       (LINEMAP_POSITION_FOR_COLUMN): Use the new accessors.
+       (struct expanded_location): Move here from gcc/input.h
+       (linemap_resolve_location, linemap_expand_location)
+       (linemap_expand_location_full): Declare new functions.
+       * line-map.c: Include cpplib.h, internal.h
+       (linemap_enter_macro, linemap_add_macro_token)
+       (linemap_get_expansion_line, linemap_get_expansion_filename): New
+       functions that are private to libcpp.
+       (linemap_assert): New macro.
+       (linemap_macro_loc_to_exp_point, linemap_macro_loc_to_exp_point)
+       (linemap_macro_loc_unwind, linemap_macro_map_loc_to_def_point)
+       (linemap_macro_map_loc_unwind_toward_spelling)
+       (linemap_macro_map_loc_to_exp_point)
+       (first_map_in_common_1, first_map_in_common): New static
+       functions.
+       (new_linemap): Define new static functions.  Extracted and
+       enhanced from ...
+       (linemap_add): ... here.  Use linemap_assert in lieu of abort
+       previously.
+       (linemap_tracks_macro_expansion_locs_p)
+       (linemap_add_macro_token, linemap_macro_expansion_map_p)
+       (linemap_check_ordinary, linemap_macro_map_loc_to_exp_point)
+       (linemap_macro_map_loc_to_def_point)
+       (linemap_macro_map_loc_unwind_once)
+       (linemap_step_out_once, linemap_map_get_index)
+       (linemap_get_source_line,linemap_get_source_column)
+       (linemap_get_file_path, linemap_map_get_macro_name)
+       (linemap_location_in_system_header_p)
+       (linemap_location_originated_from_system_header_p)
+       (linemap_location_from_macro_expansion_p)
+       (linemap_tracks_macro_expansion_locs_p)
+       (linemap_resolve_location, linemap_expand_location)
+       (linemap_expand_location_full)
+       (linemap_tracks_macro_expansion_locs_p)
+       (linemap_position_for_line_and_column, linemap_compare_locations):
+       Define new public functions.
+       (linemap_init): Initialize ordinary and macro maps information in
+       the map set.
+       (linemap_check_files_exited): Use the new accessors.
+       (linemap_free): Remove this dead code.
+       (linemap_line_start): Assert this uses an ordinary map.  Adjust to
+       use the new ordinary map accessors and data structures.  Don't
+       overflow past the lowest possible macro token's location.
+       (linemap_position_for_column): Assert the ordinary maps of the map
+       set are really ordinary.  Use ordinary map accessors.
+       (linemap_lookup): Keep the same logic but generalize to allow
+       lookup of both ordinary and macro maps.  Do not crash when called
+       with an empty line table.
+       * directives-only.c (_cpp_preprocess_dir_only): Adjust to use the
+       new API of line-map.h.
+       * directives.c (start_directive, do_line, do_linemarker)
+       (do_linemarker): Likewise.
+       * files.c (_cpp_find_file, _cpp_stack_include, open_file_failed)
+       (make_cpp_dir, cpp_make_system_header): Likewise.
+       * init.c (cpp_read_main_file): Likewise.
+       * internal.h (CPP_INCREMENT_LINE): Likewise.
+       (linemap_enter_macro, linemap_add_macro_token)
+       (linemap_get_expansion_line, linemap_get_expansion_filename): New
+       functions private to libcpp.
+       * lex.c (_cpp_process_line_notes, _cpp_skip_block_comment)
+       (skip_line_comment, skip_whitespace, lex_raw_string)
+       (_cpp_lex_direct): Likewise.
+       * macro.c (_cpp_builtin_macro_text): Likewise.
+       (_cpp_aligned_alloc): Initialize the new name member of the macro.
+       * traditional.c (copy_comment, _cpp_scan_out_logical_line):
+       Likewise.
+       * errors.c (cpp_diagnostic): Adjust to new linemap API.
+
+2011-08-28  Dodji Seketeli  <dodji@redhat.com>
+
+       * line-map.c (linemap_add): Assert that reason must not be
+       LC_RENAME when called for the first time on a "main input file".
+
+2011-08-22  Gabriel Charette  <gchare@google.com>
+
+       * init.c (cpp_create_reader): Inititalize forced_token_location_p.
+       * internal.h (struct cpp_reader): Add field forced_token_location_p.
+       * lex.c (_cpp_lex_direct): Use forced_token_location_p.
+       (cpp_force_token_locations): New.
+       (cpp_stop_forcing_token_locations): New.
+
+2011-08-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR libstdc++/1773
+       * init.c (cpp_init_builtins): Define __cplusplus 19971L.
+
+2011-08-18  Joseph Myers  <joseph@codesourcery.com>
+
+       * include/cpplib.h (struct cpp_options): Fix typo.
+
+2011-08-18  Joseph Myers  <joseph@codesourcery.com>
+
+       * include/cpplib.h (struct cpp_options): Add rliterals.
+       * init.c  (struct lang_flags, lang_defaults): Add rliterals.
+       (cpp_set_lang): Set rliterals option.
+       (cpp_init_builtins): Define __STDC_UTF_16__ and __STDC_UTF_32__.
+       * lex.c (_cpp_lex_direct): Only accept raw strings if rliterals.
+
+2011-08-15  Gabriel Charette  <gchare@google.com>
+
+       * include/line-map.h (LINEMAP_POSITION_FOR_COLUMN): Remove.
+       Update all users to use linemap_position_for_column instead.
+
+2011-07-28  Gabriel Charette  <gchare@google.com>
+
+       * include/line-map.h (struct line_maps):
+       Remove unused field last_listed. Update all users.
+
+2011-07-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * configure.ac: Set need_64bit_hwint to yes for x86 targets.
+       * configure: Regenerated.
+
+2011-07-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * system.h [__cplusplus]: Wrap C function declarations in extern "C".
+
+2011-07-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       PR bootstrap/49794
+       * configure.ac: Test AM_ICONV with CXX.
+       * configure: Regenerate.
+       * system.h (HAVE_DESIGNATED_INITIALIZERS): Never define for C++.
+
+2011-07-15  Dodji Seketeli  <dodji@redhat.com>
+
+       * directives.c (struct if_stack): Use source_location as type
+       here.
+       * include/cpplib.h (struct cpp_callbacks)<include, define, undef,
+       indent, def_pragma, used_define, used_undef>: Properly use
+       source_location as parameter type, rather than unsigned int.
+
+2011-07-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR target/39150
+       * configure.ac (host_wide_int): Handle x86_64-*-solaris2.1[0-9]
+       like i[34567]86-*-solaris2.1[0-9]*.
+       * configure: Regenerate.
+
+2011-06-16  Jason Merrill  <jason@redhat.com>
+
+       PR c++/45399
+       * lex.c (lex_raw_string): Don't check for embedded NUL.
+
+2011-06-06  Dodji Seketeli  <dodji@redhat.com>
+
+       PR preprocessor/48532
+       * directives.c (do_pragma): Don't forget the invocation location
+       when parsing the pragma name of a namespaced pragma directive.
+
+2011-05-29  John Tytgat  <John.Tytgat@aaug.net>
+
+       * files.c (read_file_guts): Add test on non-zero value of S_ISREG.
+
 2011-05-22  Uros Bizjak  <ubizjak@gmail.com>
 
        PR target/49104