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