2026-04-30 Release Manager * GCC 16.1.0 released. 2026-04-21 Marek Polacek <polacek@redhat.com> PR preprocessor/124930 * charset.cc (_cpp_destroy_iconv): Correct two calls to iconv_close. 2026-03-19 Nathaniel Shead <nathanieloshead@gmail.com> PR c++/124466 * line-map.cc (linemap_location_from_module_p): Resolve loc in case it's a macro location. 2026-03-13 Jakub Jelinek <jakub@redhat.com> PR preprocessor/105412 * files.cc (_cpp_stack_file): Call deps_add_dep even on empty file path. * mkdeps.cc (class mkdeps): Add first_phony_dep member. (mkdeps::mkdeps ()): Initialize it to 1. (deps_add_dep): When called first with "" argument, decrease d->first_phony_dep to 0. (make_write): For -MP iterate from d->first_phony_dep rather than 1. 2026-02-22 Nathaniel Shead <nathanieloshead@gmail.com> PR c++/124153 * lex.cc (cpp_maybe_module_directive): Set in_deferred_pragma and eol when we see an unexpected CPP_PRAGMA_EOL. 2026-02-22 Nathaniel Shead <nathanieloshead@gmail.com> PR c++/119756 * files.cc (search_path_head): Also treat empty string (stdin) as an absolute path. 2026-01-30 Jakub Jelinek <jakub@redhat.com> PR preprocessor/123273 * lex.cc (cpp_directive_only_process): Only go to done_comment for '/' if star is true and esc is false. When seeing '\\' with esc set to true, clear esc as well as star instead of keeping esc set. 2026-01-15 Marek Polacek <polacek@redhat.com> Jakub Jelinek <jakub@redhat.com> PR c++/120775 PR c++/123081 PR c++/122634 * charset.cc (_cpp_destroy_iconv): Destroy narrow_cset_desc and utf8_cset_desc. (cpp_translate_string): New. (cpp_valid_identifier): New. * include/cpplib.h: Add OPEN_SPLICE, CLOSE_SPLICE, and REFLECT_OP to TTYPE_TABLE. (cpp_translate_string): Declare. (cpp_valid_identifier): Declare. * internal.h (struct cpp_reader): Add reverse_narrow_cset_desc and reverse_utf8_cset_desc fields. * lex.cc (_cpp_lex_direct): Emit CPP_CLOSE_SPLICE, CPP_REFLECT_OP, and CPP_OPEN_SPLICE tokens. 2026-01-09 Ben Boeckel <ben.boeckel@kitware.com> * configure: Regenerate. * configure.ac: Replace gcc-bugs@ with bug reporting link. 2025-12-10 Jason Merrill <jason@redhat.com> * include/cpplib.h (struct cpp_callbacks): Replace 'path' parameter with file, angle_brackets, and alternate name. (cpp_get_name): Declare. * files.cc (cpp_get_name): New. (_cpp_stack_include, _cpp_post_stack_file, _cpp_stack_file) (_cpp_stack_translated_file): Refactor, try alternate file. 2025-12-07 Jason Merrill <jason@redhat.com> * include/cpplib.h (cpp_get_path, cpp_get_dir): Remove. (_cpp_get_file_path, _cpp_get_file_name, _cpp_get_file_stat) (_cpp_get_file_dir): Move prototypes from... * internal.h: ...here. * files.cc (_cpp_get_file_path): Rename from... (cpp_get_path): ...this. (cpp_get_dir): Remove. 2025-11-10 Jakub Jelinek <jakub@redhat.com> * directives.cc: Implement CWG3053. (do_undef): Don't pedwarn or warn about #undef likely or #undef unlikely. 2025-11-10 Lewis Hyatt <lhyatt@gmail.com> PR preprocessor/105608 * include/line-map.h: Add new member CMDLINE_LOCATION. * lex.cc (get_location_for_byte_range_in_cur_line): Do not expand the token location to include range information if token location override was requested. (warn_about_normalization): Likewise. (_cpp_lex_direct): Likewise. * pch.cc (struct saved_macro): New local struct. (struct save_macro_data): Change DEFNS vector to hold saved_macro rather than uchar*. (save_macros): Adapt to remember the location information for each saved macro in addition to the definition. (cpp_prepare_state): Likewise. (cpp_read_state): Use the saved location information to generate proper locations for the restored macros. 2025-10-13 Pierre Marie de Rodat <derodat@adacore.com> * init.cc (read_original_directory): Attempt to decode escape sequences with cpp_interpret_string_notranslate. 2025-10-08 Jakub Jelinek <jakub@redhat.com> * makeucnid.cc (write_copyright): Adjust copyright year. * makeuname2c.cc (generated_ranges): Adjust end points for a couple of ranges based on UnicodeData.txt Last changes and add a whole new CJK UNIFIED IDEOGRAPH- entry. None of these changes are in the 4-8 table, but clearly it has just been forgotten. (write_copyright): Adjust copyright year. (write_dict): Fix up condition when to print semicolon. * generated_cpp_wcwidth.h: Regenerate. * ucnid.h: Regenerate. * uname2c.h: Regenerate. 2025-09-23 David Malcolm <dmalcolm@redhat.com> PR diagnostics/121986 * include/rich-location.h (fixit_hint::deletion_p): New accessor. (fixit_hint::replacement_p): New accessor. 2025-09-18 David Malcolm <dmalcolm@redhat.com> * include/line-map.h (enum location_aspect): Convert to... (enum class location_aspect): ...this. * line-map.cc: Update for conversion of location_aspect to enum class. 2025-09-01 Jakub Jelinek <jakub@redhat.com> * macro.cc: Implement C2Y N3457 - The __COUNTER__ predefined macro. (_cpp_builtin_macro_text): Diagnose if __COUNTER__ reaches 2147483648 value. 2025-08-15 Jakub Jelinek <jakub@redhat.com> PR preprocessor/120778 PR target/121520 * include/cpplib.h (struct cpp_options): Add suppress_builtin_macro_warnings member. (cpp_warn): New inline functions. * init.cc (cpp_create_reader): Clear suppress_builtin_macro_warnings. (cpp_init_builtins): Call cpp_warn on __cplusplus, __STDC__, __STDC_VERSION__, __STDC_MB_MIGHT_NEQ_WC__ and __STDCPP_STRICT_POINTER_SAFETY__ when appropriate. * directives.cc (do_undef): Warn on undefining NODE_WARN macros if not cpp_keyword_p. Don't emit any NODE_WARN related diagnostics if CPP_OPTION (pfile, suppress_builtin_macro_warnings). (cpp_define, _cpp_define_builtin, cpp_undef): Temporarily set CPP_OPTION (pfile, suppress_builtin_macro_warnings) around run_directive calls. * macro.cc (_cpp_create_definition): Warn on defining NODE_WARN macros if they weren't previously defined and not cpp_keyword_p. Ignore NODE_WARN for diagnostics if CPP_OPTION (pfile, suppress_builtin_macro_warnings). 2025-08-10 H.J. Lu <hjl.tools@gmail.com> * configure: Regenerated. 2025-08-07 Jakub Jelinek <jakub@redhat.com> PR preprocessor/120778 * include/cpplib.h (struct cpp_options): Add cpp_warn_keyword_macro. (enum cpp_warning_reason): Add CPP_W_KEYWORD_MACRO enumerator. (cpp_keyword_p): New inline function. * directives.cc (do_undef): Support -Wkeyword-macro diagnostics. * macro.cc (warn_of_redefinition): Ignore NODE_WARN flag on nodes registered for -Wkeyword-macro. (_cpp_create_definition): Support -Wkeyword-macro diagnostics. Formatting fixes. 2025-08-05 Jakub Jelinek <jakub@redhat.com> PR preprocessor/120778 * macro.cc (paste_tokens): Use %< and %> instead of \" in diagnostics around %.*s. 2025-08-04 Jakub Jelinek <jakub@redhat.com> PR preprocessor/120778 * macro.cc (stringify_arg): For C++26 emit a pedarn instead of warning for \ at the end of stringification. 2025-08-03 Jakub Jelinek <jakub@redhat.com> PR c++/120845 * lex.cc (cpp_maybe_module_directive): Move eol variable declaration to the start of the function, initialize to false and only set it to peek->type == CPP_PRAGMA_EOL in the not_module case. Formatting fix. 2025-07-30 Jakub Jelinek <jakub@redhat.com> PR c++/120778 * internal.h (struct lexer_state): Add comma_ok member. * expr.cc (_cpp_parse_expr): Initialize it to 0, increment on CPP_OPEN_PAREN and CPP_QUERY, decrement on CPP_CLOSE_PAREN and CPP_COLON. (num_binary_op): For C++ pedwarn on comma operator if pfile->state.comma_ok is 0 instead of !c99 or skip_eval. 2025-07-25 David Malcolm <dmalcolm@redhat.com> * charset.cc: Update comment for file rename. 2025-07-25 David Malcolm <dmalcolm@redhat.com> * internal.h: Update comment for diagnostic_t becoming enum class diagnostics::kind. 2025-07-25 David Malcolm <dmalcolm@redhat.com> * include/cpplib.h: Update for moves to "source-printing". * include/rich-location.h (class label_effects): Move to... (class diagnostics::label_effects): ...here. 2025-07-25 David Malcolm <dmalcolm@redhat.com> * include/rich-location.h: Replace diagnostic_path with diagnostics::paths::path. 2025-06-17 Jason Merrill <jason@redhat.com> * line-map.cc (linemap_location_from_module_p): Add. * include/line-map.h: Declare it. 2025-06-11 David Malcolm <dmalcolm@redhat.com> PR other/116792 * include/line-map.h (typedef expanded_location): Convert to... (struct expanded_location): ...this. (operator==): New decl, for expanded_location. (operator!=): Likewise. * line-map.cc (operator==): New decl, for expanded_location. 2025-05-07 Jakub Jelinek <jakub@redhat.com> PR preprocessor/108900 PR preprocessor/116047 PR preprocessor/120061 * files.cc (_cpp_stack_file): Revert 2025-03-28 change. * line-map.cc (linemap_add): Use SOURCE_LINE (from, linemap_included_from (map - 1)) + 1; instead of SOURCE_LINE (from, from[1].start_location); to compute to_line for LC_LEAVE. For LC_ENTER included_from computation, look at map[-2] or even lower if map[-1] has the same start_location as map[0]. 2025-04-28 Lewis Hyatt <lhyatt@gmail.com> PR c/118838 * errors.cc (cpp_get_diagnostic_override_loc): New function. * include/cpplib.h (cpp_get_diagnostic_override_loc): Declare. 2025-04-24 Jakub Jelinek <jakub@redhat.com> PR c++/110343 * lex.cc (lex_raw_string): For C allow $@` in raw string delimiters if CPP_OPTION (pfile, low_ucns) i.e. for C23 and later. 2025-04-09 Jakub Jelinek <jakub@redhat.com> PR preprocessor/118674 * macro.cc (parse_params) <case CPP_ELLIPSIS>: If _cpp_save_parameter failed for __VA_ARGS__, goto out. 2025-04-04 Jakub Jelinek <jakub@redhat.com> PR preprocessor/119391 * expr.cc (num_lshift): Add pfile argument. Don't set num.overflow for !num.unsignedp in C++20 or later unless n >= precision. For C++11 to C++17 set it if orig >> (precision - 1 - n) as logical shift results in value > 1. (num_binary_op): Pass pfile to num_lshift. (num_div_op): Likewise. 2025-03-28 Jeremy Bettis <jbettis@google.com> PR preprocessor/108900 * files.cc (_cpp_stack_file): Do not decrement highest_location across distinct maps. 2025-03-27 Roland McGrath <mcgrathr@google.com> * configure.ac: Check for setlocale. * configure, config.in: Regenerated. 2025-03-12 Jakub Jelinek <jakub@redhat.com> PR preprocessor/119202 * charset.cc (convert_oct): Fix up typo in diagnostics about \o not followed by {. 2025-02-28 Jakub Jelinek <jakub@redhat.com> * include/cpplib.h (enum cpp_warning_reason): Add CPP_W_CXX26_EXTENSIONS enumerator. * init.cc (lang_defaults): Set embed for GNUCXX26 and CXX26. * directives.cc (do_embed): Adjust pedwarn wording for embed in C++, use cpp_pedwarning instead of cpp_error and add CPP_W_C11_C23_COMPAT warning of cpp_pedwarning hasn't diagnosed anything. 2024-12-24 Lewis Hyatt <lhyatt@gmail.com> * macro.cc (tokens_buff_new): Fix length argument to XNEWVEC. 2024-12-08 Lewis Hyatt <lhyatt@gmail.com> * include/cpplib.h (struct cpp_token): Adjust comment about the struct size. * include/line-map.h (location_t): Change typedef from 32-bit to 64-bit integer. (LINE_MAP_MAX_COLUMN_NUMBER): Increase size to be appropriate for 64-bit location_t. (LINE_MAP_MAX_LOCATION_WITH_PACKED_RANGES): Likewise. (LINE_MAP_MAX_LOCATION_WITH_COLS): Likewise. (LINE_MAP_MAX_LOCATION): Likewise. (MAX_LOCATION_T): Likewise. (line_map_suggested_range_bits): Likewise. (struct line_map): Adjust comment about the struct size. (struct line_map_macro): Likewise. (struct line_map_ordinary): Likewise. Rearrange fields to optimize padding. 2024-12-06 Jakub Jelinek <jakub@redhat.com> * files.cc (finish_embed): Use CPP_EMBED even for C++. 2024-12-03 Joseph Myers <josmyers@redhat.com> PR c/117162 * include/cpplib.h (struct cpp_options): Add low_ucns. * init.cc (struct lang_flags, lang_defaults): Add low_ucns. (cpp_set_lang): Set low_ucns * charset.cc (_cpp_valid_ucn): For C, allow UCNs below 0xa0 outside identifiers, with a pedwarn if pedantic before C23 or a warning with -Wc11-c23-compat. Do not allow \u0024 in identifiers for C23. 2024-11-28 David Malcolm <dmalcolm@redhat.com> PR c/104896 * pch.cc (cpp_valid_state): Replace "%<%s%>" with "%qs" in message wording. 2024-11-27 Jason Merrill <jason@redhat.com> * files.cc (_cpp_stack_file): Handle -include of header unit more specially. 2024-11-23 Lewis Hyatt <lhyatt@gmail.com> PR preprocessor/117118 * lex.cc (lex_raw_string): Treat an unterminated raw string the same way for a deferred pragma as is done for other directives. 2024-11-23 Lewis Hyatt <lhyatt@gmail.com> * lex.cc (_cpp_commit_buff): Make sure that the buffer is properly aligned for the next allocation. * internal.h (struct dummy): Make sure alignment is large enough for a location_t, just in case. 2024-11-23 Lewis Hyatt <lhyatt@gmail.com> * include/line-map.h (line_map_uint_t): New typedef, the same type as location_t. (location_diff_t): New typedef. (line_map_suggested_range_bits): New constant. (struct maps_info_ordinary): Change member types from "unsigned int" to "line_map_uint_t". (struct maps_info_macro): Likewise. (struct location_adhoc_data_map): Likewise. (LINEMAPS_ALLOCATED): Change return type from "unsigned int" to "line_map_uint_t". (LINEMAPS_ORDINARY_ALLOCATED): Likewise. (LINEMAPS_MACRO_ALLOCATED): Likewise. (LINEMAPS_USED): Likewise. (LINEMAPS_ORDINARY_USED): Likewise. (LINEMAPS_MACRO_USED): Likewise. (linemap_lookup_macro_index): Likewise. (LINEMAPS_MAP_AT): Change argument type from "unsigned int" to "line_map_uint_t". (LINEMAPS_ORDINARY_MAP_AT): Likewise. (LINEMAPS_MACRO_MAP_AT): Likewise. (line_map_new_raw): Likewise. (linemap_module_restore): Likewise. (linemap_dump): Likewise. (line_table_dump): Likewise. (LINEMAPS_LAST_MAP): Add a linemap_assert() for safety. (SOURCE_COLUMN): Use a cast to ensure correctness if location_t becomes a 64-bit type. * line-map.cc (location_adhoc_data_hash): Don't truncate to 32-bit prematurely when hashing. (line_maps::get_or_create_combined_loc): Adapt types to support potentially 64-bit location_t. Use MAX_LOCATION_T rather than a hard-coded constant. (line_maps::get_range_from_loc): Adapt types and constants to support potentially 64-bit location_t. (line_maps::pure_location_p): Likewise. (line_maps::get_pure_location): Likewise. (line_map_new_raw): Likewise. (LAST_SOURCE_LINE_LOCATION): Likewise. (linemap_add): Likewise. (linemap_module_restore): Likewise. (linemap_line_start): Likewise. (linemap_position_for_column): Likewise. (linemap_position_for_line_and_column): Likewise. (linemap_position_for_loc_and_offset): Likewise. (linemap_ordinary_map_lookup): Likewise. (linemap_lookup_macro_index): Likewise. (linemap_dump): Likewise. (linemap_dump_location): Likewise. (linemap_get_file_highest_location): Likewise. (line_table_dump): Likewise. (linemap_compare_locations): Avoid signed int overflow in the result. * macro.cc (num_expanded_macros_counter): Change type of global variable from "unsigned int" to "line_map_uint_t". (num_macro_tokens_counter): Likewise. 2024-11-18 Jason Merrill <jason@redhat.com> * internal.h (_cpp_get_file_dir): Declare. * files.cc (_cpp_get_file_dir): New fn. * mkdeps.cc (make_write): Use it. 2024-11-17 Jason Merrill <jason@redhat.com> * internal.h (search_path_head): Declare. * files.cc (search_path_head): No longer static. * init.cc (cpp_read_main_file): Use it. 2024-11-15 Jakub Jelinek <jakub@redhat.com> * expr.cc (interpret_float_suffix): Handle d64x and D64x suffixes, adjust comment. 2024-11-13 Jakub Jelinek <jakub@redhat.com> * expr.cc (interpret_float_suffix): Handle d32 and D32 suffixes for C like df, d64 and D64 like dd and d128 and D128 like dl. 2024-11-13 Jakub Jelinek <jakub@redhat.com> PR c/117029 * include/cpplib.h (struct cpp_options): Add imaginary_constants member. * init.cc (struct lang_flags): Add imaginary_constants bitfield. (lang_defaults): Add column for imaginary_constants. (cpp_set_lang): Copy over imaginary_constants. * expr.cc (cpp_classify_number): Diagnose CPP_N_IMAGINARY non-CPP_N_FLOATING constants differently for C. 2024-11-01 Jakub Jelinek <jakub@redhat.com> PR c++/114461 * include/cpplib.h: Implement C++26 P3034R1 - Module Declarations Shouldn’t be Macros (or more precisely its expected intent). (NO_DOT_COLON): Define. * internal.h (struct cpp_reader): Add diagnose_dot_colon_from_macro_p member. * lex.cc (cpp_maybe_module_directive): For pp-module, if module keyword is followed by CPP_NAME, ensure all CPP_NAME tokens possibly matching module name and module partition syntax aren't expanded and aren't defined as object-like macros. Verify first token after that doesn't start with open paren. If the next token after module name/partition is CPP_NAME defined as macro, set NO_DOT_COLON flag on it. * macro.cc (cpp_get_token_1): Set pfile->diagnose_dot_colon_from_macro_p if token to be expanded has NO_DOT_COLON bit set in flags. Before returning, if pfile->diagnose_dot_colon_from_macro_p is true and not returning CPP_PADDING or CPP_COMMENT and not during macro expansion preparation, set pfile->diagnose_dot_colon_from_macro_p to false and diagnose if returning CPP_DOT or CPP_COLON. 2024-10-25 Jakub Jelinek <jakub@redhat.com> * directives.cc: Remove trailing whitespace. * mkdeps.cc: Likewise.Lines 1–500 of 9004. Load more
2026-04-30 Release Manager * GCC 16.1.0 released. 2026-04-21 Marek Polacek <polacek@redhat.com> PR preprocessor/124930 * charset.cc (_cpp_destroy_iconv): Correct two calls to iconv_close. 2026-03-19 Nathaniel Shead <nathanieloshead@gmail.com> PR c++/124466 * line-map.cc (linemap_location_from_module_p): Resolve loc in case it's a macro location. 2026-03-13 Jakub Jelinek <jakub@redhat.com> PR preprocessor/105412 * files.cc (_cpp_stack_file): Call deps_add_dep even on empty file path. * mkdeps.cc (class mkdeps): Add first_phony_dep member. (mkdeps::mkdeps ()): Initialize it to 1. (deps_add_dep): When called first with "" argument, decrease d->first_phony_dep to 0. (make_write): For -MP iterate from d->first_phony_dep rather than 1. 2026-02-22 Nathaniel Shead <nathanieloshead@gmail.com> PR c++/124153 * lex.cc (cpp_maybe_module_directive): Set in_deferred_pragma and eol when we see an unexpected CPP_PRAGMA_EOL. 2026-02-22 Nathaniel Shead <nathanieloshead@gmail.com> PR c++/119756 * files.cc (search_path_head): Also treat empty string (stdin) as an absolute path. 2026-01-30 Jakub Jelinek <jakub@redhat.com> PR preprocessor/123273 * lex.cc (cpp_directive_only_process): Only go to done_comment for '/' if star is true and esc is false. When seeing '\\' with esc set to true, clear esc as well as star instead of keeping esc set. 2026-01-15 Marek Polacek <polacek@redhat.com> Jakub Jelinek <jakub@redhat.com> PR c++/120775 PR c++/123081 PR c++/122634 * charset.cc (_cpp_destroy_iconv): Destroy narrow_cset_desc and utf8_cset_desc. (cpp_translate_string): New. (cpp_valid_identifier): New. * include/cpplib.h: Add OPEN_SPLICE, CLOSE_SPLICE, and REFLECT_OP to TTYPE_TABLE. (cpp_translate_string): Declare. (cpp_valid_identifier): Declare. * internal.h (struct cpp_reader): Add reverse_narrow_cset_desc and reverse_utf8_cset_desc fields. * lex.cc (_cpp_lex_direct): Emit CPP_CLOSE_SPLICE, CPP_REFLECT_OP, and CPP_OPEN_SPLICE tokens. 2026-01-09 Ben Boeckel <ben.boeckel@kitware.com> * configure: Regenerate. * configure.ac: Replace gcc-bugs@ with bug reporting link. 2025-12-10 Jason Merrill <jason@redhat.com> * include/cpplib.h (struct cpp_callbacks): Replace 'path' parameter with file, angle_brackets, and alternate name. (cpp_get_name): Declare. * files.cc (cpp_get_name): New. (_cpp_stack_include, _cpp_post_stack_file, _cpp_stack_file) (_cpp_stack_translated_file): Refactor, try alternate file. 2025-12-07 Jason Merrill <jason@redhat.com> * include/cpplib.h (cpp_get_path, cpp_get_dir): Remove. (_cpp_get_file_path, _cpp_get_file_name, _cpp_get_file_stat) (_cpp_get_file_dir): Move prototypes from... * internal.h: ...here. * files.cc (_cpp_get_file_path): Rename from... (cpp_get_path): ...this. (cpp_get_dir): Remove. 2025-11-10 Jakub Jelinek <jakub@redhat.com> * directives.cc: Implement CWG3053. (do_undef): Don't pedwarn or warn about #undef likely or #undef unlikely. 2025-11-10 Lewis Hyatt <lhyatt@gmail.com> PR preprocessor/105608 * include/line-map.h: Add new member CMDLINE_LOCATION. * lex.cc (get_location_for_byte_range_in_cur_line): Do not expand the token location to include range information if token location override was requested. (warn_about_normalization): Likewise. (_cpp_lex_direct): Likewise. * pch.cc (struct saved_macro): New local struct. (struct save_macro_data): Change DEFNS vector to hold saved_macro rather than uchar*. (save_macros): Adapt to remember the location information for each saved macro in addition to the definition. (cpp_prepare_state): Likewise. (cpp_read_state): Use the saved location information to generate proper locations for the restored macros. 2025-10-13 Pierre Marie de Rodat <derodat@adacore.com> * init.cc (read_original_directory): Attempt to decode escape sequences with cpp_interpret_string_notranslate. 2025-10-08 Jakub Jelinek <jakub@redhat.com> * makeucnid.cc (write_copyright): Adjust copyright year. * makeuname2c.cc (generated_ranges): Adjust end points for a couple of ranges based on UnicodeData.txt Last changes and add a whole new CJK UNIFIED IDEOGRAPH- entry. None of these changes are in the 4-8 table, but clearly it has just been forgotten. (write_copyright): Adjust copyright year. (write_dict): Fix up condition when to print semicolon. * generated_cpp_wcwidth.h: Regenerate. * ucnid.h: Regenerate. * uname2c.h: Regenerate. 2025-09-23 David Malcolm <dmalcolm@redhat.com> PR diagnostics/121986 * include/rich-location.h (fixit_hint::deletion_p): New accessor. (fixit_hint::replacement_p): New accessor. 2025-09-18 David Malcolm <dmalcolm@redhat.com> * include/line-map.h (enum location_aspect): Convert to... (enum class location_aspect): ...this. * line-map.cc: Update for conversion of location_aspect to enum class. 2025-09-01 Jakub Jelinek <jakub@redhat.com> * macro.cc: Implement C2Y N3457 - The __COUNTER__ predefined macro. (_cpp_builtin_macro_text): Diagnose if __COUNTER__ reaches 2147483648 value. 2025-08-15 Jakub Jelinek <jakub@redhat.com> PR preprocessor/120778 PR target/121520 * include/cpplib.h (struct cpp_options): Add suppress_builtin_macro_warnings member. (cpp_warn): New inline functions. * init.cc (cpp_create_reader): Clear suppress_builtin_macro_warnings. (cpp_init_builtins): Call cpp_warn on __cplusplus, __STDC__, __STDC_VERSION__, __STDC_MB_MIGHT_NEQ_WC__ and __STDCPP_STRICT_POINTER_SAFETY__ when appropriate. * directives.cc (do_undef): Warn on undefining NODE_WARN macros if not cpp_keyword_p. Don't emit any NODE_WARN related diagnostics if CPP_OPTION (pfile, suppress_builtin_macro_warnings). (cpp_define, _cpp_define_builtin, cpp_undef): Temporarily set CPP_OPTION (pfile, suppress_builtin_macro_warnings) around run_directive calls. * macro.cc (_cpp_create_definition): Warn on defining NODE_WARN macros if they weren't previously defined and not cpp_keyword_p. Ignore NODE_WARN for diagnostics if CPP_OPTION (pfile, suppress_builtin_macro_warnings). 2025-08-10 H.J. Lu <hjl.tools@gmail.com> * configure: Regenerated. 2025-08-07 Jakub Jelinek <jakub@redhat.com> PR preprocessor/120778 * include/cpplib.h (struct cpp_options): Add cpp_warn_keyword_macro. (enum cpp_warning_reason): Add CPP_W_KEYWORD_MACRO enumerator. (cpp_keyword_p): New inline function. * directives.cc (do_undef): Support -Wkeyword-macro diagnostics. * macro.cc (warn_of_redefinition): Ignore NODE_WARN flag on nodes registered for -Wkeyword-macro. (_cpp_create_definition): Support -Wkeyword-macro diagnostics. Formatting fixes. 2025-08-05 Jakub Jelinek <jakub@redhat.com> PR preprocessor/120778 * macro.cc (paste_tokens): Use %< and %> instead of \" in diagnostics around %.*s. 2025-08-04 Jakub Jelinek <jakub@redhat.com> PR preprocessor/120778 * macro.cc (stringify_arg): For C++26 emit a pedarn instead of warning for \ at the end of stringification. 2025-08-03 Jakub Jelinek <jakub@redhat.com> PR c++/120845 * lex.cc (cpp_maybe_module_directive): Move eol variable declaration to the start of the function, initialize to false and only set it to peek->type == CPP_PRAGMA_EOL in the not_module case. Formatting fix. 2025-07-30 Jakub Jelinek <jakub@redhat.com> PR c++/120778 * internal.h (struct lexer_state): Add comma_ok member. * expr.cc (_cpp_parse_expr): Initialize it to 0, increment on CPP_OPEN_PAREN and CPP_QUERY, decrement on CPP_CLOSE_PAREN and CPP_COLON. (num_binary_op): For C++ pedwarn on comma operator if pfile->state.comma_ok is 0 instead of !c99 or skip_eval. 2025-07-25 David Malcolm <dmalcolm@redhat.com> * charset.cc: Update comment for file rename. 2025-07-25 David Malcolm <dmalcolm@redhat.com> * internal.h: Update comment for diagnostic_t becoming enum class diagnostics::kind. 2025-07-25 David Malcolm <dmalcolm@redhat.com> * include/cpplib.h: Update for moves to "source-printing". * include/rich-location.h (class label_effects): Move to... (class diagnostics::label_effects): ...here. 2025-07-25 David Malcolm <dmalcolm@redhat.com> * include/rich-location.h: Replace diagnostic_path with diagnostics::paths::path. 2025-06-17 Jason Merrill <jason@redhat.com> * line-map.cc (linemap_location_from_module_p): Add. * include/line-map.h: Declare it. 2025-06-11 David Malcolm <dmalcolm@redhat.com> PR other/116792 * include/line-map.h (typedef expanded_location): Convert to... (struct expanded_location): ...this. (operator==): New decl, for expanded_location. (operator!=): Likewise. * line-map.cc (operator==): New decl, for expanded_location. 2025-05-07 Jakub Jelinek <jakub@redhat.com> PR preprocessor/108900 PR preprocessor/116047 PR preprocessor/120061 * files.cc (_cpp_stack_file): Revert 2025-03-28 change. * line-map.cc (linemap_add): Use SOURCE_LINE (from, linemap_included_from (map - 1)) + 1; instead of SOURCE_LINE (from, from[1].start_location); to compute to_line for LC_LEAVE. For LC_ENTER included_from computation, look at map[-2] or even lower if map[-1] has the same start_location as map[0]. 2025-04-28 Lewis Hyatt <lhyatt@gmail.com> PR c/118838 * errors.cc (cpp_get_diagnostic_override_loc): New function. * include/cpplib.h (cpp_get_diagnostic_override_loc): Declare. 2025-04-24 Jakub Jelinek <jakub@redhat.com> PR c++/110343 * lex.cc (lex_raw_string): For C allow $@` in raw string delimiters if CPP_OPTION (pfile, low_ucns) i.e. for C23 and later. 2025-04-09 Jakub Jelinek <jakub@redhat.com> PR preprocessor/118674 * macro.cc (parse_params) <case CPP_ELLIPSIS>: If _cpp_save_parameter failed for __VA_ARGS__, goto out. 2025-04-04 Jakub Jelinek <jakub@redhat.com> PR preprocessor/119391 * expr.cc (num_lshift): Add pfile argument. Don't set num.overflow for !num.unsignedp in C++20 or later unless n >= precision. For C++11 to C++17 set it if orig >> (precision - 1 - n) as logical shift results in value > 1. (num_binary_op): Pass pfile to num_lshift. (num_div_op): Likewise. 2025-03-28 Jeremy Bettis <jbettis@google.com> PR preprocessor/108900 * files.cc (_cpp_stack_file): Do not decrement highest_location across distinct maps. 2025-03-27 Roland McGrath <mcgrathr@google.com> * configure.ac: Check for setlocale. * configure, config.in: Regenerated. 2025-03-12 Jakub Jelinek <jakub@redhat.com> PR preprocessor/119202 * charset.cc (convert_oct): Fix up typo in diagnostics about \o not followed by {. 2025-02-28 Jakub Jelinek <jakub@redhat.com> * include/cpplib.h (enum cpp_warning_reason): Add CPP_W_CXX26_EXTENSIONS enumerator. * init.cc (lang_defaults): Set embed for GNUCXX26 and CXX26. * directives.cc (do_embed): Adjust pedwarn wording for embed in C++, use cpp_pedwarning instead of cpp_error and add CPP_W_C11_C23_COMPAT warning of cpp_pedwarning hasn't diagnosed anything. 2024-12-24 Lewis Hyatt <lhyatt@gmail.com> * macro.cc (tokens_buff_new): Fix length argument to XNEWVEC. 2024-12-08 Lewis Hyatt <lhyatt@gmail.com> * include/cpplib.h (struct cpp_token): Adjust comment about the struct size. * include/line-map.h (location_t): Change typedef from 32-bit to 64-bit integer. (LINE_MAP_MAX_COLUMN_NUMBER): Increase size to be appropriate for 64-bit location_t. (LINE_MAP_MAX_LOCATION_WITH_PACKED_RANGES): Likewise. (LINE_MAP_MAX_LOCATION_WITH_COLS): Likewise. (LINE_MAP_MAX_LOCATION): Likewise. (MAX_LOCATION_T): Likewise. (line_map_suggested_range_bits): Likewise. (struct line_map): Adjust comment about the struct size. (struct line_map_macro): Likewise. (struct line_map_ordinary): Likewise. Rearrange fields to optimize padding. 2024-12-06 Jakub Jelinek <jakub@redhat.com> * files.cc (finish_embed): Use CPP_EMBED even for C++. 2024-12-03 Joseph Myers <josmyers@redhat.com> PR c/117162 * include/cpplib.h (struct cpp_options): Add low_ucns. * init.cc (struct lang_flags, lang_defaults): Add low_ucns. (cpp_set_lang): Set low_ucns * charset.cc (_cpp_valid_ucn): For C, allow UCNs below 0xa0 outside identifiers, with a pedwarn if pedantic before C23 or a warning with -Wc11-c23-compat. Do not allow \u0024 in identifiers for C23. 2024-11-28 David Malcolm <dmalcolm@redhat.com> PR c/104896 * pch.cc (cpp_valid_state): Replace "%<%s%>" with "%qs" in message wording. 2024-11-27 Jason Merrill <jason@redhat.com> * files.cc (_cpp_stack_file): Handle -include of header unit more specially. 2024-11-23 Lewis Hyatt <lhyatt@gmail.com> PR preprocessor/117118 * lex.cc (lex_raw_string): Treat an unterminated raw string the same way for a deferred pragma as is done for other directives. 2024-11-23 Lewis Hyatt <lhyatt@gmail.com> * lex.cc (_cpp_commit_buff): Make sure that the buffer is properly aligned for the next allocation. * internal.h (struct dummy): Make sure alignment is large enough for a location_t, just in case. 2024-11-23 Lewis Hyatt <lhyatt@gmail.com> * include/line-map.h (line_map_uint_t): New typedef, the same type as location_t. (location_diff_t): New typedef. (line_map_suggested_range_bits): New constant. (struct maps_info_ordinary): Change member types from "unsigned int" to "line_map_uint_t". (struct maps_info_macro): Likewise. (struct location_adhoc_data_map): Likewise. (LINEMAPS_ALLOCATED): Change return type from "unsigned int" to "line_map_uint_t". (LINEMAPS_ORDINARY_ALLOCATED): Likewise. (LINEMAPS_MACRO_ALLOCATED): Likewise. (LINEMAPS_USED): Likewise. (LINEMAPS_ORDINARY_USED): Likewise. (LINEMAPS_MACRO_USED): Likewise. (linemap_lookup_macro_index): Likewise. (LINEMAPS_MAP_AT): Change argument type from "unsigned int" to "line_map_uint_t". (LINEMAPS_ORDINARY_MAP_AT): Likewise. (LINEMAPS_MACRO_MAP_AT): Likewise. (line_map_new_raw): Likewise. (linemap_module_restore): Likewise. (linemap_dump): Likewise. (line_table_dump): Likewise. (LINEMAPS_LAST_MAP): Add a linemap_assert() for safety. (SOURCE_COLUMN): Use a cast to ensure correctness if location_t becomes a 64-bit type. * line-map.cc (location_adhoc_data_hash): Don't truncate to 32-bit prematurely when hashing. (line_maps::get_or_create_combined_loc): Adapt types to support potentially 64-bit location_t. Use MAX_LOCATION_T rather than a hard-coded constant. (line_maps::get_range_from_loc): Adapt types and constants to support potentially 64-bit location_t. (line_maps::pure_location_p): Likewise. (line_maps::get_pure_location): Likewise. (line_map_new_raw): Likewise. (LAST_SOURCE_LINE_LOCATION): Likewise. (linemap_add): Likewise. (linemap_module_restore): Likewise. (linemap_line_start): Likewise. (linemap_position_for_column): Likewise. (linemap_position_for_line_and_column): Likewise. (linemap_position_for_loc_and_offset): Likewise. (linemap_ordinary_map_lookup): Likewise. (linemap_lookup_macro_index): Likewise. (linemap_dump): Likewise. (linemap_dump_location): Likewise. (linemap_get_file_highest_location): Likewise. (line_table_dump): Likewise. (linemap_compare_locations): Avoid signed int overflow in the result. * macro.cc (num_expanded_macros_counter): Change type of global variable from "unsigned int" to "line_map_uint_t". (num_macro_tokens_counter): Likewise. 2024-11-18 Jason Merrill <jason@redhat.com> * internal.h (_cpp_get_file_dir): Declare. * files.cc (_cpp_get_file_dir): New fn. * mkdeps.cc (make_write): Use it. 2024-11-17 Jason Merrill <jason@redhat.com> * internal.h (search_path_head): Declare. * files.cc (search_path_head): No longer static. * init.cc (cpp_read_main_file): Use it. 2024-11-15 Jakub Jelinek <jakub@redhat.com> * expr.cc (interpret_float_suffix): Handle d64x and D64x suffixes, adjust comment. 2024-11-13 Jakub Jelinek <jakub@redhat.com> * expr.cc (interpret_float_suffix): Handle d32 and D32 suffixes for C like df, d64 and D64 like dd and d128 and D128 like dl. 2024-11-13 Jakub Jelinek <jakub@redhat.com> PR c/117029 * include/cpplib.h (struct cpp_options): Add imaginary_constants member. * init.cc (struct lang_flags): Add imaginary_constants bitfield. (lang_defaults): Add column for imaginary_constants. (cpp_set_lang): Copy over imaginary_constants. * expr.cc (cpp_classify_number): Diagnose CPP_N_IMAGINARY non-CPP_N_FLOATING constants differently for C. 2024-11-01 Jakub Jelinek <jakub@redhat.com> PR c++/114461 * include/cpplib.h: Implement C++26 P3034R1 - Module Declarations Shouldn’t be Macros (or more precisely its expected intent). (NO_DOT_COLON): Define. * internal.h (struct cpp_reader): Add diagnose_dot_colon_from_macro_p member. * lex.cc (cpp_maybe_module_directive): For pp-module, if module keyword is followed by CPP_NAME, ensure all CPP_NAME tokens possibly matching module name and module partition syntax aren't expanded and aren't defined as object-like macros. Verify first token after that doesn't start with open paren. If the next token after module name/partition is CPP_NAME defined as macro, set NO_DOT_COLON flag on it. * macro.cc (cpp_get_token_1): Set pfile->diagnose_dot_colon_from_macro_p if token to be expanded has NO_DOT_COLON bit set in flags. Before returning, if pfile->diagnose_dot_colon_from_macro_p is true and not returning CPP_PADDING or CPP_COMMENT and not during macro expansion preparation, set pfile->diagnose_dot_colon_from_macro_p to false and diagnose if returning CPP_DOT or CPP_COLON. 2024-10-25 Jakub Jelinek <jakub@redhat.com> * directives.cc: Remove trailing whitespace. * mkdeps.cc: Likewise.