1 2025-05-23 Release Manager 2 3 * GCC 14.3.0 released. 4 5 2025-05-08 Jakub Jelinek <jakub (a] redhat.com> 6 7 PR preprocessor/108900 8 PR preprocessor/116047 9 PR preprocessor/120061 10 * files.cc (_cpp_stack_file): Revert 2025-03-28 change. 11 * line-map.cc (linemap_add): Use 12 SOURCE_LINE (from, linemap_included_from (map - 1)) + 1; instead of 13 SOURCE_LINE (from, from[1].start_location); to compute to_line 14 for LC_LEAVE if from[1].reason is LC_RENAME. For LC_ENTER 15 included_from computation, look at map[-2] or even lower if map[-1] 16 has the same start_location as map[0]. 17 18 2025-04-23 Jeremy Bettis <jbettis (a] google.com> 19 20 Backported from master: 21 2025-03-28 Jeremy Bettis <jbettis (a] google.com> 22 23 PR preprocessor/108900 24 * files.cc (_cpp_stack_file): Do not decrement highest_location 25 across distinct maps. 26 27 2025-03-27 Roland McGrath <mcgrathr (a] google.com> 28 29 * configure.ac: Check for setlocale. 30 * configure, config.in: Regenerated. 31 32 2024-11-25 Lewis Hyatt <lhyatt (a] gmail.com> 33 34 PR preprocessor/117118 35 * lex.cc (lex_raw_string): Treat an unterminated raw string the same 36 way for a deferred pragma as is done for other directives. 37 38 2024-11-20 David Malcolm <dmalcolm (a] redhat.com> 39 40 Backported from master: 41 2024-06-21 David Malcolm <dmalcolm (a] redhat.com> 42 43 PR testsuite/109360 44 * include/rich-location.h (rich_location::get_column_override): 45 New accessor. 46 47 2024-08-01 Release Manager 48 49 * GCC 14.2.0 released. 50 51 2024-05-07 Release Manager 52 53 * GCC 14.1.0 released. 54 55 2024-04-17 Christophe Lyon <christophe.lyon (a] linaro.org> 56 57 PR preprocessor/114748 58 * aclocal.m4: Regenerate. 59 * configure: Regenerate. 60 61 2024-03-14 Lewis Hyatt <lhyatt (a] gmail.com> 62 63 PR preprocessor/110558 64 * macro.cc (builtin_has_include): Set 65 pfile->state.directive_wants_padding prior to lexing the 66 file name, in case it comes from macro expansion. 67 68 2024-03-14 Lewis Hyatt <lhyatt (a] gmail.com> 69 70 PR preprocessor/80755 71 * files.cc (search_path_head): Add SUPPRESS_DIAGNOSTIC argument 72 defaulting to false. 73 (_cpp_has_header): Silently return false if the search path has been 74 exhausted, rather than issuing a diagnostic and then hitting an 75 assert. 76 77 2024-02-22 Jakub Jelinek <jakub (a] redhat.com> 78 79 PR c/114007 80 * include/cpplib.h (COLON_SCOPE): Define to PURE_ZERO. 81 * lex.cc (_cpp_lex_direct): When lexing CPP_COLON with another 82 colon after it, if !CPP_OPTION (pfile, scope) set COLON_SCOPE 83 flag on the first CPP_COLON token. 84 85 2024-02-01 Lewis Hyatt <lhyatt (a] gmail.com> 86 87 PR preprocessor/105608 88 * pch.cc (cpp_read_state): Set a valid location for restored 89 macros. 90 91 2024-01-04 Raiki Tamura <tamaron1203 (a] gmail.com> 92 93 * charset.cc (cpp_check_xid_property): New. 94 * include/cpplib.h 95 (cpp_check_xid_property): New. 96 (enum cpp_xid_property): New. 97 98 2023-12-13 Jakub Jelinek <jakub (a] redhat.com> 99 100 PR preprocessor/112956 101 * lex.cc (_cpp_lex_direct): Initialize c to 0. 102 For CPP_PRAGMA_EOL tokens and if c == 0 also for CPP_EOF 103 set result->src_loc to highest locus. 104 105 2023-11-28 Lewis Hyatt <lhyatt (a] gmail.com> 106 107 PR preprocessor/112701 108 * expr.cc (num_div_op): Set unsignedp appropriately when returning a 109 stub value for divide by 0. 110 111 2023-11-27 Alex Coplan <alex.coplan (a] arm.com> 112 Iain Sandoe <iain (a] sandoe.co.uk> 113 114 PR c++/60512 115 * include/cpplib.h (struct cpp_callbacks): Add has_feature. 116 (enum cpp_builtin_type): Add BT_HAS_{FEATURE,EXTENSION}. 117 * init.cc: Add __has_{feature,extension}. 118 * macro.cc (_cpp_builtin_macro_text): Handle 119 BT_HAS_{FEATURE,EXTENSION}. 120 121 2023-11-24 Alexander Monakov <amonakov (a] ispras.ru> 122 123 * config.in: Regenerate. 124 * configure: Regenerate. 125 * configure.ac (ENABLE_VALGRIND_CHECKING): Delete. 126 (ENABLE_VALGRIND_ANNOTATIONS): Rename to 127 ENABLE_VALGRIND_WORKAROUNDS. Delete Valgrind header checks. 128 * lex.cc (new_buff): Adjust for renaming. 129 (_cpp_free_buff): Ditto. 130 131 2023-11-20 Marc Poulhis <dkm (a] kataplop.net> 132 133 * macro.cc (parse_params): Fix typo in variadic. 134 (create_iso_definition): Likewise. 135 136 2023-11-19 David Malcolm <dmalcolm (a] redhat.com> 137 138 * Makefile.in (TAGS_SOURCES): Add "include/rich-location.h". 139 * include/cpplib.h (class rich_location): New forward decl. 140 * include/line-map.h (class range_label) 141 (enum range_display_kind, struct location_range) 142 (class semi_embedded_vec, class rich_location, class label_text) 143 (class range_label, class fixit_hint): Move to... 144 * include/rich-location.h: ...this new file. 145 * internal.h: Include "rich-location.h". 146 147 2023-11-14 Jakub Jelinek <jakub (a] redhat.com> 148 149 * makeucnid.cc (write_copyright): Update copyright year. 150 * makeuname2c.cc (write_copyright): Likewise. 151 (struct generated): Update latest Unicode version. 152 (generated_ranges): Add 2ebf0-2ee5d CJK UNIFIED IDEOGRAPH 153 range which was forgotten to be added to 4-8 table, but 154 clearly is expected to be there from the 15.1 additions. 155 * ucnid.h: Regenerated. 156 * uname2c.h: Regenerated. 157 * generated_cpp_wcwidth.h: Regenerated. 158 159 2023-11-14 Jakub Jelinek <jakub (a] redhat.com> 160 161 PR c++/110341 162 * charset.cc: Implement C++26 P1854R4 - Making non-encodable string 163 literals ill-formed. 164 (one_count_chars, convert_count_chars, count_source_chars): New 165 functions. 166 (narrow_str_to_charconst): Change last arg type from cpp_ttype to 167 const cpp_token *. For C++ if pedantic and i > 1 in CPP_CHAR 168 interpret token also as CPP_STRING32 and if number of characters 169 in the CPP_STRING32 is larger than number of bytes in CPP_CHAR, 170 pedwarn on it. Make the diagnostics more detailed. 171 (wide_str_to_charconst): Change last arg type from cpp_ttype to 172 const cpp_token *. Make the diagnostics more detailed. 173 (cpp_interpret_charconst): Adjust narrow_str_to_charconst and 174 wide_str_to_charconst callers. 175 176 2023-11-14 Arsen Arsenovi <arsen (a] aarsen.me> 177 178 * config.in: Regenerate. 179 180 2023-11-13 Arsen Arsenovi <arsen (a] aarsen.me> 181 182 * configure: Regenerate. 183 * aclocal.m4: Regenerate. 184 185 2023-11-09 David Malcolm <dmalcolm (a] redhat.com> 186 187 * include/line-map.h (rich_location::get_expanded_location): Make 188 const. 189 (rich_location::get_line_table): New accessor. 190 (rich_location::m_line_table): Make the pointer be const. 191 (rich_location::m_have_expanded_location): Make mutable. 192 (rich_location::m_expanded_location): Likewise. 193 (fixit_hint::affects_line_p): Add const line_maps * param. 194 (linemap_client_expand_location_to_spelling_point): Likewise. 195 * line-map.cc (rich_location::get_expanded_location): Make const. 196 Pass m_line_table to 197 linemap_client_expand_location_to_spelling_point. 198 (rich_location::maybe_add_fixit): Likewise. 199 (fixit_hint::affects_line_p): Add set param and pass to 200 linemap_client_expand_location_to_spelling_point. 201 202 2023-11-07 Joseph Myers <joseph (a] codesourcery.com> 203 204 * directives.cc: Refer to C23 instead of C2X in diagnostics and 205 comments. 206 (STDC2X): Rename to STDC23. 207 * expr.cc: Use cpp_warn_c11_c23_compat instead of 208 cpp_warn_c11_c2x_compat and CPP_W_C11_C23_COMPAT instead of 209 CPP_W_C11_C2X_COMPAT. Refer to C23 instead of C2X in diagnostics 210 and comments. 211 * include/cpplib.h: Refer to C23 instead of C2X in diagnostics and 212 comments. 213 (CLK_GNUC2X): Rename to CLK_GNUC23. 214 (CLK_STDC2X): Rename to CLK_STDC23. 215 (CPP_W_C11_C2X_COMPAT): Rename to CPP_W_C11_C23_COMPAT. 216 * init.cc: Use GNUC23 instead of GNUC2X, STDC23 instead of STDC2X 217 and cpp_warn_c11_c23_compat instead of cpp_warn_c11_c2x_compat. 218 * lex.cc (maybe_va_opt_error): Refer to C23 instead of C2X in 219 diagnostic. 220 * macro.cc (_cpp_arguments_ok): Refer to C23 instead of C2X in 221 comment. 222 223 2023-11-02 Jakub Jelinek <jakub (a] redhat.com> 224 225 PR c++/110342 226 * include/cpplib.h (TTYPE_TABLE): Add CPP_UNEVAL_STRING literal 227 entry. Use C++11 instead of C++-0x in comments. 228 * charset.cc (convert_escape): Add UNEVAL argument, if true, 229 pedantically diagnose numeric escape sequences. 230 (cpp_interpret_string_1): Formatting fix. Adjust convert_escape 231 caller. 232 (cpp_interpret_string): Formatting string. 233 (cpp_interpret_string_notranslate): Pass type through to 234 cpp_interpret_string if it is CPP_UNEVAL_STRING. 235 236 2023-10-31 David Malcolm <dmalcolm (a] redhat.com> 237 238 * include/line-map.h 239 (line_map_macro::get_expansion_point_location): New accessor. 240 (line_map_macro::expansion): Rename field to... 241 (line_map_macro::mexpansion): Rename field to... 242 (MACRO_MAP_EXPANSION_POINT_LOCATION): Delete this function. 243 * line-map.cc (linemap_enter_macro): Update for renaming of field. 244 (linemap_macro_map_loc_to_exp_point): Update for removal of 245 MACRO_MAP_EXPANSION_POINT_LOCATION. 246 247 2023-10-23 Lewis Hyatt <lhyatt (a] gmail.com> 248 249 PR preprocessor/36887 250 * directives.cc (do_pragma_poison): Store in the extra hash map the 251 location from which an identifier has been poisoned. 252 * lex.cc (identifier_diagnostics_on_lex): When issuing a diagnostic 253 for the use of a poisoned identifier, also add a note indicating the 254 location from which it was poisoned. 255 * identifiers.cc (alloc_node): Convert to template function. 256 (_cpp_init_hashtable): Handle the new extra hash map. 257 (_cpp_destroy_hashtable): Likewise. 258 * include/cpplib.h (struct cpp_hashnode_extra): New struct. 259 (cpp_create_reader): Update prototype to... 260 * init.cc (cpp_create_reader): ...accept an argument for the extra 261 hash table and pass it to _cpp_init_hashtable. 262 * include/symtab.h (ht_lookup): New overload for convenience. 263 * internal.h (struct cpp_reader): Add EXTRA_HASH_TABLE member. 264 (_cpp_init_hashtable): Adjust prototype. 265 266 2023-10-08 David Malcolm <dmalcolm (a] redhat.com> 267 268 * include/line-map.h (LINEMAPS_ORDINARY_MAPS): Delete. 269 (LINEMAPS_MACRO_MAPS): Delete. 270 * line-map.cc (linemap_tracks_macro_expansion_locs_p): Update for 271 deletion of LINEMAPS_MACRO_MAPS. 272 (linemap_get_statistics): Likewise. 273 274 2023-10-08 David Malcolm <dmalcolm (a] redhat.com> 275 276 * include/line-map.h (maps_info_ordinary::cache): Rename to... 277 (maps_info_ordinary::m_cache): ...this. 278 (maps_info_macro::cache): Rename to... 279 (maps_info_macro::m_cache): ...this. 280 (LINEMAPS_CACHE): Delete. 281 (LINEMAPS_ORDINARY_CACHE): Delete. 282 (LINEMAPS_MACRO_CACHE): Delete. 283 * init.cc (read_original_filename): Update for adding "m_" prefix. 284 * line-map.cc (linemap_add): Eliminate LINEMAPS_ORDINARY_CACHE in 285 favor of a simple field access. 286 (linemap_enter_macro): Likewise for LINEMAPS_MACRO_CACHE. 287 (linemap_ordinary_map_lookup): Likewise for 288 LINEMAPS_ORDINARY_CACHE, twice. 289 (linemap_lookup_macro_index): Likewise for LINEMAPS_MACRO_CACHE. 290 291 2023-10-08 David Malcolm <dmalcolm (a] redhat.com> 292 293 * include/line-map.h (LINEMAPS_LAST_ALLOCATED_MAP): Delete. 294 (LINEMAPS_LAST_ALLOCATED_ORDINARY_MAP): Delete. 295 (LINEMAPS_LAST_ALLOCATED_MACRO_MAP): Delete. 296 297 2023-10-08 David Malcolm <dmalcolm (a] redhat.com> 298 299 * include/line-map.h (line_maps::reallocator): Rename to... 300 (line_maps::m_reallocator): ...this. 301 (line_maps::round_alloc_size): Rename to... 302 (line_maps::m_round_alloc_size): ...this. 303 (line_maps::location_adhoc_data_map): Rename to... 304 (line_maps::m_location_adhoc_data_map): ...this. 305 (line_maps::num_optimized_ranges): Rename to... 306 (line_maps::m_num_optimized_ranges): ..this. 307 (line_maps::num_unoptimized_ranges): Rename to... 308 (line_maps::m_num_unoptimized_ranges): ...this. 309 (get_combined_adhoc_loc): Delete decl. 310 (COMBINE_LOCATION_DATA): Delete. 311 * lex.cc (get_location_for_byte_range_in_cur_line): Update for 312 removal of COMBINE_LOCATION_DATA. 313 (warn_about_normalization): Likewise. 314 (_cpp_lex_direct): Likewise. 315 * line-map.cc (line_maps::~line_maps): Update for "m_" prefix of 316 some fields of line_maps. 317 (rebuild_location_adhoc_htab): Likewise. 318 (can_be_stored_compactly_p): Convert to... 319 (line_maps::can_be_stored_compactly_p): ...this private member 320 function. 321 (get_combined_adhoc_loc): Convert to... 322 (line_maps::get_or_create_combined_loc): ...this public member 323 function. 324 (line_maps::make_location): Update for removal of 325 COMBINE_LOCATION_DATA. 326 (get_data_from_adhoc_loc): Update for "m_" prefix of some fields 327 of line_maps. 328 (get_discriminator_from_adhoc_loc): Likewise. 329 (get_location_from_adhoc_loc): Likewise. 330 (get_range_from_adhoc_loc): Convert to... 331 (line_maps::get_range_from_adhoc_loc): ...this private member 332 function. 333 (line_maps::get_range_from_loc): Update for conversion of 334 get_range_from_adhoc_loc to a member function. 335 (linemap_init): Update for "m_" prefix of some fields of 336 line_maps. 337 (line_map_new_raw): Likewise. 338 (linemap_enter_macro): Likewise. 339 (linemap_get_statistics): Likewise. 340 341 2023-10-08 David Malcolm <dmalcolm (a] redhat.com> 342 343 * include/line-map.h (line_maps::pure_location_p): New decl. 344 (line_maps::get_pure_location): New decl. 345 (line_maps::get_range_from_loc): New decl. 346 (line_maps::get_start): New. 347 (line_maps::get_finish): New. 348 (line_maps::make_location): New decl. 349 (get_range_from_loc): Make line_maps param const. 350 (get_discriminator_from_loc): Likewise. 351 (pure_location_p): Likewise. 352 (get_pure_location): Likewise. 353 (linemap_check_files_exited): Likewise. 354 (linemap_tracks_macro_expansion_locs_p): Likewise. 355 (linemap_location_in_system_header_p): Likewise. 356 (linemap_location_from_macro_definition_p): Likewise. 357 (linemap_macro_map_loc_unwind_toward_spelling): Likewise. 358 (linemap_included_from_linemap): Likewise. 359 (first_map_in_common): Likewise. 360 (linemap_compare_locations): Likewise. 361 (linemap_location_before_p): Likewise. 362 (linemap_resolve_location): Likewise. 363 (linemap_unwind_toward_expansion): Likewise. 364 (linemap_unwind_to_first_non_reserved_loc): Likewise. 365 (linemap_expand_location): Likewise. 366 (linemap_get_file_highest_location): Likewise. 367 (linemap_get_statistics): Likewise. 368 (linemap_dump_location): Likewise. 369 (linemap_dump): Likewise. 370 (line_table_dump): Likewise. 371 * internal.h (linemap_get_expansion_line): Likewise. 372 (linemap_get_expansion_filename): Likewise. 373 * line-map.cc (can_be_stored_compactly_p): Likewise. 374 (get_data_from_adhoc_loc): Drop redundant "class". 375 (get_discriminator_from_adhoc_loc): Likewise. 376 (get_location_from_adhoc_loc): Likewise. 377 (get_range_from_adhoc_loc): Likewise. 378 (get_range_from_loc): Make const and move implementation to... 379 (line_maps::get_range_from_loc): ...this new function. 380 (get_discriminator_from_loc): Make line_maps param const. 381 (pure_location_p): Make const and move implementation to... 382 (line_maps::pure_location_p): ...this new function. 383 (get_pure_location): Make const and move implementation to... 384 (line_maps::get_pure_location): ...this new function. 385 (linemap_included_from_linemap): Make line_maps param const. 386 (linemap_check_files_exited): Likewise. 387 (linemap_tracks_macro_expansion_locs_p): Likewise. 388 (linemap_macro_map_loc_unwind_toward_spelling): Likewise. 389 (linemap_get_expansion_line): Likewise. 390 (linemap_get_expansion_filename): Likewise. 391 (linemap_location_in_system_header_p): Likewise. 392 (first_map_in_common_1): Likewise. 393 (linemap_compare_locations): Likewise. 394 (linemap_macro_loc_to_spelling_point): Likewise. 395 (linemap_macro_loc_to_def_point): Likewise. 396 (linemap_macro_loc_to_exp_point): Likewise. 397 (linemap_resolve_location): Likewise. 398 (linemap_location_from_macro_definition_p): Likewise. 399 (linemap_unwind_toward_expansion): Likewise. 400 (linemap_unwind_to_first_non_reserved_loc): Likewise. 401 (linemap_expand_location): Likewise. 402 (linemap_dump): Likewise. 403 (linemap_dump_location): Likewise. 404 (linemap_get_file_highest_location): Likewise. 405 (linemap_get_statistics): Likewise. 406 (line_table_dump): Likewise. 407 408 2023-09-20 Lewis Hyatt <lhyatt (a] gmail.com> 409 410 PR preprocessor/61474 411 * files.cc (_cpp_find_file): Set DONT_READ to TRUE for fake 412 include files. 413 (_cpp_fake_include): Pass a unique cpp_dir* address so 414 the fake file will not be found when looked up for real. 415 416 2023-09-19 Ben Boeckel <ben.boeckel (a] kitware.com> 417 418 * include/cpplib.h: Add cpp_fdeps_format enum. 419 (cpp_options): Add fdeps_format field 420 (cpp_finish): Add structured dependency fdeps_stream parameter. 421 * include/mkdeps.h (deps_add_module_target): Add flag for 422 whether a module is exported or not. 423 (fdeps_add_target): Add function. 424 (deps_write_p1689r5): Add function. 425 * init.cc (cpp_finish): Add new preprocessor parameter used for C++ 426 module tracking. 427 * mkdeps.cc (mkdeps): Implement P1689R5 output. 428 429 2023-09-06 Jakub Jelinek <jakub (a] redhat.com> 430 431 PR c/102989 432 * expr.cc (cpp_classify_number): Diagnose wb literal suffixes 433 for -pedantic* before C2X or -Wc11-c2x-compat. 434 435 2023-09-06 Jakub Jelinek <jakub (a] redhat.com> 436 437 PR c/102989 438 * expr.cc (interpret_int_suffix): Handle wb and WB suffixes. 439 * include/cpplib.h (CPP_N_BITINT): Define. 440 441 2023-08-07 Alan Modra <amodra (a] gmail.com> 442 443 * configure: Regenerate. 444 445 2023-07-19 Lewis Hyatt <lhyatt (a] gmail.com> 446 447 PR preprocessor/103902 448 * lex.cc (identifier_diagnostics_on_lex): New function refactoring 449 some common code. 450 (lex_identifier_intern): Use the new function. 451 (lex_identifier): Don't run identifier diagnostics here, rather let 452 the call site do it when needed. 453 (_cpp_lex_direct): Adjust the call sites of lex_identifier () 454 acccordingly. 455 (struct scan_id_result): New struct. 456 (scan_cur_identifier): New function. 457 (create_literal2): New function. 458 (lit_accum::create_literal2): New function. 459 (is_macro): Folded into new function... 460 (maybe_ignore_udl_macro_suffix): ...here. 461 (is_macro_not_literal_suffix): Folded likewise. 462 (lex_raw_string): Handle UTF-8 in UDL suffix via 463 scan_cur_identifier (). 464 (lex_string): Likewise. 465 466 2023-07-06 Thomas Schwinge <thomas (a] codesourcery.com> 467 468 * include/symtab.h (struct ht_identifier): Document different 469 rationale. 470 471 2023-06-23 Marek Polacek <polacek (a] redhat.com> 472 473 * include/cpplib.h (c_lang): Add CXX26 and GNUCXX26. 474 * init.cc (lang_defaults): Add rows for CXX26 and GNUCXX26. 475 (cpp_init_builtins): Set __cplusplus to 202400L for C++26. 476 Set __cplusplus to 202302L for C++23. 477 478 2023-06-23 Ben Boeckel <me (a] benboeckel.net> 479 480 * charset.cc: Allow `UCS_LIMIT` in UTF-8 strings. 481 482 2023-06-22 David Malcolm <dmalcolm (a] redhat.com> 483 484 * charset.cc (get_cppchar_property): New function template, based 485 on... 486 (cpp_wcwidth): ...this function. Rework to use the above. 487 Include "combining-chars.inc". 488 (cpp_is_combining_char): New function 489 Include "printable-chars.inc". 490 (cpp_is_printable_char): New function 491 * combining-chars.inc: New file, generated by 492 contrib/unicode/gen-combining-chars.py. 493 * include/cpplib.h (cpp_is_combining_char): New function decl. 494 (cpp_is_printable_char): New function decl. 495 * printable-chars.inc: New file, generated by 496 contrib/unicode/gen-printable-chars.py. 497 498 2023-06-20 Lewis Hyatt <lhyatt (a] gmail.com> 499 500 PR c++/66290 501 * macro.cc (_cpp_create_definition): Add location argument. 502 * internal.h (_cpp_create_definition): Adjust prototype. 503 * directives.cc (do_define): Pass new location argument to 504 _cpp_create_definition. 505 (do_undef): Stop passing inferior location to cpp_warning_with_line; 506 the default from cpp_warning is better. 507 (cpp_pop_definition): Pass new location argument to 508 _cpp_create_definition. 509 * pch.cc (cpp_read_state): Likewise. 510 511 2023-06-19 Ben Boeckel <ben.boeckel (a] kitware.com> 512 513 * charset.cc: Reject encodings of codepoints above 0x10FFFF. 514 UTF-16 does not support such codepoints and therefore all 515 Unicode rejects such values. 516 517 2023-06-15 Marek Polacek <polacek (a] redhat.com> 518 519 * configure.ac (--enable-host-shared): Don't set PICFLAG here. 520 (--enable-host-pie): New check. Set PICFLAG after this check. 521 * configure: Regenerate. 522 523 2023-06-15 Jakub Jelinek <jakub (a] redhat.com> 524 525 PR preprocessor/80753 526 * files.cc (struct _cpp_file): Add deferred_error bitfield. 527 (_cpp_find_file): When finding a file in cache with deferred_error 528 set in _cpp_FFK_NORMAL mode, call open_file_failed and clear the flag. 529 Set deferred_error in _cpp_FFK_HAS_INCLUDE mode if open_file_failed 530 hasn't been called. 531 532 2023-04-30 Jeff Law <jlaw@ventanamicro> 533 534 Revert: 535 2023-04-30 Longjun Luo <luolongjuna (a] gmail.com> 536 537 * init.cc (builtin_array): Do not always warn for a redefinition 538 of __LINE__. 539 540 2023-04-30 Longjun Luo <luolongjuna (a] gmail.com> 541 542 * init.cc (builtin_array): Do not always warn for a redefinition 543 of __LINE__. 544 545 2023-03-25 David Malcolm <dmalcolm (a] redhat.com> 546 547 PR analyzer/109098 548 * charset.cc (cpp_valid_utf8_p): New function. 549 * include/cpplib.h (cpp_valid_utf8_p): New prototype. 550 551 2023-03-16 Jakub Jelinek <jakub (a] redhat.com> 552 553 * makeucnid.cc (write_copyright): Update Unicode copyright years 554 up to 2022. 555 * makeuname2c.cc (write_copyright): Likewise. 556 * ucnid.h: Regenerated. 557 * uname2c.h: Regenerated. 558 559 2023-03-13 Lewis Hyatt <lhyatt (a] gmail.com> 560 561 PR preprocessor/67046 562 * directives.cc (_cpp_do__Pragma): Increment pfile->keep_tokens to 563 ensure the returned string token is valid. 564 565 2023-03-13 Lewis Hyatt <lhyatt (a] gmail.com> 566 567 * generated_cpp_wcwidth.h: Regenerated for Unicode 15. 568 569 2022-12-07 Joseph Myers <joseph (a] codesourcery.com> 570 571 * init.cc (lang_defaults): Enable va_opt for STDC2X. 572 * lex.cc (maybe_va_opt_error): Adjust diagnostic message for C. 573 * macro.cc (_cpp_arguments_ok): Update comment. 574 575 2022-11-23 Marek Polacek <polacek (a] redhat.com> 576 577 Revert: 578 2022-11-23 Marek Polacek <polacek (a] redhat.com> 579 580 * configure.ac (--enable-host-shared): Don't set PICFLAG here. 581 (--enable-host-pie): New check. Set PICFLAG after this check. 582 * configure: Regenerate. 583 584 2022-11-23 Marek Polacek <polacek (a] redhat.com> 585 586 * configure.ac (--enable-host-shared): Don't set PICFLAG here. 587 (--enable-host-pie): New check. Set PICFLAG after this check. 588 * configure: Regenerate. 589 590 2022-11-21 Lewis Hyatt <lhyatt (a] gmail.com> 591 592 * directives.cc (do_pragma): Fix memory leak in token buffer. Fix 593 unwanted paste between two tokens. 594 595 2022-11-21 Torbjrn SVENSSON <torbjorn.svensson (a] foss.st.com> 596 597 * files.cc: Ensure pattern matches before use. 598 599 2022-11-21 Martin Liska <mliska (a] suse.cz> 600 601 * config.in: Re-configure. 602 603 2022-11-19 Bernhard Reutner-Fischer <aldot (a] gcc.gnu.org> 604 605 PR preprocessor/107691 606 * configure.ac: Add valgrind header checks. 607 * configure: Regenerate. 608 609 2022-11-18 Richard Purdie <richard.purdie (a] linuxfoundation.org> 610 611 * macro.cc (_cpp_builtin_macro_text): Don't remap filenames within 612 directives. 613 614 2022-11-05 Lewis Hyatt <lhyatt (a] gmail.com> 615 616 PR preprocessor/55971 617 * lex.cc (get_fresh_line_impl): New function refactoring the code 618 from... 619 (_cpp_get_fresh_line): ...here. 620 (lex_raw_string): Use the new version of get_fresh_line_impl() to 621 support raw strings containing new lines when processing a directive. 622 623 2022-11-04 Jakub Jelinek <jakub (a] redhat.com> 624 625 * makeuname2c.cc (struct generated): Update from Unicode 15.0.0 626 table 4-8. 627 * ucnid.h: Regenerated for Unicode 15.0.0. 628 * uname2c.h: Likewise. 629 630 2022-10-19 Lewis Hyatt <lhyatt (a] gmail.com> 631 632 * include/cpplib.h (struct cpp_string): Use new "string_length" GTY. 633 * include/symtab.h (struct ht_identifier): Likewise. 634 635 2022-10-14 Joseph Myers <joseph (a] codesourcery.com> 636 637 * charset.cc (ucn_valid_in_identifier): Check xid_identifiers not 638 cplusplus to determine whether to use CXX23 and NXX23 flags. 639 * include/cpplib.h (struct cpp_options): Add xid_identifiers. 640 * init.cc (struct lang_flags, lang_defaults): Add xid_identifiers. 641 (cpp_set_lang): Set xid_identifiers. 642 * lex.cc (warn_about_normalization): Add parameter identifier. 643 Only pedwarn about non-NFC for identifiers, not pp-numbers. 644 (_cpp_lex_direct): Update calls to warn_about_normalization. 645 646 2022-10-14 Jakub Jelinek <jakub (a] redhat.com> 647 648 * include/cpplib.h (CPP_N_BFLOAT16): Define. 649 * expr.cc (interpret_float_suffix): Handle bf16 and BF16 suffixes for 650 C++. 651 652 2022-09-28 Eugene Rozenfeld <erozen (a] microsoft.com> 653 654 * include/line-map.h: Add discriminator to location_adhoc_data. 655 (get_combined_adhoc_loc): Add discriminator parameter. 656 (get_discriminator_from_adhoc_loc): Add external declaration. 657 (get_discriminator_from_loc): Add external declaration. 658 (COMBINE_LOCATION_DATA): Add discriminator parameter. 659 * lex.cc (get_location_for_byte_range_in_cur_line) Pass 0 discriminator 660 in a call to COMBINE_LOCATION_DATA. 661 (warn_about_normalization): Pass 0 discriminator in a call to 662 COMBINE_LOCATION_DATA. 663 (_cpp_lex_direct): Pass 0 discriminator in a call to 664 COMBINE_LOCATION_DATA. 665 * line-map.cc (location_adhoc_data_hash): Use discriminator compute 666 location_adhoc_data hash. 667 (location_adhoc_data_eq): Use discriminator when comparing 668 location_adhoc_data. 669 (can_be_stored_compactly_p): Check discriminator to determine 670 compact storage. 671 (get_combined_adhoc_loc): Add discriminator parameter. 672 (get_discriminator_from_adhoc_loc): New function to get the discriminator 673 from an ad-hoc location. 674 (get_discriminator_from_loc): New function to get the discriminator 675 from a location. 676 677 2022-09-27 Jakub Jelinek <jakub (a] redhat.com> 678 679 PR c++/106652 680 PR c++/85518 681 * expr.cc (interpret_float_suffix): Allow {f,F}{16,32,64,128} and 682 {f,F}{32,64,128}x suffixes for C++. 683 684 2022-09-08 Lewis Hyatt <lhyatt (a] gmail.com> 685 686 * line-map.cc (location_adhoc_data_update): Remove reliance on 687 undefined behavior. 688 (get_combined_adhoc_loc): Likewise. 689 (rebuild_location_adhoc_htab): Fix issue where the htab was not 690 properly updated. 691 692 2022-09-07 Joseph Myers <joseph (a] codesourcery.com> 693 694 * include/cpplib.h (struct cpp_options): Add true_false. 695 * expr.cc (eval_token): Check true_false not cplusplus to 696 determine whether to handle true and false keywords. 697 * init.cc (struct lang_flags): Add true_false. 698 (lang_defaults): Update. 699 (cpp_set_lang): Set true_false. 700 701 2022-09-07 Jakub Jelinek <jakub (a] redhat.com> 702 703 * include/cpplib.h (struct cpp_options): Add cpp_warn_unicode member. 704 (enum cpp_warning_reason): Add CPP_W_UNICODE. 705 * init.cc (cpp_create_reader): Initialize cpp_warn_unicode. 706 * charset.cc (_cpp_valid_ucn): In possible identifier contexts, don't 707 handle \u{ or \N{ specially in -std=c* modes except -std=c++2{3,b}. 708 In possible identifier contexts, don't emit an error and punt 709 if \N isn't followed by {, or if \N{} surrounds some lower case 710 letters or _. In possible identifier contexts when not C++23, don't 711 emit an error but warning about unknown character names and treat as 712 separate tokens. When treating as separate tokens \u{ or \N{, emit 713 warnings. 714 715 2022-09-05 Joseph Myers <joseph (a] codesourcery.com> 716 717 * init.cc (lang_defaults): Disable trigraphs for C2x. 718 719 2022-09-02 David Malcolm <dmalcolm (a] redhat.com> 720 721 PR c/90885 722 * include/cpplib.h (BOL): Move macro to 1 << 12 since it is 723 not used by C/C++'s unsigned char token flags. 724 (DECIMAL_INT): New, using 1 << 6, so that it is visible as 725 part of C/C++'s 8 bits of token flags. 726 727 2022-09-01 Jakub Jelinek <jakub (a] redhat.com> 728 729 PR c++/106655 730 * include/cpplib.h (struct cpp_options): Implement C++23 731 P2295R6 - Support for UTF-8 as a portable source file encoding. 732 Add cpp_warn_invalid_utf8 and cpp_input_charset_explicit fields. 733 (enum cpp_warning_reason): Add CPP_W_INVALID_UTF8 enumerator. 734 * init.cc (cpp_create_reader): Initialize cpp_warn_invalid_utf8 735 and cpp_input_charset_explicit. 736 * charset.cc (_cpp_valid_utf8): Adjust function comment. 737 * lex.cc (UCS_LIMIT): Define. 738 (utf8_continuation): New const variable. 739 (utf8_signifier): Move earlier in the file. 740 (_cpp_warn_invalid_utf8, _cpp_handle_multibyte_utf8): New functions. 741 (_cpp_skip_block_comment): Handle -Winvalid-utf8 warning. 742 (skip_line_comment): Likewise. 743 (lex_raw_string, lex_string): Likewise. 744 (_cpp_lex_direct): Likewise. 745 746 2022-08-31 Jakub Jelinek <jakub (a] redhat.com> 747 748 PR preprocessor/106778 749 * makeuname2c.cc (write_nodes): Reverse order of && operands in 750 assert. 751 752 2022-08-26 Jakub Jelinek <jakub (a] redhat.com> 753 754 PR c++/106647 755 * charset.cc (wide_str_to_charconst): Implement P2362R3 - Remove 756 non-encodable wide character literals and multicharacter. For 757 C++23 use CPP_DL_ERROR instead of CPP_DL_WARNING for 758 "character constant too long for its type" diagnostics on CPP_WCHAR 759 literals. 760 761 2022-08-26 Jakub Jelinek <jakub (a] redhat.com> 762 763 PR c++/106648 764 * charset.cc: Implement C++23 P2071R2 - Named universal character 765 escapes. Include uname2c.h. 766 (hangul_syllables, hangul_count): New variables. 767 (struct uname2c_data): New type. 768 (_cpp_uname2c, _cpp_uname2c_uax44_lm2): New functions. 769 (_cpp_valid_ucn): Use them. Handle named universal character escapes. 770 (convert_ucn): Adjust comment. 771 (convert_escape): Call convert_ucn even for \N. 772 (_cpp_interpret_identifier): Handle named universal character escapes. 773 * lex.cc (get_bidi_ucn): Fix up function comment formatting. 774 (get_bidi_named): New function. 775 (forms_identifier_p, lex_string): Handle named universal character 776 escapes. 777 * makeuname2c.cc: New file. Small parts copied from makeucnid.cc. 778 * uname2c.h: New generated file. 779 780 2022-08-24 Jakub Jelinek <jakub (a] redhat.com> 781 782 PR c++/106646 783 * init.cc: Implement C++23 P2437R1 - Support for #warning. 784 (lang_defaults): Set warning_directive for GNUCXX23 and CXX23. 785 * directives.cc (directive_diagnostics): Use different wording of 786 #warning pedwarn for C++. 787 788 2022-08-20 Jakub Jelinek <jakub (a] redhat.com> 789 790 PR c++/106645 791 * include/cpplib.h (struct cpp_options): Implement 792 P2290R3 - Delimited escape sequences. Add delimite_escape_seqs 793 member. 794 * init.cc (struct lang_flags): Likewise. 795 (lang_defaults): Add delim column. 796 (cpp_set_lang): Copy over delimite_escape_seqs. 797 * charset.cc (extend_char_range): New function. 798 (_cpp_valid_ucn): Use it. Handle delimited escape sequences. 799 (convert_hex): Likewise. 800 (convert_oct): Likewise. 801 (convert_ucn): Use extend_char_range. 802 (convert_escape): Call convert_oct even for \o. 803 (_cpp_interpret_identifier): Handle delimited escape sequences. 804 * lex.cc (get_bidi_ucn_1): Likewise. Add end argument, fill it in. 805 (get_bidi_ucn): Adjust get_bidi_ucn_1 caller. Use end argument to 806 compute num_bytes. 807 808 2022-08-18 Joseph Myers <joseph (a] codesourcery.com> 809 810 * include/cpplib.h (struct cpp_options): Add warning_directive. 811 * init.cc (struct lang_flags, lang_defaults): Add 812 warning_directive. 813 * directives.cc (DIRECTIVE_TABLE): Mark #warning as STDC2X not 814 EXTENSION. 815 (directive_diagnostics): Diagnose #warning with -Wc11-c2x-compat, 816 or with -pedantic for a standard not supporting #warning. 817 818 2022-08-16 Tom Honermann <tom (a] honermann.net> 819 820 PR c++/106423 821 * include/cpplib.h (cpp_warning_reason): Add CPP_W_CXX20_COMPAT. 822 * init.cc (cpp_create_reader): Add cpp_warn_cxx20_compat. 823 824 2022-08-08 Tom Honermann <tom (a] honermann.net> 825 826 PR preprocessor/106426 827 * charset.cc (narrow_str_to_charconst): Set signedness of CPP_UTF8CHAR 828 literals based on unsigned_utf8char. 829 * include/cpplib.h (cpp_options): Add unsigned_utf8char. 830 * init.cc (cpp_create_reader): Initialize unsigned_utf8char. 831 832 2022-07-15 Jonathan Wakely <jwakely (a] redhat.com> 833 834 * include/line-map.h (label_text::take_or_copy): Remove. 835 (label_text::moved_from): Rename to release. 836 (label_text::m_buffer, label_text::m_owned): Make private. 837 (label_text::get, label_text::is_owned): New accessors. 838 839 2022-07-13 Marek Polacek <polacek (a] redhat.com> 840 841 PR preprocessor/106272 842 * include/line-map.h (class label_text): Don't std::move in a return 843 statement. 844 845 2022-07-10 Lewis Hyatt <lhyatt (a] gmail.com> 846 847 PR preprocessor/97498 848 * directives.cc (destringize_and_run): Override the location of 849 the CPP_PRAGMA token from a _Pragma directive to the location of 850 the expansion point, as is done for the tokens lexed from it. 851 852 2022-07-07 David Malcolm <dmalcolm (a] redhat.com> 853 854 * include/line-map.h: Include <utility>. 855 (class label_text): Delete maybe_free method in favor of a 856 destructor. Add move ctor and assignment operator. Add deletion 857 of the copy ctor and copy-assignment operator. Rename field 858 m_caller_owned to m_owned. Add std::move where necessary; add 859 moved_from member function. 860 861 2022-06-28 Lewis Hyatt <lhyatt (a] gmail.com> 862 863 * ucnid.h: Regenerated for Unicode 14.0. 864 865 2022-06-26 Lewis Hyatt <lhyatt (a] gmail.com> 866 867 * generated_cpp_wcwidth.h: Generated from updated Unicode data files. 868 869 2022-05-29 Jakub Jelinek <jakub (a] redhat.com> 870 871 PR preprocessor/105732 872 * expr.cc (_cpp_parse_expr): Handle CPP_PADDING by just another 873 token. 874 875 2022-05-20 David Malcolm <dmalcolm (a] redhat.com> 876 877 * lex.cc: Replace uses of "FINAL" and "OVERRIDE" with "final" and 878 "override". 879 880 2022-02-11 Joseph Myers <joseph (a] codesourcery.com> 881 882 * Makefile.in (po/$(PACKAGE).pot): Also handle cpp_warning_at, 883 cpp_pedwarning_at and cpp_error_at. 884 885 2022-02-01 Jakub Jelinek <jakub (a] redhat.com> 886 887 PR preprocessor/104147 888 * macro.cc (funlike_invocation_p): For padding prefer a token 889 with val.source non-NULL especially if it has PREV_WHITE set 890 on val.source->flags. Add gcc_assert that CPP_PADDING tokens 891 don't have PREV_WHITE set in flags. 892 893 2022-02-01 Jakub Jelinek <jakub (a] redhat.com> 894 895 * directives.cc (destringize_and_run): Push &pfile->avoid_paste 896 instead of a copy of pfile->directive_result for the CPP_PADDING 897 case. 898 899 2022-01-24 Marek Polacek <polacek (a] redhat.com> 900 901 PR preprocessor/104030 902 * include/cpplib.h (enum cpp_bidirectional_level): Add 903 bidirectional_ucn. Set values explicitly. 904 * internal.h (cpp_reader): Adjust warn_bidi_p. 905 * lex.cc (maybe_warn_bidi_on_close): Don't warn about UCNs 906 unless UCN checking is on. 907 (maybe_warn_bidi_on_char): Likewise. 908 909 2022-01-18 Richard Biener <rguenther (a] suse.de> 910 911 * include/line-map.h (class line_maps): Re-arrange fields 912 to minimize padding. 913 (class rich_location): Likewise. 914 * line-map.cc (rich_location::rich_location): Adjust. 915 916 2022-01-17 Martin Liska <mliska (a] suse.cz> 917 918 * Makefile.in: Rename .c names to .cc. 919 920 2022-01-17 Martin Liska <mliska (a] suse.cz> 921 922 * Makefile.in: Rename .c names to .cc. 923 * charset.cc (convert_escape): Likewise. 924 * directives.cc (directive_diagnostics): Likewise. 925 (_cpp_handle_directive): Likewise. 926 (lex_macro_node): Likewise. 927 * include/cpplib.h (struct _cpp_file): Likewise. 928 (PURE_ZERO): Likewise. 929 (cpp_defined): Likewise. 930 (cpp_error_at): Likewise. 931 (cpp_forall_identifiers): Likewise. 932 (cpp_compare_macros): Likewise. 933 (cpp_get_converted_source): Likewise. 934 (cpp_read_state): Likewise. 935 (cpp_directive_only_process): Likewise. 936 (struct cpp_decoded_char): Likewise. 937 * include/line-map.h (enum lc_reason): Likewise. 938 (enum location_aspect): Likewise. 939 * include/mkdeps.h: Likewise. 940 * init.cc (cpp_destroy): Likewise. 941 (cpp_finish): Likewise. 942 * internal.h (struct cpp_reader): Likewise. 943 (_cpp_defined_macro_p): Likewise. 944 (_cpp_backup_tokens_direct): Likewise. 945 (_cpp_destroy_hashtable): Likewise. 946 (_cpp_has_header): Likewise. 947 (_cpp_expand_op_stack): Likewise. 948 (_cpp_commit_buff): Likewise. 949 (_cpp_restore_special_builtin): Likewise. 950 (_cpp_bracket_include): Likewise. 951 (_cpp_replacement_text_len): Likewise. 952 (ufputs): Likewise. 953 * line-map.cc (linemap_macro_loc_to_exp_point): Likewise. 954 (linemap_check_files_exited): Likewise. 955 (line_map_new_raw): Likewise. 956 * traditional.cc (enum ls): Likewise. 957 958 2022-01-17 Martin Liska <mliska (a] suse.cz> 959 960 * charset.c: Moved to... 961 * charset.cc: ...here. 962 * directives.c: Moved to... 963 * directives.cc: ...here. 964 * errors.c: Moved to... 965 * errors.cc: ...here. 966 * expr.c: Moved to... 967 * expr.cc: ...here. 968 * files.c: Moved to... 969 * files.cc: ...here. 970 * identifiers.c: Moved to... 971 * identifiers.cc: ...here. 972 * init.c: Moved to... 973 * init.cc: ...here. 974 * lex.c: Moved to... 975 * lex.cc: ...here. 976 * line-map.c: Moved to... 977 * line-map.cc: ...here. 978 * macro.c: Moved to... 979 * macro.cc: ...here. 980 * makeucnid.c: Moved to... 981 * makeucnid.cc: ...here. 982 * mkdeps.c: Moved to... 983 * mkdeps.cc: ...here. 984 * pch.c: Moved to... 985 * pch.cc: ...here. 986 * symtab.c: Moved to... 987 * symtab.cc: ...here. 988 * traditional.c: Moved to... 989 * traditional.cc: ...here. 990 991 2022-01-15 Martin Sebor <msebor (a] redhat.com> 992 993 * files.c (_cpp_find_file): Substitute a valid pointer for 994 an invalid one to avoid -Wuse-after-free. 995 996 2022-01-12 Clment Chigot <clement.chigot (a] atos.net> 997 998 * configure.ac: Check sizeof ino_t and dev_t. 999 * config.in: Regenerate. 1000 * configure: Regenerate. 1001 * include/cpplib.h (INO_T_CPP): Change for AIX. 1002 (DEV_T_CPP): New macro. 1003 (struct cpp_dir): Use it. 1004 1005 2021-12-30 Jakub Jelinek <jakub (a] redhat.com> 1006 1007 PR preprocessor/89971 1008 * macro.c (replace_args): For ##__VA_OPT__, if __VA_OPT__ expands 1009 to no tokens at all, drop PASTE_LEFT flag from the previous token. 1010 1011 2021-12-04 Jakub Jelinek <jakub (a] redhat.com> 1012 1013 PR preprocessor/102432 1014 * lex.c (_cpp_lex_direct): If buffer->need_line while 1015 pfile->state.in_deferred_pragma, return CPP_PRAGMA_EOL token instead 1016 of assertion failure. 1017 1018 2021-12-03 Jakub Jelinek <jakub (a] redhat.com> 1019 1020 PR pch/71934 1021 * include/line-map.h (class line_maps): Add GTY((callback)) to 1022 reallocator and round_alloc_size members. 1023 1024 2021-12-01 Jakub Jelinek <jakub (a] redhat.com> 1025 1026 PR c++/100977 1027 * init.c (struct lang_flags): Remove cxx23_identifiers. 1028 (lang_defaults): Remove cxx23_identifiers initializers. 1029 (cpp_set_lang): Don't copy cxx23_identifiers. 1030 * include/cpplib.h (struct cpp_options): Adjust comment about 1031 c11_identifiers. Remove cxx23_identifiers field. 1032 * lex.c (warn_about_normalization): Use cplusplus instead of 1033 cxx23_identifiers. 1034 * charset.c (ucn_valid_in_identifier): Likewise. 1035 1036 2021-12-01 Jakub Jelinek <jakub (a] redhat.com> 1037 1038 PR preprocessor/103415 1039 * macro.c (stringify_arg): Remove va_opt argument and va_opt handling. 1040 (paste_tokens): On successful paste or in PREV_WHITE and 1041 PREV_FALLTHROUGH flags from the *plhs token to the new token. 1042 (replace_args): Adjust stringify_arg callers. For #__VA_OPT__, 1043 perform token pasting in a separate loop before stringify_arg call. 1044 1045 2021-11-30 Richard Biener <rguenther (a] suse.de> 1046 1047 * charset.c (convert_escape): Remove unreachable break. 1048 1049 2021-11-30 Jakub Jelinek <jakub (a] redhat.com> 1050 1051 PR c++/100977 1052 * init.c (lang_defaults): Enable cxx23_identifiers for 1053 -std={gnu,c}++{11,14,17,20} too. 1054 1055 2021-11-29 Eric Gallager <egallager (a] gcc.gnu.org> 1056 1057 PR other/103021 1058 * Makefile.in: Use ETAGS variable in TAGS target. 1059 * configure: Regenerate. 1060 * configure.ac: Allow ETAGS variable to be overridden. 1061 1062 2021-11-23 Christophe Lyon <christophe.lyon (a] foss.st.com> 1063 1064 PR preprocessor/103355 1065 * system.h (ATTR_LIKELY): Fix definition. 1066 1067 2021-11-23 Marek Polacek <polacek (a] redhat.com> 1068 Jonathan Wakely <jwakely (a] redhat.com> 1069 1070 PR preprocessor/103355 1071 * lex.c: Use ATTR_LIKELY instead of [[likely]]. 1072 * system.h (ATTR_LIKELY): Define. 1073 1074 2021-11-22 Jakub Jelinek <jakub (a] redhat.com> 1075 Tobias Burnus <tobias (a] codesourcery.com> 1076 1077 PR preprocessor/103165 1078 * internal.h (struct lexer_state): Add ignore__Pragma field. 1079 * macro.c (builtin_macro): Don't interpret _Pragma if 1080 pfile->state.ignore__Pragma. 1081 (expand_arg): Temporarily set pfile->state.ignore__Pragma to 1. 1082 1083 2021-11-17 David Malcolm <dmalcolm (a] redhat.com> 1084 1085 PR preprocessor/103026 1086 * lex.c (struct bidi::context): New. 1087 (bidi::vec): Convert to a vec of context rather than unsigned 1088 char. 1089 (bidi::ctx_at): Rename to... 1090 (bidi::pop_kind_at): ...this and reimplement for above change. 1091 (bidi::current_ctx): Update for change to vec. 1092 (bidi::current_ctx_ucn_p): Likewise. 1093 (bidi::current_ctx_loc): New. 1094 (bidi::on_char): Update for usage of context struct. Add "loc" 1095 param and pass it when pushing contexts. 1096 (get_location_for_byte_range_in_cur_line): New. 1097 (get_bidi_utf8): Rename to... 1098 (get_bidi_utf8_1): ...this, reintroducing... 1099 (get_bidi_utf8): ...as a wrapper, setting *OUT when the result is 1100 not NONE. 1101 (get_bidi_ucn): Rename to... 1102 (get_bidi_ucn_1): ...this, reintroducing... 1103 (get_bidi_ucn): ...as a wrapper, setting *OUT when the result is 1104 not NONE. 1105 (class unpaired_bidi_rich_location): New. 1106 (maybe_warn_bidi_on_close): Use unpaired_bidi_rich_location when 1107 reporting on unpaired bidi chars. Split into singular vs plural 1108 spellings. 1109 (maybe_warn_bidi_on_char): Pass in a location_t rather than a 1110 const uchar * and use it when emitting warnings, and when calling 1111 bidi::on_char. 1112 (_cpp_skip_block_comment): Capture location when kind is not NONE 1113 and pass it to maybe_warn_bidi_on_char. 1114 (skip_line_comment): Likewise. 1115 (forms_identifier_p): Likewise. 1116 (lex_raw_string): Likewise. 1117 (lex_string): Likewise. 1118 1119 2021-11-17 David Malcolm <dmalcolm (a] redhat.com> 1120 1121 PR preprocessor/103026 1122 * lex.c (maybe_warn_bidi_on_close): Use a rich_location 1123 and call set_escape_on_output (true) on it. 1124 (maybe_warn_bidi_on_char): Likewise. 1125 1126 2021-11-17 Jakub Jelinek <jakub (a] redhat.com> 1127 1128 PR preprocessor/103130 1129 * lex.c (cpp_directive_only_process): Treat even \*/ as end of block 1130 comment. 1131 1132 2021-11-17 Marek Polacek <polacek (a] redhat.com> 1133 1134 PR preprocessor/103026 1135 * include/cpplib.h (enum cpp_bidirectional_level): New. 1136 (struct cpp_options): Add cpp_warn_bidirectional. 1137 (enum cpp_warning_reason): Add CPP_W_BIDIRECTIONAL. 1138 * internal.h (struct cpp_reader): Add warn_bidi_p member 1139 function. 1140 * init.c (cpp_create_reader): Set cpp_warn_bidirectional. 1141 * lex.c (bidi): New namespace. 1142 (get_bidi_utf8): New function. 1143 (get_bidi_ucn): Likewise. 1144 (maybe_warn_bidi_on_close): Likewise. 1145 (maybe_warn_bidi_on_char): Likewise. 1146 (_cpp_skip_block_comment): Implement warning about bidirectional 1147 control characters. 1148 (skip_line_comment): Likewise. 1149 (forms_identifier_p): Likewise. 1150 (lex_identifier): Likewise. 1151 (lex_string): Likewise. 1152 (lex_raw_string): Likewise. 1153 1154 2021-11-01 David Malcolm <dmalcolm (a] redhat.com> 1155 1156 * charset.c (convert_escape): Use encoding_rich_location when 1157 complaining about nonprintable unknown escape sequences. 1158 (cpp_display_width_computation::::cpp_display_width_computation): 1159 Pass in policy rather than tabstop. 1160 (cpp_display_width_computation::process_next_codepoint): Add "out" 1161 param and populate *out if non-NULL. 1162 (cpp_display_width_computation::advance_display_cols): Pass NULL 1163 to process_next_codepoint. 1164 (cpp_byte_column_to_display_column): Pass in policy rather than 1165 tabstop. Pass NULL to process_next_codepoint. 1166 (cpp_display_column_to_byte_column): Pass in policy rather than 1167 tabstop. 1168 * errors.c (cpp_diagnostic_get_current_location): New function, 1169 splitting out the logic from... 1170 (cpp_diagnostic): ...here. 1171 (cpp_warning_at): New function. 1172 (cpp_pedwarning_at): New function. 1173 * include/cpplib.h (cpp_warning_at): New decl for rich_location. 1174 (cpp_pedwarning_at): Likewise. 1175 (struct cpp_decoded_char): New. 1176 (struct cpp_char_column_policy): New. 1177 (cpp_display_width_computation::cpp_display_width_computation): 1178 Replace "tabstop" param with "policy". 1179 (cpp_display_width_computation::process_next_codepoint): Add "out" 1180 param. 1181 (cpp_display_width_computation::m_tabstop): Replace with... 1182 (cpp_display_width_computation::m_policy): ...this. 1183 (cpp_byte_column_to_display_column): Replace "tabstop" param with 1184 "policy". 1185 (cpp_display_width): Likewise. 1186 (cpp_display_column_to_byte_column): Likewise. 1187 * include/line-map.h (rich_location::escape_on_output_p): New. 1188 (rich_location::set_escape_on_output): New. 1189 (rich_location::m_escape_on_output): New. 1190 * internal.h (cpp_diagnostic_get_current_location): New decl. 1191 (class encoding_rich_location): New. 1192 * lex.c (skip_whitespace): Use encoding_rich_location when 1193 complaining about null characters. 1194 (warn_about_normalization): Generate a source range when 1195 complaining about improperly normalized tokens, rather than just a 1196 point, and use encoding_rich_location so that the source code 1197 is escaped on printing. 1198 * line-map.c (rich_location::rich_location): Initialize 1199 m_escape_on_output. 1200 1201 2021-10-29 Tobias Burnus <tobias (a] codesourcery.com> 1202 1203 PR c++/102409 1204 * directives.c (destringize_and_run): Add PRAGMA_OP to the 1205 CPP_PRAGMA token's flags to mark is as coming from _Pragma. 1206 * include/cpplib.h (PRAGMA_OP): #define, to be used with token flags. 1207 * macro.c (collect_args): Only handle CPP_PRAGMA special if PRAGMA_OP 1208 is set. 1209 1210 2021-10-22 Eric Gallager <egallager (a] gcc.gnu.org> 1211 1212 PR other/102663 1213 * Makefile.in: Add dummy install-dvi target. 1214 1215 2021-10-18 Martin Liska <mliska (a] suse.cz> 1216 1217 * charset.c (convert_oct): Remove unused but set variable. 1218 1219 2021-10-06 Jakub Jelinek <jakub (a] redhat.com> 1220 1221 * init.c (lang_defaults): Implement P2334R1, enable elifdef for 1222 -std=c++23 and -std=gnu++23. 1223 * directives.c (_cpp_handle_directive): Support elifdef/elifndef if 1224 either CPP_OPTION (pfile, elifdef) or !CPP_OPTION (pfile, std). 1225 (do_elif): For older non-std modes if pedantic pedwarn about 1226 #elifdef/#elifndef directives that change behavior. 1227 1228 2021-09-01 Jakub Jelinek <jakub (a] redhat.com> 1229 1230 PR c++/100977 1231 * include/cpplib.h (struct cpp_options): Add cxx23_identifiers. 1232 * charset.c (CXX23, NXX23): New enumerators. 1233 (CID, NFC, NKC, CTX): Renumber. 1234 (ucn_valid_in_identifier): Implement P1949R7 - use CXX23 and 1235 NXX23 flags for cxx23_identifiers. For start character in 1236 non-pedantic mode, allow characters that are allowed as start 1237 characters in any of the supported language modes, rather than 1238 disallowing characters allowed only as non-start characters in 1239 current mode but for characters from other language modes allowing 1240 them even if they are never allowed at start. 1241 * init.c (struct lang_flags): Add cxx23_identifiers. 1242 (lang_defaults): Add cxx23_identifiers column. 1243 (cpp_set_lang): Initialize CPP_OPTION (pfile, cxx23_identifiers). 1244 * lex.c (warn_about_normalization): If cxx23_identifiers, use 1245 cpp_pedwarning_with_line instead of cpp_warning_with_line for 1246 "is not in NFC" diagnostics. 1247 * makeucnid.c: Adjust usage comment. 1248 (CXX23, NXX23): New enumerators. 1249 (all_languages): Add CXX23. 1250 (not_NFC, not_NFKC, maybe_not_NFC): Renumber. 1251 (read_derivedcore): New function. 1252 (write_table): Print also CXX23 and NXX23 columns. 1253 (main): Require 5 arguments instead of 4, call read_derivedcore. 1254 * ucnid.h: Regenerated using Unicode 13.0.0 files. 1255 1256 2021-09-01 Jason Merrill <jason (a] redhat.com> 1257 1258 * macro.c (replace_args): When __VA_OPT__ is on the LHS of ##, 1259 remove trailing avoid_paste tokens. 1260 1261 2021-09-01 Jakub Jelinek <jakub (a] redhat.com> 1262 1263 PR preprocessor/101488 1264 * macro.c (replace_args): Fix up handling of CPP_PADDING tokens at the 1265 start or end of __VA_OPT__ arguments when preceeded or followed by ##. 1266 1267 2021-08-31 Martin Sebor <msebor (a] redhat.com> 1268 1269 * include/line-map.h (class rich_location): Disable copying and 1270 assignment. 1271 1272 2021-08-25 Lewis Hyatt <lhyatt (a] gmail.com> 1273 1274 PR other/93067 1275 * charset.c (init_iconv_desc): Adapt to permit PFILE argument to 1276 be NULL. 1277 (_cpp_convert_input): Likewise. Also move UTF-8 BOM logic to... 1278 (cpp_check_utf8_bom): ...here. New function. 1279 (cpp_input_conversion_is_trivial): New function. 1280 * files.c (read_file_guts): Allow PFILE argument to be NULL. Add 1281 INPUT_CHARSET argument as an alternate source of this information. 1282 (read_file): Pass the new argument to read_file_guts. 1283 (cpp_get_converted_source): New function. 1284 * include/cpplib.h (struct cpp_converted_source): Declare. 1285 (cpp_get_converted_source): Declare. 1286 (cpp_input_conversion_is_trivial): Declare. 1287 (cpp_check_utf8_bom): Declare. 1288 1289 2021-08-17 Jakub Jelinek <jakub (a] redhat.com> 1290 1291 * macro.c (vaopt_state): Add m_stringify member. 1292 (vaopt_state::vaopt_state): Initialize it. 1293 (vaopt_state::update): Overwrite it. 1294 (vaopt_state::stringify): New method. 1295 (stringify_arg): Replace arg argument with first, count arguments 1296 and add va_opt argument. Use first instead of arg->first and 1297 count instead of arg->count, for va_opt add paste_tokens handling. 1298 (paste_tokens): Fix up len calculation. Don't spell rhs twice, 1299 instead use %.*s to supply lhs and rhs spelling lengths. Don't call 1300 _cpp_backup_tokens here. 1301 (paste_all_tokens): Call it here instead. 1302 (replace_args): Adjust stringify_arg caller. For vaopt_state::END 1303 if stringify is true handle __VA_OPT__ stringification. 1304 (create_iso_definition): Handle # __VA_OPT__ similarly to # macro_arg. 1305 1306 2021-08-12 Jakub Jelinek <jakub (a] redhat.com> 1307 1308 PR preprocessor/101638 1309 * macro.c (cpp_sys_macro_p): Return true instead of 1310 crashing on builtin macros. 1311 1312 2021-08-05 Jakub Jelinek <jakub (a] redhat.com> 1313 1314 PR c++/100977 1315 * ucnid.h: Regenerated using Unicode 13.0.0 files. 1316 1317 2021-08-05 Jakub Jelinek <jakub (a] redhat.com> 1318 1319 PR c++/100977 1320 * makeucnid.c (write_table): Fix computation of last_combine. 1321 * ucnid.h: Regenerated using Unicode 6.3.0 files. 1322 1323 2021-06-16 Jason Merrill <jason (a] redhat.com> 1324 1325 PR c++/100796 1326 PR preprocessor/96391 1327 * line-map.c (linemap_compare_locations): Only use comparison with 1328 LINE_MAP_MAX_LOCATION_WITH_COLS to avoid abort. 1329 1330 2021-05-20 Christophe Lyon <christophe.lyon (a] linaro.org> 1331 Torbjrn Svensson <torbjorn.svensson (a] st.com> 1332 1333 PR c/42579 1334 * include/cpplib.h (cpp_builtin_type): Add BT_FILE_NAME entry. 1335 * init.c (builtin_array): Likewise. 1336 * macro.c (_cpp_builtin_macro_text): Add support for BT_FILE_NAME. 1337 1338 2021-05-20 Jakub Jelinek <jakub (a] redhat.com> 1339 1340 PR preprocessor/100646 1341 * lex.c (cpp_directive_only_process): Treat end of file as termination 1342 for !is_block comments. 1343 1344 2021-05-12 Jakub Jelinek <jakub (a] redhat.com> 1345 1346 PR preprocessor/100392 1347 * lex.c (cpp_directive_only_process): If buffer doesn't end with '\n', 1348 add buffer->rlimit[0] character to the printed range and 1349 CPP_INCREMENT_LINE and increment line_count. 1350 1351 2021-05-11 Joseph Myers <joseph (a] codesourcery.com> 1352 1353 * include/cpplib.h (struct cpp_options): Add elifdef. 1354 * init.c (struct lang_flags): Add elifdef. 1355 (lang_defaults): Update to include elifdef initializers. 1356 (cpp_set_lang): Set elifdef for pfile based on language. 1357 * directives.c (STDC2X, ELIFDEF): New macros. 1358 (EXTENSION): Increase value to 3. 1359 (DIRECTIVE_TABLE): Add #elifdef and #elifndef. 1360 (_cpp_handle_directive): Do not treat ELIFDEF directives as 1361 directives for language versions without the #elifdef feature. 1362 (do_elif): Handle #elifdef and #elifndef. 1363 (do_elifdef, do_elifndef): New functions. 1364 1365 2021-05-11 Joseph Myers <joseph (a] codesourcery.com> 1366 1367 * lex.c (cpp_avoid_paste): Do not allow pasting CPP_NUMBER with 1368 CPP_CHAR. 1369 1370 2021-05-11 Joseph Myers <joseph (a] codesourcery.com> 1371 1372 * init.c (lang_defaults): Enable digit separators for GNUC2X and 1373 STDC2X. 1374 1375 2021-05-07 Jakub Jelinek <jakub (a] redhat.com> 1376 1377 PR c/100450 1378 * lex.c (cpp_avoid_paste): Handle token1 CPP_PRAGMA like CPP_NAME. 1379 1380 2021-05-06 Joseph Myers <joseph (a] codesourcery.com> 1381 1382 PR c++/83873 1383 PR preprocessor/97604 1384 * lex.c (lex_number): Reject adjacent digit separators here. Do 1385 not allow digit separators before '.' or an exponent with sign. 1386 * expr.c (cpp_classify_number): Do not check for adjacent digit 1387 separators here. 1388 1389 2021-05-03 H.J. Lu <hjl.tools (a] gmail.com> 1390 1391 PR bootstrap/99703 1392 * configure: Regenerated. 1393 1394 2021-04-29 Joseph Myers <joseph (a] codesourcery.com> 1395 1396 PR preprocessor/82359 1397 * directives.c (strtolinenum): Handle digit separators. 1398 1399 2021-04-19 Richard Biener <rguenther (a] suse.de> 1400 1401 PR preprocessor/100142 1402 * line-map.c (linemap_position_for_loc_and_offset): Revert 1403 unintended s/column_offset/column/ change. 1404 1405 2021-04-13 Nathan Sidwell <nathan (a] acm.org> 1406 1407 PR preprocessor/99446 1408 * line-map.c (line-map.c): Do not advance to linemaps for 1409 different files. 1410 1411 2021-04-13 Eric Botcazou <ebotcazou (a] adacore.com> 1412 1413 * include/line-map.h (IS_MACRO_LOC): Delete. 1414 * line-map.c (linemap_location_from_macro_expansion_p): Test 1415 LINEMAPS_MACRO_LOWEST_LOCATION of the linemap. 1416 1417 2021-03-02 David Malcolm <dmalcolm (a] redhat.com> 1418 1419 PR c/99323 1420 * line-map.c (rich_location::maybe_add_fixit): Reject fix-it hints 1421 at column 0. 1422 1423 2021-02-24 Nathan Sidwell <nathan (a] acm.org> 1424 1425 PR c++/98718 1426 * include/line-map.h 1427 * line-map.c 1428 1429 2021-02-24 Nathan Sidwell <nathan (a] acm.org> 1430 1431 PR c++/99072 1432 * init.c (read_original_filename): Expunge all evidence of the 1433 original filename. 1434 1435 2021-02-18 Nathan Sidwell <nathan (a] acm.org> 1436 1437 PR c++/99023 1438 * include/cpplib.h (cpp_find_header_unit): Rename to ... 1439 (cpp_probe_header_unit): ... this. 1440 * internal.h (_cp_find_header_unit): Declare. 1441 * files.c (cpp_find_header_unit): Break apart to .. 1442 (test_header_unit): ... this, and ... 1443 (_cpp_find_header_unit): ... and, or and ... 1444 (cpp_probe_header_unit): ... this. 1445 * macro.c (cpp_get_token_1): Call _cpp_find_header_unit. 1446 1447 2021-02-16 Nathan Sidwell <nathan (a] acm.org> 1448 1449 * files.c (_cpp_stack_file): Make buffers end in unread \n. 1450 1451 2021-02-10 David Malcolm <dmalcolm (a] redhat.com> 1452 1453 PR preprocessor/96391 1454 * line-map.c (linemap_compare_locations): Require that 1455 the location be <= LINE_MAP_MAX_LOCATION_WITH_COLS when 1456 treating locations as coming from the same macro expansion. 1457 1458 2021-02-04 Jakub Jelinek <jakub (a] redhat.com> 1459 1460 * expr.c (cpp_classify_number): Use make_signed_t<size_t> instead of 1461 make_signed<size_t>::type in the diagnostics. 1462 1463 2021-02-03 Jakub Jelinek <jakub (a] redhat.com> 1464 1465 PR preprocessor/98882 1466 * lex.c (cpp_directive_only_process): Don't assert that rlimit[-1] 1467 is a newline, instead assert that rlimit[0] is either newline or 1468 carriage return. When seeing '\\' followed by '\r', check limit 1469 before accessing pos[1]. 1470 1471 2021-02-03 Ed Smith-Rowland <3dw4rd (a] verizon.net> 1472 1473 * expr.c (interpret_int_suffix): Detect 'z' integer suffix. 1474 (cpp_classify_number): Compat warning for use of 'z' suffix. 1475 * include/cpplib.h (struct cpp_options): New flag. 1476 (enum cpp_warning_reason): New flag. 1477 (CPP_N_USERDEF): Comment C++0x -> C++11. 1478 (CPP_N_SIZE_T): New flag for cpp_classify_number. 1479 * init.c (cpp_set_lang): Initialize new flag. 1480 1481 2021-01-27 liuhongt <hongtao.liu (a] intel.com> 1482 1483 PR target/98833 1484 * lex.c (search_line_sse2): Replace builtins with == operator. 1485 1486 2021-01-26 Paul Fee <paul.f.fee (a] gmail.com> 1487 1488 * include/cpplib.h (c_lang): Add CXX23 and GNUCXX23. 1489 * init.c (lang_defaults): Add rows for CXX23 and GNUCXX23. 1490 (cpp_init_builtins): Set __cplusplus to 202100L for C++23. 1491 1492 2021-01-15 Nathan Sidwell <nathan (a] acm.org> 1493 1494 PR preprocessor/95253 1495 * mkdeps.c (munge): Do not escape ':'. 1496 1497 2020-12-14 Nathan Sidwell <nathan (a] acm.org> 1498 1499 * include/cpplib.h (struct cpp_macro): Add imported_p field. 1500 (struct cpp_hashnode): Tweak deferred field documentation. 1501 * macro.c (_cpp_new_macro): Clear new field. 1502 (cpp_get_deferred_macro, get_deferred_or_lazy_macro): Assert 1503 more. 1504 1505 2020-12-10 Jason Merrill <jason (a] redhat.com> 1506 1507 * init.c (cpp_init_builtins): Update __cplusplus for C++20. 1508 1509 2020-12-01 JeanHeyd Meneide <phdofthehouse (a] gmail.com> 1510 1511 * charset.c (init_iconv_desc): Initialize "to" and "from" fields. 1512 * directives.c (cpp_get_narrow_charset_name): New function. 1513 (cpp_get_wide_charset_name): Likewise. 1514 * include/cpplib.h (cpp_get_narrow_charset_name): Prototype. 1515 (cpp_get_wide_charset_name): Likewise. 1516 * internal.h (cset_converter): Add "to" and "from" fields. 1517 1518 2020-11-27 Joseph Myers <joseph (a] codesourcery.com> 1519 1520 PR preprocessor/97602 1521 * directives.c (strtolinenum): Check for overflow before it 1522 occurs. Correct comment. 1523 1524 2020-11-24 Nathan Sidwell <nathan (a] acm.org> 1525 1526 * include/cpplib.h (struct cpp_hashnode): Add deferred field. 1527 (cpp_set_deferred_macro): Define. 1528 (cpp_get_deferred_macro): Declare. 1529 (cpp_macro_definition): Reformat, add overload. 1530 (cpp_macro_definition_location): Deal with deferred macro. 1531 (cpp_alloc_token_string, cpp_compare_macro): Declare. 1532 * internal.h (_cpp_notify_macro_use): Return bool 1533 (_cpp_maybe_notify_macro_use): Likewise. 1534 * directives.c (do_undef): Check macro is not undef before 1535 warning. 1536 (do_ifdef, do_ifndef): Deal with deferred macro. 1537 * expr.c (parse_defined): Likewise. 1538 * lex.c (cpp_allocate_token_string): Break out of ... 1539 (create_literal): ... here. Call it. 1540 (cpp_maybe_module_directive): Deal with deferred macro. 1541 * macro.c (cpp_get_token_1): Deal with deferred macro. 1542 (warn_of_redefinition): Deal with deferred macro. 1543 (compare_macros): Rename to ... 1544 (cpp_compare_macro): ... here. Make extern. 1545 (cpp_get_deferred_macro): New. 1546 (_cpp_notify_macro_use): Deal with deferred macro, return bool 1547 indicating definedness. 1548 (cpp_macro_definition): Deal with deferred macro. 1549 1550 2020-11-19 Nathan Sidwell <nathan (a] acm.org> 1551 1552 * include/cpplib.h (enum cpp_main_search): New. 1553 (struct cpp_options): Add main_search field. 1554 (cpp_main_loc): Declare. 1555 (cpp_retrofit_as_include): Declare. 1556 * internal.h (struct cpp_reader): Add main_loc field. 1557 (_cpp_in_main_source_file): Not main if main is a header. 1558 * init.c (cpp_read_main_file): Use main_search option to locate 1559 main file. Set main_loc 1560 * files.c (cpp_retrofit_as_include): New. 1561 1562 2020-11-19 Nathan Sidwell <nathan (a] acm.org> 1563 1564 * internal.h (cpp_in_system_header): Rename to ... 1565 (_cpp_in_system_header): ... here. 1566 (cpp_in_primary_file): Rename to ... 1567 (_cpp_in_main_source_file): ... here. Compare main_file equality 1568 and check main_search value. 1569 * lex.c (maybe_va_opt_error, _cpp_lex_direct): Adjust for rename. 1570 * macro.c (_cpp_builtin_macro_text): Likewise. 1571 (replace_args): Likewise. 1572 * directives.c (do_include_next): Likewise. 1573 (do_pragma_once, do_pragma_system_header): Likewise. 1574 * files.c (struct _cpp_file): Delete main_file field. 1575 (pch_open): Check pfile->main_file equality. 1576 (make_cpp_file): Drop cpp_reader parm, don't set main_file. 1577 (_cpp_find_file): Adjust. 1578 (_cpp_stack_file): Check pfile->main_file equality. 1579 (struct report_missing_guard_data): Add cpp_reader field. 1580 (report_missing_guard): Check pfile->main_file equality. 1581 (_cpp_report_missing_guards): Adjust. 1582 1583 2020-11-18 Nathan Sidwell <nathan (a] acm.org> 1584 1585 * include/cpplib.h (struct cpp_options): Add module_directives 1586 option. 1587 (NODE_MODULE): New node flag. 1588 (struct cpp_hashnode): Make rid-code a bitfield, increase bits in 1589 flags and swap with type field. 1590 * init.c (post_options): Create module-directive identifier nodes. 1591 * internal.h (struct lexer_state): Add directive_file_token & 1592 n_modules fields. Add module node enumerator. 1593 * lex.c (cpp_maybe_module_directive): New. 1594 (_cpp_lex_token): Call it. 1595 (cpp_output_token): Add '"' around CPP_HEADER_NAME token. 1596 (do_peek_ident, do_peek_module): New. 1597 (cpp_directives_only): Detect module-directive lines. 1598 * macro.c (cpp_get_token_1): Deal with directive_file_token 1599 triggering. 1600 1601 2020-11-18 Nathan Sidwell <nathan (a] acm.org> 1602 1603 * files.c (struct _cpp_file): Add header_unit field. 1604 (_cpp_stack_file): Add header unit support. 1605 (cpp_find_header_unit): New. 1606 * include/cpplib.h (cpp_find_header_unit): Declare. 1607 1608 2020-11-18 Nathan Sidwell <nathan (a] acm.org> 1609 1610 * include/cpplib.h (struct cpp_options): Add modules to 1611 dep-options. 1612 * include/mkdeps.h (deps_add_module_target): Declare. 1613 (deps_add_module_dep): Declare. 1614 * mkdeps.c (class mkdeps): Add modules, module_name, cmi_name, 1615 is_header_unit fields. Adjust cdtors. 1616 (deps_add_module_target, deps_add_module_dep): New. 1617 (make_write): Write module dependencies, if enabled. 1618 1619 2020-11-17 Nathan Sidwell <nathan (a] acm.org> 1620 1621 * include/cpplib.h (struct cpp_callbacks): Add 1622 user_deferred_macro & translate_include. 1623 1624 2020-11-17 Nathan Sidwell <nathan (a] acm.org> 1625 1626 * include/line-map.h (enum lc_reason): Add LC_MODULE. 1627 (MAP_MODULE_P): New. 1628 (line_map_new_raw): Declare. 1629 (linemap_enter_macro): Move declaration from internal.h 1630 (linemap_module_loc, linemap_module_reparent) 1631 (linemap_module_restore): Declare. 1632 (linemap_lookup_macro_indec): Declare. 1633 * internal.h (linemap_enter_macro): Moved to line-map.h. 1634 * line-map.c (linemap_new_raw): New, broken out of ... 1635 (new_linemap): ... here. Call it. 1636 (LAST_SOURCE_LINE_LOCATION): New. 1637 (liemap_module_loc, linemap_module_reparent) 1638 (linemap_module_restore): New. 1639 (linemap_lookup_macro_index): New, broken out of ... 1640 (linemap_macro_map_lookup): ... here. Call it. 1641 (linemap_dump): Add module dump. 1642 1643 2020-11-17 Nathan Sidwell <nathan (a] acm.org> 1644 1645 PR preprocessor/97858 1646 * mkdeps.c (munge): Drop varadic args, we only ever use one. 1647 1648 2020-11-13 Joseph Myers <joseph (a] codesourcery.com> 1649 1650 * expr.c (cpp_classify_number): Update diagnostic for binary 1651 constants for C. Also diagnose binary constants for 1652 -Wc11-c2x-compat. 1653 * init.c (lang_defaults): Enable binary constants for GNUC2X and 1654 STDC2X. 1655 1656 2020-11-13 Piotr H. Dabrowski <phd (a] phd.re> 1657 1658 PR c++/91318 1659 * include/cpplib.h: Added cpp_define_unused(), cpp_define_formatted_unused() 1660 * directives.c: Likewise. 1661 1662 2020-11-12 Joseph Myers <joseph (a] codesourcery.com> 1663 1664 * include/cpplib.h (struct cpp_callbacks): Add bool argument to 1665 has_attribute. 1666 (enum cpp_builtin_type): Add BT_HAS_STD_ATTRIBUTE. 1667 * init.c (builtin_array): Add __has_c_attribute. 1668 (cpp_init_special_builtins): Handle BT_HAS_STD_ATTRIBUTE. 1669 * macro.c (_cpp_builtin_macro_text): Handle BT_HAS_STD_ATTRIBUTE. 1670 Update call to has_attribute for BT_HAS_ATTRIBUTE. 1671 * traditional.c (fun_like_macro): Handle BT_HAS_STD_ATTRIBUTE. 1672 1673 2020-11-12 Nicholas Guriev <guriev-ns (a] ya.ru> 1674 1675 PR pch/86674 1676 * files.c (_cpp_find_file): Use CPP_DL_NOTE not CPP_DL_ERROR in call to 1677 cpp_error. 1678 1679 2020-11-07 Lewis Hyatt <lhyatt (a] gmail.com> 1680 1681 * generated_cpp_wcwidth.h: Regenerated from Unicode 13.0.0 data. 1682 1683 2020-11-06 Nathan Sidwell <nathan (a] acm.org> 1684 1685 * include/cpplib.h (enum class CPP_time_kind): New. 1686 (cpp_get_date): Declare. 1687 * internal.h (struct cpp_reader): Replace source_date_epoch with 1688 time_stamp and time_stamp_kind. 1689 * init.c (cpp_create_reader): Initialize them. 1690 * macro.c (_cpp_builtin_macro_text): Use cpp_get_date. 1691 (cpp_get_date): Broken out from _cpp_builtin_macro_text and 1692 genericized. 1693 1694 2020-11-03 Nathan Sidwell <nathan (a] acm.org> 1695 1696 * lex.c (cpp_peek_token): Do not peek past CPP_PRAGMA. 1697 (_cpp_lex_direct): Handle EOF in pragma when setting need_line, 1698 not when needing a line. 1699 1700 2020-11-03 Nathan Sidwell <nathan (a] acm.org> 1701 1702 * lex.c (_cpp_clean_line): Fix DOS off-by-one error. 1703 1704 2020-11-03 Nathan Sidwell <nathan (a] acm.org> 1705 1706 * init.c (cpp_read_main_file): Use cpp_get_deps result. 1707 1708 2020-11-03 Nathan Sidwell <nathan (a] acm.org> 1709 1710 * include/mkdeps.h: Include cpplib.h 1711 (deps_write): Adjust first parm type. 1712 * mkdeps.c: Include internal.h 1713 (make_write): Adjust first parm type. Check phony option 1714 directly. 1715 (deps_write): Adjust first parm type. 1716 * init.c (cpp_read_main_file): Use get_deps. 1717 * directives.c (cpp_get_deps): Check option before initializing. 1718 1719 2020-11-02 Nathan Sidwell <nathan (a] acm.org> 1720 1721 * internal.h (_cpp_notify_macro_use): Add location parm. 1722 (_cpp_maybe_notify_macro_use): Likewise. 1723 * directives.c (_cpp_do_file_change): Check we've not changed file 1724 when optimizing a rewind. 1725 (do_ifdef): Pass location to _cpp_maybe_notify_macro_use. 1726 (do_ifndef): Likewise. Delete obsolete comment about powerpc. 1727 * expr.c (parse_defined): Pass location to 1728 _cpp_maybe_notify_macro_use. 1729 * macro.c (enter_macro_context): Likewise. 1730 (warn_of_redefinition): Break out helper function. Call it. 1731 (compare_macros): New function broken out of warn_of_redefinition. 1732 (_cpp_new_macro): Zero all fields. 1733 (_cpp_notify_macro_use): Add location parameter. 1734 1735 2020-10-20 Nathan Sidwell <nathan (a] acm.org> 1736 1737 * lex.c (_cpp_lex_direct): Do not complete EOF processing when 1738 parsing_args. 1739 * macro.c (collect_args): Do not unwind fake EOF. 1740 (funlike_invocation_p): Do not unwind fake EOF. 1741 (cpp_context): Replace abort with gcc_assert. 1742 1743 2020-10-19 Nathan Sidwell <nathan (a] acm.org> 1744 1745 * internal.h (struct cpp_reader): Rename 'eof' field to 'endarg'. 1746 * init.c (cpp_create_reader): Adjust. 1747 * macro.c (collect_args): Use endarg for separator. Always rewind 1748 in the not-fn case. 1749 1750 2020-10-08 Nathan Sidwell <nathan (a] acm.org> 1751 1752 * internal.h (enum include_type): Rename IT_MAIN_INJECT to 1753 IT_PRE_MAIN. 1754 * init.c (cpp_read_main_file): If there is no line marker, adjust 1755 the initial line marker. 1756 (read_original_filename): Return bool, peek the buffer directly 1757 before trying to tokenize. 1758 (read_original_directory): Likewise. Directly prod the string 1759 literal. 1760 * files.c (_cpp_stack_file): Adjust for IT_PRE_MAIN change. 1761 1762 2020-09-26 Jakub Jelinek <jakub (a] redhat.com> 1763 1764 PR bootstrap/97163 1765 * lex.c (search_line_fast): Only use _ARCH_PWR8 Altivec version 1766 for GCC >= 4.5. 1767 1768 2020-09-17 Patrick Palka <ppalka (a] redhat.com> 1769 1770 PR c/80076 1771 * include/line-map.h (first_map_in_common): Declare. 1772 * line-map.c (first_map_in_common): Remove static. 1773 1774 2020-09-07 Martin Storsj <martin (a] martin.st> 1775 1776 * files.c (remap_filename): Make a strchr return value pointer 1777 to const. 1778 1779 2020-07-30 H.J. Lu <hjl.tools (a] gmail.com> 1780 1781 PR bootstrap/96202 1782 * configure: Regenerated. 1783 1784 2020-07-29 Tiziano Mller <tiziano.mueller (a] chem.uzh.ch> 1785 1786 * init.c (builtin_array): Add xref comment. 1787 * traditional.c (fun_like_macro): Add HAS_INCLUDE codes. 1788 1789 2020-07-28 Jakub Jelinek <jakub (a] redhat.com> 1790 1791 PR preprocessor/96323 1792 * lex.c (lex_raw_string): For c == '\n' don't continue after reporting 1793 an prefix delimiter error. 1794 1795 2020-07-28 Nathan Sidwell <nathan (a] acm.org> 1796 1797 * init.c (cpp_read_main_file): Always use the last map for 1798 the return value. 1799 1800 2020-07-20 Nathan Sidwell <nathan (a] acm.org> 1801 1802 * line-map.c (linemap_add): Simplify column overflow calculation. 1803 Add comment about range and column bit init. 1804 (linemap_ordinary_map_lookup): Refactor for RAII 1805 (linemap_macro_map_lookup): Likewise. 1806 1807 2020-07-14 Lewis Hyatt <lhyatt (a] gmail.com> 1808 1809 PR preprocessor/49973 1810 PR other/86904 1811 * include/cpplib.h (struct cpp_options): Removed support for -ftabstop, 1812 which is now handled by diagnostic_context. 1813 (class cpp_display_width_computation): New class. 1814 (cpp_byte_column_to_display_column): Add optional tabstop argument. 1815 (cpp_display_width): Likewise. 1816 (cpp_display_column_to_byte_column): Likewise. 1817 * charset.c 1818 (cpp_display_width_computation::cpp_display_width_computation): New 1819 function. 1820 (cpp_display_width_computation::advance_display_cols): Likewise. 1821 (compute_next_display_width): Removed and implemented this 1822 functionality in a new function... 1823 (cpp_display_width_computation::process_next_codepoint): ...here. 1824 (cpp_byte_column_to_display_column): Added tabstop argument. 1825 Reimplemented in terms of class cpp_display_width_computation. 1826 (cpp_display_column_to_byte_column): Likewise. 1827 * init.c (cpp_create_reader): Remove handling of -ftabstop, which is now 1828 handled by diagnostic_context. 1829 1830 2020-07-07 Nathan Sidwell <nathan (a] acm.org> 1831 1832 * directives.c (do_linemarker): Optimize rewinding to line zero. 1833 * files.c (_cpp_stack_file): Start on line zero when about to inject 1834 headers. 1835 (cpp_push_include, cpp_push_default_include): Use highest_line as 1836 the location. 1837 * include/cpplib.h (cpp_read_main_file): Add injecting parm. 1838 * init.c (cpp_read_main_file): Likewise, inform _cpp_stack_file. 1839 * internal.h (enum include_type): Add IT_MAIN_INJECT. 1840 1841 2020-05-29 H.J. Lu <hjl.tools (a] gmail.com> 1842 1843 PR bootstrap/95413 1844 * configure: Regenerated. 1845 1846 2020-05-23 David Edelsohn <dje.gcc (a] gmail.com> 1847 1848 * Makefile.in (AR): Substitute @AR@. 1849 * configure.ac (CHECK_PROG AR): New. 1850 * configure: Regenerate. 1851 1852 2020-05-20 Nathan Sidwell <nathan (a] acm.org> 1853 1854 * internal.h (typedef _cpp_file): Delete, unnecessary in C++. 1855 (enum _cpp_find_file_kind): New. 1856 (_cpp_find_file): Use it, not 3 bools. 1857 * files.c (_cpp_find_file): Use _cpp_find_file_kind enum, not 1858 bools. 1859 (cpp_make_system_header): Break overly long line. 1860 (_cpp_stack_include, _cpp_fake_include) 1861 (_cpp_do_file_change, _cpp_compare_file_date, _cpp_has_header): Adjust. 1862 * init.c (cpp_read_main): Adjust _cpp_find_file call. 1863 1864 2020-05-18 Nathan Sidwell <nathan (a] acm.org> 1865 1866 * include/cpplib.h (cpp_get_otions, cpp_get_callbacks) 1867 (cpp_get_deps): Mark as PURE. 1868 * include/line-map.h (get_combined_adhoc_loc) 1869 (get_location_from_adhoc_loc, get_pure_location): Reformat decls. 1870 * internal.h (struct lexer_state): Clarify comment. 1871 * system.h: Remove now-unneeded bool hackery. 1872 * files.c (_cpp_find_file): Store LOC not highest_location. 1873 1874 PR preprocessor/95149 1875 * lex.c (struct lit_accum): New. 1876 (bufring_append): Replace by lit_accum::append. 1877 (lex_raw_string): Reimplement, using fragments of the old version. 1878 (lex_string): Adjust lex_raw_string call. 1879 1880 PR preprocessor/95182 1881 * macro.c (collect_args): Preserve EOFif we fell out of the main 1882 file. 1883 (cpp_get_token_1): Reformat a couple of short lines. 1884 1885 2020-05-14 H.J. Lu <hongjiu.lu (a] intel.com> 1886 1887 * configure: Regenerated. 1888 1889 2020-05-13 Jason Merrill <jason (a] redhat.com> 1890 1891 * include/cpplib.h (enum c_lang): Change CXX2A to CXX20. 1892 * init.c, lex.c: Adjust. 1893 1894 2020-05-12 Nathan Sidwell <nathan (a] acm.org> 1895 1896 EOF location is at end of file 1897 PR preprocessor/95013 1898 * lex.c (lex_raw_string): Process line notes before incrementing. 1899 Correct incrementing condition. Adjust for new 1900 _cpp_get_fresh_line EOF behaviour. 1901 (_cpp_get_fresh_line): Do not pop buffer at EOF, increment line 1902 instead. 1903 (_cpp_lex_direct): Adjust for new _cpp_get_fresh_line behaviour. 1904 (cpp_directive_only_process): Assert we got a fresh line. 1905 * traditional.c (_cpp_read_logical_line_trad): Adjust for new 1906 _cpp_get_fresh_line behaviour. 1907 1908 2020-05-12 H.J. Lu <hongjiu.lu (a] intel.com> 1909 1910 * Makefile.in (CET_HOST_FLAGS): New. 1911 (COMPILER): Add $(CET_HOST_FLAGS). 1912 * configure.ac: Add GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) and 1913 AC_SUBST(CET_HOST_FLAGS). Clear CET_HOST_FLAGS if jit isn't 1914 enabled. 1915 * aclocal.m4: Regenerated. 1916 * configure: Likewise. 1917 1918 2020-05-08 Nathan Sidwell <nathan (a] acm.org> 1919 1920 Reimplement directives only processing, support raw literals. 1921 * directives-only.c: Delete. 1922 * Makefile.in (libcpp_a_OBJS, libcpp_a_SOURCES): Remove it. 1923 * include/cpplib.h (enum CPP_DO_task): New enum. 1924 (cpp_directive_only_preprocess): Declare. 1925 * internal.h (_cpp_dir_only_callbacks): Delete. 1926 (_cpp_preprocess_dir_only): Delete. 1927 * lex.c (do_peek_backslask, do_peek_next, do_peek_prev): New. 1928 (cpp_directives_only_process): New implementation. 1929 1930 2020-02-14 Jakub Jelinek <jakub (a] redhat.com> 1931 1932 Partially implement P1042R1: __VA_OPT__ wording clarifications 1933 PR preprocessor/92319 1934 * macro.c (expand_arg): Move declarations before vaopt_state 1935 definition. 1936 (class vaopt_state): Move enum update_type definition earlier. Remove 1937 m_allowed member, add m_arg and m_update members. 1938 (vaopt_state::vaopt_state): Change last argument from bool any_args 1939 to macro_arg *arg, initialize m_arg and m_update instead of m_allowed. 1940 (vaopt_state::update): When bumping m_state from 1 to 2 and m_update 1941 is ERROR, determine if __VA_ARGS__ expansion has any non-CPP_PADDING 1942 tokens and set m_update to INCLUDE if it has any, DROP otherwise. 1943 Return m_update instead of m_allowed ? INCLUDE : DROP in m_state >= 2. 1944 (replace_args, create_iso_definition): Adjust last argument to 1945 vaopt_state ctor. 1946 1947 2020-02-05 Martin Sebor <msebor (a] redhat.com> 1948 1949 * include/cpplib.h (cpp_builtin_type): Remove trailing comma to 1950 avoid pedantic warnings in C++ 98 mode. 1951 1952 2020-02-04 Jakub Jelinek <jakub (a] redhat.com> 1953 1954 * macro.c (builtin_has_include): Diagnose __has_include* use outside 1955 of preprocessing directives. 1956 1957 PR preprocessor/93545 1958 * macro.c (cpp_get_token_no_padding): New function. 1959 (builtin_has_include): Use it instead of cpp_get_token. Don't check 1960 SEEN_EOL. 1961 1962 2020-02-01 Andrew Burgess <andrew.burgess (a] embecosm.com> 1963 1964 * configure: Regenerate. 1965 1966 2020-01-28 Nathan Sidwell <nathan (a] acm.org> 1967 1968 PR preprocessor/93452 1969 * internal.h (struct spec_nodes): Drop n__has_include{,_next}. 1970 * directives.c (lex_macro_node): Don't check __has_include redef. 1971 * expr.c (eval_token): Drop __has_include eval. 1972 (parse_has_include): Move to ... 1973 * macro.c (builtin_has_include): ... here. 1974 (_cpp_builtin_macro_text): Eval __has_include{,_next}. 1975 * include/cpplib.h (enum cpp_builtin_type): Add BT_HAS_INCLUDE{,_NEXT}. 1976 * init.c (builtin_array): Add them. 1977 (cpp_init_builtins): Drop __has_include{,_next} init here ... 1978 * pch.c (cpp_read_state): ... and here. 1979 * traditional.c (enum ls): Drop has_include states ... 1980 (_cpp_scan_out_logical_line): ... and here. 1981 1982 2020-01-27 Andrew Burgess <andrew.burgess (a] embecosm.com> 1983 1984 * configure: Regenerate. 1985 1986 2020-01-24 Nathan Sidwell <nathan (a] acm.org> 1987 1988 * expr.c (parse_has_include): Remove bogus controlling macro code. 1989 1990 2020-01-20 Nathan Sidwell <nathan (a] acm.org> 1991 1992 PR preprocessor/80005 1993 * include/cpplib.h (BT_HAS_ATTRIBUTE): Fix comment. 1994 * internal.h (struct lexer_state): Delete in__has_include field. 1995 (struct spec_nodes): Rename n__has_include{,_next}__ fields. 1996 (_cpp_defined_macro_p): New. 1997 (_cpp_find_file): Add has_include parm. 1998 * directives.c (lex_macro_node): Combine defined, 1999 __has_inline{,_next} checking. 2000 (do_ifdef, do_ifndef): Use _cpp_defined_macro_p. 2001 (_cpp_init_directives): Refactor. 2002 * expr.c (parse_defined): Use _cpp_defined_macro_p. 2003 (eval_token): Adjust parse_has_include calls. 2004 (parse_has_include): Add OP parameter. Reimplement. 2005 * files.c (_cpp_find_file): Add HAS_INCLUDE parm. Use it to 2006 inhibit error message. 2007 (_cpp_stack_include): Adjust _cpp_find_file call. 2008 (_cpp_fake_include, _cpp_compare_file_date): Likewise. 2009 (open_file_failed): Remove in__has_include check. 2010 (_cpp_has_header): Adjust _cpp_find_file call. 2011 * identifiers.c (_cpp_init_hashtable): Don't init 2012 __has_include{,_next} here ... 2013 * init.c (cpp_init_builtins): ... init them here. Define as 2014 macros. 2015 (cpp_read_main_file): Adjust _cpp_find_file call. 2016 * pch.c (cpp_read_state): Adjust __has_include{,_next} access. 2017 * traditional.c (_cpp_scan_out_locgical_line): Likewise. 2018 2019 PR preprocessor/93306 2020 * expr.c (parse_has_include): Refactor. Check skip_eval before 2021 looking. 2022 2023 2020-01-10 David Malcolm <dmalcolm (a] redhat.com> 2024 2025 * include/line-map.h (class diagnostic_path): New forward decl. 2026 (rich_location::get_path): New accessor. 2027 (rich_location::set_path): New function. 2028 (rich_location::m_path): New field. 2029 * line-map.c (rich_location::rich_location): Initialize m_path. 2030 2031 2020-01-01 Jakub Jelinek <jakub (a] redhat.com> 2032 2033 Update copyright years. 2034 2035 2019-12-18 David Malcolm <dmalcolm (a] redhat.com> 2036 2037 PR preprocessor/92982 2038 * charset.c 2039 (cpp_string_location_reader::cpp_string_location_reader): Delete 2040 initialization of m_line_table. 2041 * include/cpplib.h (cpp_string_location_reader::m_line_table): 2042 Delete unused member. 2043 2044 2019-12-14 Jakub Jelinek <jakub (a] redhat.com> 2045 2046 PR preprocessor/92919 2047 * charset.c (wide_str_to_charconst): If str contains just the 2048 NUL terminator, punt quietly. 2049 2050 2019-12-09 David Malcolm <dmalcolm (a] redhat.com> 2051 2052 * include/line-map.h (label_text::label_text): Make private. 2053 (label_text::borrow): New. 2054 (label_text::take): New. 2055 (label_text::take_or_copy): New. 2056 2057 2019-12-09 Lewis Hyatt <lhyatt (a] gmail.com> 2058 2059 PR preprocessor/49973 2060 * generated_cpp_wcwidth.h: New file generated by 2061 ../contrib/unicode/gen_wcwidth.py, supports new cpp_wcwidth function. 2062 * charset.c (compute_next_display_width): New function to help 2063 implement display columns. 2064 (cpp_byte_column_to_display_column): Likewise. 2065 (cpp_display_column_to_byte_column): Likewise. 2066 (cpp_wcwidth): Likewise. 2067 * include/cpplib.h (cpp_byte_column_to_display_column): Declare. 2068 (cpp_display_column_to_byte_column): Declare. 2069 (cpp_wcwidth): Declare. 2070 (cpp_display_width): New function. 2071 2072 2019-11-14 Joseph Myers <joseph (a] codesourcery.com> 2073 2074 * charset.c (narrow_str_to_charconst): Make CPP_UTF8CHAR constants 2075 unsigned for C. 2076 * init.c (lang_defaults): Set utf8_char_literals for GNUC2X and 2077 STDC2X. 2078 2079 2019-11-07 Jakub Jelinek <jakub (a] redhat.com> 2080 2081 PR c++/91370 - Implement P1041R4 and P1139R2 - Stronger Unicode reqs 2082 * charset.c (narrow_str_to_charconst): Add TYPE argument. For 2083 CPP_UTF8CHAR diagnose whenever number of chars is > 1, using 2084 CPP_DL_ERROR instead of CPP_DL_WARNING. 2085 (wide_str_to_charconst): For CPP_CHAR16 or CPP_CHAR32, use 2086 CPP_DL_ERROR instead of CPP_DL_WARNING when multiple char16_t 2087 or char32_t chars are needed. 2088 (cpp_interpret_charconst): Adjust narrow_str_to_charconst caller. 2089 2090 2019-11-05 Tim van Deurzen <tim (a] kompiler.org> 2091 2092 * cpplib.h: Add spaceship operator for C++. 2093 * lex.c: Implement conditional lexing of spaceship operator for C++20. 2094 2095 2019-10-31 Jakub Jelinek <jakub (a] redhat.com> 2096 2097 PR preprocessor/92296 2098 * internal.h (struct def_pragma_macro): Add is_builtin bitfield. 2099 (_cpp_restore_special_builtin): Declare. 2100 * init.c (_cpp_restore_special_builtin): New function. 2101 * directives.c (do_pragma_push_macro): For NT_BUILTIN_MACRO 2102 set is_builtin and don't try to grab definition. 2103 (cpp_pop_definition): Use _cpp_restore_special_builtin to restore 2104 builtin macros. 2105 2106 2019-10-15 Nathan Sidwell <nathan (a] acm.org> 2107 2108 * include/line-map.h (struct maps_info_ordinary): Make cache 2109 mutable. 2110 (struct maps_info_macro): Likewise. 2111 (LINEMAPS_CACHE): Remove non-ref accessor. Constify ref accessor. 2112 (LINEMAPS_ORDINARY_CACHE, LINEMAPS_MACRO_CACHE): Likewise. 2113 (LINEMAPS_ORDINARY_MAP_AT, LINEMAPS_MACRO_MAP_AT): Use 2114 LINEMAPS_USED and LINEMAPS_MAP_AT. 2115 (linemap_lookup): Constify line_map arg. 2116 linemap.c (linemap_ordinary_map_lookup, linemap_macro_map_lookup): 2117 Constify line_map arg. 2118 2119 2019-10-11 Joseph Myers <joseph (a] codesourcery.com> 2120 2121 * include/cpplib.h (struct cpp_options): Add dfp_constants and 2122 cpp_warn_c11_c2x_compat. 2123 (enum cpp_warning_reason): Add CPP_W_C11_C2X_COMPAT. 2124 * init.c (struct lang_flags): Add dfp_constants. 2125 (lang_defaults): Set dfp_constants to 1 for GNUC2X and STDC2X and 2126 0 for other languages. 2127 (cpp_set_lang): Set dfp_constants from language. 2128 (cpp_create_reader): Set cpp_warn_c11_c2x_compat to -1. 2129 * expr.c (interpret_float_suffix): Mention DFP constants as C2X in 2130 comment. 2131 (cpp_classify_number): Do not diagnose DFP constants for languages 2132 setting dfp_constants, unless cpp_warn_c11_c2x_compat. 2133 2134 2019-10-04 Nathan Sidwell <nathan (a] acm.org> 2135 2136 PR preprocessor/91991 2137 * line-map.c (linemap_line_start): Clear max_column_hint if we run 2138 out of locations. 2139 2140 2019-10-02 Richard Biener <rguenther (a] suse.de> 2141 2142 * internal.h (enum include_type): Remove trailing comma. 2143 2144 2019-10-02 Joseph Myers <joseph (a] codesourcery.com> 2145 2146 * include/cpplib.h (struct cpp_options): Add member scope. 2147 * init.c (struct lang_flags, lang_defaults): Likewise. 2148 (cpp_set_lang): Set scope member of pfile. 2149 * lex.c (_cpp_lex_direct): Test CPP_OPTION (pfile, scope) not 2150 CPP_OPTION (pfile, cplusplus) for creating CPP_SCOPE tokens. 2151 2152 2019-09-26 Eric Botcazou <ebotcazou (a] adacore.com> 2153 2154 * charset.c (UCS_LIMIT): New macro. 2155 (ucn_valid_in_identifier): Use it instead of a hardcoded constant. 2156 (_cpp_valid_ucn): Issue a pedantic warning for UCNs larger than 2157 UCS_LIMIT outside of identifiers in C and in C++2a or later. 2158 2159 2019-09-19 Lewis Hyatt <lhyatt (a] gmail.com> 2160 2161 PR c/67224 2162 * charset.c (_cpp_valid_utf8): New function to help lex UTF-8 tokens. 2163 * internal.h (_cpp_valid_utf8): Declare. 2164 * lex.c (forms_identifier_p): Use it to recognize UTF-8 identifiers. 2165 (_cpp_lex_direct): Handle UTF-8 in identifiers and CPP_OTHER tokens. 2166 Do all work in "default" case to avoid slowing down typical code paths. 2167 Also handle $ and UCN in the default case for consistency. 2168 2169 2019-08-30 Nathan Sidwell <nathan (a] acm.org> 2170 2171 New # semantics for popping to "" name. 2172 libcpp/ 2173 * directives.c (do_linemarker): Popping to "" name means get the 2174 name from the include stack.. 2175 2176 2019-09-05 Nathan Sidwell <nathan (a] acm.org> 2177 2178 PR preprocessor/91639 2179 * directives.c (do_include_common): Tell lexer we're a #include. 2180 * files.c (_cpp_stack_file): Lexer will have always incremented. 2181 * internal.h (struct cpp_context): Extend in_directive's 2182 semantics. 2183 * lex.c (_cpp_lex_direct): Increment line for final \n when lexing 2184 for an ISO #include. 2185 * line-map.c (linemap_line_start): Remember if we overflowed. 2186 2187 2019-09-03 Ulrich Weigand <uweigand (a] de.ibm.com> 2188 2189 * directives.c: Remove references to spu from comments. 2190 * expr.c: Likewise. 2191 2192 2019-08-29 Nathan Sidwell <nathan (a] acm.org> 2193 2194 * internal.h (enum include_type): Add IT_MAIN, IT_DIRECTIVE_HWM, 2195 IT_HEADER_HWM. 2196 (_cpp_stack_file): Take include_type, not a bool. 2197 * files.c (_cpp_find_file): Refactor to not hide an if inside a 2198 for conditional. 2199 (should_stack_file): Break apart to ... 2200 (is_known_idempotent_file, has_unique_contents): ... these. 2201 (_cpp_stack_file): Replace IMPORT boolean with include_type enum. 2202 Refactor to use new predicates. Do linemap compensation here ... 2203 (_cpp_stack_include): ... not here. 2204 * init.c (cpp_read_main_file): Pass IT_MAIN to _cpp_stack_file. 2205 2206 2019-08-28 Nathan Sidwell <nathan (a] acm.org> 2207 2208 * directives-only.c (_cpp_preprocess_dir_only): Use false, not 2209 zero for _cpp_handle_directive call. 2210 * directives.c (_cpp_handle_directive): Indented is bool. 2211 * files.c (struct _cpp_file): Make bools 1 bit bitfields. 2212 * internal.h (enum include_type): Reformat and comment. 2213 (struct cpp_buffer): Make flags 1 bit bitfields. 2214 (_cpp_handle_directive): Indented is bool. 2215 2216 2019-07-09 Martin Sebor <msebor (a] redhat.com> 2217 2218 * include/line-map.h: Change class-key from class to struct and vice 2219 versa to match convention and avoid -Wclass-is-pod and -Wstruct-no-pod. 2220 * mkdeps.c: Same. 2221 2222 2019-07-03 Martin Liska <mliska (a] suse.cz> 2223 2224 * line-map.c (linemap_get_expansion_filename): Remove 2225 dead assignemts. 2226 * mkdeps.c (make_write): Likewise. 2227 2228 2019-07-02 qing zhao <qing.zhao (a] oracle.com> 2229 2230 PR preprocessor/90581 2231 * directives.c (do_include_common): Replace CPP_STACK_MAX with 2232 CPP_OPTION (pfile, max_include_depth). 2233 * include/cpplib.h (struct cpp_options): Add new field 2234 max_include_depth. 2235 * init.c (cpp_create_reader): Initiate new field max_include_depth. 2236 * internal.h: Delete CPP_STACK_MAX. 2237 2238 2019-06-26 Nathan Sidwell <nathan (a] acm.org> 2239 2240 PR preprocessor/90927 2241 * mkdeps.c (mkdeps::vec::operator[]): Add non-const variant. 2242 (deps_add_target): Deal with out of order unquoted targets. 2243 2244 2019-05-19 Andrew Pinski <apinski (a] marvell.com> 2245 2246 PR pch/81721 2247 * lex.c (cpp_token_val_index <case SPELL_OPERATOR>): If tok->flags 2248 has NAMED_OP set, then return CPP_TOKEN_FLD_NODE. 2249 2250 2019-05-14 Martin Liska <mliska (a] suse.cz> 2251 2252 PR preprocessor/90382 2253 * line-map.c (first_map_in_common_1): Handle ADHOC 2254 locations. 2255 2256 2019-05-14 Martin Liska <mliska (a] suse.cz> 2257 2258 PR preprocessor/90382 2259 * include/line-map.h (get_data_from_adhoc_loc): Add const to 2260 the first argument. 2261 (get_location_from_adhoc_loc): Likewise. 2262 * line-map.c(get_data_from_adhoc_loc): Add const to 2263 the first argument. 2264 (get_location_from_adhoc_loc): Likewise. 2265 (get_combined_adhoc_loc): Use get_location_from_adhoc_loc 2266 (or get_data_from_adhoc_loc). 2267 (get_range_from_adhoc_loc): Likewise. 2268 (get_pure_location): Likewise. 2269 (linemap_position_for_loc_and_offset): Likewise. 2270 (linemap_lookup): Likewise. 2271 (linemap_ordinary_map_lookup): Likewise. 2272 (linemap_macro_map_lookup): Likewise. 2273 (linemap_get_expansion_line): Likewise. 2274 (linemap_get_expansion_filename): Likewise. 2275 (linemap_location_in_system_header_p): Likewise. 2276 (linemap_location_from_macro_expansion_p): Likewise. 2277 (linemap_macro_loc_to_exp_point): Likewise. 2278 (linemap_resolve_location): Likewise. 2279 (linemap_unwind_toward_expansion): Likewise. 2280 (linemap_unwind_to_first_non_reserved_loc): Likewise. 2281 (linemap_expand_location): Likewise. 2282 (linemap_dump_location): Likewise. 2283 2284 2019-05-07 Nathan Sidwell <nathan (a] acm.org> 2285 2286 * files.c (_cpp_stack_file): Empty filenames aren't dependencies. 2287 * mkdeps.c (deps_add_dep): Assert not empty. 2288 2289 * include/mkdeps.h (deps_write): Add PHONY arg. 2290 (deps_phony_targets): Delete. 2291 * init.c (cpp_finish): Just call deps_write. 2292 * mkdeps.c (struct mkdeps): Add local vector class. Reimplement 2293 vector handling. 2294 (munge): Munge to static buffer. 2295 (apply_vpath): Adjust vector handling. 2296 (deps_init, deps_free): Use new, delete. 2297 (deps_add_target): Do not munge here. Record quoting low water mark. 2298 (deps_add_dep): Do not munge here. 2299 (deps_add_vpath): Adjust vector handling. 2300 (make_write_name): New. Munge on demand here. 2301 (make_write_vec): New. 2302 (deps_phony_targets): Delete. 2303 (make_write): New. 2304 (deps_write): Forward to deps_Write. 2305 (deps_save, deps_restore): Adjust vector handling. 2306 2307 2019-05-06 Nathan Sidwell <nathan (a] acm.org> 2308 2309 * include/mkdeps.h: Rename struct deps to struct mkdeps. 2310 * mkdeps.c: Likewise. 2311 * include/cpplib.h (cpp_get_deps): Rename return type.. 2312 * directives.c (cpp_get_deps): Likewise. 2313 * internal.h (struct cpp_reader): Rename deps field type. 2314 2315 2019-04-03 Jonathan Wakely <jwakely (a] redhat.com> 2316 2317 * files.c (search_path_exhausted): Fix typo in comment. 2318 2319 2019-02-26 Martin Liska <mliska (a] suse.cz> 2320 2321 * symtab.c (ht_dump_statistics): Make 2322 horizontal alignment for statistics. 2323 2324 2019-02-20 David Malcolm <dmalcolm (a] redhat.com> 2325 2326 PR c/89410 2327 * include/line-map.h (linenum_arith_t): New typedef. 2328 (compare): Use it. 2329 2330 2019-02-18 Martin Liska <mliska (a] suse.cz> 2331 2332 PR c++/89383 2333 * line-map.c (linemap_line_start): Use 1UL in order 2334 to not overflow. 2335 2336 2019-02-11 Martin Liska <mliska (a] suse.cz> 2337 2338 PR lto/88147 2339 * line-map.c (linemap_line_start): Don't reuse the existing line 2340 map if the line offset is sufficiently large to cause overflow 2341 when computing location_t values. 2342 2343 2019-01-26 Jakub Jelinek <jakub (a] redhat.com> 2344 2345 PR preprocessor/88974 2346 * directives.c (SEEN_EOL): Move macro to ... 2347 * internal.h (SEEN_EOL): ... here. 2348 * expr.c (parse_has_include): Don't cpp_get_token if SEEN_EOL (). 2349 2350 2019-01-01 Jakub Jelinek <jakub (a] redhat.com> 2351 2352 Update copyright years. 2353 2354 2018-11-27 Mike Gulick <mgulick (a] mathworks.com> 2355 2356 PR preprocessor/83173 2357 * location-example.txt: Update example -fdump-internal-locations 2358 output. 2359 2360 2018-11-27 Mike Gulick <mgulick (a] mathworks.com> 2361 2362 PR preprocessor/83173 2363 * files.c (_cpp_stack_include): Check if 2364 line_table->highest_location is past current line before 2365 decrementing. 2366 2367 2018-11-13 David Malcolm <dmalcolm (a] redhat.com> 2368 2369 * charset.c: Replace "source_location" with "location_t". 2370 * directives-only.c: Likewise. 2371 * directives.c: Likewise. 2372 * errors.c: Likewise. 2373 * expr.c: Likewise. 2374 * files.c: Likewise. 2375 * include/cpplib.h: Likewise. Rename MAX_SOURCE_LOCATION to 2376 MAX_LOCATION_T. 2377 * include/line-map.h: Likewise. 2378 * init.c: Likewise. 2379 * internal.h: Likewise. 2380 * lex.c: Likewise. 2381 * line-map.c: Likewise. 2382 * location-example.txt: Likewise. 2383 * macro.c: Likewise. 2384 * pch.c: Likewise. 2385 * traditional.c: Likewise. 2386 2387 2018-11-07 Hafiz Abid Qadeer <abidh (a] codesourcery.com> 2388 2389 * configure: Regenerated. 2390 2391 2018-11-05 Martin Liska <mliska (a] suse.cz> 2392 2393 * symtab.c (ht_dump_statistics): Replace %zu with %lu format. 2394 2395 2018-11-05 Martin Liska <mliska (a] suse.cz> 2396 2397 * symtab.c (ht_dump_statistics): Fix format and 2398 pass missing argument. 2399 2400 2018-11-05 Martin Liska <mliska (a] suse.cz> 2401 2402 * symtab.c (ht_dump_statistics): Make dump conditional 2403 based on alloc_subobject. 2404 2405 2018-10-31 Joseph Myers <joseph (a] codesourcery.com> 2406 2407 PR bootstrap/82856 2408 * configure.ac: Remove AC_PREREQ. Use AC_LANG_SOURCE. 2409 * aclocal.m4, config.in, configure: Regenerate. 2410 2411 2018-10-31 Nathan Sidwell <nathan (a] acm.org> 2412 2413 * internal.h (struct cpp_reader): Rename forced_token_location_p 2414 to forced_token_location and drop its pointerness. 2415 * include/cpplib.h (cpp_force_token_locations): Take location, not 2416 pointer to one. 2417 * init.c (cpp_create_reader): Adjust. 2418 * lex.c (cpp_read_main_file): 2419 2420 * directives.c (do_include_common): Commonize cleanup path. 2421 (_cpp_pop_buffer): Fix leak. 2422 2423 * include/line-map.h (IS_ORDINARY_LOC, IS_MACRO_LOC): New 2424 predicates. 2425 (IS_ADHOC_LOC): Move earlier. 2426 (MAP_ORDINARY_P): Use IS_ORDINARY_LOC. 2427 * line-map.c (linemap_location_from_macro_expansion_p): Use 2428 IS_MACRO_LOC. 2429 2430 * include/cpplib.h (cpp_macro_definition_location): Make inline. 2431 * macro.c (warn_of_redefinition): Fix comments, examine macro 2432 type, use C++ for. 2433 (cpp_macro_definition_location): Don't define here. 2434 2435 * include/cpplib.h (HT_NODE): Don't cast NODE. 2436 (NODE_LEN, NODE_NAME): Use HT_NODE. 2437 2438 * directives.c (DIRECTIVE_TABLE): Drop historical frequency 2439 comments. 2440 * files.c (_cpp_stack_file): Fix indentation. 2441 2442 2018-10-17 Joseph Myers <joseph (a] codesourcery.com> 2443 2444 * include/cpplib.h (enum c_lang): Add CLK_GNUC2X and CLK_STDC2X. 2445 * init.c (lang_defaults): Add GNUC2X and STDC2X entries. 2446 (cpp_init_builtins): Define __STDC_VERSION__ to 202000L for C2X. 2447 2448 2018-10-11 David Malcolm <dmalcolm (a] redhat.com> 2449 2450 * macro.c (_cpp_arguments_ok): If the argument count is wrong, add 2451 a note showing the definition of the macro. 2452 2453 2018-10-11 Nathan Sidwell <nathan (a] acm.org> 2454 2455 * include/line-map.h (LINEMAPS_MACRO_LOWEST_LOCATION): Fix 2456 off-by-one error. 2457 * line-map.c (linemap_enter_macro): Use RAII. Clear all of the 2458 macro_locations. 2459 2460 2018-10-09 David Malcolm <dmalcolm (a] redhat.com> 2461 2462 * charset.c (noop_error_cb): Rename to... 2463 (noop_diagnostic_cb): ...this, converting params to enums. 2464 (cpp_interpret_string_ranges): Update for renaming and enums. 2465 * directives.c (check_eol_1): Convert reason to enum. 2466 (do_diagnostic): Convert code and reason to enum. 2467 (do_error): Use CPP_W_NONE rather than 0. 2468 (do_pragma_dependency): Likewise. 2469 * errors.c (cpp_diagnostic_at): Convert level and reason to enums. 2470 Update for renaming. 2471 (cpp_diagnostic): Convert level and reason to enums. 2472 (cpp_error): Convert level to enum. 2473 (cpp_warning): Convert reason to enums. 2474 (cpp_pedwarning): Likewise. 2475 (cpp_warning_syshdr): Likewise. 2476 (cpp_diagnostic_with_line): Convert level and reason to enums. 2477 Update for renaming. 2478 (cpp_error_with_line): Convert level to enum. 2479 (cpp_warning_with_line): Convert reason to enums. 2480 (cpp_pedwarning_with_line): Likewise. 2481 (cpp_warning_with_line_syshdr): Likewise. 2482 (cpp_error_at): Convert level to enum. 2483 (cpp_errno): Likewise. 2484 (cpp_errno_filename): Likewise. 2485 * include/cpplib.h (enum cpp_diagnostic_level): Name this enum, 2486 and move to before struct cpp_callbacks. 2487 (enum cpp_warning_reason): Likewise. 2488 (cpp_callbacks::diagnostic): Convert params from int to enums. 2489 (cpp_error): Convert int param to enum cpp_diagnostic_level. 2490 (cpp_warning): Convert int param to enum cpp_warning_reason. 2491 (cpp_pedwarning): Likewise. 2492 (cpp_warning_syshdr): Likewise. 2493 (cpp_errno): Convert int param to enum cpp_diagnostic_level. 2494 (cpp_errno_filename): Likewise. 2495 (cpp_error_with_line): Likewise. 2496 (cpp_warning_with_line): Convert int param to enum 2497 cpp_warning_reason. 2498 (cpp_pedwarning_with_line): Likewise. 2499 (cpp_warning_with_line_syshdr): Likewise. 2500 (cpp_error_at): Convert int param to enum cpp_diagnostic_level. 2501 * macro.c (create_iso_definition): Convert int to enum. 2502 (_cpp_create_definition): Likewise. 2503 2504 2018-09-17 David Malcolm <dmalcolm (a] redhat.com> 2505 2506 * include/line-map.h (range_label::get_text): Add param 2507 "range_idx". 2508 2509 2018-08-30 Nathan Sidwell <nathan (a] acm.org> 2510 2511 * include/line-map.h (enum lc_reason): Comment each member 2512 separately. 2513 (struct line_maps): Fix reallocator comment. 2514 2515 2018-08-27 David Malcolm <dmalcolm (a] redhat.com> 2516 2517 PR 87091 2518 * include/line-map.h (enum range_display_kind): New enum. 2519 (struct location_range): Replace field "m_show_caret_p" with 2520 "m_range_display_kind", converting from bool to the new enum. 2521 (class rich_location): Add example of line insertion fix-it hint. 2522 (rich_location::add_range): Convert param "show_caret_p" from bool 2523 to enum range_display_kind and rename to "range_display_kind", 2524 giving it a default of SHOW_RANGE_WITHOUT_CARET. 2525 (rich_location::set_range): Likewise, albeit without a default. 2526 * line-map.c (rich_location::rich_location): Update for conversion 2527 of show_caret_p to tri-state enum. 2528 (rich_location::add_range): Likewise. 2529 (rich_location::set_range): Likewise. 2530 2531 2018-08-24 H.J. Lu <hongjiu.lu (a] intel.com> 2532 2533 PR bootstrap/86872 2534 * line-map.c (pure_location_p): Return true if linemap_lookup 2535 returns NULL. 2536 (linemap_add): Set start_location to 0 if we run out of line map 2537 space. 2538 2539 2018-08-20 Nathan Sidwell <nathan (a] acm.org> 2540 2541 * include/cpplib.h: Fixup some whitespace. 2542 (cpp_hashnode): Reduce type to 2 bit & flags to 8. 2543 2544 * include/cpplib.h (NODE_BUILTIN, NODE_MACRO_ARG): Delete. 2545 Renumber others. 2546 (enum node_type): Replace NT_MACRO with NT_USER_MACRO, 2547 NT_BUILTIN_MACRO, NT_MACRO_ARG. Delete NT_ASSERTION. 2548 (NTV_MACRO, NTV_ANSWER, NTV_BUILTIN, NTV_ARGUMENT, NTV_NONE): 2549 Delete. 2550 (CPP_HASHNODE_VALUE_IDX): Delete. 2551 (union _cpp_hashnode_value): GTY tag from enum node_type directly. 2552 (struct cpp_hashnode): Adjust GTY desc for value field. 2553 (cpp_user_macro_p, cpp_builtin_macro_p, cpp_macro_p): Adjust. 2554 * directives.c (undefine_macros): Clear value.anwers, adjust flag 2555 clearing. 2556 (_cpp_test_assertion): No need to check NT_ASSERTION. 2557 (do_assert, do_unassert): Likewise. 2558 * init.c (cpp_init_special_builtins): Set type not flags. 2559 * macro.c (struct macro_arg_saved_data): Add type field. 2560 (cpp_get_token_1): Check type not NT_VOID. 2561 (_cpp_free_definition): Adjust flag clearing. Nullify 2562 value.answers. 2563 (_cpp_save_parameter, _cpp_unsave_parameters): Save and restore 2564 type. 2565 (lex_expansion_token): Check type not flags. 2566 (_cpp_create_definition): Set type to NT_USER_MACRO. 2567 (_cpp_notify_macro_use): Adjust type checking. 2568 * pch.c (write_macdef, count_defs, write_defs, cpp_valid_state) 2569 (save_macros): Adjust node type/flag handling. 2570 * traditional.c (_cpp_scan_out_logical_line): Check type not flags. 2571 2572 * directives.c (do_undef): Use cpp_macro_p & cpp_builtin_macro_p. 2573 * include/cpplib.h (enum cpp_macro_kind): Remove trailing comma. 2574 (cpp_fun_like_macro_p): Make inline, define. 2575 * macro.c (cpp_define_lazily): Use UCHAR_MAX. 2576 (cpp_fun_like_macro_p): Delete. 2577 2578 * Makefile.in (TAGS_SOURCES): Remove cpp-id-data.h. 2579 * include/cpp-id-data.h: Delete. 2580 * internal.h: Include cpplib.h not cpp-id-data.h. 2581 2582 * include/cpp-id-data.h (struct answer): Delete. 2583 * include/cpplib.h (struct answer): Don't forward-declare. 2584 (enum cpp_macro_kind): Add cmk_assert. 2585 (struct cpp_macro): Union parms and next assert chain. 2586 (union _cpp_hashnode_value): 'answer' field is cpp_macro. 2587 * directives.c (parse_answer): Convert to use cpp_macro. Return 2588 true on success. 2589 (parse_assertion, find_answer, _cpp_test_assertion, cpp_do_assert) 2590 (cpp_do_unassert): Convert to use cpp_macro. 2591 * macro.c (warn_of_redefinition, _cpp_new_macro) 2592 (check_trad_stringification, cpp_macro_definition): Adjust macro 2593 parm access. 2594 * traditional.c (_cpp_replacement_text_len) 2595 (_cpp_copy_replacement_text, _cpp_create_trad_definition): Likewise. 2596 2597 2018-08-17 Nathan Sidwell <nathan (a] acm.org> 2598 2599 * include/cpplib.h (struct cpp_callbacks): Replace 2600 user_builtin_macro with user_lazy_macro. 2601 (struct cpp_macro): add lazy field. 2602 (enum cpp_builtin_type): Remove BT_FIRST_USER, BT_LAST_USER. 2603 (cpp_define_lazily): Declare. 2604 * macro.c (enter_macro_context) Use _cpp_maybe_notify_macro_use. 2605 (warn_of_redefinition): Use cpp_builtin_macro_p, directly call 2606 user_lazy_macro hook. 2607 (_cpp_new_macro): Clear lazy field. 2608 (cpp_define_lazily): Define. 2609 (_cpp_notify_macro_use): Adjust lazy definition code. 2610 (cpp_macro_definition): No need to do lazy definition here. 2611 * pch.c (write_macdef, save_macros): Likewise. 2612 2613 * include/cpplib.h (enum cpp_macro_kind): New. 2614 (struct cpp_macro): Make body trailing array. Add kind field, 2615 delete traditional flag. 2616 * internal.h (_cpp_new_macro): Declare. 2617 (_cpp_reserve_room): New inline. 2618 (_cpp_commit_buf): Declare. 2619 (_cpp_create_trad_definition): Return new macro. 2620 * lex.c (_cpp_commit_buff): New. 2621 * macro.c (macro_real_token_count): Count backwards. 2622 (replace_args): Pointer equality not orderedness. 2623 (_cpp_save_parameter): Use _cpp_reserve_room. 2624 (alloc_expansion_token): Delete. 2625 (lex_expansion_token): Return macro pointer. Use _cpp_reserve_room. 2626 (create_iso_definition): Allocate macro itself. Adjust for 2627 different allocation ordering. 2628 (_cpp_new_macro): New. 2629 (_cpp_create_definition): Adjust for API changes. 2630 * traditional.c (push_replacement_text): Don't set traditional 2631 flag. 2632 (save_replacement_text): Likewise. 2633 (_cpp_create_trad_definition): Allocate macro itself, Adjust for 2634 different allocation ordering. 2635 2636 * cpp-id-data.h (uchar, UC): Move to internal.h 2637 (struct cpp_macro): Move to cpplib.h. 2638 * internal.h (uchar, UC): From cpp-id-data.h. 2639 * include/cpplib.h (struct cpp_macro): From cpp-id-data.h. 2640 2641 2018-08-16 Nathan Sidwell <nathan (a] acm.org> 2642 2643 * internal.h (_cpp_save_parameter): Take parmno, not macro. 2644 (_cpp_unsave_parameters): Declare. 2645 * macro.c (_cpp_save_parameter): Take parm number, not macro. 2646 Return true on success. 2647 (_cpp_unsave_parameters): New. 2648 (parse_params): Take parm_no and variadic pointers, not macro. 2649 Reimplement parsing logic. 2650 (create_iso_definition): Adjust parse_params changes. Call 2651 _cpp_unsave_parameters here. 2652 (_cpp_create_definition): Don't unsave params here. 2653 * traditional.c (scan_parameters): Take n_param pointer, adjust. 2654 (_cpp_create_trad_definition): Ajust scan_parameters change. Call 2655 _cpp_unsave_parameters. 2656 2657 * include/cpplib.h (cpp_user_macro_p, cpp_builtin_macro_p) 2658 (cpp_macro_p): New inlines. 2659 * directives.c (do_pragma_poison): Use cpp_macro_p. 2660 (do_ifdef, do_ifndef): Likewise. Use _cpp_maybe_notify_macro_use. 2661 (cpp_pop_definition): Use cpp_macro_p. Move _cpp_free_definition 2662 earlier. Don't zap node directly. 2663 * expr.c (parse_defined): Use _cpp_maybe_notify_macro_use & 2664 cpp_macro_p. 2665 * files.c (should_stack_file): Use cpp_macro_p. 2666 * identifiers.c (cpp_defined): Likewise. 2667 * internal.h (_cpp_mark_macro): Use cpp_user_macro_p. 2668 (_cpp_notify_macro_use): Declare. 2669 (_cpp_maybe_notify_macro_use): New inline. 2670 * lex.c (is_macro): Use cpp_macro_p. 2671 * macro.c (_cpp_warn_if_unused_macro): Use cpp_user_macro_p. 2672 (enter_macro_context): Likewise. 2673 (_cpp_create_definition): Use cpp_builtin_macro_p, 2674 cpp_user_macro_p. Move _cpp_free_definition earlier. 2675 (_cpp_notify_macro_use): New, broken out of multiple call sites. 2676 * traditional.c (fun_like_macro_p): Use cpp_builtin_macro_p. 2677 (maybe_start_funlike, _cpp_scan_out_logical_line) 2678 (push_replacement_text): Likewise. 2679 2680 2018-08-15 David Malcolm <dmalcolm (a] redhat.com> 2681 2682 * include/line-map.h (struct location_range): Add "m_label" field. 2683 (class rich_location): Add description of labels to leading 2684 comment. 2685 (rich_location::rich_location): Add "label" param, defaulting to 2686 NULL. 2687 (rich_location::add_range): Likewise. 2688 (struct label_text): New struct. 2689 (class range_label): New abstract base class. 2690 * line-map.c (rich_location::rich_location): Add "label" param; 2691 use it. 2692 (rich_location::add_range): Likewise. 2693 2694 2018-08-08 Nathan Sidwell <nathan (a] acm.org> 2695 2696 Make linemap::included_from a location 2697 libcpp/ 2698 * include/line-map.h (struct line_map_ordinary): Replace 2699 included_from map index with included_at source_location. 2700 (ORDINARY_MAP_INCLUDER_FILE_INDEX): Delete. 2701 (LAST_SOURCE_LINE_LOCATION): Delete. 2702 (LAST_SOURCE_LINE, LAST_SOURCE_COLUMN): Delete. 2703 (linemap_included_from): New. 2704 (linemap_included_from_linemap): Declare. 2705 (MAIN_FILE_P): Adjust. 2706 * line-map.c (linemap_included_from_linemap): New. 2707 (lonemap_check_files_exited): Use linemap_included_at. 2708 (linemap_add): Adjust inclusion setting. 2709 (linemap_dump, linemap_dump_location): Adjust. 2710 * directives.c (do_linemarker): Use linemap_included_at. 2711 2712 2018-08-07 Nathan Sidwell <nathan (a] acm.org> 2713 2714 * line-map.c: (linemap_init): Set default allocator here. 2715 (new_linemap): Rather than here. Refactor allocation logic. 2716 2717 2018-07-20 David Malcolm <dmalcolm (a] redhat.com> 2718 2719 * include/line-map.h (rich_location::set_range): Remove redundant 2720 line_maps * parameter. 2721 * line-map.c (rich_location::set_range): Likewise. 2722 2723 2018-07-18 Bernd Edlinger <bernd.edlinger (a] hotmail.de> 2724 2725 PR 69558 2726 * macro.c (enter_macro_context): Change the location info for builtin 2727 macros and _Pragma from location of the closing parenthesis to location 2728 of the macro expansion point. 2729 2730 2018-07-17 Jason Franklin <j_fra (a] fastmail.us> 2731 Jakub Jelinek <jakub (a] redhat.com> 2732 2733 * lex.c (_cpp_lex_direct): Use CPP_DL_NOTE instead of CPP_DL_PEDWARN, 2734 CPP_DL_WARNING or CPP_DL_ERROR for note that diagnostics for C++ style 2735 comments is reported only once per file and guard those calls on the 2736 preceding cpp_error returning true. 2737 2738 2018-07-03 Nathan Sidwell <nathan (a] acm.org> 2739 2740 Reorg line_map data structures for better packing. 2741 * include/line-map.h (enum lc_reason): Add LC_HWM. 2742 (LINE_MAP_MAX_LOCATION): Define here. 2743 (struct line_map): Move reason field to line_map_ordinary. Adjust 2744 GTY tagging. 2745 (struct line_map_ordinary): Reorder fields for less padding. 2746 (struct line_map_macro): Likewise. 2747 (MAP_ORDINARY_P): New. 2748 (linemap_check_ordinary, linemap_check_macro): Adjust. 2749 * line-map.c (LINE_MAP_MAX_SOURCE_LOCATION): Delete. 2750 (new_linemap): Take start_location, not reason. Adjust. 2751 (linemap_add, linemap_enter_macro): Adjust. 2752 (linemap_line_start): Likewise. 2753 (linemap_macro_expansion_map_p): Use MAP_ORDINARY_P. 2754 (linemap_macro_loc_to_spelling_point): Likewise. 2755 (linemap_macro_loc_to_def_point): Likewise. 2756 (linemap_dump): Likewise. 2757 2758 2018-05-23 Jason Merrill <jason (a] redhat.com> 2759 2760 * system.h: #include <new> earlier. 2761 2762 2018-05-17 Jason Merrill <jason (a] redhat.com> 2763 2764 * line-map.c (linemap_init): Use placement new. 2765 * system.h: #include <new>. 2766 2767 2018-03-14 David Malcolm <dmalcolm (a] redhat.com> 2768 2769 * include/line-map.h (compare): New function on linenum_type. 2770 2771 2018-02-28 Jonathan Wakely <jwakely (a] redhat.com> 2772 2773 PR preprocessor/84517 2774 * lex.c (is_macro_not_literal_suffix): New function. 2775 (lex_raw_string, lex_string): Use is_macro_not_literal_suffix to 2776 decide when to issue -Wliteral-suffix warnings. 2777 2778 2018-02-16 Richard Biener <rguenther (a] suse.de> 2779 2780 PR bootstrap/82939 2781 * line-map.c (linemap_init): Avoid broken value-init when compiling 2782 with GCC 4.2. 2783 2784 2018-02-15 Jason Merrill <jason (a] redhat.com> 2785 Jakub Jelinek <jakub (a] redhat.com> 2786 2787 PR preprocessor/83063 - __VA_OPT__ and ## 2788 PR preprocessor/83708 2789 * macro.c (vaopt_state): Reorder m_last_was_paste before m_state. 2790 (vaopt_state::vaopt_state): Adjust. 2791 (vaopt_state::update_flags): Add BEGIN and END. 2792 (vaopt_state::update): Return them. 2793 (copy_paste_flag): Factor out of replace_args. 2794 (last_token_is): New. 2795 (replace_args): Handle BEGIN and END. Avoid padding there. 2796 (tokens_buff_last_token_ptr): Return NULL if no tokens. 2797 2798 2018-01-31 Jakub Jelinek <jakub (a] redhat.com> 2799 2800 PR preprocessor/69869 2801 * traditional.c (skip_macro_block_comment): Return bool, true if 2802 the macro block comment is unterminated. 2803 (copy_comment): Use return value from skip_macro_block_comment instead 2804 of always false. 2805 2806 2018-01-27 Jakub Jelinek <jakub (a] redhat.com> 2807 2808 * include/cpplib.h (enum cpp_builtin_type): Change BT_LAST_USER from 2809 BT_FIRST_USER + 31 to BT_FIRST_USER + 63. 2810 2811 2018-01-18 Boris Kolpackov <boris (a] codesynthesis.com> 2812 2813 PR other/70268 2814 * include/cpplib.h (cpp_callbacks::remap_filename): New callback. 2815 * macro.c (_cpp_builtin_macro_text): Call remap_filename for 2816 __FILE__ and __BASE_FILE__. 2817 2818 2018-01-10 Kelvin Nilsen <kelvin (a] gcc.gnu.org> 2819 2820 * lex.c (search_line_fast): Remove illegal coercion of an 2821 unaligned pointer value to vector pointer type and replace with 2822 use of __builtin_vec_vsx_ld () built-in function, which operates 2823 on unaligned pointer values. 2824 2825 2018-01-03 Jakub Jelinek <jakub (a] redhat.com> 2826 2827 Update copyright years. 2828 2829 2017-12-20 Michael Weiser <michael.weiser (a] gmx.de> 2830 2831 PR preprocessor/83492 2832 * lex.c (search_line_fast) [__ARM_NEON && __ARM_64BIT_STATE]: 2833 Fix selection of big-endian shift parameters by using 2834 __ARM_BIG_ENDIAN. 2835 2836 2017-12-14 Bernd Edlinger <bernd.edlinger (a] hotmail.de> 2837 2838 * internal.h (maybe_print_line): Change signature. 2839 2840 2017-12-05 Jakub Jelinek <jakub (a] redhat.com> 2841 2842 PR c++/79228 2843 * expr.c (interpret_float_suffix): Avoid memcmp. 2844 (interpret_int_suffix): Likewise. Don't check for if. 2845 2846 2017-12-01 Jason Merrill <jason (a] redhat.com> 2847 2848 PR c++/79228 - extensions hide C++14 complex literal operators 2849 * expr.c (interpret_float_suffix): Ignore 'i' in C++14 and up. 2850 (interpret_int_suffix): Likewise. 2851 2852 2017-11-28 David Malcolm <dmalcolm (a] redhat.com> 2853 2854 PR c/82050 2855 * include/line-map.h (LINE_MAP_MAX_COLUMN_NUMBER): Move here. 2856 * line-map.c (LINE_MAP_MAX_COLUMN_NUMBER): ...from here. 2857 (rich_location::maybe_add_fixit): Reject fix-it hints in which 2858 the start column exceeds the next column. 2859 2860 2017-11-20 Eric Gallager <egall (a] gwmail.gwu.edu> 2861 2862 PR preprocessor/81794 2863 * macro.c (check_trad_stringification): Have warning be controlled 2864 by -Wtraditional. 2865 2866 2017-11-20 David Malcolm <dmalcolm (a] redhat.com> 2867 2868 PR c++/72786 2869 * include/cpplib.h (cpp_macro_definition_location): New decl. 2870 * macro.c (cpp_macro_definition): New function. 2871 2872 2017-11-13 Tom Tromey <tom (a] tromey.com> 2873 2874 * pch.c (cpp_read_state): Set n__VA_OPT__. 2875 * macro.c (vaopt_state): New class. 2876 (_cpp_arguments_ok): Check va_opt flag. 2877 (replace_args, create_iso_definition): Use vaopt_state. 2878 * lex.c (lex_identifier_intern): Possibly issue errors for 2879 __VA_OPT__. 2880 (lex_identifier): Likewise. 2881 (maybe_va_opt_error): New function. 2882 * internal.h (struct lexer_state) <va_args_ok>: Update comment. 2883 (struct spec_nodes) <n__VA_OPT__>: New field. 2884 * init.c (struct lang_flags) <va_opt>: New field. 2885 (lang_defaults): Add entries for C++2A. Update all entries for 2886 va_opt. 2887 (cpp_set_lang): Initialize va_opt. 2888 * include/cpplib.h (struct cpp_options) <va_opt>: New field. 2889 * identifiers.c (_cpp_init_hashtable): Initialize n__VA_OPT__. 2890 2891 2017-11-13 David Malcolm <dmalcolm (a] redhat.com> 2892 2893 * include/line-map.h (linenum_type): Move this typedef and the 2894 comment describing column numbering to near the top of the file. 2895 2896 2017-11-06 Mukesh Kapoor <mukesh.kapoor (a] oracle.com> 2897 2898 PR c++/80955 2899 * lex.c (lex_string): When checking for a valid macro for the 2900 warning related to -Wliteral-suffix (CPP_W_LITERAL_SUFFIX), 2901 check that the macro name does not start with an underscore 2902 before calling is_macro(). 2903 2904 2017-11-05 Tom de Vries <tom (a] codesourcery.com> 2905 2906 PR other/82784 2907 * lex.c (BUF_APPEND): Remove semicolon after 2908 "do {} while (0)". 2909 2910 2017-10-31 David Malcolm <dmalcolm (a] redhat.com> 2911 2912 * directives.c (_cpp_handle_directive): Update for renaming of 2913 cpp_error_at_richloc to cpp_error_at. 2914 * errors.c (cpp_diagnostic_at_richloc): Rename to... 2915 (cpp_diagnostic_at): ...this, dropping the location_t-based 2916 implementation. 2917 (cpp_diagnostic): Update for removal of location_t-based 2918 cpp_diagnostic_at. 2919 (cpp_error_at): Likewise. 2920 (cpp_error_at_richloc): Rename to... 2921 (cpp_error_at): ...this, and update for renaming of 2922 cpp_diagnostic_at_richloc. 2923 * include/cpplib.h (cpp_error_at_richloc): Rename to... 2924 (cpp_error_at): ...this. 2925 2926 2017-10-30 Joseph Myers <joseph (a] codesourcery.com> 2927 2928 * include/cpplib.h (enum c_lang): Add CLK_GNUC17 and CLK_STDC17. 2929 * init.c (lang_defaults): Add GNUC17 and STDC17 data. 2930 (cpp_init_builtins): Handle C17 value of __STDC_VERSION__. 2931 2932 2017-10-10 Nathan Sidwell <nathan (a] acm.org> 2933 2934 PR preprocessor/82506 2935 * macro.c (cpp_quote_string): Escape raw LFs. 2936 2937 2017-09-15 Andrew Sutton <andrew.n.sutton (a] gmail.com> 2938 Jakub Jelinek <jakub (a] redhat.com> 2939 2940 Add support for -std=c++2a. 2941 * include/cpplib.h (c_lang): Add CXX2A and GNUCXX2A. 2942 * init.c (lang_defaults): Add rows for CXX2A and GNUCXX2A. 2943 (cpp_init_builtins): Set __cplusplus to 201709L for C++2a. 2944 2945 2017-09-15 Jakub Jelinek <jakub (a] redhat.com> 2946 2947 * include/cpplib.h (enum c_lang): Rename CLK_GNUCXX1Z 2948 to CLK_GNUCXX17 and CLK_CXX1Z to CLK_CXX17. 2949 * init.c (lang_defaults, cpp_init_builtins): Likewise. 2950 * expr.c (cpp_classify_number): Use C++17 instead of C++1z 2951 in diagnostics. 2952 2953 2017-07-07 David Malcolm <dmalcolm (a] redhat.com> 2954 2955 PR c++/79300 2956 * line-map.c (linemap_macro_loc_to_def_point): Preserve range 2957 information for macro expansions by delaying resolving ad-hoc 2958 locations until within the loop. 2959 2960 2017-07-06 David Malcolm <dmalcolm (a] redhat.com> 2961 2962 PR c++/79300 2963 * include/line-map.h (enum location_aspect): New enum. 2964 (linemap_client_expand_location_to_spelling_point): Add 2965 enum location_aspect param. 2966 * line-map.c (rich_location::get_expanded_location): Update for 2967 new param of linemap_client_expand_location_to_spelling_point. 2968 (rich_location::maybe_add_fixit): Likewise. 2969 (fixit_hint::affects_line_p): Likewise. 2970 2971 2017-06-21 Jakub Jelinek <jakub (a] redhat.com> 2972 2973 * line-map.c (location_adhoc_data_update): Perform addition in 2974 uintptr_t type rather than char * type. Read *data using 2975 ptrdiff_t type instead of int64_t. 2976 (get_combined_adhoc_loc): Change offset type to ptrdiff_t from 2977 int64_t. 2978 2979 2017-06-20 David Malcolm <dmalcolm (a] redhat.com> 2980 2981 * include/line-map.h (class rich_location): Document that attempts 2982 to delete or replace a range *affecting* multiple lines will fail. 2983 * line-map.c (rich_location::maybe_add_fixit): Implement this 2984 restriction. 2985 2986 2017-06-09 David Malcolm <dmalcolm (a] redhat.com> 2987 2988 * include/line-map.h 2989 (rich_location::fixits_cannot_be_auto_applied): New method. 2990 (rich_location::fixits_can_be_auto_applied_p): New accessor. 2991 (rich_location::m_fixits_cannot_be_auto_applied): New field. 2992 * line-map.c (rich_location::rich_location): Initialize new field. 2993 2994 2017-06-05 David Malcolm <dmalcolm (a] redhat.com> 2995 2996 * include/cpplib.h (struct cpp_callbacks): Add "comment" 2997 callback. 2998 * lex.c (_cpp_lex_direct): Call the comment callback if non-NULL. 2999 3000 2017-05-02 David Malcolm <dmalcolm (a] redhat.com> 3001 3002 * include/line-map.h (class rich_location): Update description of 3003 newline handling. 3004 (class fixit_hint): Likewise. 3005 (fixit_hint::ends_with_newline_p): New decl. 3006 * line-map.c (rich_location::maybe_add_fixit): Support newlines 3007 in fix-it hints that are insertions of single lines at the start 3008 of a line. Don't consolidate into such fix-it hints. 3009 (fixit_hint::ends_with_newline_p): New method. 3010 3011 2017-05-01 David Malcolm <dmalcolm (a] redhat.com> 3012 3013 * include/line-map.h (source_range::intersects_line_p): Delete. 3014 (rich_location::add_fixit): Delete. 3015 (rich_location::maybe_add_fixit): New method. 3016 (class fixit_hint): Reimplement in terms of... 3017 (class fixit_replace): ...this. 3018 (class fixit_insert): Delete. 3019 * line-map.c (linemap_position_for_loc_and_offset): Drop overzealous 3020 linemap_assert_fails. 3021 (source_range::intersects_line_p): Rename to... 3022 (fixit_hint::affects_line_p): New function. 3023 (rich_location::add_fixit_insert_before): Reimplement in terms of 3024 maybe_add_fixit, moving validation there. 3025 (rich_location::add_fixit_insert_after): Likewise. 3026 (column_before_p): Delete. 3027 (rich_location::add_fixit_replace): Reimplement in terms of 3028 maybe_add_fixit, moving validation there. Convert closed input range 3029 to half-open range. 3030 (rich_location::add_fixit): Delete. 3031 (rich_location::maybe_add_fixit): New function. 3032 (fixit_insert::fixit_insert): Delete. 3033 (fixit_insert::~fixit_insert): Delete. 3034 (fixit_insert::affects_line_p): Delete. 3035 (fixit_insert::maybe_append_replace): Delete. 3036 (fixit_replace::fixit_replace): Rename to... 3037 (fixit_hint::fixit_hint): ...this, rewriting as necessary. 3038 (fixit_replace::~fixit_replace): Delete. 3039 (fixit_replace::affects_line_p): Delete. 3040 (fixit_replace::maybe_append_replace): Rename to... 3041 (fixit_hint::maybe_append): ...this, rewriting as necessary. 3042 3043 2017-04-03 Jonathan Wakely <jwakely (a] redhat.com> 3044 3045 * include/line-map.h (LINEMAPS_MACRO_MAPS): Fix typo in comment. 3046 * lex.c (search_line_fast): Likewise. 3047 * pch.h (cpp_valid_state): Likewise. 3048 3049 2017-03-21 Andreas Schwab <schwab (a] suse.de> 3050 3051 * lex.c (search_line_fast) [__ARM_NEON && __ARM_64BIT_STATE]: 3052 Convert 64-bit value to boolean before passing to 3053 __builtin_expect. 3054 3055 2017-03-16 Jason Merrill <jason (a] redhat.com> 3056 3057 * init.c (cpp_init_builtins): Update __cplusplus for C++17. 3058 3059 2017-02-09 Gerald Pfeifer <gerald (a] pfeifer.com> 3060 3061 * Makefile.in (po/$(PACKAGE).pot): Adjust bug reporting URL. 3062 3063 2017-01-10 David Malcolm <dmalcolm (a] redhat.com> 3064 3065 PR c++/77949 3066 * line-map.c (linemap_position_for_column): When calling 3067 linemap_start_line, detect if a new linemap was created with 3068 0 column bits, and bail out early if this is the case. 3069 (linemap_position_for_loc_and_offset): Replace overzealous 3070 linemap_assert_fails with a simple conditional; use correct 3071 bit count. 3072 3073 2017-01-07 David Malcolm <dmalcolm (a] redhat.com> 3074 3075 PR c++/72803 3076 * line-map.c (linemap_line_start): When determining if the highest 3077 column given out so far will fit into a proposed change to the 3078 current map, use the effective number of column bits, rather than 3079 the total number of column + range bits. 3080 3081 2017-01-01 Jakub Jelinek <jakub (a] redhat.com> 3082 3083 Update copyright years. 3084 3085 2016-12-15 David Malcolm <dmalcolm (a] redhat.com> 3086 3087 PR preprocessor/78680 3088 PR preprocessor/78811 3089 * lex.c (_cpp_lex_direct): Only determine the end-location of 3090 the token and build a range for non-reserved start locations. 3091 Do not do it for EOF tokens. 3092 3093 2016-12-12 David Malcolm <dmalcolm (a] redhat.com> 3094 3095 PR preprocessor/78680 3096 * lex.c (_cpp_lex_direct): Ensure line notes are processed before 3097 computing the end-point of the token. 3098 3099 2016-11-23 Paolo Bonzini <bonzini (a] gnu.org> 3100 3101 * include/cpplib.h (struct cpp_options): Add new member 3102 warn_expansion_to_defined. 3103 (CPP_W_EXPANSION_TO_DEFINED): New enum member. 3104 * expr.c (parse_defined): Warn for all uses of "defined" 3105 in macros, and tie warning to CPP_W_EXPANSION_TO_DEFINED. 3106 Make it a pedwarning instead of a warning. 3107 * system.h (HAVE_DESIGNATED_INITIALIZERS): Do not use 3108 "defined" in macros. 3109 3110 2016-11-17 David Malcolm <dmalcolm (a] redhat.com> 3111 3112 * charset.c (cpp_interpret_string_1): Skip locations from 3113 loc_reader when advancing 'p' when handling raw strings. 3114 3115 2016-11-16 Jakub Jelinek <jakub (a] redhat.com> 3116 3117 PR bootstrap/72823 3118 * configure.ac (ENABLE_ASSERT_CHECKING): Define if gcc configure 3119 would define that macro. 3120 * configure: Regenerated. 3121 * config.in: Regenerated. 3122 3123 2016-11-08 Richard Earnshaw <rearnsha (a] arm.com> 3124 3125 * lex.c (search_line_fast): New implementation for AArch64. 3126 3127 2016-10-25 David Malcolm <dmalcolm (a] redhat.com> 3128 3129 * files.c (destroy_cpp_file): Free file->path. 3130 3131 2016-10-25 David Malcolm <dmalcolm (a] redhat.com> 3132 3133 * include/line-map.h (line_maps::~line_maps): New dtor. 3134 (location_adhoc_data_fini): Delete decl. 3135 * line-map.c (line_maps::~line_maps): New dtor. 3136 (location_adhoc_data_fini): Delete. 3137 3138 2016-10-21 Andris Pavenis <andris.pavenis (a] iki.fi> 3139 3140 PR preprocessor/71681 3141 * files.c (remap_filename): Fix handling -remap in subdirectories. 3142 3143 2016-10-12 Jakub Jelinek <jakub (a] redhat.com> 3144 3145 * include/cpplib.h (struct cpp_options): Add 3146 cpp_warn_implicit_fallthrough. 3147 * init.c (cpp_create_reader): Initialize it to 0. 3148 * lex.c (fallthrough_comment_p): Handle different 3149 cpp_warn_implicit_fallthrough levels. Whitespace fixes. 3150 3151 2016-10-08 Jakub Jelinek <jakub (a] redhat.com> 3152 3153 * lex.c (fallthrough_comment_p): Accept Else, fallthrough. 3154 3155 * lex.c (fallthrough_comment_p): Extend to handle more common FALLTHRU 3156 comment styles. 3157 3158 * lex.c (fallthrough_comment_p): Fix off-by-one size comparison 3159 errors, cleanup. 3160 (_cpp_lex_direct): Allow arbitrary comments in between 3161 fallthrough_comment_p comment and following token. 3162 3163 2016-10-04 Kelvin Nilsen <kelvin (a] gcc.gnu.org> 3164 3165 PR target/77847 3166 * lex.c (search_line_fast): Add a FALLTHROUGH comment to correct 3167 compiler error in the version of this function that is 3168 conditionally compiled when GCC_VERSION >= 4005 and both 3169 __ALTIVEC__ and __BIG_ENDIAN__ symbols are defined. 3170 3171 2016-09-26 Marek Polacek <polacek (a] redhat.com> 3172 Jakub Jelinek <jakub (a] redhat.com> 3173 3174 PR c/7652 3175 * include/cpplib.h (PREV_FALLTHROUGH): Define. 3176 * internal.h (CPP_FALLTHRU): Define. 3177 * lex.c (fallthrough_comment_p): New function. 3178 (_cpp_lex_direct): Set PREV_FALLTHROUGH on tokens succeeding a falls 3179 through comment. 3180 3181 2016-09-23 David Malcolm <dmalcolm (a] redhat.com> 3182 3183 PR preprocessor/77672 3184 * charset.c (cpp_interpret_string_1): Add a source_range for the 3185 NUL-terminator, using the location of the trailing quote of the 3186 final string. 3187 3188 2016-09-21 Jason Merrill <jason (a] redhat.com> 3189 3190 * line-map.c (linemap_location_from_macro_definition_p): New. 3191 * line-map.h: Declare it. 3192 3193 2016-09-15 David Malcolm <dmalcolm (a] redhat.com> 3194 3195 * include/line-map.h (class rich_location): Note that newlines 3196 aren't supported in fix-it text. 3197 * line-map.c (rich_location::add_fixit_insert_before): Reject 3198 attempts to add fix-its containing newlines. 3199 (rich_location::add_fixit_replace): Likewise. 3200 3201 2016-09-13 David Malcolm <dmalcolm (a] redhat.com> 3202 3203 * include/line-map.h (class rich_location): Add description of 3204 fix-it hints to leading comment. 3205 (rich_location::add_fixit_insert): Rename both overloaded methods 3206 to.. 3207 (rich_location::add_fixit_insert_before): ...this, updating their 3208 comments. 3209 (rich_location::add_fixit_insert_after): Two new overloaded 3210 methods. 3211 (rich_location::stop_supporting_fixits): New method. 3212 * line-map.c (rich_location::add_fixit_insert): Rename both 3213 overloaded methods to.. 3214 (rich_location::add_fixit_insert_before): ...this, updating their 3215 comments. 3216 (rich_location::add_fixit_insert_after): Two new methods. 3217 (rich_location::reject_impossible_fixit): Split out 3218 failure-handling into... 3219 (rich_location::stop_supporting_fixits): New method. 3220 3221 2016-09-02 David Malcolm <dmalcolm (a] redhat.com> 3222 3223 * include/line-map.h (rich_location::seen_impossible_fixit_p): New 3224 accessor. 3225 3226 2016-08-31 David Malcolm <dmalcolm (a] redhat.com> 3227 3228 * include/line-map.h (class fixit_remove): Remove stray decl. 3229 (fixit_hint::affects_line_p): Make const. 3230 (fixit_insert::affects_line_p): Likewise. 3231 (fixit_replace::affects_line_p): Likewise. 3232 * line-map.c (fixit_insert::affects_line_p): Likewise. 3233 (fixit_replace::affects_line_p): Likewise. 3234 3235 2016-08-30 David Malcolm <dmalcolm (a] redhat.com> 3236 3237 * include/line-map.h (class semi_embedded_vec): New class. 3238 (semi_embedded_vec<T, NUM_EMBEDDED>::semi_embedded_vec): New ctor. 3239 (semi_embedded_vec<T, NUM_EMBEDDED>::~semi_embedded_vec): New 3240 dtor. 3241 (semi_embedded_vec<T, NUM_EMBEDDED>::operator[]): New methods. 3242 (semi_embedded_vec<T, NUM_EMBEDDED>::push): New method. 3243 (semi_embedded_vec<T, NUM_EMBEDDED>::truncate): New method. 3244 (rich_location::get_num_locations): Reimplement in terms of 3245 m_ranges. 3246 (rich_location::get_range): Make non-inline. 3247 (rich_location::get_num_fixit_hints): Reimplement in terms of 3248 m_fixit_hints. 3249 (rich_location::add_fixit): New function. 3250 (rich_location::MAX_RANGES): Rename to... 3251 (rich_location::STATICALLY_ALLOCATED_RANGES): ...this. 3252 (rich_location::MAX_FIXIT_HINTS): Rename to... 3253 (rich_location::STATICALLY_ALLOCATED_RANGES): ...this, and make 3254 private. 3255 (rich_location::m_num_ranges): Eliminate in favor of... 3256 (rich_location::m_ranges): ...this, converting from a fixed-size 3257 array to a semi_embedded_vec. 3258 (rich_location::m_num_fixit_hints): Eliminate in favor of... 3259 (rich_location::m_fixit_hints): ...this, converting from a 3260 fixed-size array to a semi_embedded_vec. 3261 * line-map.c (rich_location::rich_location): Update for above 3262 changes. 3263 (rich_location::~rich_location): Likewise. 3264 (rich_location::get_loc): Likewise. 3265 (rich_location::get_range): New methods. 3266 (rich_location::add_range): Update for above changes. 3267 (rich_location::set_range): Likewise. 3268 (rich_location::add_fixit_insert): Likewise. 3269 (rich_location::add_fixit_replace): Likewise. 3270 (rich_location::get_last_fixit_hint): Likewise. 3271 (rich_location::reject_impossible_fixit): Likewise. 3272 (rich_location::add_fixit): New method. 3273 3274 2016-08-30 David Malcolm <dmalcolm (a] redhat.com> 3275 3276 * include/line-map.h (rich_location::add_fixit_insert): Add 3277 comments. Add overload omitting the source_location param. 3278 (rich_location::add_fixit_remove): Add comments. Add overloads 3279 omitting the range, and accepting a source_location. 3280 (rich_location::add_fixit_replace): Likewise. 3281 * line-map.c (rich_location::add_fixit_insert): Add comments. Add 3282 overload omitting the source_location param. 3283 (rich_location::add_fixit_remove): Add comments. Add overloads 3284 omitting the range, and accepting a source_location. 3285 (rich_location::add_fixit_replace): Likewise. 3286 3287 2016-08-26 David Malcolm <dmalcolm (a] redhat.com> 3288 3289 * include/line-map.h (get_pure_location): New decl. 3290 * line-map.c (get_pure_location): Move here, from gcc/input.c, adding 3291 a line_maps * param. 3292 (rich_location::add_fixit_insert): Call get_pure_location on "where". 3293 (rich_location::add_fixit_replace): Call get_pure_location on the 3294 end-points. 3295 3296 2016-08-26 David Malcolm <dmalcolm (a] redhat.com> 3297 3298 * include/line-map.h (rich_location): Eliminate unimplemented 3299 constructor based on source_range. 3300 (rich_location::get_last_fixit_hint): New method. 3301 (rich_location::reject_impossible_fixit): New method. 3302 (rich_location): Add fields m_line_table and 3303 m_seen_impossible_fixit. 3304 (fixit_hint::maybe_append_replace): New pure virtual function. 3305 (fixit_insert::maybe_append_replace): New function. 3306 (fixit_replace::maybe_append_replace): New function. 3307 * line-map.c (rich_location::rich_location): Initialize 3308 m_line_table and m_seen_impossible_fixit. 3309 (rich_location::add_fixit_insert): Call 3310 reject_impossible_fixit and bail out if true. 3311 (column_before_p): New function. 3312 (rich_location::add_fixit_replace): Call reject_impossible_fixit 3313 and bail out if true. Attempt to consolidate with neighboring 3314 fixits. 3315 (rich_location::get_last_fixit_hint): New method. 3316 (rich_location::reject_impossible_fixit): New method. 3317 (fixit_insert::maybe_append_replace): New method. 3318 (fixit_replace::maybe_append_replace): New method. 3319 3320 2016-08-23 David Malcolm <dmalcolm (a] redhat.com> 3321 3322 * include/line-map.h (source_range::from_locations): New method. 3323 3324 2016-08-19 David Malcolm <dmalcolm (a] redhat.com> 3325 3326 * include/line-map.h (fixit_hint::kind): Delete REPLACE. 3327 (class fixit_remove): Delete. 3328 * line-map.c (rich_location::add_fixit_remove): Reimplement 3329 by calling add_fixit_replace with an empty string. 3330 (fixit_remove::fixit_remove): Delete. 3331 (fixit_remove::affects_line_p): Delete. 3332 3333 2016-08-19 Joseph Myers <joseph (a] codesourcery.com> 3334 3335 PR c/32187 3336 * include/cpplib.h (CPP_N_FLOATN, CPP_N_FLOATNX) 3337 (CPP_N_WIDTH_FLOATN_NX, CPP_FLOATN_SHIFT, CPP_FLOATN_MAX): New 3338 macros. 3339 * expr.c (interpret_float_suffix): Handle fN, fNx, FN and FNx 3340 suffixes. 3341 3342 2016-08-19 Prathamesh Kulkarni <prathamesh.kulkarni (a] linaro.org> 3343 3344 * expr.c (eval_token): Append "evaluates to 0" to Wundef diagnostic. 3345 3346 2016-08-18 David Malcolm <dmalcolm (a] redhat.com> 3347 3348 * directives.c (directive_names): New array. 3349 (_cpp_handle_directive): Offer spelling suggestions for misspelled 3350 directives. 3351 * errors.c (cpp_diagnostic_at_richloc): New function. 3352 (cpp_error_at_richloc): New function. 3353 * include/cpplib.h (struct cpp_callbacks): Add field 3354 "get_suggestion". 3355 (cpp_error_at_richloc): New decl. 3356 3357 2016-08-18 Marek Polacek <polacek (a] redhat.com> 3358 3359 PR c/7652 3360 * pch.c (write_macdef): Add CPP_FALLTHRU. 3361 3362 2016-08-12 Marek Polacek <polacek (a] redhat.com> 3363 3364 PR c/7652 3365 * lex.c (search_line_fast): Add FALLTHRU. 3366 (_cpp_lex_direct): Likewise. 3367 (cpp_token_val_index): Adjust fall through comment. 3368 * macro.c (parse_params): Add FALLTHRU. 3369 * pch.c (count_defs): Adjust fall through comment. 3370 (write_defs): Likewise. 3371 3372 2016-08-06 David Malcolm <dmalcolm (a] redhat.com> 3373 3374 PR bootstrap/72823 3375 * charset.c (_cpp_valid_ucn): Replace overzealous assert with one 3376 that allows for char_range to be non-NULL when loc_reader is NULL. 3377 3378 2016-08-05 David Malcolm <dmalcolm (a] redhat.com> 3379 3380 * charset.c (cpp_substring_ranges::cpp_substring_ranges): New 3381 constructor. 3382 (cpp_substring_ranges::~cpp_substring_ranges): New destructor. 3383 (cpp_substring_ranges::add_range): New method. 3384 (cpp_substring_ranges::add_n_ranges): New method. 3385 (_cpp_valid_ucn): Add "char_range" and "loc_reader" params; if 3386 they are non-NULL, read position information from *loc_reader 3387 and update char_range->m_finish accordingly. 3388 (convert_ucn): Add "char_range", "loc_reader", and "ranges" 3389 params. If loc_reader is non-NULL, read location information from 3390 it, and update *ranges accordingly, using char_range. 3391 Conditionalize the conversion into tbuf on tbuf being non-NULL. 3392 (convert_hex): Likewise, conditionalizing the call to 3393 emit_numeric_escape on tbuf. 3394 (convert_oct): Likewise. 3395 (convert_escape): Add params "loc_reader" and "ranges". If 3396 loc_reader is non-NULL, read location information from it, and 3397 update *ranges accordingly. Conditionalize the conversion into 3398 tbuf on tbuf being non-NULL. 3399 (cpp_interpret_string): Rename to... 3400 (cpp_interpret_string_1): ...this, adding params "loc_readers" and 3401 "out". Use "to" to conditionalize the initialization and usage of 3402 "tbuf", such as running the converter. If "loc_readers" is 3403 non-NULL, use the instances within it, reading location 3404 information from them, and passing them to convert_escape; likewise 3405 write to "out" if loc_readers is non-NULL. Check for leading 3406 quote and issue an error if it is not present. Update boundary 3407 check from "== limit" to ">= limit" to protect against erroneous 3408 location values to calls that are not parsing string literals. 3409 (cpp_interpret_string): Reimplement in terms to 3410 cpp_interpret_string_1. 3411 (noop_error_cb): New function. 3412 (cpp_interpret_string_ranges): New function. 3413 (cpp_string_location_reader::cpp_string_location_reader): New 3414 constructor. 3415 (cpp_string_location_reader::get_next): New method. 3416 * include/cpplib.h (class cpp_string_location_reader): New class. 3417 (class cpp_substring_ranges): New class. 3418 (cpp_interpret_string_ranges): New prototype. 3419 * internal.h (_cpp_valid_ucn): Add params "char_range" and 3420 "loc_reader". 3421 * lex.c (forms_identifier_p): Pass NULL for new params to 3422 _cpp_valid_ucn. 3423 3424 2016-08-01 Andreas Schwab <schwab (a] suse.de> 3425 3426 * include/cpplib.h: Fix comment typo. 3427 3428 2016-07-27 David Malcolm <dmalcolm (a] redhat.com> 3429 3430 * include/line-map.h (source_location): Fix line numbers in 3431 comment. 3432 3433 2016-07-11 David Malcolm <dmalcolm (a] redhat.com> 3434 3435 * include/line-map.h (LINE_MAP_MAX_LOCATION_WITH_PACKED_RANGES): 3436 Move here from line-map.c. 3437 (LINE_MAP_MAX_LOCATION_WITH_COLS): Likewise. 3438 * line-map.c (LINE_MAP_MAX_LOCATION_WITH_PACKED_RANGES): Move from 3439 here to line-map.h. 3440 (LINE_MAP_MAX_LOCATION_WITH_COLS): Likewise. 3441 3442 2016-06-22 David Malcolm <dmalcolm (a] redhat.com> 3443 3444 * directives.c (do_include_common): Pass on "location" to 3445 _cpp_stack_include. 3446 * errors.c (cpp_diagnostic): Reimplement in terms of... 3447 (cpp_diagnostic_at): New function. 3448 (cpp_error_at): New function. 3449 (cpp_errno_filename): Add "loc" param and use it by using 3450 cpp_error_at rather than cpp_error. 3451 * files.c (find_file_in_dir): Add "loc" param and pass it to 3452 open_file_failed. 3453 (_cpp_find_file): Add "loc" param. Use it to convert calls to 3454 cpp_error to cpp_error_at, and pass it to find_file_in_dir and 3455 open_file_failed. 3456 (read_file_guts): Add "loc" param. Use it to convert calls to 3457 cpp_error to cpp_error_at. Pass it to cpp_errno_filename. 3458 (read_file): Add "loc" param. Pass it to open_file_failed and 3459 read_file_guts. 3460 (should_stack_file): Add "loc" param. Pass it to read_file. 3461 (_cpp_stack_file): Add "loc" param. Pass it to should_stack_file. 3462 (_cpp_stack_include): Add "loc" param. Pass it to 3463 _cpp_find_file and _cpp_stack_file. 3464 (open_file_failed): Add "loc" param. Pass it to 3465 cpp_errno_filename. 3466 (_cpp_fake_include): Add 0 as a source_location in call to 3467 _cpp_find_file. 3468 (_cpp_compare_file_date): Likewise. 3469 (cpp_push_include): Likewise for call to _cpp_stack_include. 3470 (cpp_push_default_include): Likewise. 3471 (_cpp_save_file_entries): Likewise for call to open_file_failed. 3472 (_cpp_has_header): Likewise for call to _cpp_find_file. 3473 * include/cpplib.h (cpp_errno_filename): Add source_location 3474 param. 3475 (cpp_error_at): New declaration. 3476 * init.c (cpp_read_main_file): Add 0 as a source_location in calls 3477 to _cpp_find_file and _cpp_stack_file. 3478 * internal.h (_cpp_find_file): Add source_location param. 3479 (_cpp_stack_file): Likewise. 3480 (_cpp_stack_include): Likewise. 3481 3482 2016-06-22 David Malcolm <dmalcolm (a] redhat.com> 3483 3484 * include/line-map.h (fixit_hint::get_start_loc): New pure virtual 3485 function. 3486 (fixit_hint::maybe_get_end_loc): Likewise. 3487 (fixit_insert::get_start_loc): New function, implementing 3488 fixit_hint::get_start_loc. 3489 (fixit_insert::maybe_get_end_loc): New function, implementing 3490 fixit_hint::maybe_get_end_loc. 3491 (fixit_remove::get_start_loc): New function, implementing 3492 fixit_hint::get_start_loc. 3493 (fixit_remove::maybe_get_end_loc): New function, implementing 3494 fixit_hint::maybe_get_end_loc. 3495 (fixit_replace::get_start_loc): New function, implementing 3496 fixit_hint::get_start_loc. 3497 (fixit_replace::maybe_get_end_loc): New function, implementing 3498 fixit_hint::maybe_get_end_loc. 3499 3500 2016-06-21 John David Anglin <danglin (a] gcc.gnu.org> 3501 3502 * line-map.c (location_adhoc_data_update): Use int64_t instead of 3503 long long. 3504 (get_combined_adhoc_loc): Likewise. 3505 3506 2016-06-01 Eduard Sanou <dhole (a] openmailbox.org> 3507 3508 * include/cpplib.h (cpp_callbacks): Add get_source_date_epoch 3509 callback. 3510 * include/cpplib.h (cpp_init_source_date_epoch): Remove prototype. 3511 * init.c (cpp_init_source_date_epoch): Remove function. 3512 * init.c (cpp_create_reader): Initialize pfile->source_date_epoch. 3513 * internal.h (cpp_reader): Extend comment about source_date_epoch. 3514 * macro.c (_cpp_builtin_macro_text): Use get_source_date_epoch 3515 callback only once, read pfile->source_date_epoch on future passes. 3516 Check that get_source_date_epoch callback is not NULL. 3517 3518 2016-05-20 Martin Liska <mliska (a] suse.cz> 3519 3520 * config.in: Regenerated. 3521 * configure: Likewise. 3522 * configure.ac: Handle --enable-valgrind-annotations. 3523 * lex.c (new_buff): Use ENABLE_VALGRIND_ANNOTATIONS instead 3524 of ENABLE_VALGRIND_CHECKING. 3525 (_cpp_free_buff): Likewise. 3526 3527 2016-04-28 Eduard Sanou <dhole (a] openmailbox.org> 3528 Matthias Klose <doko (a] debian.org> 3529 3530 * include/cpplib.h (cpp_init_source_date_epoch): Prototype. 3531 * init.c (cpp_init_source_date_epoch): New function. 3532 * internal.h: Added source_date_epoch variable to struct 3533 cpp_reader to store a reproducible date. 3534 * macro.c (_cpp_builtin_macro_text): Set pfile->date timestamp from 3535 pfile->source_date_epoch instead of localtime if source_date_epoch is 3536 set, to be used for __DATE__ and __TIME__ macros to help reproducible 3537 builds. 3538 3539 2016-04-13 Bernd Schmidt <bschmidt (a] redhat.com> 3540 3541 Patch from Roger Orr <rogero (a] howzatt.demon.co.uk> 3542 PR preprocessor/69650 3543 * directives.c (do_linemarker): Reread map after calling 3544 cpp_get_token. 3545 3546 2016-04-06 Richard Henderson <rth (a] redhat.com> 3547 3548 PR preprocessor/61817 3549 PR preprocessor/69391 3550 * internal.h (_cpp_builtin_macro_text): Update decl. 3551 * macro.c (_cpp_builtin_macro_text): Accept location for __LINE__. 3552 (builtin_macro): Accept a second location for __LINE__. 3553 (enter_macro_context): Compute both virtual and real expansion 3554 locations for the macro. 3555 3556 2016-03-25 Bernd Schmidt <bschmidt (a] redhat.com> 3557 3558 PR lto/69650 3559 * directives.c (do_linemarker): Test for file left but not entered 3560 here. 3561 * line-map.c (linemap_add): Not here. 3562 3563 2016-03-21 Jakub Jelinek <jakub (a] redhat.com> 3564 3565 PR target/70296 3566 * include/cpplib.h (cpp_fun_like_macro_p): New prototype. 3567 * macro.c (cpp_fun_like_macro_p): New function. 3568 3569 2016-03-15 Richard Henderson <rth (a] redhat.com> 3570 3571 * line-map.c (new_linemap): Make alloc_size a size_t. 3572 3573 2016-03-14 Jason Merrill <jason (a] redhat.com> 3574 3575 * expr.c (cpp_classify_number): Hex floats are new in C++1z. 3576 * init.c (lang_defaults): Likewise. 3577 3578 2016-03-09 David Malcolm <dmalcolm (a] redhat.com> 3579 3580 PR c/68473 3581 PR c++/70105 3582 * line-map.c (linemap_macro_map_loc_unwind_toward_spelling): Move 3583 decl... 3584 * include/line-map.h 3585 (linemap_macro_map_loc_unwind_toward_spelling): ...here, 3586 converting from static to extern. 3587 3588 2016-03-09 David Malcolm <dmalcolm (a] redhat.com> 3589 3590 PR c/68473 3591 PR c++/70105 3592 * include/line-map.h (source_range::debug): Delete. 3593 (struct location_range): Update comment. Replace 3594 expanded_location fields "m_start", "m_finish", and "m_caret" with 3595 a source_location field: "m_loc". 3596 (class rich_location): Reword comment. 3597 (rich_location::get_loc): Reimplement in terms of a new overloaded 3598 variant which takes an unsigned int. 3599 (rich_location::get_loc_addr): Delete. 3600 (rich_location::add_range): Drop params "start" and "finish" in 3601 favor of param "loc". Drop overloaded variants taking a 3602 source_range or location_range *. 3603 (rich_location::lazily_expand_location): Delete in favor of... 3604 (rich_location::get_expanded_location): New decl. 3605 (rich_location::m_loc): Delete field. 3606 (rich_location::m_column_override): New field. 3607 * line-map.c (rich_location::rich_location): Drop name of 3608 line_maps * param. Update initializations for deletion of field 3609 "m_loc" and addition of field "m_column_override". Reimplement 3610 body as a call to add_range. Delete overloaded variant taking a 3611 source_range. 3612 (rich_location::get_loc): New function. 3613 (rich_location::lazily_expand_location): Delete in favor of... 3614 (rich_location::get_expanded_location): New function. 3615 (rich_location::override_column): Reimplement. 3616 (rich_location::add_range): Drop params "start" and "finish" in 3617 favor of param "loc". Eliminate location expansion in favor of 3618 simply storing loc. Drop overloaded variants taking a 3619 source_range or location_range *. 3620 (rich_location::set_range): Eliminate location expansion. 3621 3622 2016-02-29 David Malcolm <dmalcolm (a] redhat.com> 3623 3624 PR preprocessor/69985 3625 (linemap_position_for_loc_and_offset): Rename param from "offset" 3626 to "column_offset". Right-shift the column_offset by m_range_bits 3627 of the pertinent ordinary map whenever offsetting a 3628 source_location. For clarity, offset the column by the column 3629 offset, rather than the other way around. 3630 3631 2016-02-23 David Malcolm <dmalcolm (a] redhat.com> 3632 3633 PR preprocessor/69126 3634 PR preprocessor/69543 3635 * line-map.c (linemap_compare_locations): At the function top, 3636 replace inlined bodies of get_location_from_adhoc_loc with calls 3637 to get_location_from_adhoc_loc. Add a pair of calls to 3638 get_location_from_adhoc_loc at the bottom of the function, to 3639 avoid meaningless comparisons of ad-hoc and non-ad-hoc locations. 3640 3641 2016-02-08 David Malcolm <dmalcolm (a] redhat.com> 3642 3643 PR preprocessor/69664 3644 * errors.c (cpp_diagnostic_with_line): Only call 3645 rich_location::override_column if the column is non-zero. 3646 * line-map.c (rich_location::override_column): Update columns 3647 within m_ranges[0]. Add assertions to verify that doing so is 3648 sane. 3649 3650 2016-02-05 Jakub Jelinek <jakub (a] redhat.com> 3651 3652 PR c++/69628 3653 * charset.c (cpp_interpret_charconst): Clear *PCHARS_SEEN 3654 and *UNSIGNEDP if bailing out early due to errors. 3655 3656 2016-01-28 Jakub Jelinek <jakub (a] redhat.com> 3657 3658 PR pch/68176 3659 * files.c (_cpp_find_file): Set file->implicit_preinclude even if 3660 included from file->implicit_preinclude header. 3661 3662 * directives.c (destringize_and_run): Adjust prototype. 3663 3664 2016-01-27 David Malcolm <dmalcolm (a] redhat.com> 3665 3666 PR preprocessor/69126 3667 * directives.c (destringize_and_run): Add expansion_loc param; use 3668 it when handling unexpanded pragmas to fixup the locations of the 3669 synthesized tokens. 3670 (_cpp_do__Pragma): Add expansion_loc param and use it when calling 3671 destringize_and_run. 3672 * internal.h (_cpp_do__Pragma): Add expansion_loc param. 3673 * macro.c (builtin_macro): Pass expansion location of _Pragma to 3674 _cpp_do__Pragma. 3675 3676 2016-01-14 David Malcolm <dmalcolm (a] redhat.com> 3677 3678 PR preprocessor/69177 3679 * line-map.c (LINE_MAP_MAX_LOCATION_WITH_PACKED_RANGES): New 3680 constant. 3681 (LINE_MAP_MAX_LOCATION_WITH_COLS): Add note about unit tests 3682 to comment. 3683 (can_be_stored_compactly_p): Reduce threshold from 3684 LINE_MAP_MAX_LOCATION_WITH_COLS to 3685 LINE_MAP_MAX_LOCATION_WITH_PACKED_RANGES. 3686 (get_combined_adhoc_loc): Likewise. 3687 (get_range_from_loc): Likewise. 3688 (linemap_line_start): Ensure that a new ordinary map is created 3689 when transitioning from range-packing being enabled to disabled, 3690 at the LINE_MAP_MAX_LOCATION_WITH_PACKED_RANGES threshold. Set 3691 range_bits to 0 for new ordinary maps when beyond this limit. 3692 Prevent the "increase the column bits of a freshly created map" 3693 optimization if the range bits has reduced. 3694 3695 2016-01-08 Jakub Jelinek <jakub (a] redhat.com> 3696 3697 PR c++/69145 3698 * files.c (cpp_included_before): If IS_ADHOC_LOC (location), lookup 3699 real location from the line_table. 3700 3701 2016-01-04 Jakub Jelinek <jakub (a] redhat.com> 3702 3703 Update copyright years. 3704 3705 2015-12-22 David Malcolm <dmalcolm (a] redhat.com> 3706 3707 * line-map.c (get_combined_adhoc_loc): Remove condition 3708 on locus < RESERVED_LOCATION_COUNT when considering 3709 whether a caret == start == finish location can be 3710 simply stored as the caret location. 3711 3712 2015-12-07 David Malcolm <dmalcolm (a] redhat.com> 3713 3714 * include/line-map.h (rich_location::set_range): Add line_maps * 3715 param; convert param from source_range to source_location. Drop 3716 "overwrite_loc_p" param. 3717 * line-map.c (rich_location::set_range): Likewise, acting as if 3718 "overwrite_loc_p" were true, and getting range from the location. 3719 3720 2015-11-20 David Malcolm <dmalcolm (a] redhat.com> 3721 3722 PR 62314 3723 * include/line-map.h (source_range::intersects_line_p): New 3724 method. 3725 (rich_location::~rich_location): New. 3726 (rich_location::add_fixit_insert): New method. 3727 (rich_location::add_fixit_remove): New method. 3728 (rich_location::add_fixit_replace): New method. 3729 (rich_location::get_num_fixit_hints): New accessor. 3730 (rich_location::get_fixit_hint): New accessor. 3731 (rich_location::MAX_FIXIT_HINTS): New constant. 3732 (rich_location::m_num_fixit_hints): New field. 3733 (rich_location::m_fixit_hints): New field. 3734 (class fixit_hint): New class. 3735 (class fixit_insert): New class. 3736 (class fixit_remove): New class. 3737 (class fixit_replace): New class. 3738 * line-map.c (source_range::intersects_line_p): New method. 3739 (rich_location::rich_location): Add initialization of 3740 m_num_fixit_hints to both ctors. 3741 (rich_location::~rich_location): New. 3742 (rich_location::add_fixit_insert): New method. 3743 (rich_location::add_fixit_remove): New method. 3744 (rich_location::add_fixit_replace): New method. 3745 (fixit_insert::fixit_insert): New. 3746 (fixit_insert::~fixit_insert): New. 3747 (fixit_insert::affects_line_p): New. 3748 (fixit_remove::fixit_remove): New. 3749 (fixit_remove::affects_line_p): New. 3750 (fixit_replace::fixit_replace): New. 3751 (fixit_replace::~fixit_replace): New. 3752 (fixit_replace::affects_line_p): New. 3753 3754 2015-11-19 Jakub Jelinek <jakub (a] redhat.com> 3755 3756 PR preprocessor/60736 3757 * include/cpplib.h (cpp_errno_filename): New prototype. 3758 * errors.c (cpp_errno): Don't handle msgid "" specially, use 3759 _(msgid) instead of msgid as argument to cpp_error. 3760 (cpp_errno_filename): New function. 3761 * files.c (read_file_guts): Use cpp_errno_filename instead of 3762 cpp_errno. 3763 (open_file_failed): Likewise. Use file->name if file->path is NULL 3764 in diagnostics. 3765 3766 2015-11-13 David Malcolm <dmalcolm (a] redhat.com> 3767 3768 * errors.c (cpp_diagnostic): Pass pfile->line_table to 3769 rich_location ctor. 3770 (cpp_diagnostic_with_line): Likewise. 3771 * include/cpplib.h (struct cpp_token): Update comment for src_loc 3772 to indicate that the range of the token is "baked into" the 3773 source_location. 3774 * include/line-map.h (source_location): Update the descriptive 3775 comment to reflect the packing scheme for short ranges, adding 3776 worked examples of location encoding. 3777 (struct line_map_ordinary): Drop field "column_bits" in favor 3778 of field "m_column_and_range_bits"; add field "m_range_bits". 3779 (ORDINARY_MAP_NUMBER_OF_COLUMN_BITS): Delete. 3780 (location_adhoc_data): Add source_range field. 3781 (struct line_maps): Add fields "default_range_bits", 3782 "num_optimized_ranges" and "num_unoptimized_ranges". 3783 (get_combined_adhoc_loc): Add source_range param. 3784 (get_range_from_loc): New declaration. 3785 (pure_location_p): New prototype. 3786 (COMBINE_LOCATION_DATA): Add source_range param. 3787 (SOURCE_LINE): Update for renaming of column_bits. 3788 (SOURCE_COLUMN): Likewise. Shift the column right by the map's 3789 range_bits. 3790 (LAST_SOURCE_LINE_LOCATION): Update for renaming of column_bits. 3791 (linemap_position_for_line_and_column): Add line_maps * params. 3792 (rich_location::rich_location): Likewise. 3793 * lex.c (_cpp_lex_direct): Capture the range of the token, baking 3794 it into token->src_loc via a call to COMBINE_LOCATION_DATA. 3795 * line-map.c (LINE_MAP_MAX_COLUMN_NUMBER): Reduce from 1U << 17 to 3796 1U << 12. 3797 (location_adhoc_data_hash): Add the src_range into 3798 the hash value. 3799 (location_adhoc_data_eq): Require equality of the src_range 3800 values. 3801 (can_be_stored_compactly_p): New function. 3802 (get_combined_adhoc_loc): Add src_range param, and store it, 3803 via a bit-packing scheme for short ranges, otherwise within the 3804 lookaside table. Remove the requirement that data is non-NULL. 3805 (get_range_from_adhoc_loc): New function. 3806 (get_range_from_loc): New function. 3807 (pure_location_p): New function. 3808 (linemap_add): Ensure that start_location has zero for the 3809 range_bits, unless we're past LINE_MAP_MAX_LOCATION_WITH_COLS. 3810 Initialize range_bits to zero. Assert that the start_location 3811 is "pure". 3812 (linemap_line_start): Assert that the 3813 column_and_range_bits >= range_bits. 3814 Update determinination of whether we need to start a new map 3815 using the effective column bits, without the range bits. 3816 Use the set's default_range_bits in new maps, apart from 3817 those with column_bits == 0, which should also have 0 range_bits. 3818 Increase the column bits for new maps by the range bits. 3819 When adding lines to an existing map, use set->highest_line 3820 directly rather than offsetting highest by SOURCE_COLUMN. 3821 Add assertions to sanity-check the return value. 3822 (linemap_position_for_column): Offset to_column by range_bits. 3823 Update set->highest_location if necessary. 3824 (linemap_position_for_line_and_column): Add line_maps * param. 3825 Update the calculation to offset the column by range_bits, and 3826 conditionalize it on being <= LINE_MAP_MAX_LOCATION_WITH_COLS. 3827 Bound it by LINEMAPS_MACRO_LOWEST_LOCATION. Update 3828 set->highest_location if necessary. 3829 (linemap_position_for_loc_and_offset): Handle ad-hoc locations; 3830 pass "set" to linemap_position_for_line_and_column. 3831 (linemap_macro_map_loc_unwind_toward_spelling): Add line_maps 3832 param. Handle ad-hoc locations. 3833 (linemap_location_in_system_header_p): Pass on "set" to call to 3834 linemap_macro_map_loc_unwind_toward_spelling. 3835 (linemap_macro_loc_to_spelling_point): Retain ad-hoc locations. 3836 Pass on "set" to call to 3837 linemap_macro_map_loc_unwind_toward_spelling. 3838 (linemap_resolve_location): Retain ad-hoc locations. Pass on 3839 "set" to call to linemap_macro_map_loc_unwind_toward_spelling. 3840 (linemap_unwind_toward_expansion): Pass on "set" to call to 3841 linemap_macro_map_loc_unwind_toward_spelling. 3842 (linemap_expand_location): Extract the data pointer before 3843 extracting the location. 3844 (rich_location::rich_location): Add line_maps param; use it to 3845 extract the range from the source_location. 3846 * location-example.txt: Regenerate, showing new representation. 3847 3848 2015-11-06 David Malcolm <dmalcolm (a] redhat.com> 3849 3850 * errors.c (cpp_diagnostic): Update for change in signature 3851 of "error" callback. 3852 (cpp_diagnostic_with_line): Likewise, calling override_column 3853 on the rich_location. 3854 * include/cpplib.h (struct cpp_callbacks): Within "error" 3855 callback, convert param from source_location to rich_location *, 3856 and drop column_override param. 3857 * include/line-map.h (struct source_range): New struct. 3858 (struct location_range): New struct. 3859 (class rich_location): New class. 3860 (linemap_client_expand_location_to_spelling_point): New declaration. 3861 * line-map.c (rich_location::rich_location): New ctors. 3862 (rich_location::lazily_expand_location): New method. 3863 (rich_location::override_column): New method. 3864 (rich_location::add_range): New methods. 3865 (rich_location::set_range): New method. 3866 3867 2015-11-06 David Malcolm <dmalcolm (a] redhat.com> 3868 3869 * include/line-map.h (struct linemap_stats): Add fields 3870 "adhoc_table_size" and "adhoc_table_entries_used". 3871 * line-map.c (linemap_get_statistics): Populate above fields. 3872 3873 2015-11-04 Mikhail Maltsev <maltsevm (a] gmail.com> 3874 3875 * config.in: Regenerate. 3876 * configure: Regenerate. 3877 * configure.ac: Remove ENABLE_CHECKING. 3878 3879 2015-11-03 Uros Bizjak <ubizjak (a] gmail.com> 3880 3881 * lex.c (search_line_sse42): Correctly advance the pointer to an 3882 aligned address. 3883 3884 2015-11-02 David Malcolm <dmalcolm (a] redhat.com> 3885 3886 * include/line-map.h (source_location): In the table in the 3887 descriptive comment, show UNKNOWN_LOCATION, BUILTINS_LOCATION, 3888 LINE_MAP_MAX_LOCATION_WITH_COLS, LINE_MAP_MAX_SOURCE_LOCATION. 3889 Add notes about ad-hoc values. 3890 3891 2015-10-21 Mikhail Maltsev <maltsevm (a] gmail.com> 3892 3893 * include/line-map.h: Use CHECKING_P instead of ENABLE_CHECKING. 3894 * init.c: Likewise. 3895 * macro.c (struct macro_arg_token_iter, set_arg_token, 3896 macro_arg_token_iter_init, macro_arg_token_iter_forward, 3897 macro_arg_token_iter_get_token, macro_arg_token_iter_get_location, 3898 alloc_expanded_arg_mem, _cpp_backup_tokens): Likewise. 3899 3900 * config.in: Regenerate. 3901 * configure: Regenerate. 3902 * configure.ac (CHECKING_P): Define. 3903 * system.h (fancy_abort): Declare. 3904 (abort): Define. 3905 (gcc_assert): Define. Use CHECKING_P. 3906 3907 2015-10-13 Mikhail Maltsev <maltsevm (a] gmail.com> 3908 3909 * system.h (CHECKING_P, gcc_checking_assert): Define. 3910 3911 2015-09-21 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 3912 3913 PR c/66415 3914 * line-map.c (linemap_position_for_loc_and_offset): Handle the 3915 case of long lines encoded in multiple maps. 3916 3917 2015-09-07 Marek Polacek <polacek (a] redhat.com> 3918 3919 * system.h (INTTYPE_MINIMUM): Rewrite to avoid shift warning. 3920 3921 2015-08-06 Yaakov Selkowitz <yselkowi (a] redhat.com> 3922 3923 * configure: Regenerate. 3924 3925 2015-07-08 Thomas Schwinge <thomas (a] codesourcery.com> 3926 3927 * include/line-map.h (RESERVED_LOCATION_COUNT): Change type to 3928 source_location. 3929 3930 2015-07-02 Paolo Carlini <paolo.carlini (a] oracle.com> 3931 3932 PR preprocessor/53690 3933 * charset.c (_cpp_valid_ucn): Add cppchar_t * parameter and change 3934 return type to bool. Fix encoding of \u0000 and \U00000000 in C++. 3935 (convert_ucn): Adjust call. 3936 * lex.c (forms_identifier_p): Likewise. 3937 * internal.h (_cpp_valid_ucn): Adjust declaration. 3938 3939 2015-06-30 Edward Smith-Rowland <3dw4rd (a] verizon.net> 3940 3941 Implement N4197 - Adding u8 character literals 3942 * include/cpplib.h (UTF8CHAR, UTF8CHAR_USERDEF): New cpp tokens; 3943 (struct cpp_options): Add utf8_char_literals. 3944 * init.c (struct lang_flags): Add utf8_char_literals; 3945 (struct lang_flags lang_defaults): Add column for utf8_char_literals. 3946 * macro.c (stringify_arg()): Treat CPP_UTF8CHAR token; 3947 * expr.c (cpp_userdef_char_remove_type(), cpp_userdef_char_add_type()): 3948 Treat CPP_UTF8CHAR_USERDEF, CPP_UTF8CHAR tokens; 3949 (cpp_userdef_char_p()): Treat CPP_UTF8CHAR_USERDEF token; 3950 (eval_token(), _cpp_parse_expr()): Treat CPP_UTF8CHAR token. 3951 * lex.c (lex_string(), _cpp_lex_direct()): Include CPP_UTF8CHAR tokens. 3952 * charset.c (converter_for_type(), cpp_interpret_charconst()): 3953 Treat CPP_UTF8CHAR token. 3954 3955 2015-06-30 Uros Bizjak <ubizjak (a] gmail.com> 3956 3957 * lex.c (search_line_sse42) [__GCC_ASM_FLAG_OUTPUTS__]: New main 3958 loop using asm flag outputs. 3959 3960 2015-06-08 Marek Polacek <polacek (a] redhat.com> 3961 3962 PR c/66415 3963 * line-map.c (linemap_position_for_loc_and_offset): Remove 3964 linemap_assert_fails; reverse conditions. 3965 3966 2015-05-26 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 3967 3968 * line-map.c (LINE_MAP_MAX_COLUMN_NUMBER 3969 LINE_MAP_MAX_LOCATION_WITH_COLS,LINE_MAP_MAX_SOURCE_LOCATION): 3970 New constants. 3971 (linemap_line_start): Use them. 3972 (linemap_position_for_column): Use them. 3973 3974 2015-05-20 David Malcolm <dmalcolm (a] redhat.com> 3975 3976 * include/line-map.h (MAP_START_LOCATION): Eliminate the non-const 3977 variant, and tweak comment for the const variant. 3978 (ORDINARY_MAP_STARTING_LINE_NUMBER): Drop the non-const variant. 3979 (ORDINARY_MAP_INCLUDER_FILE_INDEX): Likewise. 3980 (ORDINARY_MAP_IN_SYSTEM_HEADER_P): Likewise. 3981 (SET_ORDINARY_MAP_NUMBER_OF_COLUMN_BITS): Delete. 3982 (ORDINARY_MAP_FILE_NAME): Drop the non-const variant. 3983 (MACRO_MAP_MACRO): Likewise. 3984 (MACRO_MAP_NUM_MACRO_TOKENS): Likewise. 3985 (MACRO_MAP_LOCATIONS): Likewise. 3986 (MACRO_MAP_EXPANSION_POINT_LOCATION): Likewise. 3987 * line-map.c (linemap_add): Replace writes through macros with 3988 direct field accesses. 3989 (linemap_enter_macro): Likewise. 3990 (linemap_line_start): Likewise. 3991 3992 2015-05-19 David Malcolm <dmalcolm (a] redhat.com> 3993 3994 * directives.c (do_line): Strengthen local "map" from 3995 const line_map * to const line_map_ordinary *. 3996 (do_linemarker): Likewise. 3997 (_cpp_do_file_change): Assert that we're not dealing with 3998 a macro map. Introduce local "ord_map" via a call to 3999 linemap_check_ordinary, guarded within the check for 4000 non-NULL. Use it for typesafety. 4001 * files.c (cpp_make_system_header): Strengthen local "map" from 4002 const line_map * to const line_map_ordinary *. 4003 * include/cpplib.h (struct cpp_callbacks): Likewise for second 4004 parameter of "file_change" callback. 4005 * include/line-map.h (struct line_map): Convert from a struct 4006 containing a union to a base class. 4007 (struct line_map_ordinary): Convert to a subclass of line_map. 4008 (struct line_map_macro): Likewise. 4009 (linemap_check_ordinary): Strengthen return type from line_map * 4010 to line_map_ordinary *, and add a const-variant. 4011 (linemap_check_macro): New pair of functions. 4012 (ORDINARY_MAP_STARTING_LINE_NUMBER): Strengthen param from 4013 const line_map * to const line_map_ordinary *, eliminating call 4014 to linemap_check_ordinary. Likewise for the non-const variant. 4015 (ORDINARY_MAP_INCLUDER_FILE_INDEX): Likewise. 4016 (ORDINARY_MAP_IN_SYSTEM_HEADER_P): Likewise. 4017 (ORDINARY_MAP_NUMBER_OF_COLUMN_BITS): Likewise. 4018 (ORDINARY_MAP_FILE_NAME): Likewise. 4019 (MACRO_MAP_MACRO): Strengthen param from const line_map * to 4020 const line_map_macro *. Likewise for the non-const variant. 4021 (MACRO_MAP_NUM_MACRO_TOKENS): Likewise. 4022 (MACRO_MAP_LOCATIONS): Likewise. 4023 (MACRO_MAP_EXPANSION_POINT_LOCATION): Likewise. 4024 (struct maps_info): Replace with... 4025 (struct maps_info_ordinary):...this and... 4026 (struct maps_info_macro): ...this. 4027 (struct line_maps): Convert fields "info_ordinary" and 4028 "info_macro" to the above new structs. 4029 (LINEMAPS_MAP_INFO): Delete both functions. 4030 (LINEMAPS_MAPS): Likewise. 4031 (LINEMAPS_ALLOCATED): Rewrite both variants to avoid using 4032 LINEMAPS_MAP_INFO. 4033 (LINEMAPS_USED): Likewise. 4034 (LINEMAPS_CACHE): Likewise. 4035 (LINEMAPS_MAP_AT): Likewise. 4036 (LINEMAPS_ORDINARY_MAPS): Strengthen return type from line_map * 4037 to line_map_ordinary *. 4038 (LINEMAPS_ORDINARY_MAP_AT): Likewise. 4039 (LINEMAPS_LAST_ORDINARY_MAP): Likewise. 4040 (LINEMAPS_LAST_ALLOCATED_ORDINARY_MAP): Likewise. 4041 (LINEMAPS_MACRO_MAPS): Strengthen return type from line_map * to 4042 line_map_macro *. 4043 (LINEMAPS_MACRO_MAP_AT): Likewise. 4044 (LINEMAPS_LAST_MACRO_MAP): Likewise. 4045 (LINEMAPS_LAST_ALLOCATED_MACRO_MAP): Likewise. 4046 (linemap_map_get_macro_name): Strengthen param from 4047 const line_map * to const line_map_macro *. 4048 (SOURCE_LINE): Strengthen first param from const line_map * to 4049 const line_map_ordinary *, removing call to 4050 linemap_check_ordinary. 4051 (SOURCE_COLUMN): Likewise. 4052 (LAST_SOURCE_LINE_LOCATION): Likewise. 4053 (LAST_SOURCE_LINE): Strengthen first param from const line_map * 4054 to const line_map_ordinary *. 4055 (LAST_SOURCE_COLUMN): Likewise. 4056 (INCLUDED_FROM): Strengthen return type from line_map * to 4057 line_map_ordinary *., and second param from const line_map * 4058 to const line_map_ordinary *, removing call to 4059 linemap_check_ordinary. 4060 (MAIN_FILE_P): Strengthen param from const line_map * to 4061 const line_map_ordinary *, removing call to 4062 linemap_check_ordinary. 4063 (linemap_position_for_line_and_column): Strengthen param from 4064 const line_map * to const line_map_ordinary *. 4065 (LINEMAP_FILE): Strengthen param from const line_map * to 4066 const line_map_ordinary *, removing call to 4067 linemap_check_ordinary. 4068 (LINEMAP_LINE): Likewise. 4069 (LINEMAP_SYSP): Likewise. 4070 (linemap_resolve_location): Strengthen final param from 4071 const line_map ** to const line_map_ordinary **. 4072 * internal.h (CPP_INCREMENT_LINE): Likewise for local "map". 4073 (linemap_enter_macro): Strengthen return type from 4074 const line_map * to const line_map_macro *. 4075 (linemap_add_macro_token): Likewise for first param. 4076 * line-map.c (linemap_check_files_exited): Strengthen local "map" 4077 from const line_map * to const line_map_ordinary *. 4078 (new_linemap): Introduce local "map_size" and use it when 4079 calculating how large the buffer should be. Rewrite based 4080 on change of info_macro and info_ordinary into distinct types. 4081 (linemap_add): Strengthen locals "map" and "from" from line_map * 4082 to line_map_ordinary *. 4083 (linemap_enter_macro): Strengthen return type from 4084 const line_map * to const line_map_macro *, and local "map" from 4085 line_map * to line_map_macro *. 4086 (linemap_add_macro_token): Strengthen param "map" from 4087 const line_map * to const line_map_macro *. 4088 (linemap_line_start): Strengthen local "map" from line_map * to 4089 line_map_ordinary *. 4090 (linemap_position_for_column): Likewise. 4091 (linemap_position_for_line_and_column): Strengthen first param 4092 from const line_map * to const line_map_ordinary *. 4093 (linemap_position_for_loc_and_offset): Strengthen local "map" from 4094 const line_map * to const line_map_ordinary *. 4095 (linemap_ordinary_map_lookup): Likewise for return type and locals 4096 "cached" and "result". 4097 (linemap_macro_map_lookup): Strengthen return type and locals 4098 "cached" and "result" from const line_map * to 4099 const line_map_macro *. 4100 (linemap_macro_map_loc_to_exp_point): Likewise for param "map". 4101 (linemap_macro_map_loc_to_def_point): Likewise. 4102 (linemap_macro_map_loc_unwind_toward_spelling): Likewise. 4103 (linemap_get_expansion_line): Strengthen local "map" from 4104 const line_map * to const line_map_ordinary *. 4105 (linemap_get_expansion_filename): Likewise. 4106 (linemap_map_get_macro_name): Strengthen param from 4107 const line_map * to const line_map_macro *. 4108 (linemap_location_in_system_header_p): Add call to 4109 linemap_check_ordinary in region guarded by 4110 !linemap_macro_expansion_map_p. Introduce local "macro_map" via 4111 linemap_check_macro in other region, using it in place of "map" 4112 for typesafety. 4113 (first_map_in_common_1): Add calls to linemap_check_macro. 4114 (trace_include): Strengthen param "map" from const line_map * to 4115 const line_map_ordinary *. 4116 (linemap_macro_loc_to_spelling_point): Strengthen final param from 4117 const line_map ** to const line_map_ordinary **. Replace a 4118 C-style cast with a const_cast, and add calls to 4119 linemap_check_macro and linemap_check_ordinary. 4120 (linemap_macro_loc_to_def_point): Likewise. 4121 (linemap_macro_loc_to_exp_point): Likewise. 4122 (linemap_resolve_location): Strengthen final param from 4123 const line_map ** to const line_map_ordinary **. 4124 (linemap_unwind_toward_expansion): Introduce local "macro_map" via 4125 a checked cast and use it in place of *map. 4126 (linemap_unwind_to_first_non_reserved_loc): Strengthen local 4127 "map1" from const line_map * to const line_map_ordinary *. 4128 (linemap_expand_location): Introduce local "ord_map" via a checked 4129 cast and use it in place of map. 4130 (linemap_dump): Make local "map" const. Strengthen local 4131 "includer_map" from line_map * to const line_map_ordinary *. 4132 Introduce locals "ord_map" and "macro_map" via checked casts and 4133 use them in place of "map" for typesafety. 4134 (linemap_dump_location): Strengthen local "map" from 4135 const line_map * to const line_map_ordinary *. 4136 (linemap_get_file_highest_location): Update for elimination of 4137 union. 4138 (linemap_get_statistics): Strengthen local "cur_map" from 4139 line_map * to const line_map_macro *. Update uses of sizeof to 4140 use the appropriate line_map subclasses. 4141 * macro.c (_cpp_warn_if_unused_macro): Add call to 4142 linemap_check_ordinary. 4143 (builtin_macro): Strengthen local "map" from const line_map * to 4144 const line_map_macro *. 4145 (enter_macro_context): Likewise. 4146 (replace_args): Likewise. 4147 (tokens_buff_put_token_to): Likewise for param "map". 4148 (tokens_buff_add_token): Likewise. 4149 4150 2015-05-13 David Malcolm <dmalcolm (a] redhat.com> 4151 4152 * include/line-map.h (source_location): Add a reference to 4153 location-example.txt to the descriptive comment. 4154 * location-example.txt: New file. 4155 4156 2015-05-13 David Malcolm <dmalcolm (a] redhat.com> 4157 4158 * include/line-map.h (MAX_SOURCE_LOCATION): Convert from a macro 4159 to a const source_location. 4160 (RESERVED_LOCATION_COUNT): Likewise. 4161 (linemap_check_ordinary): Convert from a macro to a pair of inline 4162 functions, for const/non-const arguments. 4163 (MAP_START_LOCATION): Likewise. 4164 (ORDINARY_MAP_STARTING_LINE_NUMBER): Likewise. 4165 (ORDINARY_MAP_INCLUDER_FILE_INDEX): Likewise. 4166 (ORDINARY_MAP_IN_SYSTEM_HEADER_P): Likewise. 4167 (ORDINARY_MAP_NUMBER_OF_COLUMN_BITS): Convert from a macro to a 4168 pair of inline functions, for const/non-const arguments, where the 4169 latter is named... 4170 (SET_ORDINARY_MAP_NUMBER_OF_COLUMN_BITS): New function. 4171 (ORDINARY_MAP_FILE_NAME): Convert from a macro to a pair of inline 4172 functions, for const/non-const arguments. 4173 (MACRO_MAP_MACRO): Likewise. 4174 (MACRO_MAP_NUM_MACRO_TOKENS): Likewise. 4175 (MACRO_MAP_LOCATIONS): Likewise. 4176 (MACRO_MAP_EXPANSION_POINT_LOCATION): Likewise. 4177 (LINEMAPS_MAP_INFO): Likewise. 4178 (LINEMAPS_MAPS): Likewise. 4179 (LINEMAPS_ALLOCATED): Likewise. 4180 (LINEMAPS_USED): Likewise. 4181 (LINEMAPS_CACHE): Likewise. 4182 (LINEMAPS_ORDINARY_CACHE): Likewise. 4183 (LINEMAPS_MACRO_CACHE): Likewise. 4184 (LINEMAPS_MAP_AT): Convert from a macro to an inline function. 4185 (LINEMAPS_LAST_MAP): Likewise. 4186 (LINEMAPS_LAST_ALLOCATED_MAP): Likewise. 4187 (LINEMAPS_ORDINARY_MAPS): Likewise. 4188 (LINEMAPS_ORDINARY_MAP_AT): Likewise. 4189 (LINEMAPS_ORDINARY_ALLOCATED): Likewise. 4190 (LINEMAPS_ORDINARY_USED): Likewise. 4191 (LINEMAPS_LAST_ORDINARY_MAP): Likewise. 4192 (LINEMAPS_LAST_ALLOCATED_ORDINARY_MAP): Likewise. 4193 (LINEMAPS_MACRO_MAPS): Likewise. 4194 (LINEMAPS_MACRO_MAP_AT): Likewise. 4195 (LINEMAPS_MACRO_ALLOCATED): Likewise. 4196 (LINEMAPS_MACRO_USED): Likewise. 4197 (LINEMAPS_MACRO_LOWEST_LOCATION): Likewise. 4198 (LINEMAPS_LAST_MACRO_MAP): Likewise. 4199 (LINEMAPS_LAST_ALLOCATED_MACRO_MAP): Likewise. 4200 (IS_ADHOC_LOC): Likewise. 4201 (COMBINE_LOCATION_DATA): Likewise. 4202 (SOURCE_LINE): Likewise. 4203 (SOURCE_COLUMN): Likewise. 4204 (LAST_SOURCE_LINE_LOCATION): Likewise. 4205 (LAST_SOURCE_LINE): Likewise. 4206 (LAST_SOURCE_COLUMN): Likewise. 4207 (LAST_SOURCE_LINE_LOCATION) 4208 (INCLUDED_FROM): Likewise. 4209 (MAIN_FILE_P): Likewise. 4210 (LINEMAP_FILE): Likewise. 4211 (LINEMAP_LINE): Likewise. 4212 (LINEMAP_SYSP): Likewise. 4213 (linemap_location_before_p): Likewise. 4214 * line-map.c (linemap_check_files_exited): Make local "map" const. 4215 (linemap_add): Use SET_ORDINARY_MAP_NUMBER_OF_COLUMN_BITS. 4216 (linemap_line_start): Likewise. 4217 4218 2015-05-13 Michael Haubenwallner <michael.haubenwallner (a] ssi-schaefer.com> 4219 4220 * aclocal.m4: Regenerated with automake-1.11.6. 4221 4222 2015-05-13 David Malcolm <dmalcolm (a] redhat.com> 4223 4224 * include/line-map.h (linemap_assert): Move up within the file to 4225 before all of the map accessor macros. 4226 (linemap_assert_fails): Likewise. 4227 (linemap_check_ordinary): Likewise. 4228 (linemap_macro_expansion_map_p): Likewise. 4229 4230 2015-05-12 David Malcolm <dmalcolm (a] redhat.com> 4231 4232 * directives.c (do_line): Set seen_line_directive on line_table. 4233 (do_linemarker): Likewise. 4234 * include/line-map.h (struct line_maps): Add new field 4235 "seen_line_directive". 4236 4237 2015-05-08 Jason Merrill <jason (a] redhat.com> 4238 4239 * include/cpplib.h: Add CPP_W_CXX11_COMPAT. 4240 (struct cpp_options): Add cpp_warn_cxx11_compat. 4241 * init.c (cpp_create_reader): Initialize it. 4242 * lex.c (lex_string): Add -Wc++11-compat warning. 4243 4244 2015-05-05 David Malcolm <dmalcolm (a] redhat.com> 4245 4246 * pch.c (cpp_valid_state): Fix indentation so that it reflects the 4247 block structure. 4248 4249 2015-05-05 David Malcolm <dmalcolm (a] redhat.com> 4250 4251 * include/line-map.h: Fix comment at the top of the file. 4252 (source_location): Rewrite and expand the comment for this 4253 typedef, adding an ascii-art table to clarify how source_location 4254 values are allocated. 4255 * line-map.c: Fix comment at the top of the file. 4256 4257 2015-04-09 Richard Biener <rguenther (a] suse.de> 4258 4259 PR pch/65550 4260 * files.c (pch_open_file): Allow main and pre-included files 4261 when trying to open a PCH. 4262 4263 2015-04-06 Jakub Jelinek <jakub (a] redhat.com> 4264 4265 PR preprocessor/61977 4266 * lex.c (cpp_peek_token): If peektok is CPP_EOF, back it up 4267 with all tokens peeked by the current function. 4268 4269 2015-04-02 Jakub Jelinek <jakub (a] redhat.com> 4270 4271 PR preprocessor/61977 4272 * lex.c (cpp_peek_token): Temporarily clear pfile->cb.line_change. 4273 4274 2015-03-23 Jakub Jelinek <jakub (a] redhat.com> 4275 4276 PR preprocessor/65238 4277 * internal.h (_cpp_scan_out_logical_line): Add third argument. 4278 * directives.c (prepare_directive_trad): Pass false to it. 4279 * traditional.c (_cpp_read_logical_line_trad, 4280 _cpp_create_trad_definition): Likewise. 4281 (struct fun_macro): Add paramc field. 4282 (fun_like_macro): New function. 4283 (maybe_start_funlike): Handle NODE_BUILTIN macros. Initialize 4284 macro->paramc field. 4285 (save_argument): Use macro->paramc instead of 4286 macro->node->value.macro->paramc. 4287 (push_replacement_text): Formatting fix. 4288 (recursive_macro): Use fun_like_macro helper. 4289 (_cpp_scan_out_logical_line): Likewise. Add BUILTIN_MACRO_ARG 4290 argument. Initialize fmacro.paramc field. Handle builtin 4291 function-like macros. 4292 4293 2015-03-16 Edward Smith-Rowland <3dw4rd (a] verizon.net> 4294 4295 PR c++/64626 4296 * lex.c (lex_number): If a number ends with digit-seps (') skip back 4297 and let lex_string take them. 4298 4299 2015-03-02 Markus Trippelsdorf <markus (a] trippelsdorf.de> 4300 4301 PR target/65261 4302 * lex.c (search_line_fast): Silence ubsan errors. 4303 4304 2015-02-03 <dodji (a] redhat.com> 4305 4306 PR preprocessor/64803 4307 * internal.h (cpp_reader::top_most_macro_node): New data member. 4308 * macro.c (enter_macro_context): Pass the location of the end of 4309 the top-most invocation of the function-like macro, or the 4310 location of the expansion point of the top-most object-like macro. 4311 (cpp_get_token_1): Store the top-most macro node in the new 4312 pfile->top_most_macro_node data member. 4313 (_cpp_pop_context): Clear the new cpp_reader::top_most_macro_node 4314 data member. 4315 4316 2015-01-30 Szabolcs Nagy <szabolcs.nagy (a] arm.com> 4317 4318 * lex.c (search_line_fast): Change __ARM_NEON__ to __ARM_NEON. 4319 4320 2015-01-23 Marek Polacek <polacek (a] redhat.com> 4321 4322 DR#412 4323 PR preprocessor/60570 4324 * directives.c (do_elif): Don't evaluate #elif conditionals 4325 when they don't need to be. 4326 4327 2015-01-16 Jakub Jelinek <jakub (a] redhat.com> 4328 4329 * expr.c (cpp_classify_number): Add N_() around ?: string 4330 literals used in cpp_error_with_line call as format string. 4331 4332 2015-01-05 Jakub Jelinek <jakub (a] redhat.com> 4333 4334 Update copyright years. 4335 4336 2014-12-19 Jakub Jelinek <jakub (a] redhat.com> 4337 4338 PR preprocessor/63831 4339 * directives.c (lex_macro_node): Remove __has_attribute__ handling. 4340 * internal.h (struct spec_node): Remove n__has_attribute__ field. 4341 (struct lexer_state): Remove in__has_attribute__ field. 4342 * macro.c (_cpp_builtin_macro_text): Handle BT_HAS_ATTRIBUTE. 4343 * identifiers.c (_cpp_init_hashtable): Remove __has_attribute__ 4344 handling. 4345 * init.c (builtin_array): Add __has_attribute and __has_cpp_attribute. 4346 (cpp_init_special_builtins): Don't initialize __has_attribute 4347 or __has_cpp_attribute if CLK_ASM or pfile->cb.has_attribute is NULL. 4348 * traditional.c (enum ls): Remove ls_has_attribute, 4349 ls_has_attribute_close. 4350 (_cpp_scan_out_logical_line): Remove __has_attribute__ handling. 4351 * include/cpplib.h (enum cpp_builtin_type): Add BT_HAS_ATTRIBUTE. 4352 * pch.c (cpp_read_state): Remove __has_attribute__ handling. 4353 * expr.c (eval_token): Likewise. 4354 (parse_has_attribute): Removed. 4355 4356 2014-12-11 Uros Bizjak <ubizjak (a] gmail.com> 4357 4358 * directives.c (cpp_define_formatted): Use xvasprintf. 4359 4360 2014-12-05 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 4361 4362 * line-map.c (linemap_position_for_loc_and_offset): Add new 4363 linemap_assert_fails. 4364 4365 2014-12-02 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 4366 4367 * include/line-map.h (linemap_assert_fails): Declare. 4368 * line-map.c (linemap_position_for_loc_and_offset): Use it. 4369 4370 2014-12-02 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 4371 4372 * line-map.c (linemap_add): Fix typo. 4373 (linemap_line_start): Fix whitespace. 4374 4375 2014-11-29 John Schmerge <jbschmerge (a] gmail.com> 4376 4377 PR preprocessor/41698 4378 * charset.c (one_utf8_to_utf16): Do not produce surrogate pairs 4379 for 0xffff. 4380 4381 2014-11-25 Jakub Jelinek <jakub (a] redhat.com> 4382 4383 PR preprocessor/60436 4384 * line-map.c (linemap_line_start): If highest is above 0x60000000 4385 and we are still tracking columns or highest is above 0x70000000, 4386 force add_map. 4387 4388 2014-11-20 Uros Bizjak <ubizjak (a] gmail.com> 4389 4390 PR target/63966 4391 * lex.c [__i386__ || __x86_64__]: Compile special SSE functions 4392 only for (__GNUC__ >= 5 || !defined(__PIC__)). 4393 4394 2014-11-13 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 4395 4396 * include/line-map.h: Include EXPR, so that unused variable warnings 4397 do not occur. 4398 4399 2014-11-11 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 4400 4401 PR fortran/44054 4402 * include/line-map.h (linemap_position_for_loc_and_offset): 4403 Declare. 4404 * line-map.c (linemap_position_for_loc_and_offset): New. 4405 4406 2014-11-11 David Malcolm <dmalcolm (a] redhat.com> 4407 4408 * ChangeLog.jit: New. 4409 4410 2014-11-10 Edward Smith-Rowland <3dw4rd (a] verizon.net> 4411 4412 * include/cpplib.h (cpp_callbacks): Add has_attribute. 4413 * internal.h (lexer_state): Add in__has_attribute__. 4414 * directives.c (lex_macro_node): Prevent use of __has_attribute__ 4415 as a macro. 4416 * expr.c (parse_has_attribute): New function; (eval_token): Look for 4417 __has_attribute__ and route to parse_has_attribute. 4418 * identifiers.c (_cpp_init_hashtable): Initialize n__has_attribute__. 4419 * pch.c (cpp_read_state): Initialize n__has_attribute__. 4420 * traditional.c (enum ls): Add ls_has_attribute, ls_has_attribute_close; 4421 (_cpp_scan_out_logical_line): Attend to __has_attribute__. 4422 4423 2014-11-06 Joseph Myers <joseph (a] codesourcery.com> 4424 4425 * include/cpp-id-data.h (struct cpp_macro): Update comment 4426 regarding parameters. 4427 * include/cpplib.h (struct cpp_macro_arg, struct cpp_identifier): 4428 Add spelling fields. 4429 (struct cpp_token): Update comment on macro_arg. 4430 * internal.h (_cpp_save_parameter): Add extra argument. 4431 (_cpp_spell_ident_ucns): New declaration. 4432 * lex.c (lex_identifier): Add SPELLING argument. Set *SPELLING to 4433 original spelling of identifier. 4434 (_cpp_lex_direct): Update calls to lex_identifier. 4435 (_cpp_spell_ident_ucns): New function, factored out of 4436 cpp_spell_token. 4437 (cpp_spell_token): Adjust FORSTRING argument semantics to return 4438 original spelling of identifiers. Use _cpp_spell_ident_ucns in 4439 !FORSTRING case. 4440 (_cpp_equiv_tokens): Check spellings of identifiers and macro 4441 arguments are identical. 4442 * macro.c (macro_arg_saved_data): New structure. 4443 (paste_tokens): Use original spellings of identifiers from 4444 cpp_spell_token. 4445 (_cpp_save_parameter): Add argument SPELLING. Save both canonical 4446 node and its value. 4447 (parse_params): Update calls to _cpp_save_parameter. 4448 (lex_expansion_token): Save spelling of macro argument tokens. 4449 (_cpp_create_definition): Extract canonical node from saved data. 4450 (cpp_macro_definition): Use UCNs in spelling of macro name. Use 4451 original spellings of macro argument tokens and identifiers. 4452 * traditional.c (scan_parameters): Update call to 4453 _cpp_save_parameter. 4454 4455 2014-11-05 Joseph Myers <joseph (a] codesourcery.com> 4456 4457 PR preprocessor/9449 4458 * init.c (lang_defaults): Enable extended identifiers for C++ and 4459 C99-based standards. 4460 4461 2014-10-22 Alan Modra <amodra (a] gmail.com> 4462 4463 * symtab.c (ht_create): Use obstack_specify_allocation in place of 4464 _obstack_begin. 4465 * files.c (_cpp_init_files): Likewise. 4466 * init.c (cpp_create_reader): Likewise. 4467 * identifiers.c (_cpp_init_hashtable): Likewise. 4468 4469 2014-10-14 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 4470 4471 * include/line-map.h (linemap_location_from_macro_expansion_p): 4472 const struct line_maps * argument. 4473 (linemap_position_for_line_and_column): const struct line_map * 4474 argument. 4475 * line-map.c (linemap_add_macro_token): Use correct argument name 4476 in comment. 4477 (linemap_position_for_line_and_column): const struct line_map * 4478 argument. 4479 (linemap_macro_map_loc_to_def_point): Fix comment. Make static. 4480 (linemap_location_from_macro_expansion_p): const struct line_maps * 4481 argument. 4482 (linemap_resolve_location): Fix argument names in comment. 4483 4484 2014-10-03 Bill Schmidt <wschmidt (a] linux.vnet.ibm.com> 4485 4486 * lex.c (search_line_fast): Add new version to be used for Power8 4487 and later targets when Altivec is enabled. Restrict the existing 4488 Altivec version to big-endian systems so that lvsr is not used on 4489 little endian, where it is deprecated. Remove LE-specific code 4490 from the now-BE-only version. 4491 4492 2014-10-02 Bernd Edlinger <bernd.edlinger (a] hotmail.de> 4493 Jeff Law <law (a] redhat.com> 4494 4495 * charset.c (convert_no_conversion): Reallocate memory with 25% 4496 headroom. 4497 4498 2014-10-01 Edward Smith-Rowland <3dw4rd (a] verizon.net> 4499 4500 Implement SD-6: SG10 Feature Test Recommendations 4501 * internal.h (lexer_state, spec_nodes): Add in__has_include__. 4502 * directives.c: Support __has_include__ builtin. 4503 * expr.c (parse_has_include): New function to parse __has_include__ 4504 builtin; (eval_token()): Use it. 4505 * files.c (_cpp_has_header()): New funtion to look for header; 4506 (open_file_failed()): Not an error to not find a header file for 4507 __has_include__. 4508 * identifiers.c (_cpp_init_hashtable()): Add entry for __has_include__. 4509 * pch.c (cpp_read_state): Lookup __has_include__. 4510 * traditional.c (enum ls, _cpp_scan_out_logical_line()): Walk through 4511 __has_include__ statements. 4512 4513 2014-09-30 Bernd Edlinger <bernd.edlinger (a] hotmail.de> 4514 4515 PR preprocessor/58893 4516 * errors.c (cpp_diagnostic): Fix possible out of bounds access. 4517 * files.c (_cpp_stack_include): Initialize src_loc for IT_CMDLINE. 4518 4519 2014-09-24 Marek Polacek <polacek (a] redhat.com> 4520 4521 PR c/61405 4522 PR c/53874 4523 * include/cpplib.h (enum cpp_ttype): Define CPP_KEYWORD. 4524 4525 2014-09-17 Jan Hubicka <hubicka (a] ucw.cz> 4526 4527 * charset.c (conversion): Rename to ... 4528 (cpp_conversion): ... this one; update. 4529 * files.c (file_hash_entry): Rename to ... 4530 (cpp_file_hash_entry): ... this one ; update. 4531 4532 2014-09-17 Marek Polacek <polacek (a] redhat.com> 4533 4534 PR c/61854 4535 * init.c (struct lang_flags): Remove cplusplus_comments. 4536 (cpp_set_lang): Likewise. 4537 (post_options): Likewise. 4538 * lex.c (_cpp_lex_direct): Disallow C++ style comments in C90/C94. 4539 4540 2014-09-09 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 4541 4542 * include/cpplib.h (struct cpp_options): Declare warn_normalize as 4543 int instead of enum. 4544 4545 2014-09-04 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 4546 4547 * macro.c (replace_args): Use cpp_pedwarning, cpp_warning and 4548 CPP_W flags. 4549 * include/cpplib.h: Add CPP_W_C90_C99_COMPAT and CPP_W_PEDANTIC. 4550 * init.c (cpp_create_reader): Do not init to -1 here. 4551 * expr.c (num_binary_op): Use cpp_pedwarning. 4552 4553 2014-08-29 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 4554 4555 * directives.c (check_eol_1): New. 4556 (check_eol_endif_labels): New. 4557 (check_eol): Call check_eol_1. 4558 (do_else,do_endif): Call check_eol_endif_labels. 4559 4560 2014-08-29 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 4561 4562 * macro.c (warn_of_redefinition): Suppress warnings for builtins 4563 that lack the NODE_WARN flag, unless Wbuiltin-macro-redefined. 4564 (_cpp_create_definition): Use Wbuiltin-macro-redefined for 4565 builtins that lack the NODE_WARN flag. 4566 * directives.c (do_undef): Likewise. 4567 * init.c (cpp_init_special_builtins): Do not change flags 4568 depending on Wbuiltin-macro-redefined. 4569 4570 2014-08-28 Edward Smith-Rowland <3dw4rd (a] verizon.net> 4571 4572 PR cpp/23827 - standard C++ should not have hex float preprocessor 4573 tokens 4574 * libcpp/init.c (lang_flags): Change CXX98 flag for extended numbers 4575 from 1 to 0. 4576 * libcpp/expr.c (cpp_classify_number): Weite error message for improper 4577 use of hex floating literal. 4578 4579 2014-08-23 Edward Smith-Rowland <3dw4rd (a] verizon.net> 4580 4581 * include/cpplib.h (enum c_lang): Add CLK_GNUCXX1Z, CLK_CXX1Z; 4582 Rename CLK_GNUCXX1Y, CLK_CXX1Y to CLK_GNUCXX14, CLK_CXX14; 4583 * init.c (struct lang_flags lang_defaults): Add column for trigraphs; 4584 Add rows for CLK_GNUCXX1Z, CLK_CXX1Z; (cpp_set_lang): Set trigraphs; 4585 (cpp_init_builtins): Set __cplusplus to 201402L for C++14; 4586 Set __cplusplus to 201500L for C++17. 4587 * expr.c (cpp_classify_number): Change C++1y to C++14 in binary 4588 constants error message. 4589 4590 2014-08-20 Marek Polacek <polacek (a] redhat.com> 4591 4592 * include/cpplib.h (cpp_options): Use signed char. 4593 * lex.c (_cpp_lex_direct): Don't warn in C++ mode. 4594 4595 2014-08-19 Marek Polacek <polacek (a] redhat.com> 4596 4597 * lex.c (_cpp_lex_direct): Fix a typo. 4598 4599 2014-08-19 Marek Polacek <polacek (a] redhat.com> 4600 4601 * charset.c (_cpp_valid_ucn): Warn only if -Wc90-c99-compat. 4602 * lex.c (_cpp_lex_direct): Likewise. 4603 * macro.c (replace_args): Likewise. 4604 (parse_params): Likewise. 4605 * include/cpplib.h (cpp_options): Change cpp_warn_c90_c99_compat 4606 to char. 4607 4608 2014-08-10 Marek Polacek <polacek (a] redhat.com> 4609 4610 PR c/51849 4611 * lex.c (_cpp_lex_direct): Warn when -Wc90-c99-compat is in effect. 4612 * charset.c (_cpp_valid_ucn): Likewise. 4613 * include/cpplib.h (cpp_options): Add cpp_warn_c90_c99_compat. 4614 * macro.c (replace_args): Warn when -Wc90-c99-compat is in effect. 4615 (parse_params): Likewise. 4616 4617 2014-07-27 Marek Polacek <polacek (a] redhat.com> 4618 4619 PR c/61861 4620 * macro.c (builtin_macro): Add location parameter. Set 4621 location of builtin macro to the expansion point. 4622 (enter_macro_context): Pass location to builtin_macro. 4623 4624 2014-07-16 Dodji Seketeli <dodji (a] redhat.com> 4625 4626 Support location tracking for built-in macro tokens 4627 * include/line-map.h (line_maps::builtin_location): New data 4628 member. 4629 (line_map_init): Add a new parameter to initialize the new 4630 line_maps::builtin_location data member. 4631 * line-map.c (linemap_init): Initialize the 4632 line_maps::builtin_location data member. 4633 * macro.c (builtin_macro): Create a macro map and track the token 4634 resulting from the expansion of a built-in macro. 4635 4636 2014-07-10 Edward Smith-Rowland <3dw4rd (a] verizon.net> 4637 Jonathan Wakely <jwakely (a] redhat.com> 4638 4639 PR preprocessor/61389 4640 * macro.c (_cpp_arguments_ok, parse_params, create_iso_definition): 4641 Warning messages mention C++11 in c++ mode and C99 in c mode. 4642 * lex.c (lex_identifier_intern, lex_identifier): Ditto 4643 4644 2014-07-09 Edward Smith-Rowland <3dw4rd (a] verizon.net> 4645 4646 PR c++/58155 - -Wliteral-suffix warns about tokens which are skipped 4647 by preprocessor 4648 * lex.c (lex_raw_string ()): Do not warn about invalid suffix 4649 if skipping. (lex_string ()): Ditto. 4650 4651 2014-06-04 Edward Smith-Rowland <3dw4rd (a] verizon.net> 4652 4653 PR c++/61038 4654 * macro.c (stringify_arg (cpp_reader *, macro_arg *)): 4655 Combine user-defined escape logic with the other string and char logic. 4656 4657 2014-05-26 Richard Biener <rguenther (a] suse.de> 4658 4659 * configure.ac: Remove long long and __int64 type checks, 4660 add check for uint64_t and fail if that wasn't found. 4661 * include/cpplib.h (cpp_num_part): Use uint64_t. 4662 * config.in: Regenerate. 4663 * configure: Likewise. 4664 4665 2014-05-21 Marek Polacek <polacek (a] redhat.com> 4666 4667 PR c/61212 4668 * files.c (find_file_in_dir): Add parens around &&. 4669 4670 2014-05-20 Edward Smith-Rowland <3dw4rd (a] verizon.net> 4671 4672 PR c++/61038 4673 * macro.c (stringify_arg (cpp_reader *, macro_arg *)): 4674 Check for user-defined literal strings and user-defined literal chars 4675 to escape necessary characters. 4676 4677 2014-05-20 Richard Biener <rguenther (a] suse.de> 4678 4679 * configure.ac: Copy gcc logic of detecting a 64bit type. 4680 Remove HOST_WIDE_INT define. 4681 * include/cpplib.h: typedef cpp_num_part to a 64bit type, 4682 similar to how hwint.h does it. 4683 * config.in: Regenerate. 4684 * configure: Likewise. 4685 4686 2014-05-09 Joey Ye <joey.ye (a] arm.com> 4687 4688 * files.c (find_file_in_dir): Always try to shorten for DOS 4689 non-system headers. 4690 * init.c (ENABLE_CANONICAL_SYSTEM_HEADERS): Default enabled for DOS. 4691 4692 2014-05-07 Richard Biener <rguenther (a] suse.de> 4693 4694 * configure.ac: Always set need_64bit_hwint to yes. 4695 * configure: Regenerated. 4696 4697 2014-04-22 Rainer Orth <ro (a] CeBiTec.Uni-Bielefeld.DE> 4698 4699 * lex.c: Remove Solaris 9 reference. 4700 4701 2014-02-24 Walter Lee <walt (a] tilera.com> 4702 4703 * configure.ac: Change "tilepro" triplet to "tilepro*". 4704 * configure: Regenerate. 4705 4706 2014-02-19 Jakub Jelinek <jakub (a] redhat.com> 4707 4708 PR preprocessor/58844 4709 * macro.c (enter_macro_context): Only push 4710 macro_real_token_count (macro) tokens rather than 4711 macro->count tokens, regardless of 4712 CPP_OPTION (pfile, track-macro-expansion). 4713 4714 2014-02-07 Jakub Jelinek <jakub (a] redhat.com> 4715 4716 PR preprocessor/56824 4717 * line-map.c (get_combined_adhoc_loc, linemap_get_expansion_line, 4718 linemap_get_expansion_filename, linemap_location_in_system_header_p, 4719 linemap_location_from_macro_expansion_p, 4720 linemap_macro_loc_to_spelling_point, linemap_macro_loc_to_def_point, 4721 linemap_macro_loc_to_exp_point, linemap_expand_location): Fix 4722 formatting. 4723 (linemap_compare_locations): Look through adhoc locations for both 4724 l0 and l1. 4725 4726 2014-01-23 Dodji Seketeli <dodji (a] redhat.com> 4727 4728 PR PR preprocessor/58580 4729 * include/line-map.h (linemap_get_file_highest_location): Declare 4730 new function. 4731 * line-map.c (linemap_get_file_highest_location): Define it. 4732 4733 2014-01-02 Richard Sandiford <rdsandiford (a] googlemail.com> 4734 4735 Update copyright years 4736 4737 2013-12-09 Joseph Myers <joseph (a] codesourcery.com> 4738 4739 PR preprocessor/55715 4740 * expr.c (num_binary_op): Implement subtraction directly rather 4741 than with negation and falling through into addition case. 4742 4743 2013-11-18 Bill Schmidt <wschmidt (a] linux.vnet.ibm.com> 4744 4745 * lex.c (search_line_fast): Correct for little endian. 4746 4747 2013-11-15 Joseph Myers <joseph (a] codesourcery.com> 4748 4749 * ucnid.tab: Add C11 and C11NOSTART data. 4750 * makeucnid.c (digit): Rename enum value to N99. 4751 (C11, N11, all_languages): New enum values. 4752 (NUM_CODE_POINTS, MAX_CODE_POINT): New macros. 4753 (flags, decomp, combining_value): Use NUM_CODE_POINTS as array 4754 size. 4755 (decomp): Use unsigned int as element type. 4756 (all_decomp): New array. 4757 (read_ucnid): Handle C11 and C11NOSTART. Use MAX_CODE_POINT. 4758 (read_table): Use MAX_CODE_POINT. Store all decompositions in 4759 all_decomp. 4760 (read_derived): Use MAX_CODE_POINT. 4761 (write_table): Use NUM_CODE_POINTS. Print N99, C11 and N11 4762 flags. Print whole array variable declaration rather than just 4763 array contents. 4764 (char_id_valid, write_context_switch): New functions. 4765 (main): Call write_context_switch. 4766 * ucnid.h: Regenerate. 4767 * include/cpplib.h (struct cpp_options): Add c11_identifiers. 4768 * init.c (struct lang_flags): Add c11_identifiers. 4769 (cpp_set_lang): Set c11_identifiers option from selected language. 4770 * internal.h (struct normalize_state): Document "previous" as 4771 previous starter character. 4772 (NORMALIZE_STATE_UPDATE_IDNUM): Take character as argument. 4773 * charset.c (DIG): Rename enum value to N99. 4774 (C11, N11): New enum values. 4775 (struct ucnrange): Give name to struct. Use short for flags and 4776 unsigned int for end of range. Include ucnid.h for whole variable 4777 declaration. 4778 (ucn_valid_in_identifier): Allow for characters up to 0x10FFFF. 4779 Allow for C11 in determining valid characters and valid start 4780 characters. Use check_nfc for non-Hangul context-dependent 4781 checks. Only store starter characters in nst->previous. 4782 (_cpp_valid_ucn): Pass new argument to 4783 NORMALIZE_STATE_UPDATE_IDNUM. 4784 * lex.c (lex_identifier): Pass new argument to 4785 NORMALIZE_STATE_UPDATE_IDNUM. Call NORMALIZE_STATE_UPDATE_IDNUM 4786 after initial non-UCN part of identifier. 4787 (lex_number): Pass new argument to NORMALIZE_STATE_UPDATE_IDNUM. 4788 4789 2013-11-15 Joseph Myers <joseph (a] codesourcery.com> 4790 4791 * ucnid.tab: Mark C99 digits as [C99DIG]. 4792 * makeucnid.c (read_ucnid): Handle [C99DIG]. 4793 (read_table): Don't check for digit characters. 4794 * ucnid.h: Regenerate. 4795 4796 2013-11-06 Tobias Burnus <burnus (a] net-b.de> 4797 4798 * macro.c (_cpp_builtin_macro_text): Correct 4799 wording of two warnings. 4800 4801 2013-11-05 Tobias Burnus <burnus (a] net-b.de> 4802 4803 * include/cpplib.h (CPP_W_DATE_TIME): Added. 4804 (cpp_options): Add warn_date_time. 4805 * init.c (cpp_create_reader): Init it. 4806 * macro.c (_cpp_builtin_macro_text): Warn when 4807 __DATE__/__TIME__/__TIMESTAMP__ is used. 4808 4809 2013-10-31 Edward Smith-Rowland <3dw4rd (a] verizon.net> 4810 4811 Implement C++14 digit separators. 4812 * include/cpplib.h (cpp_options): Add digit_separators flag. 4813 * internal.h (DIGIT_SEP(c)): New macro. 4814 * expr.c (cpp_classify_number): Check improper placement of digit sep; 4815 (cpp_interpret_integer): Skip over digit separators. 4816 * init.c (lang_flags): Add digit_separators flag; (lang_defaults): Add 4817 digit separator flags per language; (cpp_set_lang): Set 4818 digit_separators 4819 * lex.c (lex_number): Add digits separator to allowable characters for 4820 C++14. 4821 4822 2013-10-15 David Malcolm <dmalcolm (a] redhat.com> 4823 4824 * Makefile.in (PICFLAG): New. 4825 (ALL_CFLAGS): Add PICFLAG. 4826 (ALL_CXXFLAGS): Likewise. 4827 * configure.ac: Add --enable-host-shared, setting up new 4828 PICFLAG variable. 4829 * configure: Regenerate. 4830 4831 2013-08-07 Richard Earnshaw <rearnsha (a] arm.com> 4832 4833 * configure.ac: Set need_64bit_hwint for all arm targets. 4834 * configure: Regenerated. 4835 4836 2013-07-20 Jakub Jelinek <jakub (a] redhat.com> 4837 4838 PR preprocessor/57620 4839 * lex.c (lex_raw_string): Undo phase1 and phase2 transformations 4840 between R" and final " rather than only in between R"del( and )del". 4841 4842 2013-07-10 Jakub Jelinek <jakub (a] redhat.com> 4843 4844 PR preprocessor/57824 4845 * lex.c (lex_raw_string): Allow reading new-lines if 4846 in_deferred_pragma or if parsing_args and there is still 4847 data in the current buffer. 4848 4849 * include/cpplib.h (cpp_token_val_index): Change parameter type to 4850 const cpp_token *. 4851 * lex.c (cpp_token_val_index): Likewise. 4852 4853 PR preprocessor/57757 4854 * lex.c (cpp_avoid_paste): Avoid pasting CPP_{,W,UTF8}STRING 4855 or CPP_STRING{16,32} with CPP_NAME or SPELL_LITERAL token that 4856 starts if a-zA-Z_. 4857 4858 2013-06-28 Ed Smith-Rowland <3dw4rd (a] verizon.net> 4859 4860 * lex.c (lex_raw_string(), lex_string()): Constrain suffixes treated 4861 as concatenated literal and macro to just the patterns found in 4862 inttypes.h; (is_macro()): New. 4863 4864 2013-06-24 Dehao Chen <dehao (a] google.com> 4865 4866 * files.c (_cpp_stack_include): Fix the highest_location when header 4867 file is guarded by #ifndef and is included twice. 4868 4869 2013-04-28 Jakub Jelinek <jakub (a] redhat.com> 4870 4871 N3472 binary constants 4872 * include/cpplib.h (struct cpp_options): Fix a typo in user_literals 4873 field comment. Add binary_constants field. 4874 * init.c (struct lang_flags): Add binary_constants field. 4875 (lang_defaults): Add bin_cst column to the table. 4876 (cpp_set_lang): Initialize CPP_OPTION (pfile, binary_constants). 4877 * expr.c (cpp_classify_number): Talk about C++11 instead of C++0x 4878 in diagnostics. Accept binary constants if 4879 CPP_OPTION (pfile, binary_constants) even when pedantic. Adjust 4880 pedwarn message. 4881 4882 2013-04-24 Paolo Carlini <paolo.carlini (a] oracle.com> 4883 4884 * include/cpplib.h (enum c_lang): Add CLK_GNUCXX1Y and CLK_CXX1Y. 4885 * init.c (lang_defaults): Add defaults for the latter. 4886 (cpp_init_builtins): Define __cplusplus as 201300L for the latter. 4887 * lex.c (_cpp_lex_direct): Update. 4888 4889 2013-04-03 Sebastian Huber <sebastian.huber (a] embedded-brains.de> 4890 4891 PR target/56771 4892 * configure.ac: Require 64-bit int for arm*-*-rtems*. 4893 * configure: Regenerate. 4894 4895 2013-03-06 Jakub Jelinek <jakub (a] redhat.com> 4896 4897 PR middle-end/56461 4898 * internal.h (struct cpp_buffer): Add to_free field. 4899 (_cpp_pop_file_buffer): Add third argument. 4900 * files.c (_cpp_stack_file): Set buffer->to_free. 4901 (_cpp_pop_file_buffer): Add to_free argument. Free to_free 4902 if non-NULL, and if equal to file->buffer_start, also clear 4903 file->buffer{,_start,_valid}. 4904 * directives.c (_cpp_pop_buffer): Pass buffer->to_free 4905 to _cpp_pop_file_buffer. 4906 4907 2013-03-01 Jakub Jelinek <jakub (a] redhat.com> 4908 4909 PR middle-end/56461 4910 * files.c (_cpp_save_file_entries): Free result at the end. 4911 * pch.c (cpp_string_free): New function. 4912 (cpp_save_state): Use it in htab_create call. 4913 (cpp_write_pch_deps): Free ss->defs. Destroy ss->definedhash. 4914 4915 2013-02-28 Jakub Jelinek <jakub (a] redhat.com> 4916 4917 * files.c (_cpp_find_file): If returning early, before storing 4918 something to *hash_slot and *hash_slot is NULL, call htab_clear_slot 4919 on it. Access *hash_slot using void * type rather than 4920 struct file_hash_entry * to avoid aliasing issues. 4921 4922 * configure.ac: Don't define ENABLE_CHECKING whenever 4923 --enable-checking is seen, instead use similar --enable-checking=yes 4924 vs. --enable-checking=release default as gcc/ subdir has and 4925 define ENABLE_CHECKING if ENABLE_CHECKING is defined in gcc/. 4926 Define ENABLE_VALGRIND_CHECKING if requested. 4927 * lex.c (new_buff): If ENABLE_VALGRIND_CHECKING, put _cpp_buff 4928 struct first in the allocated buffer and result->base after it. 4929 (_cpp_free_buff): If ENABLE_VALGRIND_CHECKING, free buff itself 4930 instead of buff->base. 4931 * config.in: Regenerated. 4932 * configure: Regenerated. 4933 4934 2013-02-13 Ed Smith-Rowland <3dw4rd (a] verizon.net> 4935 4936 PR c++/55582 4937 * lex.c (lex_raw_string): Allow string literal with suffix 4938 beginning with 's' to be parsed as a C++11 user-defined literal. 4939 4940 2013-01-14 Richard Sandiford <rdsandiford (a] googlemail.com> 4941 4942 Update copyright years. 4943 4944 2013-01-04 Paolo Carlini <paolo.carlini (a] oracle.com> 4945 4946 PR c++/54526 (again) 4947 * lex.c (_cpp_lex_direct): In C++11 mode, implement 2.5 p3, bullet 2. 4948 4949 2013-01-03 Marc Glisse <marc.glisse (a] inria.fr> 4950 4951 PR bootstrap/50177 4952 * line-map.c (get_combined_adhoc_loc): Cast from extern "C" type. 4953 (new_linemap): Likewise. 4954 (linemap_enter_macro): Likewise. 4955 4956 2012-12-03 Jakub Jelinek <jakub (a] redhat.com> 4957 4958 PR bootstrap/55380 4959 PR other/54691 4960 * files.c (read_file_guts): Allocate extra 16 bytes instead of 4961 1 byte at the end of buf. Pass size + 16 instead of size 4962 to _cpp_convert_input. 4963 * charset.c (_cpp_convert_input): Reallocate if there aren't 4964 at least 16 bytes beyond to.len in the buffer. Clear 16 bytes 4965 at to.text + to.len. 4966 4967 2012-11-21 Steve Ellcey <sellcey (a] mips.com> 4968 4969 PR pch/55399 4970 * files.c (pch_open_file): Fix check for implicit_preinclude. 4971 4972 2012-11-16 Simon Baldwin <simonb (a] google.com> 4973 4974 * include/cpplib.h (struct cpp_options): Add canonical_system_headers. 4975 * files.c (find_file_in_dir): Call maybe_shorter_path() only if 4976 canonical_system_headers is set. 4977 * init.c (cpp_create_reader): Initialize canonical_system_headers. 4978 * configure.ac: Add new --enable-canonical-system-headers. 4979 * configure: Regenerate. 4980 * config.in: Regenerate. 4981 4982 2012-11-09 Ed Smith-Rowland <3dw4rd (a] verizon.net> 4983 4984 PR c++/54413 4985 * include/cpplib.h (cpp_interpret_float_suffix): Add cpp_reader* arg. 4986 (cpp_interpret_int_suffix): Add cpp_reader* arg. 4987 * init.c (cpp_create_reader): Iitialize new flags. 4988 * expr.c (interpret_float_suffix): Use new flags. 4989 (cpp_interpret_float_suffix): Add cpp_reader* arg. 4990 (interpret_int_suffix): Use new flags. 4991 (cpp_interpret_int_suffix): Add cpp_reader* arg. 4992 (cpp_classify_number): Adjust calls to interpret_x_suffix. 4993 4994 2012-10-23 Ian Bolton <ian.bolton (a] arm.com> 4995 Jim MacArthur <jim.macarthur (a] arm.com> 4996 Marcus Shawcroft <marcus.shawcroft (a] arm.com> 4997 Nigel Stephens <nigel.stephens (a] arm.com> 4998 Ramana Radhakrishnan <ramana.radhakrishnan (a] arm.com> 4999 Richard Earnshaw <rearnsha (a] arm.com> 5000 Sofiane Naci <sofiane.naci (a] arm.com> 5001 Stephen Thomas <stephen.thomas (a] arm.com> 5002 Tejas Belagod <tejas.belagod (a] arm.com> 5003 Yufeng Zhang <yufeng.zhang (a] arm.com> 5004 5005 * configure.ac: Enable AArch64. 5006 * configure: Regenerate. 5007 5008 2012-10-23 Joseph Myers <joseph (a] codesourcery.com> 5009 5010 * files.c (struct _cpp_file): Add implicit_preinclude. 5011 (pch_open_file): Allow a previously opened implicitly included 5012 file. 5013 (_cpp_find_file): Add implicit_preinclude argument. Free file and 5014 do not call open_file_failed if implicit_preinclude. Store 5015 implicit_preinclude value. 5016 (_cpp_stack_include, _cpp_fake_include, _cpp_compare_file_date): 5017 Update calls to _cpp_find_file. 5018 (_cpp_stack_include): Handle IT_DEFAULT. 5019 (cpp_push_default_include): New. 5020 * include/cpplib.h (cpp_push_default_include): Declare. 5021 * init.c (cpp_read_main_file): Update call to _cpp_find_file. 5022 * internal.h (enum include_type): Add IT_DEFAULT. 5023 (_cpp_find_file): Update prototype. 5024 5025 2012-10-15 Tobias Burnus <burnus (a] net-b.de> 5026 5027 * files.c (read_file_guts, _cpp_save_file_entries): Free memory 5028 before returning. 5029 * lex.c (warn_about_normalization): Ditto. 5030 * mkdeps.c (deps_save): Ditto. 5031 * pch.c (cpp_valid_state): Ditto. 5032 5033 2012-10-04 Florian Weimer <fweimer (a] redhat.com> 5034 5035 * directives.c (do_pragma_warning_or_error): New. 5036 (do_pragma_warning): New. 5037 (do_pragma_error): New. 5038 (_cpp_init_internal_pragmas): Register new pragmas. 5039 5040 2012-09-25 Dehao Chen <dehao (a] google.com> 5041 5042 PR middle-end/54704 5043 * line-map.c (location_adhoc_data_hash): Fix the hash function. 5044 5045 2012-09-25 Dehao Chen <dehao (a] google.com> 5046 5047 PR middle-end/54645 5048 * include/line-map.h (location_adhoc_data): Move location_adhoc_data 5049 into GC. 5050 (location_adhoc_data_map): Likewise. 5051 (line_maps): Likewise. 5052 (rebuild_location_adhoc_htab): New Function. 5053 * line-map.c (+rebuild_location_adhoc_htab): new Funcion. 5054 (get_combined_adhoc_loc): Move location_adhoc_data into GC. 5055 (location_adhoc_data_fini): Likewise. 5056 (linemap_init): Likewise. 5057 (location_adhoc_data_init): Remove Function. 5058 5059 2012-09-19 Dehao Chen <dehao (a] google.com> 5060 5061 * include/line-map.h (MAX_SOURCE_LOCATION): New value. 5062 (location_adhoc_data_fini): New. 5063 (get_combined_adhoc_loc): New. 5064 (get_data_from_adhoc_loc): New. 5065 (get_location_from_adhoc_loc): New. 5066 (location_adhoc_data_map): New. 5067 (COMBINE_LOCATION_DATA): New. 5068 (IS_ADHOC_LOC): New. 5069 (expanded_location): New field. 5070 (line_maps): New field. 5071 * line-map.c (location_adhoc_data): New. 5072 (location_adhoc_data_hash): New. 5073 (location_adhoc_data_eq): New. 5074 (location_adhoc_data_update): New. 5075 (get_combined_adhoc_loc): New. 5076 (get_data_from_adhoc_loc): New. 5077 (get_location_from_adhoc_loc): New. 5078 (location_adhoc_data_init): New. 5079 (location_adhoc_data_fini): New. 5080 (linemap_init): Initialize location_adhoc_data. 5081 (linemap_lookup): Change to use new location. 5082 (linemap_ordinary_map_lookup): Likewise. 5083 (linemap_macro_map_lookup): Likewise. 5084 (linemap_macro_map_loc_to_def_point): Likewise. 5085 (linemap_macro_map_loc_unwind_toward_spel): Likewise. 5086 (linemap_get_expansion_line): Likewise. 5087 (linemap_get_expansion_filename): Likewise. 5088 (linemap_location_in_system_header_p): Likewise. 5089 (linemap_location_from_macro_expansion_p): Likewise. 5090 (linemap_macro_loc_to_spelling_point): Likewise. 5091 (linemap_macro_loc_to_def_point): Likewise. 5092 (linemap_macro_loc_to_exp_point): Likewise. 5093 (linemap_resolve_location): Likewise. 5094 (linemap_unwind_toward_expansion): Likewise. 5095 (linemap_unwind_to_first_non_reserved_loc): Likewise. 5096 (linemap_expand_location): Likewise. 5097 (linemap_dump_location): Likewise. 5098 (linemap_line_start): Likewise. 5099 5100 2012-05-25 Dodji Seketeli <dodji (a] redhat.com> 5101 5102 PR preprocessor/53469 5103 * directives.c (do_pragma): Use the virtual location for the 5104 pragma token, instead of its spelling location. 5105 5106 2012-08-14 Diego Novillo <dnovillo (a] google.com> 5107 5108 Merge from cxx-conversion branch. Configury. 5109 5110 * Makefile.in: Remove all handlers of ENABLE_BUILD_WITH_CXX. 5111 * configure.ac: Likewise. 5112 * configure: Regenerate. 5113 5114 2012-08-14 Lawrence Crowl <crowl (a] google.com> 5115 5116 Merge from cxx-conversion branch. New C++ hash table. 5117 5118 * include/symtab.h (typedef struct ht hash_table): Change the typedef 5119 name to cpp_hash_table. Update all users of the typedef. 5120 5121 2012-07-30 Laurynas Biveinis <laurynas.biveinis (a] gmail.com> 5122 5123 * include/line-map.h (line_map_macro): Use the "atomic" GTY option 5124 for the macro_locations field. 5125 5126 2011-06-19 Uros Bizjak <ubizjak (a] gmail.com> 5127 5128 * lex.c (search_line_sse42): Use __builtin_ia32_loaddqu and 5129 __builtin_ia32_pcmpestri128 instead of asm. 5130 5131 2012-06-04 Dimitrios Apostolou <jimis (a] gmx.net> 5132 5133 * line-map.c (linemap_enter_macro): Don't zero max_column_hint in 5134 every macro. This improves performance by reducing the number of 5135 reallocations when track-macro-expansion is on. 5136 5137 2012-06-04 Dodji Seketeli <dodji (a] redhat.com> 5138 5139 PR preprocessor/53463 5140 * line-map.c (linemap_location_in_system_header_p): For built-in 5141 macro tokens, check the first expansion point location that is not 5142 for a token coming from a built-in macro. 5143 5144 2012-05-29 Joseph Myers <joseph (a] codesourcery.com> 5145 5146 * directives.c: Fix typos. 5147 * include/line-map.h: Fix typos. 5148 * line-map.c: Fix typos. 5149 * macro.c: Fix typos. 5150 5151 2012-05-25 Dodji Seketeli <dodji (a] redhat.com> 5152 5153 PR bootstrap/53459 5154 * lex.c (search_line_fast): Avoid unused local typedefs to simulate 5155 a static assertion. 5156 5157 2012-05-29 Dodji Seketeli <dodji (a] redhat.com> 5158 5159 PR preprocessor/53229 5160 * internal.h (cpp_reader::set_invocation_location): Remove. 5161 (cpp_reader::about_to_expand_macro_p): New member flag. 5162 * directives.c (do_pragma): Remove Kludge as 5163 pfile->set_invocation_location is no more. 5164 * macro.c (cpp_get_token_1): Do away with the use of 5165 cpp_reader::set_invocation_location. Just collect the macro 5166 expansion point when we are about to expand the top-most macro. 5167 Do not override cpp_reader::about_to_expand_macro_p. 5168 This fixes gcc.dg/cpp/paste12.c by making get_token_no_padding 5169 properly handle locations of expansion points. 5170 (cpp_get_token_with_location): Adjust, as 5171 cpp_reader::set_invocation_location is no more. 5172 (paste_tokens): Take a virtual location parameter for 5173 the LHS of the pasting operator. Use it in diagnostics. Update 5174 comments. 5175 (paste_all_tokens): Tighten the assert. Propagate the location of 5176 the expansion point when no virtual locations are available. 5177 Pass the virtual location to paste_tokens. 5178 (in_macro_expansion_p): New static function. 5179 (enter_macro_context): Set the cpp_reader::about_to_expand_macro_p 5180 flag until we really start expanding the macro. 5181 5182 2012-05-16 Dodji Seketeli <dodji (a] redhat.com> 5183 5184 PR preprocessor/7263 5185 * include/cpplib.h (cpp_classify_number): Take a location 5186 parameter. 5187 * expr.c (SYNTAX_ERROR_AT, SYNTAX_ERROR2_AT): New diagnostic 5188 macros that take a location parameter. 5189 (cpp_classify_number): Take a (virtual) location parameter. Use 5190 it for diagnostics. Adjust comments. 5191 (eval_token): Take a location parameter. Pass it to 5192 cpp_classify_number and to diagnostic routines. 5193 (_cpp_parse_expr): Use virtual locations of tokens when parsing 5194 expressions. Pass a virtual location to eval_token and to 5195 diagnostic routines. 5196 5197 2012-05-10 Tristan Gingold <gingold (a] adacore.com> 5198 5199 * expr.c (interpret_float_suffix): Add a guard. 5200 5201 2012-05-02 Dodji Seketeli <dodji (a] redhat.com> 5202 5203 Properly initialize cpp_context in destringize_and_run 5204 * directives.c (destringize_and_run): Properly initialize the new 5205 context. 5206 * macro.c (_cpp_pop_context): Assert that we shouldn't try to pop 5207 the initial base context, which has the same life time as the 5208 current instance of cpp_file. 5209 5210 2012-04-30 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 5211 Dodji Seketeli <dodji (a] seketeli.org> 5212 5213 PR c++/52974 5214 * libcpp/files.c (maybe_shorter_path): New. 5215 (find_file_in_dir): Use it. 5216 5217 2012-04-30 Dodji Seketeli <dodji (a] redhat.com> 5218 5219 Switch -ftrack-macro-expansion=2 on by default. 5220 * init.c (cpp_create_reader): Switch -ftrack-macro-expansion=2 on 5221 by default. Add comments. 5222 5223 Strip "<built-in>" loc from displayed expansion context 5224 * include/line-map.h (linemap_unwind_toward_expansion): Fix typo 5225 in comment. 5226 (linemap_unwind_to_first_non_reserved_loc): Declare new function. 5227 * line-map.c (linemap_unwind_to_first_non_reserved_loc): Define 5228 new function. 5229 5230 Fix expansion point loc for macro-like tokens 5231 * macro.c (macro_of_context): New static function. 5232 (_cpp_push_token_context, push_extended_tokens_context): If the 5233 macro argument is NULL, it means we are continuing the expansion 5234 of the current macro, if any. Update comments. 5235 (_cpp_pop_context): Re-enable expansion of the macro only when we 5236 are really out of the context of the current expansion. 5237 5238 Fix token pasting with -ftrack-macro-expansion 5239 * macro.c (paste_all_tokens): Put the token resulting from pasting 5240 into an extended token context with -ftrack-macro-location is in 5241 effect. 5242 5243 Fix cpp_sys_macro_p with -ftrack-macro-expansion 5244 * macro.c (cpp_sys_macro_p): Support -ftrack-macro-expansion. 5245 5246 2012-04-29 Dodji Seketeli <dodji (a] redhat.com> 5247 5248 * lex.c (lex_raw_string): Change C++ style comments into C style 5249 comments. 5250 (lex_string): Likewise. 5251 5252 2012-04-27 Ollie Wild <aaw (a] google.com> 5253 5254 * include/cpplib.h (struct cpp_options): Add new field, 5255 warn_literal_suffix. 5256 (CPP_W_LITERAL_SUFFIX): New enum. 5257 * init.c (cpp_create_reader): Default initialization of 5258 warn_literal_suffix. 5259 * lex.c (lex_raw_string): Treat user-defined literals which don't 5260 begin with '_' as separate tokens and produce a warning. 5261 (lex_string): Ditto. 5262 5263 2012-04-26 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 5264 5265 * line-map.c (linemap_resolve_location): Synchronize comments with 5266 those in line-map.h. 5267 * include/line-map.h (linemap_resolve_location): Fix spelling in 5268 comment. 5269 5270 2012-03-22 Richard Earnshaw <rearnsha (a] arm.com> 5271 5272 * lex.c (search_line_fast): Provide Neon-optimized version for ARM. 5273 5274 2012-03-14 Rainer Orth <ro (a] CeBiTec.Uni-Bielefeld.DE> 5275 5276 * lex.c: Remove Solaris 8 reference. 5277 5278 2012-02-14 Walter Lee <walt (a] tilera.com> 5279 5280 * configure.ac: Require 64-bit hwint for tilegx and tilepro. 5281 * configure: Regenerate. 5282 5283 2012-01-09 Richard Guenther <rguenther (a] suse.de> 5284 5285 * macro.c (_cpp_builtin_macro_text): Remove unused variable map. 5286 5287 2012-01-09 Gary Funck <gary (a] intrepid.com> 5288 5289 PR preprocessor/33919 5290 * files.c (_cpp_get_file_name): New. Implement file name 5291 access function. 5292 * internal.h (_cpp_get_file_name): New prototype. 5293 * macro.c (_cpp_builtin_macro_text): Call _cpp_get_file_name() 5294 to use pfile->main_file in lieu of traversing INCLUDED_FROM chain. 5295 5296 2012-01-03 Olivier Hainque <hainque (a] adacore.com> 5297 5298 * system.h: Prior to #define, #undef fopen and freopen unconditionally. 5299 5300 2011-12-20 Joseph Myers <joseph (a] codesourcery.com> 5301 5302 * include/cpplib.h (CLK_GNUC1X): Change to CLK_GNUC11. 5303 (CLK_STDC1X): Change to CLK_STDC11. 5304 * init.c (lang_defaults): Update comments. 5305 (cpp_init_builtins): Update language tests. Use 201112L for C11 5306 __STDC_VERSION__. 5307 5308 2011-12-20 Andreas Schwab <schwab (a] linux-m68k.org> 5309 5310 * configure: Regenerate. 5311 5312 2011-12-19 Andreas Schwab <schwab (a] linux-m68k.org> 5313 5314 * configure: Regenerate. 5315 5316 2011-12-07 Jakub Jelinek <jakub (a] redhat.com> 5317 5318 PR bootstrap/50237 5319 * internal.h (_cpp_init_lexer): New prototype. 5320 * init.c (init_library): Call it. 5321 * lex.c (init_vectorized_lexer): Remove constructor attribute, 5322 add inline keyword. 5323 (HAVE_init_vectorized_lexer): Define. 5324 (_cpp_init_lexer): New function. 5325 5326 2011-12-03 Dodji Seketeli <dodji (a] redhat.com> 5327 5328 * macro.c (tokens_buff_remove_last_token) 5329 (tokens_buff_put_token_to): Add an 'inline' function specifier to 5330 the prototype. 5331 5332 2011-11-22 Diego Novillo <dnovillo (a] google.com> 5333 5334 * include/line-map.h (linemap_dump): Declare. 5335 (line_table_dump): Declare. 5336 * line-map.c (linemap_dump): New. 5337 (line_table_dump): New. 5338 5339 2011-11-21 Ed Smith-Rowland <3dw4rd (a] verizon.net> 5340 5341 PR c++/50958 5342 * expr.c (cpp_userdef_char_remove_type): Fix typo. 5343 5344 2011-11-03 Michael Matz <matz (a] suse.de> 5345 5346 PR bootstrap/50857 5347 * configure.ac: Check for -fno-exceptions -fno-rtti. 5348 * configure: Regenerate. 5349 * Makefile.in (NOEXCEPTION_FLAGS): New flag. 5350 (ALL_CXXFLAGS): Use it. 5351 5352 2011-11-02 Paolo Carlini <paolo.carlini (a] oracle.com> 5353 5354 * internal.h (uxstrdup, ustrchr): Return const unsigned char *. 5355 5356 2011-11-02 Jason Merrill <jason (a] redhat.com> 5357 5358 PR c++/50810 5359 * configure.ac: Add -Wno-narrowing to warning options. 5360 5361 2011-10-31 Jason Merrill <jason (a] redhat.com> 5362 5363 PR libstdc++/1773 5364 * init.c (cpp_init_builtins): Set __cplusplus for C++11. 5365 5366 PR c++/50920 5367 * include/cpplib.h (enum c_lang): Rename CLK_CXX0X to CLK_CXX11, 5368 CLK_GNUCXX0X to CLK_GNUCXX11. 5369 5370 2011-10-26 Ed Smith-Rowland <3dw4rd (a] verizon.net> 5371 5372 Implement C++11 user-defined literals. 5373 * expr.c: (cpp_interpret_float_suffix, cpp_interpret_int_suffix, 5374 cpp_userdef_string_remove_type, cpp_userdef_string_add_type, 5375 cpp_userdef_char_remove_type, cpp_userdef_char_add_type, 5376 cpp_userdef_string_p, cpp_userdef_char_p, cpp_get_userdef_suffix): New. 5377 (cpp_classify_number): Classify unrecognized tokens as user-defined 5378 literals. 5379 * include/cpplib.h: Add new tokens for user-defined literals. 5380 * init.c: Add new preprocessor flag (cxx11). 5381 * lex.c: (lex_string, lex_raw_string): Handle user-defined literals 5382 including concatenation and promotion with suffixes. 5383 5384 2011-10-24 Dodji Seketeli <dodji (a] redhat.com> 5385 5386 * line-map.c (linemap_macro_map_lookup): Fix logic. 5387 5388 2011-10-24 Dodji Seketeli <dodji (a] redhat.com> 5389 5390 * include/line-map.h (linemap_expand_location): Take a line table 5391 parameter. Update comment. 5392 (linemap_resolve_location): Update comment. 5393 (linemap_expand_location_full): Remove. 5394 * line-map.c (linemap_resolve_location): Handle reserved 5395 locations; return a NULL map in those cases. 5396 (linemap_expand_location): If location is reserved, return a 5397 zeroed expanded location. Update comment. Take a line table to 5398 assert that the function takes non-virtual locations only. 5399 (linemap_expand_location_full): remove. 5400 (linemap_dump_location): Handle the fact that 5401 linemap_resolve_location can return NULL line maps when the 5402 location resolves to a reserved location. 5403 5404 * line-map.c (linemap_macro_map_lookup): Fix logic. 5405 5406 2011-10-22 Dodji Seketeli <dodji (a] redhat.com> 5407 5408 PR bootstrap/50778 5409 * include/internal.h (_cpp_remaining_tokens_num_in_context): Take the 5410 context to act upon. 5411 * lex.c (_cpp_remaining_tokens_num_in_context): Likewise. Update 5412 comment. 5413 (cpp_token_from_context_at): Likewise. 5414 (cpp_peek_token): Use the context to peek tokens from. 5415 5416 2011-10-20 Dodji Seketeli <dodji (a] redhat.com> 5417 5418 PR bootstrap/50801 5419 * lex.c (_cpp_remaining_tokens_num_in_context): Fix computation of 5420 number of tokens. 5421 5422 2011-10-18 Dodji Seketeli <dodji (a] redhat.com> 5423 5424 PR bootstrap/50760 5425 * include/line-map.h (struct linemap_stats): Change the type of 5426 the members from size_t to long. 5427 * macro.c (macro_arg_token_iter_init): Unconditionally initialize 5428 iter->location_ptr. 5429 5430 2011-10-17 Dodji Seketeli <dodji (a] redhat.com> 5431 5432 * line-map.c (linemap_macro_map_loc_to_exp_point): Avoid setting a 5433 variable without using it if ENABLE_CHECKING is not defined. Mark 5434 the LOCATION parameter as being unused. 5435 5436 2011-10-15 Tom Tromey <tromey (a] redhat.com> 5437 Dodji Seketeli <dodji (a] redhat.com> 5438 5439 * include/line-map.h (struct line_maps::alloced_size_for_request): 5440 New member. 5441 * line-map.c (new_linemap): Use set->alloced_size_for_request to 5442 get the actual allocated size of line maps. 5443 5444 2011-10-15 Tom Tromey <tromey (a] redhat.com> 5445 Dodji Seketeli <dodji (a] redhat.com> 5446 5447 * line-map.h (struct linemap_stats): Declare new struct. 5448 (linemap_get_statistics): Declare ... 5449 * line-map.c (linemap_get_statistics): ... new function. 5450 * macro.c (num_expanded_macros_counter, num_macro_tokens_counter): 5451 Declare new counters. 5452 (enter_macro_context, replace_args): Update 5453 num_macro_tokens_counter. 5454 (cpp_get_token_1): Update num_expanded_macros_counter. 5455 5456 2011-10-15 Tom Tromey <tromey (a] redhat.com> 5457 Dodji Seketeli <dodji (a] redhat.com> 5458 5459 * include/cpplib.h (struct cpp_options)<debug>: New struct member. 5460 * include/line-map.h (linemap_dump_location): Declare ... 5461 * line-map.c (linemap_dump_location): ... new function. 5462 5463 2011-10-15 Tom Tromey <tromey (a] redhat.com> 5464 Dodji Seketeli <dodji (a] redhat.com> 5465 5466 * include/cpplib.h (struct cpp_options)<track_macro_expansion>: 5467 New option. 5468 * internal.h (struct macro_context): New struct. 5469 (enum context_tokens_kind): New enum. 5470 (struct cpp_context)<tokens_kind>: New member of type enum 5471 context_tokens_kind. 5472 (struct cpp_context)<macro>: Remove this. Replace it with an enum 5473 of macro and macro_context. 5474 (struct cpp_context)<direct_p>: Remove. 5475 (_cpp_remaining_tokens_num_in_context): Declare new function. 5476 * directives.c (destringize_and_run): Adjust. 5477 * lex.c (_cpp_remaining_tokens_num_in_context) 5478 (_cpp_token_from_context_at): Define new functions 5479 (cpp_peek_token): Use them. 5480 * init.c (cpp_create_reader): Initialize the base context to zero. 5481 (_cpp_token_from_context_at): Define new static function. 5482 (cpp_peek_token): Use new _cpp_remaining_tokens_num_in_context and 5483 _cpp_token_from_context_at. 5484 * macro.c (struct macro_arg)<virt_locs, expanded_virt_locs>: New 5485 members. 5486 (enum macro_arg_token_kind): New enum. 5487 (struct macro_arg_token_iter): New struct. 5488 (maybe_adjust_loc_for_trad_cpp, push_extended_tokens_context) 5489 (alloc_expanded_arg_mem, ensure_expanded_arg_room) 5490 (delete_macro_args, set_arg_token, get_arg_token_location) 5491 (arg_token_ptr_at, macro_arg_token_iter_init) 5492 (macro_arg_token_iter_get_token) 5493 (macro_arg_token_iter_get_location, macro_arg_token_iter_forward) 5494 (expanded_token_index, tokens_buff_new, tokens_buff_count) 5495 (tokens_buff_last_token_ptr, tokens_buff_put_token_to) 5496 (tokens_buff_add_token, tokens_buff_remove_last_token) 5497 (reached_end_of_context, consume_next_token_from_context): New 5498 static functions. 5499 (cpp_get_token_1): New static function. Split and extended from 5500 cpp_get_token. Use reached_end_of_context and 5501 consume_next_token_from_context. Unify its return point. Move 5502 the location tweaking from cpp_get_token_with_location in here. 5503 (cpp_get_token): Use cpp_get_token_1 5504 (stringify_arg): Use the new arg_token_at. 5505 (paste_all_tokens): Support tokens coming from extended tokens 5506 contexts. 5507 (collect_args): Return the number of collected arguments, by 5508 parameter. Store virtual locations of tokens that constitute the 5509 collected args. 5510 (funlike_invocation_p): Return the number of collected arguments, 5511 by parameter. 5512 (enter_macro_context): Add a parameter for macro expansion point. 5513 Pass it to replace_args and to the "used" cpp callback. Get the 5514 number of function-like macro arguments from funlike_invocation_p, 5515 pass it to the new delete_macro_args to free the memory used by 5516 macro args. When -ftrack-macro-expansion is in effect, for macros 5517 that have no arguments, create a macro map for the macro expansion 5518 and use it to allocate proper virtual locations for tokens 5519 resulting from the expansion. Push an extended tokens context 5520 containing the tokens resulting from macro expansion and their 5521 virtual locations. 5522 (replace_args): Rename the different variables named 'count' into 5523 variables with more meaningful names. Create a macro map; 5524 allocate virtual locations of tokens resulting from this 5525 expansion. Use macro_arg_token_iter to iterate over tokens of a 5526 given macro. Handle the case of the argument of 5527 -ftrack-macro-expansion being < 2. Don't free macro arguments 5528 memory resulting from expand_arg here, as these are freed by the 5529 caller of replace_arg using delete_macro_args now. Push extended 5530 token context. 5531 (next_context, push_ptoken_context, _cpp_push_token_context) 5532 (_cpp_push_text_context): Properly initialize the context. 5533 (expand_arg): Use the new alloc_expanded_arg_mem, 5534 push_extended_tokens_context, cpp_get_token_1, and set_arg_token. 5535 (_cpp_pop_context): Really free the memory held by the context. 5536 Handle freeing memory used by extended tokens contexts. 5537 (cpp_get_token_with_location): Use cpp_get_token_1. 5538 (cpp_sys_macro_p): Adjust. 5539 (_cpp_backup_tokens): Support the new kinds of token contexts. 5540 * traditional.c (recursive_macro): Adjust. 5541 5542 2011-10-15 Tom Tromey <tromey@redhat> 5543 Dodji Seketeli <dodji (a] redhat.com> 5544 5545 * include/line-map.h (enum lc_reason)<LC_ENTER_MACRO>: New enum 5546 member. 5547 (MAX_SOURCE_LOCATION): New constant. 5548 (struct line_map_ordinary, struct line_map_macro): New structs. 5549 (struct line_map): Turn this into a union of the two above. Add 5550 comments. 5551 (struct maps_info): New struct. 5552 (struct line_maps)<info_ordinary, info_macro>: Two new fields. 5553 These now carry the map information that was previously scattered 5554 in struct line_maps. 5555 (struct map_info::allocated): Fix comment. 5556 (MAP_START_LOCATION, ORDINARY_MAP_FILE_NAME) 5557 (ORDINARY_MAP_STARTING_LINE_NUMBER) 5558 (ORDINARY_MAP_INCLUDER_FILE_INDEX) 5559 (ORDINARY_MAP_IN_SYSTEM_HEADER_P) 5560 (ORDINARY_MAP_NUMBER_OF_COLUMN_BITS, MACRO_MAP_MACRO) 5561 (MACRO_MAP_NUM_MACRO_TOKENS MACRO_MAP_LOCATIONS) 5562 (MACRO_MAP_EXPANSION_POINT_LOCATION) 5563 (LOCATION_POSSIBLY_IN_MACRO_MAP_P, LINEMAPS_MAP_INFO) 5564 (LINEMAPS_MAPS, LINEMAPS_ALLOCATE, LINEMAPS_USED, LINEMAPS_CACHE) 5565 (LINEMAPS_LAST_MAP, LINEMAPS_LAST_ALLOCATED_MAP) 5566 (LINEMAPS_ORDINARY_MAPS, LINEMAPS_ORDINARY_ALLOCATED) 5567 (LINEMAPS_ORDINARY_USED, LINEMAPS_ORDINARY_CACHE) 5568 (LINEMAPS_LAST_ORDINARY_MAP, LINEMAPS_LAST_ALLOCATED_ORDINARY_MAP) 5569 (LINEMAPS_MACRO_MAPS, LINEMAPS_MACRO_ALLOCATED) 5570 (LINEMAPS_MACRO_USED, LINEMAPS_MACRO_CACHE) 5571 (LINEMAPS_LAST_MACRO_MAP, LINEMAPS_LAST_ALLOCATED_MACRO_MAP) 5572 (LINEMAPS_MAP_AT, LINEMAPS_ORDINARY_MAP_AT) 5573 (LINEMAPS_MACRO_MAP_AT): New accessors for ordinary and macro map 5574 information. 5575 (linemap_check_ordinary, linemap_assert) 5576 (linemap_location_before_p): New macros. 5577 (linemap_position_for_line_and_column) 5578 (linemap_tracks_macro_expansion_locs_p, linemap_add_macro_token) 5579 (linemap_macro_expansion_map_p) 5580 (linemap_macro_map_loc_to_def_point) 5581 (linemap_macro_map_loc_unwind_once) 5582 (linemap_macro_map_loc_to_exp_point, linemap_step_out_once) 5583 (linemap_get_source_line linemap_get_source_column) 5584 (linemap_map_get_macro_name, linemap_get_file_path) 5585 (linemap_location_in_system_header_p) 5586 (linemap_location_from_macro_expansion_p): Declare new functions. 5587 (SOURCE_LINE, SOURCE_COLUMN, LAST_SOURCE_LINE_LOCATION) 5588 (LINEMAP_FILE, LINEMAP_LINE, LINEMAP_SYSP): Assert that this 5589 accessors act on ordinary maps only. 5590 (INCLUDED_FROM): Return NULL for main files; use the new 5591 accessors. 5592 (LINEMAP_POSITION_FOR_COLUMN): Use the new accessors. 5593 (struct expanded_location): Move here from gcc/input.h 5594 (linemap_resolve_location, linemap_expand_location) 5595 (linemap_expand_location_full): Declare new functions. 5596 * line-map.c: Include cpplib.h, internal.h 5597 (linemap_enter_macro, linemap_add_macro_token) 5598 (linemap_get_expansion_line, linemap_get_expansion_filename): New 5599 functions that are private to libcpp. 5600 (linemap_assert): New macro. 5601 (linemap_macro_loc_to_exp_point, linemap_macro_loc_to_exp_point) 5602 (linemap_macro_loc_unwind, linemap_macro_map_loc_to_def_point) 5603 (linemap_macro_map_loc_unwind_toward_spelling) 5604 (linemap_macro_map_loc_to_exp_point) 5605 (first_map_in_common_1, first_map_in_common): New static 5606 functions. 5607 (new_linemap): Define new static functions. Extracted and 5608 enhanced from ... 5609 (linemap_add): ... here. Use linemap_assert in lieu of abort 5610 previously. 5611 (linemap_tracks_macro_expansion_locs_p) 5612 (linemap_add_macro_token, linemap_macro_expansion_map_p) 5613 (linemap_check_ordinary, linemap_macro_map_loc_to_exp_point) 5614 (linemap_macro_map_loc_to_def_point) 5615 (linemap_macro_map_loc_unwind_once) 5616 (linemap_step_out_once, linemap_map_get_index) 5617 (linemap_get_source_line,linemap_get_source_column) 5618 (linemap_get_file_path, linemap_map_get_macro_name) 5619 (linemap_location_in_system_header_p) 5620 (linemap_location_originated_from_system_header_p) 5621 (linemap_location_from_macro_expansion_p) 5622 (linemap_tracks_macro_expansion_locs_p) 5623 (linemap_resolve_location, linemap_expand_location) 5624 (linemap_expand_location_full) 5625 (linemap_tracks_macro_expansion_locs_p) 5626 (linemap_position_for_line_and_column, linemap_compare_locations): 5627 Define new public functions. 5628 (linemap_init): Initialize ordinary and macro maps information in 5629 the map set. 5630 (linemap_check_files_exited): Use the new accessors. 5631 (linemap_free): Remove this dead code. 5632 (linemap_line_start): Assert this uses an ordinary map. Adjust to 5633 use the new ordinary map accessors and data structures. Don't 5634 overflow past the lowest possible macro token's location. 5635 (linemap_position_for_column): Assert the ordinary maps of the map 5636 set are really ordinary. Use ordinary map accessors. 5637 (linemap_lookup): Keep the same logic but generalize to allow 5638 lookup of both ordinary and macro maps. Do not crash when called 5639 with an empty line table. 5640 * directives-only.c (_cpp_preprocess_dir_only): Adjust to use the 5641 new API of line-map.h. 5642 * directives.c (start_directive, do_line, do_linemarker) 5643 (do_linemarker): Likewise. 5644 * files.c (_cpp_find_file, _cpp_stack_include, open_file_failed) 5645 (make_cpp_dir, cpp_make_system_header): Likewise. 5646 * init.c (cpp_read_main_file): Likewise. 5647 * internal.h (CPP_INCREMENT_LINE): Likewise. 5648 (linemap_enter_macro, linemap_add_macro_token) 5649 (linemap_get_expansion_line, linemap_get_expansion_filename): New 5650 functions private to libcpp. 5651 * lex.c (_cpp_process_line_notes, _cpp_skip_block_comment) 5652 (skip_line_comment, skip_whitespace, lex_raw_string) 5653 (_cpp_lex_direct): Likewise. 5654 * macro.c (_cpp_builtin_macro_text): Likewise. 5655 (_cpp_aligned_alloc): Initialize the new name member of the macro. 5656 * traditional.c (copy_comment, _cpp_scan_out_logical_line): 5657 Likewise. 5658 * errors.c (cpp_diagnostic): Adjust to new linemap API. 5659 5660 2011-08-28 Dodji Seketeli <dodji (a] redhat.com> 5661 5662 * line-map.c (linemap_add): Assert that reason must not be 5663 LC_RENAME when called for the first time on a "main input file". 5664 5665 2011-08-22 Gabriel Charette <gchare (a] google.com> 5666 5667 * init.c (cpp_create_reader): Inititalize forced_token_location_p. 5668 * internal.h (struct cpp_reader): Add field forced_token_location_p. 5669 * lex.c (_cpp_lex_direct): Use forced_token_location_p. 5670 (cpp_force_token_locations): New. 5671 (cpp_stop_forcing_token_locations): New. 5672 5673 2011-08-18 Rainer Orth <ro (a] CeBiTec.Uni-Bielefeld.DE> 5674 5675 PR libstdc++/1773 5676 * init.c (cpp_init_builtins): Define __cplusplus 19971L. 5677 5678 2011-08-18 Joseph Myers <joseph (a] codesourcery.com> 5679 5680 * include/cpplib.h (struct cpp_options): Fix typo. 5681 5682 2011-08-18 Joseph Myers <joseph (a] codesourcery.com> 5683 5684 * include/cpplib.h (struct cpp_options): Add rliterals. 5685 * init.c (struct lang_flags, lang_defaults): Add rliterals. 5686 (cpp_set_lang): Set rliterals option. 5687 (cpp_init_builtins): Define __STDC_UTF_16__ and __STDC_UTF_32__. 5688 * lex.c (_cpp_lex_direct): Only accept raw strings if rliterals. 5689 5690 2011-08-15 Gabriel Charette <gchare (a] google.com> 5691 5692 * include/line-map.h (LINEMAP_POSITION_FOR_COLUMN): Remove. 5693 Update all users to use linemap_position_for_column instead. 5694 5695 2011-07-28 Gabriel Charette <gchare (a] google.com> 5696 5697 * include/line-map.h (struct line_maps): 5698 Remove unused field last_listed. Update all users. 5699 5700 2011-07-28 H.J. Lu <hongjiu.lu (a] intel.com> 5701 5702 * configure.ac: Set need_64bit_hwint to yes for x86 targets. 5703 * configure: Regenerated. 5704 5705 2011-07-25 Rainer Orth <ro (a] CeBiTec.Uni-Bielefeld.DE> 5706 5707 * system.h [__cplusplus]: Wrap C function declarations in extern "C". 5708 5709 2011-07-22 Rainer Orth <ro (a] CeBiTec.Uni-Bielefeld.DE> 5710 Ralf Wildenhues <Ralf.Wildenhues (a] gmx.de> 5711 5712 PR bootstrap/49794 5713 * configure.ac: Test AM_ICONV with CXX. 5714 * configure: Regenerate. 5715 * system.h (HAVE_DESIGNATED_INITIALIZERS): Never define for C++. 5716 5717 2011-07-15 Dodji Seketeli <dodji (a] redhat.com> 5718 5719 * directives.c (struct if_stack): Use source_location as type 5720 here. 5721 * include/cpplib.h (struct cpp_callbacks)<include, define, undef, 5722 indent, def_pragma, used_define, used_undef>: Properly use 5723 source_location as parameter type, rather than unsigned int. 5724 5725 2011-07-07 Rainer Orth <ro (a] CeBiTec.Uni-Bielefeld.DE> 5726 5727 PR target/39150 5728 * configure.ac (host_wide_int): Handle x86_64-*-solaris2.1[0-9] 5729 like i[34567]86-*-solaris2.1[0-9]*. 5730 * configure: Regenerate. 5731 5732 2011-06-16 Jason Merrill <jason (a] redhat.com> 5733 5734 PR c++/45399 5735 * lex.c (lex_raw_string): Don't check for embedded NUL. 5736 5737 2011-06-06 Dodji Seketeli <dodji (a] redhat.com> 5738 5739 PR preprocessor/48532 5740 * directives.c (do_pragma): Don't forget the invocation location 5741 when parsing the pragma name of a namespaced pragma directive. 5742 5743 2011-05-29 John Tytgat <John.Tytgat (a] aaug.net> 5744 5745 * files.c (read_file_guts): Add test on non-zero value of S_ISREG. 5746 5747 2011-05-22 Uros Bizjak <ubizjak (a] gmail.com> 5748 5749 PR target/49104 5750 * lex.c (init_vectorized_lexer): Do not set "minimum" when __3dNOW_A__ 5751 is defined. Check bit_MMXEXT and bit_CMOV to use search_line_mmx. 5752 5753 2011-04-25 Jan Kratochvil <jan.kratochvil (a] redhat.com> 5754 5755 * system.h (ENUM_BITFIELD): Remove. 5756 5757 2011-04-24 Jakub Jelinek <jakub (a] redhat.com> 5758 5759 PR preprocessor/48740 5760 * lex.c (lex_raw_string): When raw string ends with 5761 ??) followed by raw prefix and ", ensure it is preprocessed 5762 with ??) rather than ??]. 5763 5764 2011-04-20 Jim Meyering <meyering (a] redhat.com> 5765 5766 * files.c (destroy_cpp_file): Remove useless if-before-free. 5767 * init.c (cpp_destroy): Likewise. 5768 * macro.c (replace_args): Likewise. 5769 * pch.c (cpp_valid_state): Likewise. 5770 5771 2011-03-25 Kai Tietz <ktietz (a] redhat.com> 5772 5773 * files.c (file_hash_eq): Use filename_cmp 5774 instead of strcmp. 5775 (nonexistent_file_hash_eq): Likewise. 5776 (remap_filename): Likewise. 5777 Handle absolute DOS-path, 5778 (append_file_to_dir): Check for IS_DIR_SEPARATOR 5779 instead of slash. 5780 (read_name_map): Likewise. 5781 * linemap.c (linemap_add): Use filename_cmp 5782 instead of strcmp. 5783 * mkdeps.c (apply_vpath): Use filename_ncmp 5784 instead of strncmp. 5785 (deps_restore): Use filename_cmp instead of 5786 strcmp. 5787 * init.c (read_original_directory): Use 5788 IS_DIR_SEPARATOR instead of checking for slash. 5789 5790 2011-03-21 Michael Meissner <meissner (a] linux.vnet.ibm.com> 5791 5792 PR preprocessor/48192 5793 * directives.c (do_ifdef): Do not consider conditional macros as 5794 being defined. 5795 (do_ifndef): Ditto. 5796 * expr.c (parse_defined): Ditto. 5797 5798 2011-03-18 Richard Henderson <rth (a] redhat.com> 5799 5800 PR bootstrap/45381 5801 * lex.c [ALTIVEC] (search_line_fast): Require gcc version 4.5. 5802 5803 2011-11-04 Eric Botcazou <ebotcazou (a] adacore.com> 5804 Jakub Jelinek <jakub (a] redhat.com> 5805 5806 PR preprocessor/39213 5807 * directives.c (end_directive): Call _cpp_remove_overlay for deferred 5808 pragmas as well in traditional mode. 5809 5810 2010-11-17 Ian Lance Taylor <iant (a] google.com> 5811 5812 PR bootstrap/45538 5813 * configure.ac: Use AC_USE_SYSTEM_EXTENSIONS. Remove switch of 5814 AC_LANG based on ENABLE_BUILD_WITH_CXX. 5815 5816 2010-11-16 Kai Tietz <kai.tietz (a] onevision.com> 5817 5818 PR preprocessor/17349 5819 * lex.c (save_comment): Handle in argument passing c++ 5820 comments special. 5821 5822 2010-11-02 Ian Lance Taylor <iant (a] google.com> 5823 5824 * configure.ac: Use AC_SYS_LARGEFILE. 5825 * configure: Rebuild. 5826 * config.in: Rebuild. 5827 5828 2010-10-19 Basile Starynkevitch <basile (a] starynkevitch.net> 5829 5830 * line-map.h (source_location): Remove obsolete comment 5831 mentioning location_s. 5832 5833 2010-09-29 Kai Tietz <kai.tietz (a] onevision.com> 5834 5835 PR preprocessor/45362 5836 * directives.c (cpp_pop_definition): Make static. 5837 (do_pragma_push_macro): Reworked to store text 5838 definition. 5839 (do_pragma_pop_macro): Add free text definition. 5840 (cpp_push_definition): Removed. 5841 * include/cpplib.h (cpp_push_definition): Removed. 5842 (cpp_pop_definition): Likewise. 5843 * internal.h (def_pragma_macro): Remove member 'value' 5844 and add new members 'definition', 'line', 5845 'syshdr', 'sued' and 'is_undef'. 5846 * pch.c (_cpp_restore_pushed_macros): Rework to work 5847 on text definition and store additional macro flags. 5848 (_cpp_save_pushed_macros): Likewise. 5849 5850 2010-09-29 Joseph Myers <joseph (a] codesourcery.com> 5851 5852 * include/cpplib.h (cpp_options): Rename warn_deprecated, 5853 warn_traditional, warn_long_long and pedantic. 5854 * directives.c (directive_diagnostics, _cpp_handle_directive): 5855 Update names of cpp_options members. 5856 * expr.c (cpp_classify_number, eval_token): Update names of 5857 cpp_options members. 5858 * init.c (cpp_create_reader, post_options): Update names of 5859 cpp_options members. 5860 * internal.h (CPP_PEDANTIC, CPP_WTRADITIONAL): Update names of 5861 cpp_options members. 5862 * macro.c (parse_params): Update names of cpp_options members. 5863 5864 2010-09-15 Ian Lance Taylor <iant (a] google.com> 5865 5866 * init.c: Fix type name in comment. 5867 5868 2010-08-31 Jakub Jelinek <jakub (a] redhat.com> 5869 5870 PR preprocessor/45457 5871 * expr.c (parse_defined): Call pfile->cb.user_builtin_macro hook if 5872 needed. 5873 * directives.c (do_ifdef, do_ifndef): Likewise. 5874 5875 2010-08-26 Rainer Orth <ro (a] CeBiTec.Uni-Bielefeld.DE> 5876 5877 * system.h [HAVE_INTTYPES_H]: Include inttypes.h. 5878 5879 2010-08-24 Richard Henderson <rth (a] redhat.com> 5880 5881 PR bootstrap/45376 5882 * configure.ac (HAVE_SSE4): New check. 5883 * configure, config.in: Rebuild. 5884 * lex.c (search_line_sse42): Omit if !HAVE_SSE4. 5885 5886 2010-08-24 Rainer Orth <ro (a] CeBiTec.Uni-Bielefeld.DE> 5887 5888 * lex.c [__sun__ && __svr4__]: Disable init_vectorized_lexer 5889 etc. on Solaris 2/x86. 5890 5891 2010-08-21 Richard Henderson <rth (a] redhat.com> 5892 Andi Kleen <ak (a] linux.intel.com> 5893 David S. Miller <davem (a] davemloft.net> 5894 5895 * configure.ac (AC_C_BIGENDIAN, AC_TYPE_UINTPTR_T): New tests. 5896 (ssize_t): Check via AC_TYPE_SSIZE_T instead of AC_CHECK_TYPE. 5897 (ptrdiff_t): Check via AC_CHECK_TYPE. 5898 * config.in, configure: Rebuild. 5899 * system.h: Include stdint.h, if available. 5900 * lex.c (WORDS_BIGENDIAN): Provide default. 5901 (acc_char_mask_misalign, acc_char_replicate, acc_char_cmp, 5902 acc_char_index, search_line_acc_char, repl_chars, search_line_mmx, 5903 search_line_sse2, search_line_sse42, init_vectorized_lexer, 5904 search_line_fast): New. 5905 (_cpp_clean_line): Use search_line_fast. Restructure the fast 5906 loop to make it clear when we're leaving the loop. Stay in the 5907 fast loop for non-trigraph '?'. 5908 5909 2010-06-11 Jakub Jelinek <jakub (a] redhat.com> 5910 5911 * include/cpplib.h (struct cpp_callbacks): Add user_builtin_macro 5912 callback. 5913 (enum cpp_builtin_type): Add BT_FIRST_USER and BT_LAST_USER. 5914 (cpp_macro_definition): Remove const qual from second argument. 5915 * macro.c (enter_macro_context): Call user_builtin_macro callback for 5916 NODE_BUILTIN !NODE_USED macros. 5917 (warn_of_redefinition): Likewise. Remove const qual from second 5918 argument. 5919 (cpp_macro_definition): Likewise. 5920 * pch.c (write_macdef, save_macros): Call user_builtin_macro callback 5921 for NODE_BUILTIN !NODE_USED macros. 5922 5923 2010-06-10 Joseph Myers <joseph (a] codesourcery.com> 5924 5925 * include/cpplib.h (struct cpp_options): Remove show_column. 5926 * init.c (cpp_create_reader, post_options): Don't set show_column. 5927 5928 2010-06-09 Joern Rennecke <joern.rennecke (a] embecosm.com> 5929 5930 PR bootstrap/44432 5931 * configure.ac: Before using ZW_PROG_COMPILER_DEPENDENCIES for C++, 5932 check that C++ compiler works. 5933 * configure: Regenerate. 5934 5935 2010-06-08 Laurynas Biveinis <laurynas.biveinis (a] gmail.com> 5936 5937 * include/symtab.h (ht_identifier_ptr): New. 5938 5939 2010-06-03 Joern Rennecke <joern.rennecke (a] embecosm.com> 5940 Ralf Wildenhues <Ralf.Wildenhues (a] gmx.de> 5941 5942 PR bootstrap/42798 5943 * configure.ac: Check for declaration of 'basename(char *)'. 5944 * configure: Regenerate. 5945 * config.in: Regenerate. 5946 5947 2010-04-25 Joseph Myers <joseph (a] codesourcery.com> 5948 5949 * include/cpplib.h (enum c_lang): Add CLK_GNUC1X and CLK_STDC1X. 5950 * init.c (lang_defaults): Add entries for new language variants. 5951 (cpp_init_builtins): Define __STDC_VERSION__ to 201000L for C1X 5952 variants. 5953 5954 2010-04-09 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 5955 5956 PR cpp/43195 5957 * files.c (report_missing_guard): Test for #pragma once. 5958 5959 2010-04-07 Simon Baldwin <simonb (a] google.com> 5960 5961 * directives.c (do_diagnostic): Add warning reason argument, 5962 call appropriate error reporting function for code. 5963 (directive_diagnostics): Call specific warning functions with 5964 warning reason where appropriate. 5965 (do_error, do_warning, do_pragma_dependency): Add warning reason 5966 argument to do_diagnostic calls. 5967 * macro.c (_cpp_warn_if_unused_macro, enter_macro_context, 5968 _cpp_create_definition): Call specific warning functions with 5969 warning reason where appropriate. 5970 * Makefile.in: Add new diagnostic functions to gettext translations. 5971 * include/cpplib.h (struct cpp_callbacks): Add warning reason code 5972 to error callback. 5973 (CPP_DL_WARNING, CPP_DL_WARNING_SYSHDR, CPP_DL_PEDWARN, CPP_DL_ERROR, 5974 CPP_DL_ICE, CPP_DL_NOTE, CPP_DL_FATAL): Replace macros with enums. 5975 (CPP_W_NONE, CPP_W_DEPRECATED, CPP_W_COMMENTS, 5976 CPP_W_MISSING_INCLUDE_DIRS, CPP_W_TRIGRAPHS, CPP_W_MULTICHAR, 5977 CPP_W_TRADITIONAL, CPP_W_LONG_LONG, CPP_W_ENDIF_LABELS, 5978 CPP_W_NUM_SIGN_CHANGE, CPP_W_VARIADIC_MACROS, 5979 CPP_W_BUILTIN_MACRO_REDEFINED, CPP_W_DOLLARS, CPP_W_UNDEF, 5980 CPP_W_UNUSED_MACROS, CPP_W_CXX_OPERATOR_NAMES, CPP_W_NORMALIZE, 5981 CPP_W_INVALID_PCH, CPP_W_WARNING_DIRECTIVE): New enums for cpp 5982 warning reason codes. 5983 (cpp_warning, cpp_pedwarning, cpp_warning_syshdr, 5984 cpp_warning_with_line, cpp_pedwarning_with_line, 5985 cpp_warning_with_line_syshdr): New specific error reporting functions. 5986 * pch.c (cpp_valid_state): Call specific warning functions with 5987 warning reason where appropriate. 5988 * errors.c (cpp_diagnostic, cpp_diagnostic_with_line): New central 5989 diagnostic handlers. 5990 (cpp_warning, cpp_pedwarning, cpp_warning_syshdr, 5991 cpp_warning_with_line, cpp_pedwarning_with_line, 5992 cpp_warning_with_line_syshdr): New specific error reporting functions. 5993 * expr.c (cpp_classify_number, eval_token, num_unary_op): Call 5994 specific warning functions with warning reason where appropriate. 5995 * lex.c (_cpp_process_line_notes, _cpp_skip_block_comment, 5996 warn_about_normalization, lex_identifier_intern, lex_identifier, 5997 _cpp_lex_direct): Ditto. 5998 * charset.c (_cpp_valid_ucn, convert_hex, convert_escape, 5999 narrow_str_to_charconst): Ditto. 6000 6001 2010-04-06 Jakub Jelinek <jakub (a] redhat.com> 6002 6003 PR preprocessor/43642 6004 * lex.c (lex_raw_string): Change type of TYPE variable to 6005 unsigned char. 6006 6007 2010-04-02 Ralf Wildenhues <Ralf.Wildenhues (a] gmx.de> 6008 6009 * aclocal.m4: Regenerate. 6010 6011 2010-03-29 Jason Merrill <jason (a] redhat.com> 6012 6013 More N3077 raw string changes 6014 * charset.c (cpp_interpret_string): Don't transform UCNs in raw 6015 strings. 6016 * lex.c (bufring_append): Split out from... 6017 (lex_raw_string): ...here. Undo trigraph and line splicing 6018 transformations. Do process line notes in multi-line literals. 6019 (_cpp_process_line_notes): Ignore notes that were already handled. 6020 6021 Some raw string changes from N3077 6022 * charset.c (cpp_interpret_string): Change inner delimiters to (). 6023 * lex.c (lex_raw_string): Likewise. Also disallow '\' in delimiter. 6024 6025 2010-02-11 Jakub Jelinek <jakub (a] redhat.com> 6026 6027 * init.c (read_original_filename): Don't call read_original_directory 6028 if _cpp_handle_directive returns 0. 6029 6030 2010-01-01 Joseph Myers <joseph (a] codesourcery.com> 6031 6032 PR preprocessor/41947 6033 * expr.c (cpp_classify_number): Give error for hexadecimal 6034 floating-point constant with no digits before or after point. 6035 6036 2009-11-20 Arnaud Charlet <charlet (a] adacore.com> 6037 6038 * macro.c (enter_macro_context): Call cb.used callback if defined. 6039 * directives.c (do_idef, do_ifndef): Ditto. 6040 * include/cpplib.h (struct cpp_callbacks): Add used callback. 6041 6042 2009-11-11 Kai Tietz <kai.tietz (a] onevision.com> 6043 6044 * directives.c (do_pragma_push_macro): New pragma handler. 6045 (do_pragma_pop_macro): Likewise. 6046 (_cpp_init_internal_pragmas): Add push_macro and 6047 pop_macro handler to internal pragmas. 6048 (lex_macro_node_from_str): Removed. 6049 (cpp_push_definition): Replace lex_macro_node_from_str 6050 by _cpp_lex_identifier. 6051 (cpp_pop_definition): Likewise. 6052 * internal.h (_cpp_lex_identifier): New prototype. 6053 (def_pragma_macro): New structure. 6054 (cpp_reader): New member pushed_macros. 6055 * lex.c (_cpp_lex_identifier): New function. 6056 (lex_identifier_intern): New function. 6057 * init.c (cpp_create_reader): Initialize pushed_macros 6058 member. 6059 (cpp_destroy): Free elements in pushed_macros member. 6060 * pch.c (_cpp_save_pushed_macros): New function. 6061 (_cpp_restore_pushed_macros): Likewise. 6062 (_cpp_restore_pushed_macros): Use _cpp_save_pushed_macros. 6063 (cpp_read_state): Use _cpp_restore_pushed_macros. 6064 6065 2009-10-19 Jakub Jelinek <jakub (a] redhat.com> 6066 6067 * charset.c (cpp_init_iconv): Initialize utf8_cset_desc. 6068 (_cpp_destroy_iconv): Destroy utf8_cset_desc, char16_cset_desc 6069 and char32_cset_desc. 6070 (converter_for_type): Handle CPP_UTF8STRING. 6071 (cpp_interpret_string): Handle CPP_UTF8STRING and raw-strings. 6072 * directives.c (get__Pragma_string): Handle CPP_UTF8STRING. 6073 (parse_include): Reject raw strings. 6074 * include/cpplib.h (CPP_UTF8STRING): New token type. 6075 * internal.h (struct cpp_reader): Add utf8_cset_desc field. 6076 * lex.c (lex_raw_string): New function. 6077 (lex_string): Handle u8 string literals, call lex_raw_string 6078 for raw string literals. 6079 (_cpp_lex_direct): Call lex_string even for u8" and {,u,U,L,u8}R" 6080 sequences. 6081 * macro.c (stringify_arg): Handle CPP_UTF8STRING. 6082 6083 2009-10-14 Jakub Jelinek <jakub (a] redhat.com> 6084 6085 PR preprocessor/41543 6086 * include/line-map.h (RESERVED_LOCATION_COUNT): Define. 6087 * line-map.c (linemap_init): Initialize highest_location and 6088 highest_line to RESERVED_LOCATION_COUNT-1 instead of 0. 6089 6090 2009-10-09 Jason Merrill <jason (a] redhat.com> 6091 6092 * charset.c (_cpp_valid_ucn): Update C++0x restrictions. 6093 6094 2009-10-09 Neil Vachharajani <nvachhar (a] google.com> 6095 6096 * directives.c (DIRECTIVE_TABLE): Remove DEPRECATED from ident and 6097 sccs. 6098 6099 2009-09-23 Loren J. Rittle <ljrittle (a] acm.org> 6100 6101 * configure.ac (AC_CHECK_HEADERS after AC_LANG(C++)): Add sys/stat.h. 6102 * configure: Rebuilt. 6103 6104 2009-09-22 Richard Guenther <rguenther (a] suse.de> 6105 6106 PR pch/38987 6107 * files.c (pch_open_file): Disallow non-toplevel PCH inclusion. 6108 6109 2009-09-18 Chris Demetriou <cgd (a] google.com> 6110 6111 PR preprocessor/28435: 6112 * include/cpplib.h (struct cpp_options): Add new member 6113 deps.need_preprocessor_output. 6114 * files.c (open_file_failed): If preprocessor output is needed 6115 always report an error. 6116 6117 2009-09-13 Kai Tietz <kai.tietz (a] onevision.com> 6118 6119 * configure.ac: Set for i?86-w64-mingw* 6120 need_64bit_hwint to yes. 6121 * configure: Regenerated. 6122 6123 2009-09-10 Jason Merrill <jason (a] redhat.com> 6124 6125 * directives.c (cpp_define): constify. 6126 6127 2009-09-02 Ian Lance Taylor <iant (a] google.com> 6128 6129 * macro.c (stringify_arg): Escape CPP_WCHAR tokens. 6130 6131 2009-08-24 Ralf Wildenhues <Ralf.Wildenhues (a] gmx.de> 6132 6133 * configure.ac (AC_PREREQ): Bump to 2.64. 6134 6135 2009-08-22 Ralf Wildenhues <Ralf.Wildenhues (a] gmx.de> 6136 6137 * aclocal.m4: Regenerate. 6138 * config.in: Regenerate. 6139 * configure: Regenerate. 6140 6141 2009-08-17 Tom Tromey <tromey (a] redhat.com> 6142 6143 PR preprocessor/41067: 6144 * charset.c (convert_escape): Add missing ":" to error text. 6145 6146 2009-07-27 Douglas B Rupp <rupp (a] gnat.com> 6147 6148 * include/cpplib.h (INO_T_CPP): New macro. 6149 (struct cpp_dir): Use it. 6150 6151 2009-07-20 Jerry Quinn <jlquinn (a] optonline.net> 6152 6153 PR regression/40800 6154 * configure.ac: Use = instead of == for testing 6155 ENABLE_BUILD_WITH_CXX. 6156 * configure: Rebuild. 6157 6158 2009-07-17 Jerry Quinn <jlquinn (a] optonline.net> 6159 6160 * directives.c (do_linemarker, do_line): Use CPP_STRING for 6161 ignored enum value. 6162 * files.c (find_file_in_dir): Add cast from void* to char*. 6163 * symtab.c (ht_lookup_with_hash): Add cast from void* to char*. 6164 * Makefile.in: (WARN_CFLAGS): Use general and C-specific 6165 warnings. 6166 (CXX, CXXFLAGS, WARN_CXXFLAGS, ALL_CXXFLAGS, 6167 ENABLE_BUILD_WITH_CXX, CCDEPMODE, CXXDEPMODE, COMPILER, 6168 COMPILER_FLAGS): New. 6169 (DEPMODE): Set from CCDEPMODE or CXXDEPMODE. 6170 (COMPILE.base): Use COMPILER instead of CC. Use COMPILER_FLAGS 6171 instead of ALL_CFLAGS. 6172 * configure.ac: Invoke AC_PROG_CXX. Separate C-specific warnings 6173 from other warnings. Add -Wc++-compat to C-specific warnings. 6174 Check for --enable-build-with-cxx. Set and substitute 6175 ENABLE_BUILD_WITH_CXX. Invoke ZW_PROG_COMPILER_DEPENDENCIES 6176 according to ENABLE_BUILD_WITH_CXX. Invoke AC_LANG before 6177 AC_CHECK_HEADERS. 6178 * configure: Rebuild. 6179 * include/cpp-id-data.h: Remove extern "C". 6180 * include/line-map.h: Likewise. 6181 * include/mkdeps.h: Likewise. 6182 * include/symtab.h: Likewise. 6183 * internal.h: Likewise. 6184 6185 2009-06-23 Manuel Lopez-Ibanez <manu (a] gcc.gnu.org> 6186 6187 * directives.c (parse_include): Add location argument. Update all 6188 calls. 6189 (parse_answer): Likewise. 6190 (do_include_common): Error with exact location. 6191 (parse_assertion): Likewise. 6192 6193 2009-06-18 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 6194 6195 * expr.c (num_div_op): Take explicit location. 6196 6197 2009-06-17 Ian Lance Taylor <iant (a] google.com> 6198 6199 * include/cpplib.h (progname): Don't declare. 6200 6201 2009-06-12 Ian Lance Taylor <iant (a] google.com> 6202 6203 * include/cpplib.h (struct cpp_options): Add 6204 warn_cxx_operator_names field. 6205 (NODE_WARN_OPERATOR): Define. 6206 (struct cpp_hashnode): Increase flags field to 10 bits, decrease 6207 type to 6 bits. 6208 * init.c (mark_named_operators): Add flags parameter. 6209 (cpp_post_options): Pick flags value to pass to 6210 mark_named_operators. 6211 * lex.c (lex_identifier): If NODE_WARN_OPERATOR is set, warn that 6212 identifier is an operator name in C++. 6213 6214 2009-06-01 Aldy Hernandez <aldyh (a] redhat.com> 6215 6216 * include/line-map.h (LAST_SOURCE_COLUMN): New. 6217 6218 2009-06-01 Ian Lance Taylor <iant (a] google.com> 6219 6220 * include/cpp-id-data.h: Add extern "C". 6221 * include/line-map.h: Likewise. 6222 * include/mkdeps.h: Likewise. 6223 * include/symtab.h: Likewise. 6224 * internal.h: Likewise. 6225 6226 2009-05-15 Ian Lance Taylor <iant (a] google.com> 6227 6228 * include/cpplib.h (enum cpp_builtin_type): Rename from enum 6229 builtin_type. Change all uses. 6230 6231 2009-05-14 Manuel Lopez-Ibanez <manu (a] gcc.gnu.org> 6232 6233 PR cpp/36674 6234 * directives (do_linemarker): Compensate for the increment in 6235 location that occurs when we reach the end of line. 6236 * files (_cpp_stack_include): Mention _cpp_find_file in the 6237 comment. 6238 6239 2009-05-10 Joseph Myers <joseph (a] codesourcery.com> 6240 6241 * include/cpplib.h (enum cpp_token_fld_kind): Add 6242 CPP_TOKEN_FLD_TOKEN_NO. 6243 (struct cpp_macro_arg, struct cpp_identifier): Define. 6244 (union cpp_token_u): Use struct cpp_identifier for identifiers. 6245 Use struct cpp_macro_arg for macro arguments. Add token_no for 6246 CPP_PASTE token numbers. 6247 * directives.c (_cpp_handle_directive, lex_macro_node, do_pragma, 6248 do_pragma_poison, parse_assertion): Use val.node.node in place of 6249 val.node. 6250 * expr.c (parse_defined, eval_token): Use val.node.node in place 6251 of val.node. 6252 * lex.c (cpp_ideq, _cpp_lex_direct, cpp_token_len, 6253 cpp_spell_token, cpp_output_token, _cpp_equiv_tokens, 6254 cpp_token_val_index): Use val.macro_arg.arg_no or val.token_no in 6255 place of val.arg_no. Use val.node.node in place of val.node. 6256 * macro.c (replace_args, cpp_get_token, parse_params, 6257 lex_expansion_token, create_iso_definition, cpp_macro_definition): 6258 Use val.macro_arg.arg_no or val.token_no in place of val.arg_no. 6259 Use val.node.node in place of val.node. 6260 6261 2009-05-03 Joseph Myers <joseph (a] codesourcery.com> 6262 6263 * charset.c (one_utf8_to_cppchar): Correct mask used for 5-byte 6264 UTF-8 sequences. 6265 6266 2009-04-25 Joseph Myers <joseph (a] codesourcery.com> 6267 6268 PR preprocessor/39559 6269 * expr.c (cpp_interpret_integer): Use a pedwarn for decimal 6270 constants larger than intmax_t in C99 mode. 6271 6272 2009-04-21 Taras Glek <tglek (a] mozilla.com> 6273 6274 * include/cpp-id-data.h: Update GTY annotations to new syntax. 6275 * include/cpplib.h: Likewise. 6276 * include/line-map.h: Likewise. 6277 * include/symtab.h: Likewise. 6278 6279 2009-04-22 Manuel Lopez-Ibanez <manu (a] gcc.gnu.org> 6280 6281 PR c++/14875 6282 * lex.c (cpp_type2name): Take a flags parameter. Call 6283 cpp_named_operator2name for named operators and cpp_digraph2name 6284 for digraphs. 6285 (cpp_digraph2name): New. 6286 (cpp_spell_token): Use it. 6287 (cpp_output_token): Likewise. 6288 * include/cpplib.h (cpp_type2name): Update declaration. 6289 * init.c (cpp_named_operator2name): New. 6290 * internal.h (cpp_named_operator2name): Declare. 6291 6292 2009-04-21 Manuel Lopez-Ibanez <manu (a] gcc.gnu.org> 6293 6294 PR c++/13358 6295 * init.c (cpp_create_reader): Wlong_long is disabled by default. 6296 * expr.c (cpp_classify_number): Give different messages for C and 6297 C++ front-ends. 6298 6299 2009-04-19 Joseph Myers <joseph (a] codesourcery.com> 6300 6301 PR preprocessor/20078 6302 * include/cpp-id-data.h (struct cpp_macro): Add extra_tokens 6303 field. 6304 * include/cpplib.h (SP_DIGRAPH, SP_PREV_WHITE): Define. 6305 (struct cpp_token): Change flags to unsigned short. 6306 * lex.c (_cpp_lex_direct): Initialize arg_no for CPP_PASTE tokens. 6307 (_cpp_equiv_tokens): Check arg_no for CPP_PASTE tokens. 6308 (cpp_token_val_index): Return CPP_TOKEN_FLD_ARG_NO for CPP_PASTE 6309 tokens. 6310 * macro.c (macro_real_token_count): New. 6311 (enter_macro_context, replace_args): Use macro_real_token_count. 6312 (create_iso_definition): Record whitespace surrounding and digraph 6313 spelling of # and ## tokens using SP_PREV_WHITE and SP_DIGRAPH. 6314 Set extra_tokens and save CPP_PASTE tokens with arg_no set for 6315 multiple consecutive ## tokens. 6316 (_cpp_create_definition): Initialize extra_tokens. 6317 (cpp_macro_definition): Use macro_real_token_count. 6318 6319 2009-04-18 Joseph Myers <joseph (a] codesourcery.com> 6320 6321 * directives.c (parse_include): Pass true to check_eol. 6322 6323 2009-04-18 Joseph Myers <joseph (a] codesourcery.com> 6324 6325 PR preprocessor/39646 6326 * include/line-map.h (enum lc_reason): Add LC_RENAME_VERBATIM. 6327 * line-map.c (linemap_add): Handle LC_RENAME_VERBATIM. 6328 * directives.c (do_line, do_linemarker): Use LC_RENAME_VERBATIM in 6329 place of LC_RENAME. 6330 6331 2009-04-18 Joseph Myers <joseph (a] codesourcery.com> 6332 6333 PR preprocessor/39647 6334 * directives.c (check_eol): Add parameter expand. 6335 (do_undef, parse_include, do_line, do_linemarker, do_ident, 6336 do_pragma_once, do_pragma_system_header, do_ifdef, do_ifndef, 6337 do_else, do_endif, do_assert, do_unassert): All callers changed. 6338 Pass true from do_line, false elsewhere. 6339 6340 2009-04-12 Joseph Myers <joseph (a] codesourcery.com> 6341 6342 PR preprocessor/31869 6343 * macro.c (stringify_arg): Handle NULL source token in padding 6344 token where previous padding token did not have source token with 6345 preceding whitespace. 6346 6347 2009-04-09 Jakub Jelinek <jakub (a] redhat.com> 6348 6349 * Makefile.in: Change copyright header to refer to version 6350 3 of the GNU General Public License and to point readers at the 6351 COPYING3 file and the FSF's license web page. 6352 * charset.c: Likewise. 6353 * directives-only.c: Likewise. 6354 * directives.c: Likewise. 6355 * errors.c: Likewise. 6356 * expr.c: Likewise. 6357 * files.c: Likewise. 6358 * identifiers.c: Likewise. 6359 * include/cpp-id-data.h: Likewise. 6360 * include/cpplib.h: Likewise. 6361 * include/line-map.h: Likewise. 6362 * include/mkdeps.h: Likewise. 6363 * include/symtab.h: Likewise. 6364 * init.c: Likewise. 6365 * internal.h: Likewise. 6366 * lex.c: Likewise. 6367 * line-map.c: Likewise. 6368 * macro.c: Likewise. 6369 * makeucnid.c: Likewise. 6370 * mkdeps.c: Likewise. 6371 * pch.c: Likewise. 6372 * symtab.c: Likewise. 6373 * system.h: Likewise. 6374 * traditional.c: Likewise. 6375 * ucnid.tab: Likewise. 6376 * ucnid.h: Regenerate. 6377 6378 2009-04-01 Janis Johnson <janis187 (a] us.ibm.com> 6379 6380 PR c/39027 6381 * include/cpplib.h (CPP_N_DEFAULT): Define. 6382 * expr.c (interpret_float_suffix): Recognize d or D for double, 6383 return new value for default. 6384 (cpp_classify_number): Issue pedwarn for use of d or D in suffix. 6385 6386 PR c/33466 6387 * expr.c (interpret_float_suffix): Reject invalid suffix that uses 6388 letters from decimal float and fixed-point suffixes. 6389 6390 2009-03-31 Joseph Myers <joseph (a] codesourcery.com> 6391 6392 PR preprocessor/15638 6393 * files.c (_cpp_find_file): Call open_file_failed after diagnosing 6394 invalid PCH. 6395 (open_file_failed): Make error for missing file fatal. 6396 * include/cpplib.h (CPP_DL_FATAL): Define. 6397 6398 2009-03-30 Sergiy Vyshnevetskiy <serg (a] vostok.net> 6399 6400 PR preprocessor/31932: 6401 * internal.h: Don't mention HAVE_ICONV_H. 6402 * configure, config.in: Rebuild. 6403 * configure.ac: Don't check for iconv.h. 6404 6405 2009-03-30 Tom Tromey <tromey (a] redhat.com> 6406 6407 PR preprocessor/39512: 6408 * line-map.c (linemap_init): Initialize 'reallocator' field. 6409 6410 2009-03-30 Jakub Jelinek <jakub (a] redhat.com> 6411 6412 PR target/39558 6413 * macro.c (cpp_get_token): If macro_to_expand returns NULL 6414 and used some tokens, add CPP_PADDING before next token. 6415 6416 2009-03-29 Joseph Myers <joseph (a] codesourcery.com> 6417 6418 PR preprocessor/34695 6419 * makedepend.c: Remove. 6420 * Makefile.in (makedepend_OBJS, makedepend$(EXEEXT)): Remove. 6421 (all, clean, TAGS_SOURCES, include): Remove makedepend handling. 6422 * directives.c (cpp_errors): Remove. 6423 * errors.c (print_location, _cpp_begin_message, v_message): 6424 Remove. 6425 (cpp_error, cpp_error_with_line): Always use error callback. 6426 (cpp_error, cpp_error_with_line, cpp_errno): Return bool. 6427 * include/cpplib.h (cpp_options): Remove pedantic_errors, 6428 inhibit_warnings, warn_system_headers, inhibit_errors, 6429 warnings_are_errors, client_diagnostic. 6430 (cpp_callbacks): Add extra arguments to error callback; make it 6431 return bool. 6432 (cpp_finish): Return void. 6433 (cpp_destroy): Remove inaccurate comment about return value. 6434 (cpp_errors, CPP_DL_EXTRACT, CPP_DL_WARNING_P): Remove. 6435 (CPP_DL_NOTE): Define. 6436 * include/line-map.h (linemap_print_containing_files): Remove. 6437 * init.c (cpp_finish): Do not check for or return number of 6438 errors. 6439 * internal.h (cpp_reader): Remove errors field. 6440 * line-map.c (linemap_print_containing_files): Remove. 6441 * macro.c (_cpp_create_definition): Use CPP_DL_NOTE for message 6442 about previous definition. Only emit it if previous diagnostic 6443 was emitted. 6444 6445 2009-03-28 Joseph Myers <joseph (a] codesourcery.com> 6446 6447 * Makefile.in (po/$(PACKAGE).pot): Use $(mkinstalldirs) not 6448 mkinstalldirs. 6449 6450 2009-03-18 Jakub Jelinek <jakub (a] redhat.com> 6451 6452 * include/cpplib.h (struct cpp_dir): Reorder fields for 64-bit hosts. 6453 6454 2009-02-21 Joseph Myers <joseph (a] codesourcery.com> 6455 6456 * lex.c (lex_string): Return a CPP_LESS token for missing '>' in a 6457 header name. 6458 (_cpp_lex_direct): Handle this. 6459 6460 2009-02-15 Richard Guenther <rguenther (a] suse.de> 6461 6462 Revert last change. 6463 6464 2009-02-13 Richard Guenther <rguenther (a] suse.de> 6465 6466 * configure.ac: Enable LFS. 6467 * configure: Re-generate. 6468 * config.in: Likewise. 6469 6470 2009-01-05 Ben Elliston <bje (a] au.ibm.com> 6471 6472 * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir. 6473 (.po.pox): Likewise. 6474 (po/$(PACKAGE).pot): Likewise. 6475 6476 2008-12-10 Alexandre Oliva <aoliva (a] redhat.com> 6477 6478 PR target/37033 6479 * pch.c (cpp_valid_state): Improve message for poisoned symbols. 6480 Allow for differences in __GCC_HAVE_DWARF2_CFI_ASM. 6481 6482 2008-11-29 Joseph Myers <joseph (a] codesourcery.com> 6483 6484 * lex.c (cpp_token_len): Use 6 as default length. 6485 6486 2008-10-31 Manuel Lpez-Ibez <manu (a] gcc.gnu.org> 6487 6488 * expr.c (struct op): Add location. 6489 (_cpp_parse_expr): Propagate locations throught the stack 6490 of expressions. 6491 (reduce): Likewise. 6492 (check_promotion): Use explicit location in errors. 6493 6494 2008-10-05 Matthew Gingell <gingell (a] adacore.com> 6495 Arnaud Charlet <charlet (a] adacore.com> 6496 6497 * include/cpplib.h (cpp_comments, cpp_comment_table): New structs. 6498 (cpp_get_comments): New function. 6499 * internal.h (struct cpp_reader): Add comments field. 6500 * init.c (cpp_destroy): Free comments. 6501 * lex.c (store_comment, cpp_get_comments): New functions. 6502 (comments): New struct. 6503 (save_comment): Store comments in comments struct. 6504 6505 2008-09-18 Simon Baldwin <simonb (a] google.com> 6506 6507 * include/cpplib.h (struct cpp_options): Add new boolean flag 6508 warn_builtin_macro_redefined. 6509 * init.c (cpp_create_reader): Initialize warn_builtin_macro_redefined. 6510 * (struct builtin_operator): Split out from previous struct builtin, 6511 enhance extra const correctness. 6512 * (struct builtin_macro): Split out from previous struct builtin, add 6513 new always_warn_if_redefined flag, enhance const correctness. 6514 * (mark_named_operators): Use struct builtin_operator. 6515 * (cpp_init_special_builtins): Use struct builtin_macro, add NODE_WARN 6516 to builtins selectively. 6517 * macro.c (warn_of_redefinition): Return false if a builtin macro 6518 is not flagged with NODE_WARN. 6519 6520 2008-07-31 Jakub Jelinek <jakub (a] redhat.com> 6521 6522 PR preprocessor/36649 6523 * files.c (struct report_missing_guard_data): New type. 6524 (report_missing_guard): Put paths into an array instead of printing 6525 them right away. Return 1 rather than 0. 6526 (report_missing_guard_cmp): New function. 6527 (_cpp_report_missing_guards): Sort and print paths gathered by 6528 report_missing_guard callback. 6529 6530 2008-07-22 Manuel Lopez-Ibanez <manu (a] gcc.gnu.org> 6531 6532 PR 28079 6533 * directives.c (strtolinenum): Handle overflow. 6534 (do_line): Give a warning if line number overflowed. 6535 (do_linemarker): Update call to strtolinenum. 6536 6537 2008-07-21 Manuel Lopez-Ibanez <manu (a] gcc.gnu.org> 6538 6539 * include/line-map.h (linenum_type): New typedef. 6540 (struct line_map): Use it. 6541 (SOURCE_LINE): Second arguments is a LOCATION not a LINE. 6542 (SOURCE_COLUMN): Likewise. 6543 * macro.c (_cpp_builtin_macro_text): Use linenum_type. Don't store 6544 source_location values in a variable of type linenum_type. 6545 * directives.c (struct if_stack): Use linenum_type. 6546 (strtoul_for_line): Rename as strtolinenum. 6547 (do_line): Use linenum_type. 6548 (do_linemarker): Use linenum_type and strtolinenum. 6549 (_cpp_do_file_change): Use linenum_t. 6550 * line-map.c (linemap_add): Likewise. 6551 (linemap_line_start): Likewise. 6552 * traditional.c (struct fun_macro): 'line' is a source_location. 6553 * errors.c (print_location): Use linenum_type. 6554 * directives-only.c (_cpp_preprocess_dir_only): Likewise. 6555 * internal.h (CPP_INCREMENT_LINE): Likewise. 6556 * lex.c (_cpp_skip_block_comment): Use source_location. 6557 6558 2008-07-14 Ben Elliston <bje (a] au.ibm.com> 6559 6560 * include/cpplib.h (NODE_CONDITIONAL): New. 6561 (struct cpp_callbacks): New macro_to_expand field. 6562 (struct cpp_hashnode): Adjust size of flags and type fields. 6563 (cpp_peek_token): Prototype. 6564 * lex.c (cpp_peek_token): New function. 6565 (_cpp_temp_token): Protect pre-existing lookaheads. 6566 * macro.c (cpp_get_token): Expand any conditional macros. 6567 (_cpp_backup_tokens_direct): New. 6568 (_cpp_backup_tokens): Call _cpp_backup_tokens_direct. 6569 (warn_of_redefinition): Silently allow redefined conditional 6570 macros. 6571 (_cpp_create_definition): Remove the conditional flag when a user 6572 defines one of the conditional macros. 6573 * internal.h (_cpp_backup_tokens_direct): New prototype. 6574 6575 2008-06-13 Andrew Haley <aph (a] redhat.com> 6576 6577 PR preprocessor/33305 6578 * macro.c (replace_args): Print a warning for empty macro 6579 arguments in C89 and C++. 6580 6581 2008-06-17 Ralf Wildenhues <Ralf.Wildenhues (a] gmx.de> 6582 6583 * Makefile.in ($(srcdir)/aclocal.m4): Update dependencies. 6584 * configure: Regenerate. 6585 6586 2008-06-16 Ralf Wildenhues <Ralf.Wildenhues (a] gmx.de> 6587 6588 * Makefile.in (datarootdir): New variable. 6589 6590 2008-06-12 H.J. Lu <hongjiu.lu (a] intel.com> 6591 6592 PR preprocessor/36479 6593 * charset.c (cpp_interpret_string_notranslate): Also set 6594 narrow_cset_desc.width. 6595 6596 2008-06-07 Joseph Myers <joseph (a] codesourcery.com> 6597 6598 * configure.ac (parisc*64*-*-*): Remove. 6599 * configure: Regenerate. 6600 6601 2008-05-30 Tom Tromey <tromey (a] redhat.com> 6602 6603 PR preprocessor/36320: 6604 * internal.h (_cpp_parse_expr): Update. 6605 * expr.c (_cpp_parse_expr): Add 'is_if' argument. Update error 6606 messages. 6607 * directives.c (do_if): Update. 6608 (do_elif): Require expression if processing group. 6609 6610 2008-05-30 Danny Smith <dannysmith (a] users.sourceforge.net> 6611 6612 * include/cpplib.h (struct cpp_dir): Add new field, canonical_name. 6613 6614 2008-05-21 Tom Tromey <tromey (a] redhat.com> 6615 6616 PR preprocessor/27777: 6617 * lex.c (cpp_output_line_to_string): New function. 6618 * internal.h (_cpp_begin_message): Don't declare. 6619 * errors.c (_cpp_begin_message): Now static. 6620 * include/cpplib.h (cpp_output_line_to_string): Declare. 6621 * directives.c (do_diagnostic): Rewrote. Use 6622 cpp_output_line_to_string. Don't use _cpp_begin_message. 6623 6624 2008-05-21 Tom Tromey <tromey (a] redhat.com> 6625 6626 * include/symtab.h (HT_ALLOCED): Remove. 6627 (ht_purge): Declare. 6628 * symtab.c (DELETED): New define. 6629 (ht_lookup): Update comment. 6630 (ht_lookup_with_hash): Handle deleted entries. Remove HT_ALLOCED 6631 code. Use subobject allocator for strings, if it exists. 6632 (ht_expand): Handle deleted entries. 6633 (ht_forall): Likewise. 6634 (ht_purge): New function. 6635 (ht_dump_statistics): Print deletion statistics. 6636 6637 2008-05-13 Tom Tromey <tromey (a] redhat.com> 6638 6639 PR preprocessor/22168: 6640 * include/cpplib.h (struct cpp_options) <objc>: Update 6641 documentation. 6642 * expr.c (eval_token): Warn for use of assertions. 6643 * directives.c (directive_diagnostics): Warn about extensions. 6644 (DEPRECATED): New define. 6645 (DIRECTIVE_TABLE): Use it. 6646 6647 2008-05-06 Tom Tromey <tromey (a] redhat.com> 6648 6649 PR preprocessor/35313, PR preprocessor/36088: 6650 * expr.c (optab) <QUERY, COMMA>: Set precedence to 4. 6651 (reduce) <case CPP_QUERY>: Special case CPP_COMMA and CPP_COLON. 6652 6653 2008-05-04 David S. Miller <davem (a] davemloft.net> 6654 6655 * configure.ac (sparc*-*-*): Always set need_64bit_hwint to yes. 6656 * configure: Regenerate. 6657 6658 2008-04-22 Daniel Franke <franke.daniel (a] gmail.com> 6659 6660 * include/cpplib.h (cpp_define_formatted): New. 6661 * directives.c (cpp_define_formatted): New. 6662 6663 2008-04-21 Tom Tromey <tromey (a] redhat.com> 6664 6665 PR libcpp/33415: 6666 * charset.c (_cpp_convert_input): Add buffer_start argument. 6667 Ignore UTF-8 BOM if seen. 6668 * internal.h (_cpp_convert_input): Add argument. 6669 * files.c (struct _cpp_file) <buffer_start>: New field. 6670 (destroy_cpp_file): Free buffer_start, not buffer. 6671 (_cpp_pop_file_buffer): Likewise. 6672 (read_file_guts): Update. 6673 6674 2008-04-18 Kris Van Hees <kris.van.hees (a] oracle.com> 6675 6676 * include/cpp-id-data.h (UC): Was U, conflicts with U"..." literal. 6677 * include/cpplib.h (CHAR16, CHAR32, STRING16, STRING32): New tokens. 6678 (struct cpp_options): Added uliterals. 6679 (cpp_interpret_string): Update prototype. 6680 (cpp_interpret_string_notranslate): Idem. 6681 * charset.c (init_iconv_desc): New width member in cset_converter. 6682 (cpp_init_iconv): Add support for char{16,32}_cset_desc. 6683 (convert_ucn): Idem. 6684 (emit_numeric_escape): Idem. 6685 (convert_hex): Idem. 6686 (convert_oct): Idem. 6687 (convert_escape): Idem. 6688 (converter_for_type): New function. 6689 (cpp_interpret_string): Use converter_for_type, support u and U prefix. 6690 (cpp_interpret_string_notranslate): Match changed prototype. 6691 (wide_str_to_charconst): Use converter_for_type. 6692 (cpp_interpret_charconst): Add support for CPP_CHAR{16,32}. 6693 * directives.c (linemarker_dir): Macro U changed to UC. 6694 (parse_include): Idem. 6695 (register_pragma_1): Idem. 6696 (restore_registered_pragmas): Idem. 6697 (get__Pragma_string): Support CPP_STRING{16,32}. 6698 * expr.c (eval_token): Support CPP_CHAR{16,32}. 6699 * init.c (struct lang_flags): Added uliterals. 6700 (lang_defaults): Idem. 6701 * internal.h (struct cset_converter) <width>: New field. 6702 (struct cpp_reader) <char16_cset_desc>: Idem. 6703 (struct cpp_reader) <char32_cset_desc>: Idem. 6704 * lex.c (digraph_spellings): Macro U changed to UC. 6705 (OP, TK): Idem. 6706 (lex_string): Add support for u'...', U'...', u"..." and U"...". 6707 (_cpp_lex_direct): Idem. 6708 * macro.c (_cpp_builtin_macro_text): Macro U changed to UC. 6709 (stringify_arg): Support CPP_CHAR{16,32} and CPP_STRING{16,32}. 6710 6711 2008-04-18 Paolo Bonzini <bonzini (a] gnu.org> 6712 6713 PR bootstrap/35457 6714 * aclocal.m4: Regenerate. 6715 * configure: Regenerate. 6716 6717 2008-04-17 Tom Tromey <tromey (a] redhat.com> 6718 6719 PR libcpp/34866: 6720 * errors.c (cpp_error): Don't reference a token before the start 6721 of the current run. 6722 6723 2008-04-16 Tom Tromey <tromey (a] redhat.com> 6724 6725 * Makefile.in (TAGS_SOURCES): New variable. 6726 (TAGS): New target. 6727 6728 2008-04-11 Kaz Kojima <kkojima (a] gcc.gnu.org> 6729 6730 * configure.ac: (need_64bit_hwint): Need 64bit hwint for sh-*-* 6731 and shbe-*-*. 6732 * configure: Rebuilt. 6733 6734 2008-04-02 Joseph Myers <joseph (a] codesourcery.com> 6735 6736 * include/cpplib.h (struct cpp_callbacks): Add used_define, 6737 used_undef and before_define. 6738 (NODE_USED): Define. 6739 * directives.c (do_define, do_undef, undefine_macros, do_ifdef, 6740 do_ifndef, cpp_pop_definition): Handle new flag and use new 6741 callbacks. 6742 * expr.c (parse_defined): Handle new flag and use new callbacks. 6743 * macro.c (enter_macro_context, _cpp_free_definition): Handle new 6744 flag and use new callbacks. 6745 6746 2008-04-01 Jakub Jelinek <jakub (a] redhat.com> 6747 6748 PR pch/13675 6749 * files.c (struct _cpp_file): Remove pch field. 6750 (pch_open_file): Don't set file->pch, just file->pchname. 6751 (should_stack_file): After pfile->cb.read_pch call 6752 free pchname and clear pchname, don't close file->fd. 6753 Test file->pchname instead of file->pch. Don't close fd after cb. 6754 (_cpp_stack_include): Test file->pchname instead of file->pch. 6755 6756 2008-03-28 Tom Tromey <tromey (a] redhat.com> 6757 6758 * Makefile.in (POSTCOMPILE): New variable. 6759 (.c.o): Use it. 6760 6761 2008-03-13 Tom Tromey <tromey (a] redhat.com> 6762 6763 PR libcpp/35322: 6764 * directives.c (destringize_and_run): Set pfile->directive. 6765 6766 2008-03-06 Markus Milleder <markus.milleder (a] generali.at> 6767 6768 PR preprocessor/35458 6769 * mkdeps.c (munge): Quote '#' with a '\'. 6770 6771 2008-02-27 Ralf Wildenhues <Ralf.Wildenhues (a] gmx.de> 6772 6773 PR preprocessor/35379 6774 * mkdeps.c (deps_write): Ensure the first target always appears 6775 in the first column, without leading backslash newline. Avoid 6776 some more extra whitespace. 6777 6778 2008-02-25 Thiemo Seufer <ths (a] mips.com> 6779 6780 * Makefile.in ($(srcdir)/config.in): Depend on configure.ac. 6781 6782 2008-02-19 Tom Tromey <tromey (a] redhat.com> 6783 6784 * traditional.c (lex_identifier): Use CPP_HASHNODE. 6785 * lex.c (lex_identifier): Use CPP_HASHNODE. 6786 * include/line-map.h (LINEMAP_POSITION_FOR_COLUMN): Wrap in 6787 do-while. 6788 * identifiers.c (alloc_node): Change return type. 6789 (_cpp_init_hashtable): Don't cast 'alloc_node'. 6790 (proxy_assertion_broken): New declaration. 6791 (cpp_forall_identifiers): Move comment. 6792 * line-map.c (linemap_add): Comment fix. 6793 (linemap_line_start): Indentation fix. 6794 6795 2008-01-25 Jakub Jelinek <jakub (a] redhat.com> 6796 6797 PR preprocessor/34692 6798 * macro.c (collect_args): Add pragma_buff argument. Push 6799 CPP_PRAGMA ... CPP_PRAGMA_EOL tokens to *pragma_buff, rather 6800 than into arguments. Reset prevent_expansion and parsing_args 6801 state at CPP_PRAGMA_EOL/CPP_EOF. 6802 (funlike_invocation_p): Add pragma_buff argument, pass it through 6803 to collect_args. 6804 (enter_macro_context): Add result argument. Adjust 6805 funlike_invocation_p caller. Emit all deferred pragma tokens 6806 gathered during collect_args before the expansion, add a padding 6807 token. Return 2 instead of 1 if any pragma tokens were prepended. 6808 (cpp_get_token): If enter_macro_context returns 2, don't return 6809 a padding token, instead cycle to grab CPP_PRAGMA token. 6810 * directives.c (_cpp_handle_directive): If was_parsing_args 6811 in deferred pragma, leave parsing_args and prevent_expansion as is. 6812 6813 2008-01-22 Tom Tromey <tromey (a] redhat.com> 6814 6815 PR c++/34859 6816 * macro.c (_cpp_create_definition): Handle __STDC_LIMIT_MACROS and 6817 __STDC_CONSTANT_MACROS. 6818 6819 2008-01-07 Fred Fish <fnf (a] specifix.com> 6820 6821 PR preprocessor/30363 6822 * traditional.c (replace_args_and_push): Add local variable 6823 cxtquote, calculate the replacement text size assuming a 6824 worst case of every input character quoted with backslash, 6825 and properly handle output quoting of quote characters in 6826 actual arguments used in function-like macros. 6827 6828 2008-01-03 Tom Tromey <tromey (a] redhat.com> 6829 6830 PR preprocessor/34602 6831 * directives.c (do_line): Don't try to spell EOF token. 6832 (do_linemarker): Add comment. 6833 6834 2007-12-11 DJ Delorie <dj (a] redhat.com> 6835 6836 * charset.c (convert_using_iconv): Close out any shift states, 6837 returning to the initial state. 6838 6839 2007-12-06 Tom Tromey <tromey (a] redhat.com> 6840 6841 PR c/29172 6842 * internal.h (struct cpp_reader) <file_hash_entries>: Changed 6843 type. 6844 <file_hash_entries_allocated, file_hash_entries_used>: Removed. 6845 * files.c (FILE_HASH_POOL_SIZE): New macro. 6846 (struct file_hash_entry_pool): New. 6847 (destroy_all_cpp_files): New function. 6848 (allocate_file_hash_entries): Allocate a file_hash_entry_pool. 6849 (new_file_hash_entry): Update. 6850 (free_file_hash_entries): New function. 6851 (_cpp_cleanup_files): Call free_file_hash_entries and 6852 destroy_all_cpp_files. 6853 (cpp_clear_file_cache): New function. 6854 * include/cpplib.h (cpp_clear_file_cache): Declare. 6855 6856 2007-12-03 Tom Tromey <tromey (a] redhat.com> 6857 6858 PR preprocessor/34288 6859 * configure.ac, config.in: Rebuilt. 6860 * configure.ac: Check for ssize_t. 6861 6862 2007-11-30 Tom Tromey <tromey (a] redhat.com> 6863 6864 PR preprocessor/32868 6865 * macro.c (_cpp_create_definition): Special case 6866 __STDC_FORMAT_MACROS. 6867 6868 2007-11-16 Michael Matz <matz (a] suse.de> 6869 6870 * files.c (search_path_head): Fix check for absolute paths. 6871 6872 2007-11-11 Tom Tromey <tromey (a] redhat.com> 6873 6874 PR c++/17557 6875 * include/cpplib.h (cpp_included_before): Declare. 6876 * files.c (struct file_hash_entry) <location>: New field. 6877 (_cpp_find_file): Initialize new field. 6878 (make_cpp_dir): Likewise. 6879 (cpp_included_before): New function. 6880 6881 2007-11-01 Tom Tromey <tromey (a] redhat.com> 6882 6883 PR preprocessor/30805 6884 * macro.c (paste_tokens): Handle padding token. 6885 (paste_tokens): Don't abort unless padding has PASTE_LEFT flag. 6886 6887 2007-10-31 Tom Tromey <tromey (a] redhat.com> 6888 6889 PR preprocessor/30786 6890 * macro.c (builtin_macro): Return result of _cpp_do__Pragma. 6891 * directives.c (_cpp_do__Pragma): Return error status. 6892 * internal.h (_cpp_do__Pragma): Update. 6893 * directives.c (get__Pragma_string): Back up if EOF seen. 6894 6895 2007-09-06 Tom Tromey <tromey (a] redhat.com> 6896 6897 * internal.h (struct cpp_reader) <invocation_location>: New 6898 field. 6899 (struct cpp_reader) <set_invocation_location>: Likewise. 6900 * init.c (cpp_set_line_map): New function. 6901 * line-map.c (linemap_add): Use linemap's allocator. 6902 * include/line-map.h (GTY): Define. 6903 (line_map_realloc): New typedef. 6904 (struct line_map): Mark with GTY. 6905 (struct line_maps): Likewise. 6906 (struct line_maps) <maps>: Likewise. 6907 (struct line_maps) <reallocator>: New field. 6908 * include/symtab.h (GTY): Conditionally define. 6909 * include/cpplib.h (cpp_set_line_map): Declare. 6910 (cpp_get_token_with_location): Declare. 6911 * macro.c (cpp_get_token): Set invocation_location on the reader. 6912 (cpp_get_token_with_location): New function. 6913 6914 2007-08-30 Chao-ying Fu <fu (a] mips.com> 6915 6916 * expr.c (interpret_float_suffix): Support hr, r, lr, llr, uhr, ur, 6917 ulr, ullr, hk, k, lk, llk, uhk, uk, ulk, ullk. 6918 (cpp_classify_number): Support decimal fixed-point constants without 6919 exponents. 6920 Warn about fixed-point constants when -pedantic. 6921 * include/cpplib.h (CPP_N_SMALL, CPP_N_MEDIUM, CPP_N_LARGE): Change 6922 comments to support fixed-point values. 6923 (CPP_N_FRACT, CPP_N_ACCUM): Define. 6924 6925 2007-08-18 Tom Tromey <tromey (a] redhat.com> 6926 6927 PR preprocessor/32974 6928 * directives.c (parse_include): Don't check for EOL when 6929 processing #pragma dependency. 6930 6931 2007-07-30 Ollie Wild <aaw (a] google.com> 6932 6933 * directives-only.c: New file. 6934 * internal.h (struct _cpp_dir_only_callbacks): New. 6935 (_cpp_preprocess_dir_only): New function. 6936 * directives.c (_cpp_handle_directive): Check directives_only before 6937 disabling execution of indented directives. 6938 * files.c (_cpp_stack_file): Add directives_only check. 6939 * include/cpplib.h (struct cpp_options): Add directives_only. 6940 (cpp_init_special_builtins): New function. 6941 * init.c (cpp_init_special_builtins): New function. 6942 (cpp_init_builtins): Move builtin_array initialization to 6943 cpp_init_special_builtins. 6944 (post_options): Check directives_only before setting 6945 pfile->state.prevent_expansion = 1. 6946 * macro.c (_cpp_builtin_macro_text): Print an error if __COUNTER__ 6947 is expanded inside a directive while -fdirectives-only is enabled. 6948 * Makefile.in (libcpp_a_OBJS): Add directives-only.o. 6949 (libcpp_a_SOURCES): Add directives-only.c. 6950 6951 2007-07-04 Uros Bizjak <ubizjak (a] gmail.com> 6952 6953 * traditional.c (_cpp_scan_out_logical_line): Initialize 6954 fmacro.args, fmacro.node, fmacro.offset, fmacro.line and 6955 fmacro.args to prevent 'may be used uninitialized' warning. 6956 6957 2007-07-03 Uros Bizjak <ubizjak (a] gmail.com> 6958 6959 * include/cpplib.h (CPP_N_WIDTH_MD, CPP_N_MD_W, CPP_N_MD_Q): 6960 Add new constants. 6961 * expr.c (interpret_float_suffix): Process 'w', 'W', 'q' and 'Q' 6962 suffixes. Return CPP_N_MD_W for 'w' or 'W' suffixes and CPP_N_MD_Q 6963 for 'q' or 'Q' suffixes. 6964 6965 2007-06-17 Danny Smith <dannysmith (a] users.sourceforge.net 6966 6967 * files.c (open_file): Correct typo. 6968 6969 2007-06-16 Vladimir Prus <vladimir (a] codesourcery.com> 6970 6971 * files.c (open_file): Prevent the call 6972 for stat from overwriting errno. 6973 6974 2007-06-09 Vladimir Prus <vladimir (a] codesourcery.com> 6975 6976 * files.c (open_file): Account for the 6977 fact that on windows, opening a directory gives 6978 EACCES. 6979 6980 2007-06-05 Joerg Wunsch <j.gnu (a] uriah.heep.sax.de> 6981 6982 PR preprocessor/23479 6983 * expr.c (cpp_classify_number): Implement 0b-prefixed binary 6984 integer constants. 6985 (append_digit): Likewise. 6986 * include/cpplib.h: Add CPP_N_BINARY, to be used for 0b-prefixed 6987 binary integer constants. 6988 6989 2007-05-31 Dave Korn <dave.korn (a] artimi.com> 6990 6991 PR preprocessor/14331 6992 * lex.c (_cpp_get_fresh_line): Don't warn if no newline at EOF. 6993 6994 2007-05-24 Ollie Wild <aaw (a] google.com> 6995 6996 * macro.c (_cpp_builtin_macro_text): Handle BT_COUNTER. 6997 * pch.c (cpp_write_pch_deps): Save __COUNTER__ state. 6998 (cpp_write_pch_state): Save __COUNTER__ state. 6999 (cpp_valid_state): Check valid __COUNTER__ state. 7000 (cpp_read_state): Read new __COUNTER__ state. 7001 * include/cpplib.h (enum builtin_type): Add BT_COUNTER enumerator. 7002 * init.c (builtin_array): Add __COUNTER__/BT_COUNTER. 7003 * internal.h (struct cpp_reader): Add counter member. 7004 7005 2007-05-23 Simon Martin <simartin (a] users.sourceforge.net> 7006 7007 PR preprocessor/20077 7008 * macro.c (create_iso_definition): Fixed the method to determine 7009 whether the token-pasting operator appears at the beginning or the end 7010 of a macro. 7011 7012 2007-05-21 Ian Lance Taylor <iant (a] google.com> 7013 7014 * internal.h (struct cpp_reader): Add new fields: 7015 nonexistent_file_hash and nonexistent_file_ob. 7016 * files.c: Include "obstack.h". 7017 (find_file_in_dir): Before trying to open the file, look up the 7018 path name in the hash table of nonexistent files. After failing 7019 to open the file, add the path name to the hash table. 7020 (_cpp_find_file): Cache the results of looking up the file name 7021 starting with the quote and bracket chain heads, if we can. 7022 (nonexistent_file_hash_eq): New static function. 7023 (_cpp_init_files): Initialize pfile->nonexistent_file_hash and 7024 pfile->nonexistent_file_ob. 7025 (_cpp_cleanup_files): Free pfile->nonexistent_file_hash and 7026 pfile->nonexistent_file_ob. 7027 7028 2007-05-14 Janis Johnson <janis187 (a] us.ibm.com> 7029 7030 * expr.c (cpp_classify_number): Warn about dfp constant for -pedantic. 7031 7032 PR c/31924 7033 * expr.c (interpret_float_suffix): Check for invalid suffix. 7034 7035 2007-05-02 Eric Christopher <echristo (a] apple.com> 7036 7037 * expr.c (num_div_op): Don't overflow if the result is 7038 zero. 7039 7040 2007-05-02 Tom Tromey <tromey (a] redhat.com> 7041 7042 PR preprocessor/28709 7043 * macro.c (paste_tokens): Remove PASTE_LEFT from the old lhs. 7044 7045 2007-03-30 Michael Meissner <michael.meissner (a] amd.com> 7046 7047 * directives.c (lex_macro_node_from_str): Fix alloca call to be 7048 type correct. 7049 7050 2007-03-30 Richard Henderson <rth (a] redhat.com> 7051 7052 * directives.c (lex_macro_node_from_str): New. 7053 (cpp_push_definition, cpp_pop_definition): New. 7054 * include/cpplib.h (cpp_push_definition, cpp_pop_definition): Declare. 7055 7056 2007-03-01 Brooks Moses <brooks.moses (a] codesourcery.com> 7057 7058 * Makefile.in: Add dummy install-pdf target. 7059 7060 2007-01-30 Tom Tromey <tromey (a] redhat.com> 7061 7062 PR preprocessor/30468 7063 * mkdeps.c (apply_vpath): Strip successive '/'s if we stripped 7064 './'. 7065 7066 2007-01-30 Tom Tromey <tromey (a] redhat.com> 7067 7068 PR preprocessor/29966 7069 * macro.c (lex_expansion_token): Save and restore cpp_reader's 7070 cur_token. 7071 (_cpp_create_definition): Don't restore cur_token here. 7072 * lex.c (_cpp_lex_token): Added assertion. 7073 7074 2007-01-27 Tom Tromey <tromey (a] redhat.com> 7075 7076 * configure: Rebuilt. 7077 7078 2007-01-12 Tom Tromey <tromey (a] redhat.com> 7079 7080 PR preprocessor/28227 7081 * directives.c (lex_macro_node): Added 'is_def_or_undef' 7082 argument. 7083 (do_define): Update. 7084 (do_undef): Update. 7085 (do_ifdef): Update. 7086 (do_ifndef): Update. 7087 7088 2007-01-11 Paolo Bonzini <bonzini (a] gnu.org> 7089 7090 * configure: Regenerate. 7091 7092 2007-01-11 Paolo Bonzini <bonzini (a] gnu.org> 7093 7094 * configure: Regenerate. 7095 7096 2007-01-04 Tom Tromey <tromey (a] redhat.com> 7097 7098 PR preprocessor/28165 7099 * internal.h (cpp_in_primary_file): New function. 7100 * directives.c (do_include_next): Use cpp_in_primary_file. 7101 (do_pragma_once): Likewise. 7102 (do_pragma_system_header): Likewise. 7103 7104 2006-12-29 Ian Lance Taylor <iant (a] google.com> 7105 7106 * lex.c (_cpp_clean_line): Add uses of __builtin_expect. Don't 7107 look backward at the end of the line unless we saw a backslash. 7108 7109 2006-12-29 Jakub Jelinek <jakub (a] redhat.com> 7110 7111 PR preprocessor/29612 7112 * directives.c (do_linemarker): Set pfile->buffer->sysp always, not 7113 only when new_sysp is non-zero. 7114 7115 2006-12-28 Tom Tromey <tromey (a] redhat.com> 7116 7117 PR preprocessor/30001 7118 * charset.c (_cpp_convert_input): Check that to.len is greater 7119 than zero. 7120 7121 2006-11-20 Trevor Smigiel <Trevor_Smigiel (a] playstation.sony.com> 7122 7123 * configure.ac (need_64bit_hwint): Need 64bit hwint for SPU. 7124 * configure: Rebuilt. 7125 7126 2006-11-01 Douglas Gregor <doug.gregor (a] gmail.com> 7127 7128 * include/cpplib.h (enum c_lang): Add CLK_GNUCXX0X and CLK_CXX0X 7129 for experimental C++0x mode. 7130 * init.c (lang_defaults): Add defaults for C++0x modes. C++0x has 7131 adopted the preprocessor changes introduced in C99. 7132 7133 2006-10-29 Joseph Myers <joseph (a] codesourcery.com> 7134 7135 * configure.ac (need_64bit_hwint): Set for i[34567]86-*-linux* 7136 depending on --enable-targets=all. 7137 * configure: Regenerate. 7138 7139 2006-10-12 Jakub Jelinek <jakub (a] redhat.com> 7140 7141 PR preprocessor/28709 7142 * macro.c (paste_tokens): Do error reporting here, use BUF with the 7143 spelled LHS token as opposed to spelling it again. 7144 (paste_all_tokens): Don't report errors here, just break on failure. 7145 7146 2006-10-10 Brooks Moses <bmoses (a] stanford.edu> 7147 7148 * Makefile.in: Added empty "pdf" target. 7149 7150 2006-09-22 Geoffrey Keating <geoffk (a] apple.com> 7151 7152 * configure.ac: Make need_64_bit_hwint case for x86-darwin 7153 match exactly the glob in gcc/config.gcc. 7154 * configure: Regenerate. 7155 7156 2006-09-13 Joseph S. Myers <joseph (a] codesourcery.com> 7157 7158 PR c/28768 7159 PR preprocessor/14634 7160 * lex.c (lex_string): Pedwarn for unterminated literals. 7161 7162 2006-09-08 Eric Christopher <echristo (a] apple.com> 7163 7164 * configure.ac: Add 64-bit HWI support for i?86-darwin. 7165 7166 2006-08-14 Steve Ellcey <sje (a] cup.hp.com> 7167 7168 PR c++/28288 7169 PR c++/14556 7170 * include/cpplib.h: Remove <?, >?, <?=, and >?= tokens. 7171 (CPP_LAST_EQ): Change. 7172 (CPP_LAST_PUNCTUATOR): Change. 7173 * expr.c (cpp_operator): Remove MIN and MAX. 7174 (reduce): Remove CPP_MIN and CPP_MAX. 7175 (num_binary_op): Ditto. 7176 * lex.c (_cpp_lex_direct): Ditto. 7177 (cpp_avoid_paste): Remove ? as legal symbol after > or <. 7178 7179 2006-06-09 Jakub Jelinek <jakub (a] redhat.com> 7180 7181 PR preprocessor/27746 7182 * directives.c (do_pragma): Handle pragma with valid namespace 7183 and invalid name coming from macro expansion. 7184 * directives.c (destringize_and_run): Initialize next field in 7185 context. 7186 7187 PR c/27747 7188 PR c++/27748 7189 * directives.c (destringize_and_run): Set NO_EXPAND on the 7190 tokens. 7191 7192 * macro.c (_cpp_backup_tokens): Fix comment typo. 7193 7194 2006-05-31 Daniel Jacobowitz <dan (a] codesourcery.com> 7195 7196 * Makefile.in (CATALOGS): Add po/ prefix. 7197 * configure: Regenerated. 7198 7199 2006-05-23 Carlos O'Donell <carlos (a] codesourcery.com> 7200 7201 * Makefile.in: Add install-html target. Add install-html to .PHONY 7202 7203 2006-02-17 Grigory Zagorodnev <grigory_zagorodnev (a] linux.intel.com> 7204 7205 * macro.c (_cpp_builtin_macro_text): Handle BT_TIMESTAMP. 7206 * files.c (_cpp_get_file_stat): New function. 7207 * include/cpplib.h (builtin_type): Add BT_TIMESTAMP. 7208 * init.c (builtin_array): Add support for __TIMESTAMP__/BT_TIMESTAMP. 7209 * internal.h (_cpp_get_file_stat): Prototype. 7210 (struct cpp_buffer): Add timestamp. 7211 7212 2006-01-23 Jakub Jelinek <jakub (a] redhat.com> 7213 7214 PR preprocessor/25717 7215 * init.c (cpp_init_builtins): If __STDC__ will not change value 7216 between system headers and other sources, define it as a normal 7217 macro rather than a builtin. 7218 * macro.c (_cpp_builtin_macro_text) <case BT_STDC>: Only check 7219 cpp_in_system_header condition. 7220 7221 2006-01-05 Paolo Bonzini <bonzini (a] gnu.org> 7222 7223 * Makefile.in: Use -MMD instead of -MD. 7224 7225 2006-01-04 Dmitry Kurochkin <dmitry.kurochkin (a] gmail.com> 7226 Richard Henderson <rth (a] redhat.com> 7227 7228 Merge from gomp branch: 7229 * directives.c (struct pragma_entry): Add is_deferred. Add ident 7230 entry to value union. 7231 (end_directive): Don't eat the line if in_deferred_pragma. 7232 (run_directive): Remove pragma hacks. 7233 (insert_pragma_entry): Remove. 7234 (new_pragma_entry): New. 7235 (register_pragma_1): Split out of register_pragma. Only handle 7236 the lookup tree and return the new entry. 7237 (cpp_register_pragma): Fill in the pragma entry here. 7238 (cpp_register_deferred_pragma): New. 7239 (register_pragma_internal): New. 7240 (_cpp_init_internal_pragmas): Use register_pragma_internal. 7241 (do_pragma): Allow pragma expansion after namespace. For deferred 7242 pragmas, don't slurp the line into a string. 7243 (destringize_and_run): Save tokens for deferred pragmas. 7244 (cpp_handle_deferred_pragma): Remove. 7245 * macro.c (builtin_macro): Remove pragma token hack. 7246 (_cpp_push_token_context): Rename from push_token_context and export. 7247 * internal.h (struct lexer_state): Add pragma_allow_expansion. 7248 (_cpp_push_token_context): Declare. 7249 * lex.c (_cpp_lex_token): Allow _cpp_handle_directive to return 7250 a token. Update the line number correctly if so. 7251 (_cpp_lex_direct): Emit CPP_PRAGMA_EOL tokens. 7252 (cpp_token_val_index): Return CPP_TOKEN_FLD_PRAGMA for pragmas. 7253 * include/cpplib.h (PRAGMA_EOL): New. 7254 (CPP_TOKEN_FLD_PRAGMA): New. 7255 (struct cpp_token): Add val.pragma. 7256 (struct cpp_options): Remove defer_pragmas. 7257 (cpp_handle_deferred_pragma): Remove. 7258 (cpp_register_deferred_pragma): Declare. 7259 7260 2006-01-01 Jakub Jelinek <jakub (a] redhat.com> 7261 7262 PR c++/25294 7263 * directives.c (do_pragma): If pragma line ends with multi-line 7264 block comment, end the saved deferred pragma string before that 7265 comment. Handle embedded '\0' chars on the pragma line. 7266 7267 2005-12-22 Volker Reichelt <reichelt (a] igpm.rwth-aachen.de> 7268 7269 PR c++/23333 7270 * include/cpplib.h: Add PURE_ZERO to flags for the cpp_token structure. 7271 7272 2005-12-07 Jon Grimm <jgrimm2 (a] us.ibm.com> 7273 Ben Elliston <bje (a] au.ibm.com> 7274 7275 * include/cpplib.h (CPP_N_DFLOAT): New. 7276 * expr.c (interpret_float_suffix): Identify df, dd, and dl 7277 suffixes as decimal floating point constants. 7278 (cpp_classify_number): Disallow hexadecimal DFP constants. 7279 7280 2005-11-14 Gerald Pfeifer <gerald (a] pfeifer.com> 7281 Ian Lance Taylor <ian (a] airs.com> 7282 7283 * include/cpplib.h (struct cpp_callbacks): Annotate error with 7284 ATTRIBUTE_FPTR_PRINTF(3,0) instead of ATTRIBUTE_PRINTF(3,0). 7285 7286 2005-11-09 Per Bothner <per (a] bothner.com> 7287 Uros Bizjak <uros (a] kss-loka.si> 7288 7289 PR c/24101 7290 * init.c (read_original_filename): Temporarily set 7291 state.in_directive before calling _cpp_lex_direct for 7292 CPP_HASH tokens. 7293 7294 2005-11-03 James E Wilson <wilson (a] specifix.com> 7295 7296 PR preprocessor/24202 7297 * files.c (_cpp_pop_file_buffer): Set buffer_valid to false. 7298 7299 2005-11-04 Joseph S. Myers <joseph (a] codesourcery.com> 7300 7301 * include/cpplib.h (struct cpp_callbacks): Make error take 7302 va_list* parameter. 7303 * errors.c (cpp_error): Update call to callback. 7304 7305 2005-11-03 Andrew Pinski <pinskia (a] physics.uc.edu> 7306 7307 PR preprocessor/22042 7308 * macro.c (_cpp_builtin_macro_text): Lower the needed max 7309 buffer size. 7310 (cpp_quote_string): Don't octalify non printable 7311 charactors. 7312 7313 2005-11-03 Joseph S. Myers <joseph (a] codesourcery.com> 7314 7315 PR c++/17964 7316 * include/cpplib.h (struct cpp_options): Add client_diagnostic. 7317 (struct cpp_callbacks): Add error. 7318 * errors.c (cpp_error): If client_diagnostic, use error callback. 7319 * charset.c (convert_escape): Don't use %03o in diagnostic. 7320 7321 2005-10-21 James E Wilson <wilson (a] specifix.com> 7322 7323 PR preprocessor/15220 7324 * files.c (_cpp_find_file): New parameter angle_brackets. Fix all 7325 callers. Pass to open_file_failed. 7326 (open_file_failed): New parameter angle_brackets. Fix all callers. 7327 Use in print_dep assignment. 7328 * init.c (cpp_read_main_file): Pass additional arg to _cpp_find_file. 7329 * internal.h (_cpp_find_file): Add new parm to declaration. 7330 7331 2005-10-08 Kazu Hirata <kazu (a] codesourcery.com> 7332 7333 * configure.ac: Require 64-bit int for arm*-*-*eabi*. 7334 * configure: Regenerate. 7335 7336 2005-10-04 Ian Lance Taylor <ian (a] airs.com> 7337 7338 PR preprocessor/13726 7339 * directives.c (check_eol_return_comments): New static function. 7340 (parse_include): Add buf parameter. Change all callers. 7341 (do_include_common): If not discard comments, turn on 7342 save_comments. Pass collected comments to include callback. 7343 * include/cpplib.h (struct cpp_callbacks): Add new parameter to 7344 include callback: cpp_token list. 7345 7346 2005-09-20 Joseph S. Myers <joseph (a] codesourcery.com> 7347 7348 * include/cpplib.h (struct cpp_options): Add extended_identifiers. 7349 * init.c (struct lang_flags, lang_defaults): Add 7350 extended_identifiers. 7351 (cpp_set_lang): Use it. 7352 * lex.c (forms_identifier_p): Check extended_identifiers. 7353 7354 2005-08-30 Jakub Jelinek <jakub (a] redhat.com> 7355 7356 PR preprocessor/20348 7357 PR preprocessor/20356 7358 * files.c (_cpp_find_file, search_cache): Revert 2004-06-26 and 7359 2004-06-05 changes. 7360 7361 2005-07-23 Kaveh R. Ghazi <ghazi (a] caip.rutgers.edu> 7362 7363 * configure.ac (ACX_PROG_CC_WARNING_OPTS): add 7364 -Wmissing-format-attribute. 7365 7366 * configure: Regenerate. 7367 7368 2005-06-29 Kelley Cook <kcook (a] gcc.gnu.org> 7369 7370 * all files: Update FSF address in copyright headers. 7371 * makeucnid.c (write_copyright): Update outputted FSF address. 7372 7373 2005-06-13 Zack Weinberg <zack (a] codesourcery.com> 7374 7375 * configure.ac: Invoke ZW_CREATE_DEPDIR and 7376 ZW_PROG_COMPILER_DEPENDENCIES. 7377 * aclocal.m4, configure: Regenerate. 7378 * Makefile.in (DEPMODE, DEPDIR, depcomp, COMPILE.base, COMPILE): 7379 New variables. 7380 (distclean): Clean up $(DEPDIR) and its contents. 7381 (.c.o): Use $(COMPILE). 7382 Include $(DEPDIR)/*.Po for most object->header dependencies. 7383 7384 2005-05-28 Gabriel Dos Reis <gdr (a] integrable-solutions.net> 7385 7386 * configure.ac: Check declarations for asprintf and vasprintf. 7387 * config.in: Regenerate. 7388 * configure: Likewise. 7389 7390 * charset.c (conversion_loop): Use XRESIZEVEC. 7391 (convert_no_conversion): Likewise. 7392 (convert_using_iconv): Likewise. 7393 (init_iconv_desc): Cast return value of alloca. 7394 (cpp_host_to_exec_charset): Use XNEWVEC. 7395 (emit_numeric_escape): Use XRESIZEVEC. 7396 (cpp_interpret_string): Use XNEWVEC. 7397 (cpp_interpret_string): Use XRESIZEVEC. 7398 (_cpp_interpret_identifier): Cast return value of alloca. 7399 (_cpp_convert_input): Use XNEWVEC and XRESIZEVEC. 7400 * directives.c (glue_header_name): Use XNEWVEC and XRESIZEVEC. 7401 (parse_include): Use XNEWVEC. 7402 (insert_pragma_entry): Rename local variable "new" to 7403 "new_entry". 7404 (save_registered_pragmas): Cast return value of xmemdup. 7405 (destringize_and_run): Same for alloca. 7406 (parse_assertion): Likewise. 7407 (do_assert): Cast allocated storage to proper type. 7408 (cpp_define): Likewise. 7409 (_cpp_define_builtin): Likewise. 7410 (cpp_undef): Likewise. 7411 (handle_assertion): Likewise. 7412 (cpp_push_buffer): Rename local variable "new" to "new_buffer". 7413 * expr.c (CPP_UPLUS): Cast value to type cpp_ttype. 7414 (CPP_UMINUS): Likewise. 7415 (struct cpp_operator): Rename from struct operator. 7416 (_cpp_expand_op_stack): Use XRESIZEVEC. 7417 * files.c (pch_open_file): Use XNEWVEC. 7418 (pch_open_file): Use XRESIZEVEC. 7419 (read_file_guts): Use XNEWVEC and XRESIZEVEC. 7420 (dir_name_of_file): Use XNEWVEC. 7421 (make_cpp_file): Use XCNEW. 7422 (make_cpp_dir): Likewise. 7423 (allocate_file_hash_entries): USE XNEWVEC. 7424 (cpp_included): Cast return value of htab_find_with_hash. 7425 (append_file_to_dir): Use XNEWVEC. 7426 (read_filename_string): Likewise. Use XRESIZEVEC too. 7427 (read_name_map): Cast return value of alloca. Use XRESIZEVEC. 7428 (remap_filename): Use XNEWVEC. 7429 (struct pchf_entry): Move definition out of struct pchf_data. 7430 (_cpp_save_file_entries): Use XCNEWVAR. 7431 (_cpp_read_file_entries): Use XNEWVAR. 7432 * identifiers.c (alloc_node): Use XOBNEW. 7433 * init.c (cpp_create_reader): Use XCNEW. 7434 (cpp_init_builtins): Cast of b->value to enum builtin_type. 7435 (read_original_directory): Cast return value of alloca. 7436 * lex.c (add_line_note): Use XRESIZEVEC. 7437 (warn_about_normalization): Use XNEWVEC. 7438 (_cpp_lex_direct): Cast node->directive_index to (enum cpp_ttype). 7439 (new_buff): Use XNEWVEC. 7440 * line-map.c (linemap_add): Use XRESIZEVEC. 7441 * macro.c (builtin_macro): Cast return value of alloca. 7442 (paste_tokens): Likewise. 7443 (expand_arg): Use XNEWVEC and XRESIZEVEC. 7444 (_cpp_save_parameter): Use XRESIZEVEC. 7445 (create_iso_definition): Cast allocated storage to proper type. 7446 (_cpp_create_definition): Likewise. 7447 (cpp_macro_definition): Use XRESIZEVEC. 7448 * makedepend.c (add_clm): Use XNEW. 7449 (add_dir): Likewise. 7450 * mkdeps.c (munge): Use XNEWVEC. 7451 (deps_init): Use XCNEW. 7452 (deps_add_target): Use XRESIZEVEC. 7453 (deps_add_default_target): Cast return value of alloca. 7454 (deps_add_dep): Use XRESIZEVEC. 7455 (deps_add_vpath): Likewise. Use XNEWVEC too. 7456 (deps_restore): Likewise. 7457 * pch.c (save_idents): Use XNEW and XNEWVEC. 7458 (cpp_save_state): Use XNEW. 7459 (count_defs): Cast return value of htab_find. 7460 (write_defs): Likewise. 7461 (cpp_write_pch_deps): Use XNEWVEC. 7462 (collect_ht_nodes): Use XRESIZEVEC. 7463 (cpp_valid_state): Use XNEWVEC. 7464 (save_macros): Use XRESIZEVEC. Cast return value of xmemdup. 7465 * symtab.c (ht_create): Use XCNEW. 7466 (ht_lookup_with_hash): Cast return value of obstack_copy0. 7467 (ht_expand): Use XCNEWVEC. 7468 * system.h (HAVE_DESIGNATED_INITIALIZERS): False if __cplusplus. 7469 (bool): Do not define if __cplusplus. 7470 7471 2005-05-12 Zack Weinberg <zack (a] codesourcery.com> 7472 7473 * directives.c (#sccs table entry): Mark IN_I, consistent with #ident. 7474 (do_sccs): Delete function definition, #define to do_ident. 7475 (do_ident): Don't hardwire directive name. 7476 7477 2005-05-12 Ryota Kunisawa <kunisawa (a] access.co.jp> 7478 7479 PR bootstrap/21230 7480 * configure: Regenerate. 7481 7482 2005-04-27 Andris Pavenis <pavenis (a] latnet.lv> 7483 7484 * files.c: Include io.h for DJGPP to get prototype of setmode. 7485 7486 2005-04-19 Per Bothner <per (a] bothner.com> 7487 7488 PR preprocessor/20907 7489 * line-map.c (linemap_line_start): Fix bug when we need to increse 7490 column_bits but can re-use the current line_map. 7491 7492 2005-04-19 Kaveh R. Ghazi <ghazi (a] caip.rutgers.edu> 7493 7494 * system.h (fopen, fdopen, freopen): Define these to the unlocked 7495 libiberty functions. 7496 7497 2005-04-11 Kaveh R. Ghazi <ghazi (a] caip.rutgers.edu> 7498 7499 * configure.ac (libcpp_UNLOCKED_FUNCS): New. 7500 (AC_CHECK_FUNCS, AC_CHECK_DECLS): Check for libcpp_UNLOCKED_FUNCS. 7501 * system.h (putchar, getc, getchar, clearerr, feof, fileno, 7502 fflush, fgetc, fgets, ferror, fread): Redefine to the associated 7503 _unlocked function. 7504 (fwrite_unlocked): Fix prototype. 7505 7506 * configure, config.in: Regenerate. 7507 7508 2005-04-05 Jakub Jelinek <jakub (a] redhat.com> 7509 7510 PR preprocessor/19475 7511 * macro.c (create_iso_definition): For < ISO C99, don't 7512 pedwarn if there is no whitespace between macro name and its 7513 replacement, but the replacement starts with a basic character 7514 set character. 7515 7516 2005-03-28 Andreas Jaeger <aj (a] suse.de> 7517 7518 * lex.c (warn_about_normalization): Cast field width to int to 7519 avoid warning. 7520 7521 2005-03-19 Joseph S. Myers <joseph (a] codesourcery.com> 7522 7523 * configure.ac: Consistently use solaris2.1[0-9]* instead of 7524 solaris2.1[0-9]. 7525 * configure: Regenerate. 7526 7527 2005-03-15 Geoffrey Keating <geoffk (a] apple.com> 7528 7529 * charset.c (_cpp_valid_ucn): In identifiers, reject a partial 7530 UCN rather than printing an error. 7531 7532 2005-03-14 Geoffrey Keating <geoffk (a] apple.com> 7533 7534 * lex.c (forms_identifier_p): Disable UCNs in C89 mode. 7535 7536 2005-03-14 Geoffrey Keating <geoffk (a] apple.com> 7537 7538 * init.c (cpp_create_reader): Default warn_normalize to normalized_C. 7539 * charset.c: Update for new format of ucnid.h. 7540 (ucn_valid_in_identifier): Update for new format of ucnid.h. 7541 Add NST parameter, and update it; update callers. 7542 (cpp_valid_ucn): Add NST parameter, update callers. Replace abort 7543 with cpp_error. 7544 (convert_ucn): Pass normalize_state to cpp_valid_ucn. 7545 * internal.h (struct normalize_state): New. 7546 (INITIAL_NORMALIZE_STATE): New. 7547 (NORMALIZE_STATE_RESULT): New. 7548 (NORMALIZE_STATE_UPDATE_IDNUM): New. 7549 (_cpp_valid_ucn): New. 7550 * lex.c (warn_about_normalization): New. 7551 (forms_identifier_p): Add normalize_state parameter, update callers. 7552 (lex_identifier): Add normalize_state parameter, update callers. Keep 7553 the state current. 7554 (lex_number): Likewise. 7555 (_cpp_lex_direct): Pass normalize_state to subroutines. Check 7556 it with warn_about_normalization. 7557 * makeucnid.c: New. 7558 * ucnid.h: Replace. 7559 * ucnid.pl: Remove. 7560 * ucnid.tab: Make appropriate for input to makeucnid.c. Remove 7561 comments about obsolete version of C++. 7562 * include/cpplib.h (enum cpp_normalize_level): New. 7563 (struct cpp_options): Add warn_normalize field. 7564 7565 2005-03-11 Geoffrey Keating <geoffk (a] apple.com> 7566 7567 * directives.c (glue_header_name): Update call to cpp_spell_token. 7568 * internal.h (_cpp_interpret_identifier): New. 7569 * charset.c (_cpp_interpret_identifier): New. 7570 (_cpp_valid_ucn): Allow UCN version of '$'. 7571 * lex.c (lex_identifier): Add extra parameter to indicate if initial 7572 character was '$' or '\'. Support identifiers with UCNs. 7573 (forms_identifier_p): Allow UCNs. 7574 (_cpp_lex_direct): Pass extra parameter to lex_identifier. 7575 (utf8_to_ucn): New. 7576 (cpp_spell_token): Add FORSTRING parameter. Use it. 7577 (cpp_token_as_text): Update call to cpp_spell_token. 7578 (cpp_output_token): Write UCNs back out. 7579 (stringify_arg): Update call to cpp_spell_token. 7580 (paste_tokens): Likewise. 7581 (cpp_macro_definition): Likewise. 7582 * macro.c (stringify_arg): Likewise. 7583 (paste_tokens): Likewise. 7584 (cpp_macro_definition): Likewise. 7585 * include/cpplib.h: Add parameter to cpp_spell_token. 7586 7587 2005-03-04 Jakub Jelinek <jakub (a] redhat.com> 7588 7589 PR bootstrap/20282 7590 PR bootstrap/20305 7591 * macro.c (replace_args, cpp_get_token): Copy whole 7592 cpp_token_u instead of just cpp_string field from it. 7593 7594 2005-02-28 Devang Patel <dpatel (a] apple.com> 7595 7596 * directives.c (do_line): Save sysp early before line table is 7597 realloc'ed. 7598 7599 2005-02-20 Zack Weinberg <zack (a] codesourcery.com> 7600 7601 PR 18785 7602 * charset.c (LAST_POSSIBLY_BASIC_SOURCE_CHAR): New helper macro. 7603 (cpp_host_to_exec_charset): New function. 7604 * include/cpplib.h: Declare cpp_host_to_exec_charset. 7605 7606 2005-02-19 Devang Patel <dpatel (a] apple.com> 7607 7608 * charset.c (_cpp_convert_input): Check '\r' before inserting 7609 '\n' at the end. 7610 7611 2005-02-15 Eric Christopher <echristo (a] redhat.com> 7612 7613 PR preprocessor/19077 7614 * macro.c (cpp_macro_definition): Move handling of whitespace 7615 to PREV_WHITE conditional. Remove overloading of len 7616 variable. 7617 7618 2005-02-14 Kazu Hirata <kazu (a] cs.umass.edu> 7619 7620 * directives.c, files.c, init.c, internal.h, macro.c, pch.c, 7621 traditional.c: Update copyright. 7622 7623 2005-02-14 Paolo Bonzini <bonzini (a] gnu.org> 7624 7625 PR bootstrap/19818 7626 * configure.ac: Check for declaration of basename and getopt. 7627 * config.in: Regenerate. 7628 * configure: Regenerate. 7629 * internal.h (ustrcspn): New. 7630 * macro.c (create_iso_definition): Fix allocation of memory. 7631 (padding_token): Add cast to remove const-ness. 7632 * pch.c (cpp_read_state): Use ustrcspn. 7633 7634 2005-02-08 Mike Stump <mrs (a] apple.com> 7635 7636 * files.c (pchf_adder): Remove. 7637 (struct pchf_adder_info): Likewise. 7638 (_cpp_save_file_entries): Write out all files so that #import works. 7639 7640 2005-01-23 Joseph S. Myers <joseph (a] codesourcery.com> 7641 7642 * configure: Regenerate. 7643 7644 2005-01-11 Tobias Schlueter <tobias.schlueter (a] physik.uni-muenchen.de> 7645 7646 * include/cpplib.h (c_lang): Fix comment to say cpp_create_reader. 7647 7648 * include/cpplib.h: Also update copyright years. 7649 7650 2005-01-03 Geoffrey Keating <geoffk (a] apple.com> 7651 7652 * files.c (_cpp_find_file): Add files found by search_path_exhausted 7653 to the list of all files. 7654 7655 2005-01-01 Gabriel Dos Reis <gdr (a] integrable-solutions.net> 7656 7657 * internal.h: Update references to Cpp lib filenames. 7658 * directives.c: Likewise. 7659 * init.c: Likewise. 7660 * macro.c: Likewise. 7661 * traditional.c: Likewise. 7662 7663 2004-12-15 Eric Botcazou <ebotcazou (a] libertysurf.fr> 7664 7665 PR preprocessor/15167 7666 * files.c (destroy_cpp_file): New function. 7667 (should_stack_file): Make a new file if the 7668 compared file is still stacked. 7669 7670 2004-11-28 Nathanael Nerode <neroden (a] gcc.gnu.org> 7671 7672 PR preprocessor/17610 7673 * directives.c (do_include_common): Error out if an empty filename 7674 is given for #include (or #include_next or #import). 7675 7676 2004-11-27 Roger Sayle <roger (a] eyesopen.com> 7677 Zack Weinberg <zack (a] codesourcery.com> 7678 7679 * internal.h: Replace all uses of uchar with unsigned char. 7680 * include/cpp-id-data.h: Likewise. Guard typedef of uchar 7681 with !IN_GCC, so uchar is only defined whilst building libcpp. 7682 7683 2004-11-24 Kelley Cook <kcook (a] gcc.gnu.org> 7684 7685 * aclocal.m4: Regenerate. 7686 7687 2004-11-24 Roger Sayle <roger (a] eyesopen.com> 7688 7689 PR preprocessor/15824 7690 * configure.ac: Correct HAVE_UCHAR test to #include <sys/types.h> 7691 directly, instead of the non-existant "system.h" and "ansidecl.h". 7692 * configure: Regenerate. 7693 7694 2004-11-23 Daniel Jacobowitz <dan (a] codesourcery.com> 7695 Joseph Myers <joseph (a] codesourcery.com> 7696 7697 * internal.h (struct lexer_state): Add in_deferred_pragma. 7698 * directives.c (struct pragma_entry): Add allow_expansion. 7699 (insert_pragma_entry): Take allow_expansion flag. 7700 (register_pragma): Likewise. 7701 (cpp_register_pragma): Likewise. 7702 (_cpp_init_internal_pragmas): Update calls to cpp_register_pragma. 7703 (do_pragma): Honor allow_expansion. 7704 (cpp_handle_deferred_pragma): Set in_deferred_pragma. 7705 * include/cpplib.h (cpp_register_pragma): Update prototype. 7706 7707 2004-11-18 Daniel Jacobowitz <dan (a] codesourcery.com> 7708 Mark Mitchell <mark (a] codesourcery.com> 7709 7710 * configure.ac (i[34567]86-*-solaris2.1[0-9]*): Set 7711 need_64bit_hwint=yes. 7712 * configure: Regenerate. 7713 7714 2004-11-09 Joseph S. Myers <joseph (a] codesourcery.com> 7715 7716 * Makefile.in ($(PACKAGE).pot): New rule. Depend on 7717 po/$(PACKAGE).pot. 7718 (po/$(PACKAGE).pot): Use ":" instead of "," in --keyword 7719 arguments. Add keywords _, N_, SYNTAX_ERROR and SYNTAX_ERROR2. 7720 Remove local srcdir path from generated file. 7721 7722 2004-11-04 Zack Weinberg <zack (a] codesourcery.com> 7723 Gerald Pfeifer <gerald (a] pfeifer.com> 7724 7725 * internal.h (HAVE_ICONV): Undefine if we do not have HAVE_ICONV_H 7726 as well. 7727 7728 2004-10-27 Zack Weinberg <zack (a] codesourcery.com> 7729 7730 PR 18075 7731 * directives.c (do_pragma): Do not defer pragmas which are unknown. 7732 (cpp_handle_deferred_pragma): Add cast to silence warning. 7733 7734 2004-10-14 Joseph S. Myers <jsm (a] polyomino.org.uk> 7735 7736 * errors.c (_cpp_begin_message): Print "error: " for errors. 7737 7738 2004-10-10 Andreas Jaeger <aj (a] suse.de> 7739 7740 * makedepend.c: Include mkdeps.h for prototype of deps_add_vpath. 7741 * Makefile.in (makedepend.o): Add dependency on mkdeps.h. 7742 7743 2004-10-08 Andrew Pinski <pinskia (a] physics.uc.edu> 7744 7745 * pch.c (cpp_write_pch_state): Remove variable z as it is not 7746 used. 7747 (cpp_read_state): Remove unused variables, m, d and mac_count. 7748 7749 2004-09-29 Per Bothner <per (a] bothner.com> 7750 7751 * directives.c (cpp_handle_deferred_pragma): Save, clear and restore 7752 cb.line_change. Otherwise do_pragma will call the line_change 7753 call-back with a meaningless line number. 7754 7755 2004-09-24 Zack Weinberg <zack (a] codesourcery.com> 7756 7757 * configure.ac: Move AC_PROG_MAKE_SET, AC_PROG_INSTALL to 7758 programs cluster. Use ACX_PROG_CC_WARNING_OPTS, 7759 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_PROG_CC_WARNINGS_ARE_ERRORS. 7760 * aclocal.m4, configure: Regenerate. 7761 * init.c: Include localedir.h. 7762 * Makefile.in (WARN_CFLAGS, ALL_CFLAGS): New variables. 7763 (DEFS): Delete. 7764 (.c.o): Use $(ALL_CFLAGS). 7765 (localedir.h, localedir.hs): New rules. 7766 (clean): Use rm -rf to remove directories. 7767 (distclean): Also delete localedir.h and localedir.hs. 7768 (init.o): Update dependencies. 7769 7770 2004-09-22 Kelley Cook <kcook (a] gcc.gnu.org> 7771 7772 * Makefile.in (aclocal.m4): Update dependencies. 7773 * configure.ac (AC_CONFIG_MACRO_DIR): New. 7774 * aclocal.m4, configure: Regenerate. 7775 7776 2004-09-17 Zack Weinberg <zack (a] codesourcery.com> 7777 7778 * charset.c (_cpp_destroy_iconv, emit_numeric_escape) 7779 (_cpp_convert_input, _cpp_default_encoding): Add comments. 7780 Some other comments in this file also tweaked. 7781 7782 * directives.c (do_pragma): Save current buffer position 7783 before lexing the pragma keywords; don't call 7784 _cpp_backup_tokens in the defer_pragmas case. 7785 7786 2004-09-15 Per Bothner <per (a] bothner.com> 7787 7788 * include/line-map.h (line_map_start): Add parameter names so 7789 preceding comment makes sense. 7790 (linemap_add): Remove from comment mention of non-existing parameter. 7791 7792 2004-09-09 Matt Austern <austern (a] apple.com> 7793 Zack Weinberg <zack (a] codesourcery.com> 7794 7795 * include/cpplib.h (TTYPE_TABLE): Remove CPP_ and SPELL_ 7796 prefixes throughout. Add entry for PRAGMA. Remove 7797 unnecessary "= 0" from EQ. 7798 (enum cpp_ttype): Adjust OP and TK definitions to restore 7799 prefixes, via token-paste. 7800 (CPP_LAST_EQ, CPP_FIRST_DIGRAPH, CPP_LAST_PUNCTUATOR, CPP_LAST_CPP_OP): 7801 Change from #defines to additional cpp_ttype enumerators. 7802 (struct cpp_options): Add defer_pragmas. 7803 (cpp_handle_deferred_pragma): Prototype new interface. 7804 7805 * internal.h (struct cpp_reader): Add directive_result. 7806 * directives.c (struct pragma_entry): Add is_internal field; 7807 give boolean fields type bool. 7808 (start_directive): Initialize pfile->directive_result.type. 7809 (_cpp_do__Pragma): Likewise. 7810 (run_directive): Do not crash if pfile->buffer->prev is NULL. 7811 (insert_pragma_entry): Add 'internal' argument; set new->is_internal 7812 from it. 7813 (register_pragma): New static function, bulk of former 7814 cpp_register_pragma here; add 'internal' argument, pass along 7815 to insert_pragma_entry. 7816 (cpp_register_pragma): Now a wrapper around register_pragma which 7817 always passes false for 'internal' argument. 7818 (_cpp_init_internal_pragmas): Call register_pragma directly, passing 7819 true for 'internal'. 7820 (do_pragma): If CPP_OPTION (pfile, defer_pragmas) and this isn't 7821 an internal pragma, save text till the end of the line as a CPP_PRAGMA 7822 token instead of executing the pragma. 7823 (cpp_handle_deferred_pragma): New interface. 7824 * lex.c (token_spellings): Adjust OP and TK definitions to 7825 match changes to cpplib.h. 7826 (_cpp_lex_token): Check for a directive-result token and 7827 return it if present. 7828 (cpp_token_val_index): Handle CPP_PRAGMA. 7829 * macro.c (cpp_builtin_macro_text): Correct comment. 7830 (builtin_macro): Handle directive-result tokens from _cpp_do__Pragma. 7831 7832 2004-09-06 Serge Belyshev <belyshev (a] lubercy.com> 7833 7834 PR preprocessor/14699 7835 * symtab.c (ht_dump_statistics): Change type of sum_of_squares 7836 from size_t to double. 7837 7838 2004-08-28 Andreas Schwab <schwab (a] suse.de> 7839 Andreas Jaeger <aj (a] suse.de> 7840 7841 * configure.ac: Set PACKAGE correctly. 7842 * configure: Regenerated. 7843 7844 2004-08-25 Paolo Bonzini <bonzini (a] gnu.org> 7845 7846 * Makefile.in: Add back top_builddir. 7847 7848 2004-08-25 Paolo Bonzini <bonzini (a] gnu.org> 7849 7850 * configure.ac: Replace Automake macro invocations 7851 with manual Autoconf checks and substitutions. 7852 * configure: Regenerate. 7853 * aclocal.m4: Regenerate. 7854 * config.in: Regenerate. 7855 * Makefile.am: Removed. 7856 * Makefile.in: Heavy simplification and reorganization. 7857 7858 2004-08-09 Mark Mitchell <mark (a] codesourcery.com> 7859 7860 * configure.ac (arm*-*-eabi*): New target. 7861 (arm*-*-symbianelf*): Likewise. 7862 * configure: Regenerated. 7863 7864 2004-07-24 Bernardo Innocenti <bernie (a] develer.com> 7865 7866 * internal.h (xnew, xcnew, xnewvec, xcnewvec, xobnew): Remove. 7867 * directives.c: Use XNEW-family macros from libiberty. 7868 * lex.c: Likewise. 7869 * macro.c: Likewise. 7870 * cpplib.h (cpp_deps_style): Export enum with name. 7871 7872 2004-07-23 Matthias Klose <doko (a] debian.org> 7873 7874 * init.c (init_library): Use PACKAGE for the text domain. 7875 7876 2004-07-16 Andris Pavenis <pavenis (a] latnet.lv> 7877 7878 PR preprocessor/16366 7879 * internal.h (struct cpp_reader): New field dir_hash. 7880 * files.c (make_cpp_dir): Use dir_hash, not file_hash. 7881 (_cpp_init_files, _cpp_cleanup_files): Update for new field. 7882 7883 2004-07-04 Neil Booth <neil (a] duron.akihabara.co.uk> 7884 7885 PR preprocessor/16192 7886 PR preprocessor/15913 7887 PR preprocessor/15572 7888 * expr.c (_cpp_parse_expr): Handle remaining cases where an 7889 expression is missing. 7890 * init.c (post_options): Traditional cpp doesn't do // comments. 7891 7892 2004-06-30 Per Bothner <per (a] bothner.com> 7893 7894 * include/line-map.h (fileline): Remove old typedef. 7895 * internal.h (struct cpp_reader): Use source_location typedef instead. 7896 7897 2004-06-26 Zack Weinberg <zack (a] codesourcery.com> 7898 7899 Partially revert patch of 2004-06-05. 7900 * files.c (search_cache): Remove pfile argument. Don't check 7901 for file that would be found by "" or <> search here... 7902 (_cpp_find_file): ...do it here, before calling find_file_in_dir. 7903 Do not apply directory-of-current-file correction to files 7904 found by this check. Rearrange code slightly. 7905 7906 2004-06-21 Geoffrey Keating <geoffk (a] apple.com> 7907 7908 * files.c (should_stack_file): Correct swapped parameters to call 7909 to cb.read_pch. 7910 * pch.c (cpp_valid_state): Handle -fpreprocessed. 7911 7912 2004-06-15 Paolo Bonzini <bonzini (a] gnu.org> 7913 7914 * Makefile.in: Regenerate with automake 1.8.5. 7915 * aclocal.m4: Likewise. 7916 * configure: Regenerate. 7917 7918 2004-06-11 Zack Weinberg <zack (a] codesourcery.com> 7919 7920 * configure.ac: Don't invoke ACX_HEADER_STDBOOL. 7921 * configure, config.in: Regenerate. 7922 * system.h: Unconditionally define bool as unsigned char, 7923 BOOL_BITFIELD as unsigned int. 7924 * .cvsignore: New file. 7925 7926 2004-06-09 Geoffrey Keating <geoffk (a] apple.com> 7927 7928 * traditional.c (push_replacement_text): Set macro->traditional. 7929 (save_replacement_text): Likewise. 7930 * pch.c (cpp_write_pch_state): Don't write list of defined macros. 7931 (struct save_macro_item): Delete. 7932 (struct save_macro_data): Use a character array not the previous 7933 structured format. 7934 (save_macros): Save macro as text not as internal structures. 7935 (cpp_prepare_state): Update for changes to save_macro_data. 7936 (cpp_read_state): Don't read macros defined in PCH. Restore 7937 -D macros as text. 7938 * macro.c (create_iso_definition): Honour alloc_subobject. 7939 Clear traditional flag. 7940 (_cpp_create_definition): Honour alloc_subobject. 7941 * lex.c (cpp_token_val_index): New. 7942 * internal.h: Include cpp-id-data.h. 7943 (uchar): Move definition to cpp-id-data.h. 7944 (U): Likewise. 7945 (cpp_macro): Likewise. 7946 * directives.c (struct answer): Move to cpp-id-data.h. 7947 (do_assert): Honour alloc_subobject. 7948 7949 * include/symtab.h (struct ht): Add field 'alloc_subobject'. 7950 * include/cpplib.h (struct cpp_string): Add GTY marker. 7951 (enum cpp_token_fld_kind): New. 7952 (struct cpp_token): Add GTY markers. 7953 (cpp_token_val_index): Prototype. 7954 (CPP_HASHNODE_VALUE_IDX): New. 7955 (struct cpp_hashnode): Don't skip fields of 'value' when marking. 7956 * include/cpp-id-data.h: New file. 7957 7958 2004-06-09 Paolo Bonzini <bonzini (a] gnu.org> 7959 7960 * Makefile.am (all-local): New. 7961 * Makefile.in: Regenerate. 7962 7963 2004-06-06 Roger Sayle <roger (a] eyesopen.com> 7964 7965 * Makefile.am (LIBICONV): Declare. 7966 (makedepend_LDADD): Use LIBICONV. 7967 * Makefile.in: Regenerate. 7968 7969 2004-06-05 Andrew Pinski <pinskia (a] physics.uc.edu> 7970 7971 * Makefile.am (LIBINTL): Declare 7972 (makedepend_LDADD): Use LIBINTL. 7973 * Makefile.in: Regenerate. 7974 7975 2004-06-05 Zack Weinberg <zack (a] codesourcery.com> 7976 7977 * Makefile.am: Add makedepend. 7978 * Makefile.in, aclocal.m4: Regenerate. 7979 * charset.c: Insert a space to avoid a warning. 7980 * directives.c: Include mkdeps.h. 7981 (_cpp_handle_directive): Reenable macro expander if appropriate. 7982 (undefine_macros): Inline body of _cpp_free_definition for speed. 7983 Do not call undef callback or _cpp_warn_if_unused_macro. 7984 (cpp_get_deps): New interface. 7985 * files.c (search_cache): Add pfile argument. Check for file 7986 that would be found by "" or <> search here... 7987 (_cpp_find_file): ...not here. Correct recorded start_dir of 7988 files found by directory-of-current-file search that would be 7989 found by "" or <> search. 7990 * init.c (cpp_add_dependency_target): Delete. 7991 * internal.h (struct lexer_state): Add discarding_output flag. 7992 * lex.c (lex_identifier): Compute hash function while scanning. 7993 * macro.c (cpp_scan_nooutput): Disable macro expansion outside 7994 directives. 7995 * makedepend.c: New file. 7996 * mkdeps.c (struct deps): Add vpath vector. 7997 (apply_vpath, deps_add_vpath): New function. 7998 (deps_free): Free vpath vector. 7999 (deps_add_dep, deps_add_target): Use apply_vpath. 8000 * symtab.c (calc_hash): Use HT_HASHSTEP and HT_FINISH. 8001 (ht_lookup_with_hash): New function. 8002 * cpplib.h, mkdeps.h: Update prototypes. 8003 * symtab.h: Update prototypes. 8004 (HT_HASHSTEP, HT_FINISH): New macros. 8005 8006 2004-05-29 Geoffrey Keating <geoffk (a] apple.com> 8007 8008 * symtab.c (ht_create): Set entries_owned. 8009 (ht_destroy): Honour entries_owned. 8010 (ht_expand): Likewise. 8011 (ht_load): New. 8012 * include/symtab.h (struct ht): New field 'entries_owned' 8013 (ht_load): New prototype. 8014 8015 2004-05-26 Paolo Bonzini <bonzini (a] gnu.org> 8016 8017 PR bootstrap/15651 8018 * configure.ac: Fix m4 quoting when picking 8019 the size of HOST_WIDE_INT. 8020 * configure: Regenerate. 8021 8022 2004-05-25 Paolo Bonzini <bonzini (a] gnu.org> 8023 8024 * Makefile.am: the correct directory for 8025 gettext include files is given by @INCINTL@. 8026 * Makefile.in: Regenerate. 8027 8028 2004-05-24 Paolo Bonzini <bonzini (a] gnu.org> 8029 8030 * system.h [!ENABLE_NLS]: dgettext takes two 8031 parameters. 8032 8033 2004-05-23 Paolo Bonzini <bonzini (a] gnu.org> 8034 8035 Moved libcpp from the gcc subdirectory to the toplevel. 8036 * Makefile.am: New file. 8037 * Makefile.in: Regenerate. 8038 * configure.ac: New file. 8039 * configure: Regenerate. 8040 * config.in: Regenerate. 8041 * charset.c: Moved from gcc/cppcharset.c. Add note about 8042 brokenness of input charset detection. Adjust for change 8043 in name of cppucnid.h. 8044 * errors.c: Moved from gcc/cpperror.c. Do not include intl.h. 8045 * expr.c: Moved from gcc/cppexp.c. 8046 * files.c: Moved from gcc/cppfiles.c. Do not include intl.h. 8047 Remove #define of O_BINARY, it is in system.h. 8048 * identifiers.c: Moved from gcc/cpphash.c. 8049 * internal.h: Moved from gcc/cpphash.h. Change header 8050 guard name. All other files adjusted to match name change. 8051 * init.c: Moved from gcc/cppinit.c. 8052 (init_library) [ENABLE_NLS]: Call bindtextdomain. 8053 * lex.c: Moved from gcc/cpplex.c. 8054 * directives.c: Moved from gcc/cpplib.c. 8055 * macro.c: Moved from gcc/cppmacro.c. 8056 * pch.c: Moved from gcc/cpppch.c. Do not include intl.h. 8057 * traditional.c: Moved from gcc/cpptrad.c. 8058 * ucnid.h: Moved from gcc/cppucnid.h. Change header 8059 guard name. 8060 * ucnid.pl: Moved from gcc/cppucnid.pl. 8061 * ucnid.tab: Moved from gcc/cppucnid.tab. Change header 8062 guard name. 8063 * symtab.c: Moved from gcc/hashtable.c. 8064 * line-map.c: Moved from gcc. Do not include intl.h. 8065 * mkdeps.c: Moved from gcc. 8066 * system.h: New file. 8067 * include/cpplib.h: Moved from gcc. Change header guard name. 8068 * include/line-map.h: Moved from gcc. Change header guard name. 8069 * include/mkdeps.h: Moved from gcc. Change header guard name. 8070 * include/symtab.h: Moved from gcc/hashtable.h. Change header 8071 guard name. 8072 8074 Copyright (C) 2004-2024 Free Software Foundation, Inc. 8075 8076 Copying and distribution of this file, with or without modification, 8077 are permitted in any medium without royalty provided the copyright 8078 notice and this notice are preserved. 8079