cp-gimplify.c: Include pointer-set.h
[gcc.git] / gcc / cp / ChangeLog
1 2004-11-15 Andrew Pinski <pinskia@physics.uc.edu>
2
3 * cp-gimplify.c: Include pointer-set.h
4 (cp_genericize_r): Use pointer_sets instead of a hashtable.
5 Also instert the new statement for CLEANUP_STMT.
6 (cp_genericize): Use pointer_sets instead of a hashtable.
7 * Make-lang.in (cp-gimplify.o): Depend on pointer-set.h.
8
9 2004-11-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
10
11 Friend class name lookup 1/n, PR c++/18471
12 * decl.c (lookup_and_check_tag): New function.
13 (xref_tag, start_enum): Use it.
14 (check_elaborated_type_specifier): Move TEMPLATE_TYPE_PARM check
15 before !DECL_IMPLICIT_TYPEDEF_P. Also display previously declared
16 location.
17 * name-lookup.c (lookup_name_current_level): Rename to ...
18 (lookup_name_innermost_nonclass_level): ... this.
19 (lookup_type_scope): New function.
20 * name-lookup.h (lookup_name_current_level): Rename to ...
21 (lookup_name_innermost_nonclass_level): ... this.
22 (lookup_type_scope): Add declaration.
23
24 2004-11-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
25
26 PR c++/17344
27 * pt.c (coerce_template_parms): Only emit error message about
28 invalid template argument when TF_ERROR.
29
30 2004-11-12 Mark Mitchell <mark@codesourcery.com>
31
32 PR c++/18389
33 * decl.c (start_decl): Make sure to set *pop_scope_p. Return
34 error_mark_node to indicate errors.
35
36 PR c++/18429
37 * parser.c (cp_parser_direct_declarator): Disallow non-constant
38 array bounds when not inside a function.
39
40 PR c++/18436
41 * pt.c (tsubst_copy_and_build): Do not do Koenig lookup when an
42 unqualified name resolves to a member function.
43
44 PR c++/18407
45 * pt.c (tsubst_copy_and_build): Handle qualified names used from a
46 derived class correctly.
47
48 * decl2.c (import_export_decl): Fix typo in comment.
49 * tree.c (pod_type_p): Likewise.
50
51 2004-11-10 Andrew Pinski <pinskia@physics.uc.edu>
52
53 * typeck.c (cxx_mark_addressable): Add braces around the first if.
54
55 2004-11-10 Adam Nemet <anemet@lnxw.com>
56
57 PR middle-end/18160
58 * typeck.c (cxx_mark_addressable): Issue an error if address of an
59 explicit register variable is requested.
60
61 2004-11-10 Nathan Sidwell <nathan@codesourcery.com>
62
63 PR c++/18143
64 * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK): New.
65 (struct lang_decl_flags): Add thunk_p flag.
66 (struct lang_decl): Remove separate fixed_offset. Place
67 cloned_function and fixed_offset into union.
68 (DECL_CLONED_FUNCTION_P, DECL_CLONED_FUNCTION): Adjust.
69 (DECL_THUNK_P, SET_DECL_THUNK_P): Adjust.
70 (THUNK_FIXED_OFFSET): Adjust.
71 * method.c (make_thunk): Adjust.
72
73 2004-11-09 Mark Mitchell <mark@codesourcery.com>
74
75 PR c++/18369
76 * init.c (build_new_1): Handle parenthesized type-ids that name an
77 array type. Tidy.
78
79 2004-11-09 Joseph S. Myers <joseph@codesourcery.com>
80
81 * call.c, class.c, decl.c, decl2.c, error.c, mangle.c, parser.c,
82 pt.c, search.c, semantics.c, typeck.c: Use %q, %< and %> for
83 quoting in diagnostics.
84 * parser.c (cp_parser_sizeof_operand): Use '' instead of `' for
85 quoting in printf format.
86 * decl.c (duplicate_decls, start_decl): Use %qD instead of
87 unquoted %D.
88
89 2004-11-08 Kazu Hirata <kazu@cs.umass.edu>
90
91 * class.c, decl.c, lex.c, name-lookup.c, parser.c, pt.c,
92 search.c, typeck2.c: Fix comment formatting.
93
94 2004-11-04 Ulrich Weigand <uweigand@de.ibm.com>
95
96 PR tree-optimization/18184
97 * cp-objcp-common.c (cxx_types_compatible_p): Do not treat pointers
98 of different modes or alias-all flags as equivalent.
99 * typeck.c (comptypes): Likewise.
100
101 2004-11-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
102
103 DR 49, 100
104 * cp-tree.h (TYPE_REF_OBJ_P): New macro.
105 (TYPE_PTR_P, TYPE_PTROB_P, TYPE_PTROBV_P, TYPE_PTRFN_P,
106 TYPE_REFFN_P): Document.
107 (fold_decl_constant_value): New prototype.
108 * pt.c (convert_nontype_argument_function): Rewrite and extract
109 parts into...
110 (fold_decl_constant_value, convert_nontype_argument_function): New.
111 (lookup_template_class): Add comment about useless double call.
112 * mangle.c (write_expression): Strip conversions before lowering
113 pointer to members.
114 * cvt.c (ocp_convert): Check LOOKUP_COMPLAIN for a pedwarn. Disallow
115 enum to enum conversion.
116
117 2004-11-02 Mark Mitchell <mark@codesourcery.com>
118
119 PR c++/18124
120 * parser.c (cp_parser_type_parameter): Robustify.
121
122 PR c++/18155
123 * parser.c (cp_parser_single_declaration): Disallow template
124 typedefs.
125
126 PR c++/18177
127 * typeck.c (build_const_cast): Use error_operand_p.
128
129 2004-11-02 Ziemowit Laski <zlaski@apple.com>
130
131 * cp-lang.c (cxx_types_compatible_p): Remove prototype and definition.
132 (LANG_HOOKS_TYPES_COMPATIBLE_P): Move to cp-objcp-common.h.
133 * cp-objcp-common.c (cxx_types_compatible_p): Moved definition here
134 from cp-lang.c.
135 * cp-objcp-common.h (cxx_types_compatible_p): Moved prototype here
136 from cp-lang.c.
137 (LANG_HOOKS_TYPES_COMPATIBLE_P): Moved here from cp-lang.c.
138
139 2004-11-01 Nathan Sidwell <nathan@codesourcery.com>
140
141 PR c++/18064
142 * search.c (check_final_overrider): Deprecate gnu covariant extension.
143
144 2004-10-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
145
146 Convert diagnostics to use quoting flag q 9/n
147 * typeck.c (build_x_unary_op, convert_member_func_to_ptr,
148 get_delta_difference): Use new quotation style.
149 * repo.c (reopen_repo_file_for_write): Likewise.
150 * pt.c (do_type_instantiation): Likewise.
151 * parser.c (cp_parser_diagnose_invalid_type_name):
152 * name-lookup.c (push_overloaded_decl, set_decl_namespace):
153 * error.c (cp_print_error_function,
154 print_instantiation_full_context): Likewise.
155 * decl.c (define_label, grok_reference_init,
156 maybe_deduce_size_from_array_init, revert_static_member_fn):
157 * decl2.c (check_classfn): Likewise.
158 * class.c (add_method, check_field_decls, layout_class_type,
159 resolve_address_of_overloaded_function): Likewise.
160 * call.c (build_x_va_arg, build_over_call): Likewise.
161
162 2004-10-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
163
164 Convert diagnostics to use quoting flag q 8/n
165 * cvt.c (cp_convert_to_pointer, warn_ref_binding,
166 convert_to_reference, ocp_convert, convert_to_void
167 cp_convert_to_pointer): Use new quotation style.
168
169 2004-10-31 Mark Mitchell <mark@codesourcery.com>
170
171 PR c++/15172
172 * typeck2.c (store_init_value): Use split_nonconstant_init even
173 for types that require construction.
174
175 1004-10-28 Matt Austern <austern@apple.com>
176
177 PR c++/17542
178 * cp-tree.h (class_key_or_enum_as_string): Declare.
179 * error.c (class_key_or_enum): Rename to class_key_or_enum_as_string
180 and remove static qualifier.
181 * decl.c (shadow_tag): Warn about ignored attributes in class/struct/
182 union/enum declaration.
183
184 2004-10-29 Kazu Hirata <kazu@cs.umass.edu>
185
186 * pt.c: Fix a comment typo.
187
188 2004-10-28 Nathan Sidwell <nathan@codesourcery.com>
189
190 * typeck.c (composite_pointer_type): Remove comment about DR 195.
191 (build_reinterpret_cast_1): Revert DR195 patch. Only emit a
192 warning when being pedantic.
193 (build_reinterpet_cast, build_c_cast): Adjust.
194
195 2004-10-29 Mark Mitchell <mark@codesourcery.com>
196
197 PR c++/17695
198 * decl.c (grokdeclarator): Mark TYPE_DECLs as abstract when they
199 appear in a constructor/destructor that will be cloned.
200
201 1004-10-28 Matt Austern <austern@apple.com>
202
203 PR c++/14124
204 * decl.c (finish_enum): Handle packed attribute.
205 * parser.c (cp_parser_enum_specifier): Process trailing attributes.
206
207 2004-10-28 Mark Mitchell <mark@codesourcery.com>
208
209 PR c++/17132
210 * pt.c (instantiate_class_template): Increment
211 processing_template_decl when substituting into a member class
212 template.
213
214 2004-10-27 Mark Mitchell <mark@codesourcery.com>
215
216 PR c++/17435
217 * call.c (convert_like_real): Fix formatting.
218 (initialize_reference): When binding a temporary to a base class,
219 ensure that the nominal copy made is to the derived class, not the
220 base class.
221
222 PR c++/18140
223 * parser.c (cp_parser_next_token_ends_template_argument_p): Do not
224 include ">>".
225
226 2004-10-27 Andrew Pinski <pinskia@physics.uc.edu>
227
228 * decl.c (bad_specifiers): Move the q after the %.
229
230 2004-10-27 Andrew Pinski <pinskia@physics.uc.edu>
231
232 * parser.c (cp_parser_diagnose_invalid_type_name): Move the q after
233 the %.
234
235 2004-10-26 Mark Mitchell <mark@codesourcery.com>
236
237 * name-lookup.c (do_namespace_alias): Use FROB_CONTEXT.
238 * search.c (current_scope): Fix prototype.
239
240 PR c++/18093
241 * search.c (current_scope): Return the innermost non-block scope,
242 not the innermost non-block, non-namespace scope.
243 (at_namespace_scope_p): Adjust accordingly.
244 (dfs_accessible_post): Do not pass namespaces to is_friend.
245 (dfs_walk_once_accessible_r): Likewise.
246 * decl.c (grokvardecl): Adjust call to current_scope.
247 (build_enumerator): Likewise.
248 * parser.c (cp_parser_using_declaration): Likewise.
249 (cp_parser_direct_declarator): Use at_namespace_scope_p instead of
250 current_scope.
251 (cp_parser_class_head): Adjust call to current_scope.
252 * name-lookup.c (do_namespace_alias): Set the DECL_CONTEXT for the
253 alias.
254
255 PR c++/18020
256 * pt.c (tusbst_copy_and_build): Resolve enumeration constants to
257 their underlying values.
258
259 PR c++/18161
260 * typeck.c (build_binary_op): Honor build_type, even when in a
261 template.
262
263 2004-10-26 Nathan Sidwell <nathan@codesourcery.com>
264
265 * parser.c (cp_lexer_get_preprocessor_token): Remove unneeded
266 padding token checking.
267
268 2004-10-25 Andrew Pinski <pinskia@physics.uc.edu>
269
270 PR c++/18121
271 * decl.c (grokdeclarator) <case cdk_array>: Remove the call
272 layout_type as it is already done by create_array_type_for_decl.
273
274 2004-10-22 Nathan Sidwell <nathan@codesourcery.com>
275
276 PR c++/18095
277 * parser.c (eof_token): Make const, correctly initialize rid and
278 location fields.
279 (struct cp_lexer): Replace buffer_end pointer with buffer_length
280 count. Adjust.
281 (cp_lexer_new_main): Directly grow lexer's buffer here. Don't
282 zero it out.
283 (cp_lexer_new_from_tokens): Adjust.
284 (cp_lexer_grow_buffer): Remove.
285 (cp_lexer_peek_nth_token, cp_lexer_consume_token,
286 cp_lexer_purge_token): Add const casts.
287
288 2004-10-21 Mark Mitchell <mark@codesourcery.com>
289
290 PR c++/18073
291 PR c++/10841
292 * cp-tree.h (convert_to_base): Change prototype.
293 (build_ptrmemfunc): Likewise.
294 (convert_ptrmem): New function.
295 * call.c (struct conversion): Adjust documentation for base_p.
296 (standard_conversion): Set base_p for ck_pmem conversions as
297 appropriate.
298 (convert_like_real): Use convert_to_base for ck_pmem and ck_ptr
299 conversions.
300 * class.c (convert_to_base): Handle both pointers and objects.
301 Add nonnull parameter.
302 (build_vfield_ref): Adjust call to convert_to_base.
303 * cvt.c (cp_convert_to_pointer): Adjust call to build_ptrmemfunc.
304 (convert_force): Likewise.
305 * typeck.c (build_unary_op): Likewise.
306 (convert_ptrmem): New function.
307 (build_static_cast_1): Use it.
308 (build_reinterpret_cast): Allow conversions to vector types.
309 (get_delta_difference): Add c_cast_p parameter.
310 (build_ptrmemfunc): Likewise. Adjust calls to
311 get_delta_difference.
312
313 2004-10-21 Andrew Pinski <pinskia@physics.uc.edu>
314
315 PR c++/13560
316 * error.c (cp_error_at): Output the context as it might be
317 different file as the other location.
318
319 2004-10-21 Kazu Hirata <kazu@cs.umass.edu>
320
321 * typeck.c: Fix a comment typo.
322
323 2004-10-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
324
325 PR c++/13495
326 * decl.c (make_unbound_class_template): Add PARM_LIST parameter.
327 * cp-tree.h (make_unbound_class_template): Adjust prototype.
328 * parser.c (cp_parser_lookup_name): Adjust call to
329 make_unbound_class_template.
330 (cp_parser_single_declaration): Handle member class of class
331 template as template friend parsing correctly.
332 * friend.c (is_friend): Call is_specialization_of_friend for
333 template friend class.
334 (make_friend_class): Handle member class of class template as
335 template friend.
336 * pt.c (is_specialization_of_friend): Likewise.
337 (instantiate_class_template): Likewise.
338 (tsubst): Adjust call to make_unbound_class_template.
339
340 2004-10-20 Nathan Sidwell <nathan@codesourcery.com>
341
342 * typeck.c (composite_pointer_type): Add comment about DR 195
343 (build_reinterpret_cast_1): Add for_reinterpret_cast_p parameter.
344 Allow function pointer conversions that DR195 suggests.
345 (build_reinterpret_cast, build_c_cast): Update
346 build_reinterpret_cast_1 calls.
347
348 2004-10-20 Kazu Hirata <kazu@cs.umass.edu>
349
350 * call.c, typeck.c: Fix comment typos.
351
352 2004-10-20 Nathan Sidwell <nathan@codesourcery.com>
353
354 * parser.c (cp_token_position): New typedef. Define VEC thereof.
355 (struct cp_lexer): Allow buffer and buffer_end to be NULL. Make
356 next_token and last_token cp_token_position. Make saved_tokens a
357 VEC(cp_token_position).
358 (eof_token): New static variable.
359 (CP_SAVED_TOKENS_SIZE): Rename to ...
360 (CP_SAVED_TOKEN_STACK): ... here.
361 (cp_lexer_new_main): Adjust main lexer creation and buffer
362 filling.
363 (cp_lexer_new_from_tokens): Do not copy the tokens, merely point
364 to the parent buffer. Do not append eof token.
365 (cp_lexer_destroy): Only free buffer if non-NULL. Free token
366 stack.
367 (cp_lexer_next_token, cp_lexer_prev_token): Remove.
368 (cp_lexer_token_position, cp_lexer_token_at): New.
369 (cp_lexer_saving_tokens): Adjust. Make inline.
370 (cp_lexer_advance_token, cp_lexer_token_difference): Remove.
371 (cp_lexer_peek_token_emit_debug_info): Fold into ...
372 (cp_lexer_peek_token): ... here.
373 (cp_lexer_peek_nth_token): Don't peek past EOF.
374 (cp_lexer_consume_token): Set next_token to eof_token, if reaching
375 EOF.
376 (cp_lexer_purge_token): Adjust eof setting.
377 (cp_lexer_purge_tokens_after): Likewise.
378 (cp_lexer_save_tokens): Push next_token directly.
379 (cp_lexer_commit_tokens): Adjust.
380 (cp_lexer_rollback_tokens): Pop next_token directly.
381 (cp_parser_check_for_invalid_template_id): Adjust token purging.
382 (cp_parser_translation_unit): Do not consume the EOF.
383 (cp_parser_nested_name_specifier_opt): Adjust token purging.
384 (cp_parser_template_id, cp_parser_template_name): Likewise.
385
386 2004-10-19 Mark Mitchell <mark@codesourcery.com>
387
388 PR c++/14035
389 * call.c (struct conversion): Add base_p.
390 (convert_like): Add c_cast_p argument.
391 (convert_like_with_conversion): Likewise.
392 (build_conv): Clear base_p.
393 (standard_conversion): Set it, for derived-to-base conversions.
394 (convert_like_real): Add c_cast_p parameter. Handle pointer
395 conversions directly rather than relying on ocp_convert.
396 (perform_direct_initialization_if_possible): Add c_cast_p
397 parameter.
398 * cp-tree.h (perform_direct_initialization_if_possible): Change
399 prototype.
400 (convert_member_func_to_ptr): New function.
401 * typeck.c (check_for_casting_away_constness): Add diag_fn
402 parameter.
403 (build_static_cast_1): New function, split out from ...
404 (build_static_cast): ... here. Use build_static_cast_1.
405 (build_reinterpret_cast_1): New function, split out from ...
406 (build_reinterpret_cast): ... here. Use build_reinterpret_cast_1.
407 (build_const_cast_1): New function, split out from ...
408 (build_const_cast): ... here. Use build_const_cast_1.
409 (build_c_cast): Rewrite to use build_const_cast_1,
410 build_static_cast_1, and build_reinterpret_cast_1.
411 (convert_member_func_to_ptr): New function.
412
413 2004-10-19 Paolo Bonzini <bonzini@gnu.org>
414
415 PR c++/18047
416 * parser.c (enum cp_parser_prec): Give relational expressions
417 a higher precedence than equality expressions.
418
419 2004-10-15 Nathan Sidwell <nathan@codesourcery.com>
420
421 * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Adjust lookup_base call.
422 (ACCESSIBLY_UNIQUELY_DERIVED_P): Remove.
423 (PUBLICLY_UNIQUELY_DERIVED_P): Adjust lookup_base call.
424 (enum base_access): Reorganize.
425 (accessible_base_p, accessible_p): Add consider_local_p parameter.
426 * call.c (standard_conversion): Update comment about
427 DERIVED_FROM_P.
428 (enforce_access): Adjust accessible_p call.
429 (build_over_call): Adjust accessible_base_p call.
430 * class.c (convert_to_base): Adjust lookup_base call.
431 (build_vtbl_ref_1): Likewise.
432 (warn_about_ambiguous_bases): Likewise. Add early exit.
433 * cvt.c (convert_to_pointer_force) Adjust lookup_base call.
434 * search.c (accessible_base_p): Add consider_local_p parameter.
435 (lookup_base): Pass consider_local_p to accessible_base_p call.
436 (friend_accessible_p): Check whether scope is a class member.
437 Remove unnecessary class template check.
438 (accessible_p): Add consider_local_p parameter. Use it.
439 (adjust_result_of_qualified_name_lookup): Adjust lookup_base call.
440 * tree.c (maybe_dummy_object): Likewise.
441 * typeck.c (comp_except_type): Use PUBLICLY_UNIQUELY_DERIVED_P.
442 (build_class_member_access_expr): Adjust lookup_base call.
443 * typeck2.c (binfo_or_else): Likewise.
444 * rtti.c (build_dynamic_cast_1): Access can consider friendship
445 and current scope.
446
447 2004-10-17 Giovanni Bajo <giovannibajo@gcc.gnu.org>
448
449 PR c++/17743
450 * decl2.c (grokfield): Apply attributes also to TYPE_DECLs.
451
452 2004-10-16 Giovanni Bajo <giovannibajo@gcc.gnu.org>
453
454 PR c++/10479
455 * parser.c (cp_parser_parenthesized_expression_list): Fold
456 non-dependent expressions in attribute lists.
457
458 2004-10-15 Mark Mitchell <mark@codesourcery.com>
459
460 PR c++/17042
461 * decl.c (declare_global_var): Use the return value from pushdecl.
462
463 PR c++/14667
464 * parser.c (cp_parser_simple_declaration): Do not diagnose invalid
465 type names if we have already found a valid type.
466 (cp_parser_member_declaration): Likewise.
467
468 PR c++/17916
469 * parser.c (cp_parser_member_specification_opt): Handle
470 CPP_PRAGMA.
471
472 2004-10-15 Kazu Hirata <kazu@cs.umass.edu>
473
474 * dump.c, g++spec.c, repo.c: Update copyright.
475
476 2004-10-15 Kazu Hirata <kazu@cs.umass.edu>
477
478 * decl.c: Fix a comment typo.
479
480 2004-10-13 Andrew Pinski <pinskia@physics.uc.edu>
481
482 PR c++/16301
483 * name-lookup.c (parse_using_directive): If we have a
484 error_mark_node, do not set the decl namespace associations
485 on it.
486
487 2004-10-14 Mark Mitchell <mark@codesourcery.com>
488
489 PR c++/17976
490 * decl.c (cp_finish_decl): Do not call expand_static_init more
491 than once for a single variable.
492
493 2004-10-14 Matt Austern <austern@apple.com>
494
495 * Make-lang.in (pt.o): depends on pointer-set.h
496 * cp-tree.h (cp_walk_subtrees): Last argument is pointer_set_t* now.
497 * pt.c (struct pair_fn_data): Use pointer_set_t, not htab_t
498 (for_each_template_parm): Convert from htab_t to pointer_set_t.
499 * tree.c (cp_walk_subtrees): Last argument is pointer_set_t* now.
500
501 2004-10-13 Andrew Pinski <pinskia@physics.uc.edu>
502
503 PR c++/17661
504 * semantics.c (finish_for_expr): Convert expression to void
505 so that we don't create temporaries for a?b:c.
506
507 2004-10-13 Kazu Hirata <kazu@cs.umass.edu>
508
509 * search.c: Fix a comment typo.
510
511 2004-10-12 Nathan Sidwell <nathan@codesourcery.com>
512
513 * class.c (dfs_modify_vtables): Simplify condition. Return
514 dfs_skip_bases as appropriate.
515 (modify_all_vtables): Walk in pre-order.
516 * search.c (dfs_walk_all, dfs_walk_once_r,
517 dfs_walk_once_accessible_r): Assert post order function never
518 returns dfs_skip_bases.
519
520 * search.c (struct lookup_base_data_s): New.
521 (lookup_base_r): Replace with ...
522 (dfs_lookup_base): ... this.
523 (lookup_base): Use dfs_walk_all.
524
525 2004-10-12 Kazu Hirata <kazu@cs.umass.edu>
526
527 * search.c: Fix comment typos.
528
529 2004-10-11 Mark Mitchell <mark@codesourcery.com>
530
531 PR c++/15786
532 * parser.c (cp_parser_declarator): Add member_p parameter.
533 (cp_parser_condition): Adjust calls to cp_parser_declarator.
534 (cp_parser_explicit_instantiation): Likewise.
535 (cp_parser_init_declarator): Likewise.
536 (cp_parser_direct_declarator): Add member_p parameter. Do not
537 parse tentatively when parsing the parameters to a member.
538 (cp_parser_type_id): Adjust calls to cp_parser_declarator.
539 (cp_parser_parameter_declaration): Likewise.
540 (cp_parser_member_declaration): Likewise.
541 (cp_parser_exception_declaration): Likewise.
542
543 PR c++/17936
544 * cp-tree.h (CLASSTYPE_TEMPLATE_SPECIALIZATION): Add a comment.
545 * pt.c (optimize_specialization_lookup_p): Do not optimize lookups
546 for members of partial or explicit specializations.
547
548 PR c++/17929
549 * decl2.c (finish_anon_union): Robustify.
550
551 2004-10-11 Nathan Sidwell <nathan@codesourcery.com>
552
553 * cp-tree.h (get_dynamic_cast_base_type): Rename to ...
554 (dcast_base_hint): ... here.
555 * rtti.c (build_dynamic_cast_1): Use dcast_base_hint.
556 * search.c (struct dcast_data_s): New.
557 (dynamic_cast_base_recurse): Remove. Replace with ...
558 (dfs_dcast_hint_pre, dfs_dcast_base_post): ... these. New.
559 (get_dynamic_cast_base_type): Rename to ...
560 (dcast_base_hint): ... here. Use dfs_walk_once_accessible.
561 (accessible_r): Remove.
562 (dfs_accessible_post): New, broken out of accessible_r.
563 (accessible_p): Use dfs_walk_once_accessible.
564 (dfs_walk_once_accessible_r): New. From accessible_r.
565 (dfs_walk_once_accessible): New. From acessible_p.
566
567 * cp-tree.h (SAME_BINFO_TYPE_P): New.
568 * class.c (build_base_path): Use SAME_BINFO_TYPE_P to compare
569 binfo types.
570 (convert_to_base_statically, determine_primary_bases,
571 update_vtable_entry_for_fn, dfs_modify_vtables, build_vtt_inits,
572 dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
573 accumulate_vtbl_inits, dfs_accumulate_vtbl_inits,
574 build_vtbl_initializer, add_vcall_offset_vtbl_entries_1): Likewise.
575 * init.c (expand_member_init): Likewise.
576 * search.c (lookup_base_r, dynamic_cast_base_recurse,
577 binfo_via_virtual, copied_binfo, binfo_for_vbase,
578 original_binfo): Likewise.
579 * tree.c (copy_binfo): Likewise.
580
581 2004-10-11 Kazu Hirata <kazu@cs.umass.edu>
582
583 * semantics.c: Fix comment typos.
584
585 2004-10-10 Andrew Pinski <pinskia@physics.uc.edu>
586
587 PR c++/17554
588 part of c++/17657
589 middle-end/17703
590 * semantics.c (maybe_cleanup_point_expr): Call
591 fold_build_cleanup_point_expr.
592 (maybe_cleanup_point_expr_void): New function.
593 (add_decl_expr): Call maybe_cleanup_point_expr_void.
594 (finish_expr_stmt): Likewise.
595 (finish_return_stmt): Likewise.
596 (finish_for_expr): Likewise.
597 (finish_asm_stmt): Likewise.
598 * typeck.c (condition_conversion): Call
599 fold_build_cleanup_point_expr.
600
601 2004-10-10 Andrew Pinski <pinskia@physics.uc.edu>
602
603 PR c++/17907
604 * semantics.c (add_decl_expr): If the decl has a size which
605 has side effects then the decl expression needs a cleanup point.
606
607 2004-10-10 Mark Mitchell <mark@codesourcery.com>
608
609 PR c++/17393
610 * decl.c (grokdeclarator): Robustify error-recovery on invalid
611 declarations.
612
613 2004-10-10 Gabriel Dos Reis <gdr@integrable-solutions.net>
614
615 Convert diagnostics to use quoting flag q 7/n
616 * typeck.c (composite_pointer_type_r, composite_pointer_type,
617 cxx_sizeof_or_alignof_type, cxx_sizeof_or_alignof_expr,
618 string_conv_p, build_class_member_access_expr,
619 build_class_member_access_expr, lookup_destructor,
620 finish_class_member_access_expr, build_indirect_ref,
621 get_member_function_from_ptrfunc, build_function_call,
622 convert_arguments, build_binary_op, pointer_diff, build_unary_op,
623 check_for_casting_away_constness, build_static_cast,
624 build_reinterpret_cast, build_const_cast, build_c_cast,
625 build_modify_expr, get_delta_difference, build_ptrmemfunc,
626 dubious_conversion_warnings, convert_for_assignment,
627 convert_for_initialization,
628 maybe_warn_about_returning_address_of_local, check_return_expr):
629 Use quoting marks.
630
631 * typeck2.c (error_not_base_type, readonly_error,
632 abstract_virtuals_error, cxx_incomplete_type_diagnostic,
633 store_init_value, digest_init, build_x_arrow,
634 build_m_component_ref, require_complete_eh_spec_types): Likewise.
635
636 * tree.c (cp_build_qualified_type_real,
637 handle_java_interface_attribute, handle_init_priority_attribute):
638 Likewise.
639
640 * semantics.c (finish_asm_stmt, finish_non_static_data_member,
641 finish_pseudo_destructor_expr,
642 check_template_template_default_arg, begin_class_definition,
643 finish_base_specifier, qualified_name_lookup_error,
644 finish_id_expression, finish_typeof): Likewise.
645
646 * search.c (lookup_base, check_final_overrider,
647 look_for_overrides_r): Likewise.
648
649 * rtti.c (get_tinfo_decl, build_dynamic_cast_1): Likewise.
650
651 2004-10-09 Mark Mitchell <mark@codesourcery.com>
652
653 PR c++/17867
654 * error.c (dump_expr): Correct handling of AGGR_INIT_EXPRs using a
655 constructor.
656
657 PR c++/17670
658 * init.c (build_new): Correct comments.
659 * parser.c (cp_parser_new_expression): Use NULL_TREE for nelts in
660 the non-array case.
661
662 PR c++/17821
663 * parser.c (cp_parser_postfix_dot_deref_expression): If the
664 pseduo-destructor-name production does not work, fall back to the
665 ordinary production.
666
667 PR c++/17826
668 * tree.c (cp_tree_equal): Handle a BASELINK.
669
670 PR c++/17524
671 * cp-tree.h (check_var_type): New function.
672 * decl.c (check_var_type): New function, split out from ...
673 (grokdeclarator): ... here.
674 * pt.c (tsubst_decl): Use check_var_type.
675
676 PR c++/17685
677 * decl.c (grokdeclarator): Disallow declarations of operators as
678 non-functions.
679
680 2004-10-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
681
682 PR c++/17868
683 * error.c (dump_expr): Add missing case for RDIV_EXPR.
684
685 2004-10-08 Kazu Hirata <kazu@cs.umass.edu>
686
687 * pt.c, search.c: Fix comment typos.
688
689 2004-10-08 Nathan Sidwell <nathan@codesourcery.com>
690
691 * cp-tree.h (dfs_walk, dfs_walk_real, dfs_unmark, markedp,
692 unmarkedp): Remove.
693 (dfs_skip_bases, dfs_walk_all, dfs_walk_once): New.
694 * class.c (struct find_final_overrider_data): Remove most_derived,
695 vpath_list and vpath fields. Add path field.
696 (dfs_find_final_ocerrider_1): Add DEPTH parameter. Adjust.
697 (dfs_find_final_overrider): Rename to ...
698 (dfs_find_final_overrider_pre): ... here. Adjust.
699 (dfs_find_final_overrider_post): Adjust.
700 (dfs_find_final_overrider_q): Fold into
701 dfs_find_final_overrider_pre.
702 (find_final_overrider): Adjust dfs searching.
703 (dfs_modify_vtables): Don't mark binfo here.
704 (modify_all_vtables): Use dfs_walk_once.
705 (build_vtt_inits): Likwise. Use dfs_walk_all.
706 (dfs_build_secondary_vptr_vtt_inits): Don't mark binfo here.
707 Return dfs_skip_bases as appropriate.
708 (dfs_fixup_binfo_vtbls): Return dfs_skip_bases as appropriate.
709 * init.c (dfs_initialized_vtbl_ptrs): Return dfs_skip_bases as
710 appropriate. Don't mark binfo here.
711 (initialize_vtbl_ptrs): Use dfs_walk_once.
712 * search.c (struct vbase_info): Remove unused struct.
713 (access_in_type): Use dfs_walk_once.
714 (dfs_access_in_type): Don't mark binfo here.
715 (dfs_accessible_queue_p, dfs_accessible_p) Remove.
716 Fold into ...
717 (accessible_r): ... here. New. Specialize dfs_walk_once.
718 (accessible_p): Use accessible_r.
719 (lookup_field_queue_p): Remove. Fold into ...
720 (lookup_field_r): ... here. Adjust.
721 (lookup_member): Use dfs_walk_all.
722 (dfs_walk_real, dfs_walk): Replace with ...
723 (dfs_walk_all, dfs_walk_once): ... these.
724 (dfs_walk_once_r, dfs_unmark_r): Workers for dfs_walk_once.
725 (dfs_unmark, unmarkedp, markedp): Remove.
726 (dfs_get_pure_virtuals): Don't mark binfo here.
727 (get_pure_virtuals): Use dfs_walk_once.
728 (dfs_debug_unmarked_p): Remove. Fold into ...
729 (dfs_debug_mark): ... here.
730 (note_debug_info_needed): Use dfs_walk_all.
731
732 2004-10-07 Andrew Pinski <pinskia@physics.uc.edu>
733
734 * pt.c (tsubst_expr) <case ASM_EXPR>: Look passed the
735 CLEANUP_POINT_EXPR to get the asm expression.
736
737 2004-10-07 Mark Mitchell <mark@codesourcery.com>
738
739 * cp-tree.h (ICS_USER_FLAG): Remove comment about obsolete flag.
740 (DECL_MEMBER_TEMPLATE_P): New macro.
741 (is_member_template): Remove.
742 (class_method_index_for_fn): New function.
743 * pt.c (build_over_call): Use DECL_MEMBER_TEMPLATE_P.
744 * class.c (finish_struct_methods): Remove out-of-date comment.
745 * decl.c (copy_fn_p): Use DECL_MBMER_TEMPLATE_P.
746 * decl2.c (check_classfn): Use DECL_MEMBER_TEMPLATE_P and
747 class_method_index_for_fn.
748 * pt.c (is_member_template): Remove.
749 (is_member_template_class): Likewise.
750 (optimize_specialization_lookup_p): New function.
751 (retrieve_specialization): Optimize lookups for members that are
752 not member templates.
753 (register_specialization): Adjust accordingly.
754 (build_template_decl): Add member_template_p parameter. Set
755 DECL_MEMBER_TEMPLATE_P.
756 (process_partial_specialization): Adjust call to
757 retrieve_specialization.
758 (push_template_decl_real): Determine whether the template is a
759 member template.
760 (lookup_template_class): Use retrieve_specialization.
761 (tsubst_decl): Adjust call to retrieve_specialization.
762 (tsubst_exception_specification): New function.
763 (tsubst): Use it.
764 (tsubst_copy): Use DECL_MEMBER_TEMPLATE_P.
765 (instantiate_template): Adjust call to retrieve_specialization.
766 (regenerate_decl_from_template): Do not actually generate a new
767 DECL.
768 (instantiate_decl): Adjust call to retrieve_specialization.
769 (class_method_index_for_fn): New method.
770
771 2004-10-07 Andrew Pinski <pinskia@physics.uc.edu>
772
773 * parser.c (cp_parser_asm_definition): Look passed the
774 CLEANUP_POINT_EXPR to get the asm expression.
775
776 2004-10-06 Andrew Pinski <pinskia@physics.uc.edu>
777
778 PR c++/17368
779 * semantics.c (finish_asm_stmt): Asm expressions need cleanup
780 also.
781
782 2004-10-05 Gabriel Dos Reis <gdr@integrable-solutions.net>
783
784 Convert diagnostics to use quoting flag q 6/n
785 * pt.c (finish_member_template_decl, check_specialization_scope,
786 maybe_process_partial_specialization, determine_specialization,
787 check_explicit_specialization, maybe_check_template_type,
788 process_partial_specialization, check_default_tmpl_args,
789 push_template_decl_real, redeclare_class_template,
790 convert_nontype_argument, coerce_template_parms,
791 lookup_template_class, push_tinst_level,
792 instantiate_class_template, tsubst_arg_types,
793 tsubst_function_type, tsubst, tsubst_qualified_id,
794 tsubst_copy_and_build, check_instantiated_args,
795 do_decl_instantiation, do_type_instantiation,
796 invalid_nontype_parm_type_p, check_specialization_namespace,
797 convert_template_argument, determine_specialization,
798 check_template_shadow, tsubst_decl
799 instantiate_pending_templates): Use quoting marks.
800
801 2004-10-05 Nathan Sidwell <nathan@codesourcery.com>
802
803 PR c++/17829
804 * parser.c (cp_parser_postfix_expression): Inhibit Koenig when
805 unqualified lookup finds a member function.
806
807 2004-10-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
808
809 Convert diagnostics to use quoting flag q 5/n
810 * parser.c (cp_parser_name_lookup_error,
811 cp_parser_diagnose_invalid_type_name,
812 cp_parser_primary_expression, cp_parser_unqualified_id,
813 cp_parser_nested_name_specifier_opt, cp_parser_labeled_statement,
814 cp_parser_jump_statement, cp_parser_simple_declaration,
815 cp_parser_decl_specifier_seq, cp_parser_mem_initializer_id,
816 cp_parser_type_parameter, cp_parser_template_id,
817 cp_parser_template_name, cp_parser_direct_declarator,
818 cp_parser_parameter_declaration_list, cp_parser_class_head,
819 cp_parser_base_specifier, cp_parser_lookup_name,
820 cp_parser_late_parsing_default_args,
821 cp_parser_optional_template_keyword
822 cp_parser_elaborated_type_specifier, cp_parser_check_class_key,
823 cp_parser_check_access_in_redeclaration): Use quoting marks.
824
825 * name-lookup.c (supplement_binding, pushdecl,
826 check_for_out_of_scope_variable, validate_nonmember_using_decl,
827 do_nonmember_using_decl, lookup_tag, set_decl_namespace,
828 push_namespace, do_namespace_alias, do_using_directive,
829 ambiguous_decl, lookup_namespace_name, add_function): Likewise.
830
831 * method.c (use_thunk): Likewise.
832
833 * lex.c (unqualified_name_lookup_error,
834 unqualified_fn_lookup_error): Likewise.
835
836 2004-10-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
837
838 Convert diagnostics to use quoting flag q 4/n
839 * except.c (decl_is_java_type, build_throw,
840 is_admissible_throw_operand, check_handlers_1, check_handlers):
841 Use quoting formats.
842 * friend.c (add_friend, make_friend_class, do_friend): Likewise.
843 * init.c (sort_mem_initializers, emit_mem_initializers,
844 member_init_ok_or_else, expand_member_init, is_aggr_type,
845 build_offset_ref, build_java_class_ref): Likewise.
846
847 2004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
848
849 Convert diagnostics to use quoting flag q 3/n
850 * decl.c (pop_label, duplicate_decls, redeclaration_error_message,
851 redeclaration_error_message, lookup_label, check_goto,
852 make_typename_type, make_unbound_class_template,
853 fixup_anonymous_aggr, check_tag_decl, start_decl, start_decl_1,
854 grok_reference_init, layout_var_decl, maybe_commonize_var,
855 check_for_uninitialized_const_var, reshape_init_array,
856 reshape_init, check_initializer, cp_finish_decl,
857 member_function_or_else, bad_specifiers, grokfndecl, grokvardecl,
858 check_static_variable_definition, compute_array_index_type,
859 create_array_type_for_decl, check_special_function_return_type,
860 grokdeclarator, check_default_argument, grokparms,
861 grok_ctor_properties, grok_op_properties,
862 check_elaborated_type_specifier, xref_tag, finish_enum,
863 build_enumerator, check_function_type, start_preparsed_function,
864 store_parm_decls): Use quoting formats.
865 * decl2.c (grok_array_decl, delete_sanity, check_member_template,
866 check_java_method, check_classfn, finish_static_data_member_decl,
867 grokfield, grokbitfield, grok_function_init,
868 build_anon_union_vars, coerce_new_type, coerce_delete_type,
869 check_default_args): Likewise.
870 * parser.c (cp_parser_decl_specifier_seq): Likewise.
871
872 2004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
873
874 Convert diagnostics to use quoting flag q 2/n
875 * class.c (build_base_path, add_method, alter_access,
876 handle_using_decl, check_bases,
877 maybe_warn_about_overly_private_class, find_final_overrider,
878 warn_hidden, finish_struct_anon, add_implicitly_declared_members,
879 check_bitfield_decl, check_field_decls, layout_empty_base,
880 build_base_field, check_methods, layout_virtual_bases,
881 warn_about_ambiguous_bases, layout_class_type, finish_struct_1,
882 resolve_address_of_overloaded_function, instantiate_type,
883 note_name_declared_in_class): Use format flag "q" for quoting.
884
885 2004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
886
887 Convert diagnostics to use quoting flag q 1/n
888 * error.c (locate_error): Ignore quoting flag q.
889 * call.c (build_user_type_conversion_1, build_operator_new_call,
890 build_object_call, op_error, build_conditional_expr,
891 build_new_op, build_op_delete_call, enforce_access,
892 convert_like_real, convert_arg_to_ellipsis, build_x_va_arg,
893 convert_default_arg, build_over_call, build_new_method_call,
894 joust, perform_implicit_conversion, initialize_reference): Use the
895 quoting flag q.
896
897 2004-10-03 Andrew Pinski <pinskia@physics.uc.edu>
898
899 PR c++/17797
900 * typeck.c (build_reinterpret_cast): Return if the inner type
901 is error_mark_node.
902
903 2004-10-01 Jan Hubicka <jh@suse.cz>
904
905 * semantics.c (expand_body): Update call of tree_rest_of_compilation.
906
907 2004-09-30 Nathan Sidwell <nathan@codesourcery.com>
908
909 * cp-tree.h (struct lang_decl): Shrink by reordering fields and
910 turning operator_code and fixed_offset into bitfields.
911
912 2004-09-29 Joseph S. Myers <jsm@polyomino.org.uk>
913
914 * decl.c (duplicate_decls): Merge TREE_DEPRECATED.
915
916 2004-09-29 Jason Merrill <jason@redhat.com>
917
918 PR tree-optimization/17697
919 * decl.c (duplicate_decls): Copy TREE_NOTHROW from newdecl to olddecl.
920
921 2004-09-28 Jason Merrill <jason@redhat.com>
922
923 PR middle-end/17525
924 * class.c (build_base_field): Set TYPE_MODE.
925
926 2004-09-28 Roger Sayle <roger@eyesopen.com>
927
928 PR driver/17537
929 * g++spec.c (lang_specific_driver): Unrecognized libraries, other
930 than -lc and -lm, may require linking against libstc++.
931
932 2004-09-28 Kazu Hirata <kazu@cs.umass.edu>
933
934 * tree.c: Fix a comment typo.
935
936 2004-09-28 Nathan Sidwell <nathan@codesourcery.com>
937
938 * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): Remove.
939 (struct secondary_vptr_vtt_init_data_s): New.
940 (build_vtt_inits): Adjust dfs_walkers.
941 (dfs_build_secondary_vptr_vtt_inits): Caller data is a
942 secondary_vptr_vtt_init_data_s structure. Adjust.
943 (dfs_ctor_vtable_bases_queue_p): Remove.
944 (dfs_fixup_binfo_vtbls): No need to clear BINFO_MARKED. Simplify.
945
946 * pt.c (struct get_template_base_data_s): Remove.
947 (get_template_base_r): Fold into get_template_base.
948 (get_template_base): Walk base binfos directly in inheritance
949 graph order.
950
951 2004-09-27 Mark Mitchell <mark@codesourcery.com>
952
953 PR c++/17642
954 * cp-tree.h (fold_if_not_in_template): New function.
955 * call.c (build_conditional_expr): Use fold_if_not_in_template.
956 (build_cxx_call): Likewise.
957 * cvt.c (convert_to_complex): Likewise.
958 (ocp_convert): Likewise.
959 (convert): Likewise.
960 (convert_force): Likewise.
961 * decl.c (compute_array_index_type): Clear
962 processing_template_decl while folding array bounds.
963 * pt.c (convert_nontype_argument): Clear
964 processing_template_decl while processing non-type argument
965 initialization.
966 * tree.c (fold_if_not_in_template): New function.
967 * typeck.c (build_class_member_access_expr): Use
968 fold_if_not_in_template.
969 (build_array_ref): Likewise.
970 (build_binary_op): Likewise. Do not try to optimize computations
971 when processing templates.
972 (cp_pointer_int_sum): Use fold_if_not_in_template.
973 (pointer_diff): Likewise.
974 (build_unary_op): Likewise.
975 (build_reinterpret_cast): Likewise.
976 (get_delta_difference): Likewise.
977 (expand_ptrmemfunc_cst): Likewise.
978 (dubious_conversion_warnings): Likewise.
979
980 2004-09-27 Matt Austern <austern@apple.com>
981
982 * cp/parser.c (struct cp_token): New one-bit field , implicit_extern_c
983 (cp_lexer_get_preprocessor_token): Set implicit_extern_c for
984 tokens that come from headers that are implicitly extern "C".
985 (struct cp_parser): new one-bit field, implicit_extern_c.
986 (cp_parser_new): Set parser's implicit_extern_c to false.
987 (cp_parser_translation_unit): Pop lang context if we were in a
988 header that was implicitly extern "C".
989 (cp_parser_declaration_seq_opt): Push/pop lang context as
990 required by the token's and parser's implicit_extern_c.
991
992 2004-09-27 Mark Mitchell <mark@codesourcery.com>
993
994 PR c++/17585
995 * cp-tree.h (shared_member_p): Declare.
996 * search.c (shared_member_p): Give it external linkage.
997 * semantics.c (finish_qualified_id_expr): Use it.
998 (finish_id_expression): Likewise.
999
1000 PR c++/17585
1001 * semantics.c (finish_id_expression): Do not add "this->" to
1002 static member functions.
1003
1004 2004-09-27 Nathan Sidwell <nathan@codesourcery.com>
1005
1006 PR c++/17681
1007 * error.c (dump_type): Change TREE_VEC case into TREE_BINFO.
1008
1009 * class.c (struct count_depth_data): Remove.
1010 (dfs_depth_post, dfs_depth_q): Remove.
1011 (find_final_overrider): Use number of vbase classes as depth
1012 bound.
1013
1014 * cp-tree.h (types_overlap_p): Remove.
1015 * search.c (struct overlap_info): Remove.
1016 (dfs_check_overlap, dfs_no_overlap_yet, types_overlap_p): Remove.
1017
1018 * pt.c (GTB_VIA_VIRTUAL, GTB_IGNORE_TYPE): Remove.
1019 (get_template_base_recursive): Remove. Replace with ...
1020 (get_template_base_r): ... this.
1021 (struct get_template_base_data_s): New.
1022 (get_template_base): Use get_template_base_r via dfs_walk. Always
1023 return NULL on failure.
1024 (unify): Remove error_mark_node check from get_template_base result.
1025
1026 2004-09-24 Paolo Bonzini <bonzini@gnu.org>
1027
1028 * parser.c (cp_parser_expression_stack): Clarify why it is
1029 an array of NUM_PREC_VALUES elements.
1030 (cp_parser_binary_expression): Clarify why we do not need to
1031 handle stack overflow.
1032
1033 2004-09-24 Nathan Sidwell <nathan@codesourcery.com>
1034
1035 PR c++/16889
1036 * search.c (lookup_field_queue_p): Correct check for hidden base.
1037
1038 * search.c (bfs_walk): Remove.
1039 (lookup_member): Use dfs_walk_real.
1040 (dfs_walk_real): Move and adjust documentation from bfs_walk.
1041
1042 2004-09-23 Zack Weinberg <zack@codesourcery.com>
1043
1044 * decl.c (grokfndecl): If ::main is found not to return int,
1045 correct it after issuing a diagnostic.
1046 (grokdeclarator): If the incoming type was error_mark_node, do
1047 not complain about declaring something with no type.
1048 (start_function): Change check for ::main not returning int to
1049 an assertion, as grokfndecl now catches this when the user did it.
1050 * init.c (perform_member_init, sort_mem_initializers)
1051 (emit_mem_initializers): Make most diagnostics be issued on
1052 the line of current_function_decl, not whatever the current
1053 input line is.
1054 * parser.c (cp_lexer_peek_token_emit_debug_info): Surround
1055 definition and declaration with #ifdef ENABLE_CHECKING.
1056 Avoid unnecessary use of fprintf.
1057 (cp_lexer_print_token, cp_lexer_debug_stream): Adjust stub
1058 definitions to avoid warnings.
1059 (cp_lexer_new_main): Add assertion that first token is not a
1060 padding token.
1061 (cp_lexer_new_from_token_array): Fold into ...
1062 (cp_lexer_new_from_tokens): ... here. Add assertion that
1063 first token is not a padding token.
1064 (cp_lexer_set_source_position_from_token): Move nearer to callers.
1065 Remove unused lexer argument.
1066 (cp_lexer_peek_token): Just print debugging report (if enabled)
1067 and return lexer->next_token.
1068 (cp_lexer_skip_purged_tokens): Delete.
1069 (cp_lexer_next_token_is, cp_lexer_next_token_is_not): Make
1070 inline, simplify bodies.
1071 (cp_lexer_peek_nth_token): Add debugging report a la
1072 cp_lexer_peek_token.
1073 (cp_lexer_consume_token): Correct commentary. Advance over
1074 purged tokens here. Set current source position here, from
1075 token to be returned. Avoid unnecessary use of fprintf.
1076 (cp_lexer_purge_token): Advance next_token pointer over this and
1077 subsequent purged tokens.
1078 (cp_parser_error): Adjust source position to that of the
1079 peeked token.
1080 (cp_parser_push_lexer_for_tokens, cp_parser_pop_lexer): New functions.
1081 (cp_parser_string_literal): Remove some excessive cleverness.
1082 (cp_parser_enum_specifier): Call start_enum before consuming
1083 the opening brace.
1084 (cp_parser_member_declaration): Make the "extra semicolon"
1085 diagnostic consistently-worded with the other place this is
1086 diagnosed. Explicitly set the diagnostic location to the
1087 location of the offending semicolon.
1088 (cp_parser_enclosed_template_argument_list): Use %</%> quoting
1089 in diagnostics. Do not use cp_parser_require. Set location
1090 of diagnostics about improper use of '>>' to location of
1091 offending token.
1092 (cp_parser_late_parsing_for_member):
1093 Use cp_parser_push_lexer_for_tokens and cp_parser_pop_lexer.
1094 (cp_parser_late_parsing_default_args): Likewise. Manually
1095 move some logic outside the loop.
1096
1097 2004-09-23 Andrew Pinski <pinskia@physics.uc.edu>
1098
1099 PR c++/17618
1100 * cvt.c (cp_convert_to_pointer): Return early when the type is
1101 an error_mark_node.
1102
1103 2004-09-21 Fariborz Jahanian <fjahanian@apple.com>
1104
1105 PR c++/13989
1106 PR c++/9844
1107 * decl.c (grokfndecl): Add new argument "attrlist", use it
1108 to call cplus_decl_attributes.
1109 (start_function): Remove call to cplus_decl_attributes.
1110 * cvt.c (ocp_convert): Add support to use type conversion
1111 function to vector type.
1112 * parser.c (cp_parser_conversion_type_id): Add attributes, if any,
1113 to the parsed type.
1114
1115 2004-09-23 Paolo Bonzini <bonzini@gnu.org>
1116
1117 PR c++/17596
1118
1119 * parser.c (cp_parser_token_tree_map_node,
1120 cp_parser_pm_expression, cp_parser_additive_expression,
1121 cp_parser_multiplicative_expression, cp_parser_shift_expression,
1122 cp_parser_relational_expression, cp_parser_equality_expression,
1123 cp_parser_and_expression, cp_parser_exclusive_or_expression,
1124 cp_parser_inclusive_or_expression,
1125 cp_parser_logical_and_expression,
1126 cp_parser_logical_or_expression): Removed.
1127 (enum cp_parser_prec, struct cp_parser_token_tree_map_node,
1128 binops, binops_by_token): New.
1129 (cp_parser_assignment_expression): Use cp_parser_binary_expression.
1130 (cp_parser_new): Initialize binops_by_token.
1131 (cp_parser_binary_expression): Rewritten.
1132 (N_CP_TTYPES): New.
1133
1134 2004-09-23 Kazu Hirata <kazu@cs.umass.edu>
1135
1136 * parser.c: Fix a comment typo.
1137
1138 2004-09-23 Nathan Sidwell <nathan@codesourcery.com>
1139
1140 PR c++/17620
1141 * decl.c (xref_basetypes): Look through typedefs before checking
1142 for duplicate base.
1143
1144 2004-09-22 Nathan Sidwell <nathan@codesourcery.com>
1145
1146 * cp-tree.h (unemitted_tinfo_decls): Make a VEC(tree).
1147 * decl2.c (cp_finish_file): Adjust tinfo decl emission loop.
1148 * rtti.c (unemitted_tinfo_decls): Make a VEC(tree).
1149 (init_rtti_processing): Initialize it to something realistic.
1150 (get_tinfo_decl): Adjust pushing the new decl.
1151
1152 * cp-tree.h (struct lang_type_class): Remove marked flags, add
1153 diamond_shaped and repeated_base flags. Reorder to keep 8-bit blocks.
1154 (TYPE_MARKED_P): New.
1155 (CLASSTYPE_DIAMOND_SHAPED_P, CLASSTYPE_REPEATED_BASE_P): New.
1156 (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
1157 CLEAR_CLASSTYPE_MARKED_N): Remove.
1158 (CLASSTYPE_MARKED_*, SET_CLASSTYPE_MARKED_*,
1159 CLEAR_CLASSTYPE_MARKED_*): Remove.
1160 * decl.c (xref_basetypes): Use TYPE_MARKED_P. Determine diamond
1161 shaped and repeated base properties.
1162 * lex.c (cxx_make_type): Don't clear TYPE_ALIAS_SET.
1163 * rtti.c (dfs_class_hint_mark, dfs_class_hint_unmark,
1164 class_hint_flags): Remove.
1165 (get_pseudo_ti_init): Use CLASSTYPE_REPEATED_BASE_P and
1166 CLASSTYPE_DIAMOND_SHAPED_P.
1167
1168 2004-09-21 Ziemowit Laski <zlaski@apple.com>
1169
1170 * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved here from
1171 cp-objcp-common.h.
1172 (objcp_tsubst_copy_and_build): Reformat function signature.
1173 * cp-objcp-common.h (objcp_tsubst_copy_and_build): Likewise.
1174 (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved to cp-lang.c.
1175
1176 2004-09-21 Zack Weinberg <zack@codesourcery.com>
1177
1178 * parser.c (cp_lexer_peek_token, cp_lexer_consume_token):
1179 Don't handle CPP_PRAGMA tokens specially.
1180 (cp_lexer_handle_pragma): Use cp_lexer_consume_token. Don't
1181 purge the token; do clear token->value after processing. Add
1182 assertion at beginning that token->value is nonzero.
1183 (cp_parser_statement, cp_parser_declaration_seq_opt): Handle
1184 CPP_PRAGMA as a full statement or declaration in its own right.
1185
1186 2004-09-21 Matt Austern <austern@apple.com>
1187
1188 PR c++/15049
1189 * decl.c (grokvardecl): Accept declarations of global variables
1190 using anonymous types.
1191
1192 2004-09-21 Roger Sayle <roger@eyesopen.com>
1193
1194 PR c++/7503
1195 * tree.c (lvalue_p_1): Disallow MIN_EXPR and MAX_EXPR as lvalues
1196 if either operand has side-effects.
1197 * typeck.c (rationalize_conditional_expr): Assert that neither
1198 operand of MIN_EXPR or MAX_EXPR has side-effects.
1199 (build_modify_expr): Add support for MIN_EXPR and MAX_EXPR.
1200 Check that the "lhs" is a valid lvalue, i.e. that neither operand
1201 of a MIN_EXPR or MAX_EXPR has a side-effect.
1202
1203 2004-09-21 Nathan Sidwell <nathan@codesourcery.com>
1204
1205 * cp-tree.h (struct lang_type_header): Remove
1206 uses_multiple_inheritance field.
1207 (TYPE_USES_MULTIPLE_INHERITANCE): Remove.
1208 (TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P): Remove.
1209 (TYPE_USES_VIRTUAL_BASECLASSES): Remove.
1210 (DECL_NEEDS_VTT_PARM_P): Use CLASSTYPE_VBASECLASSES.
1211 (TYPE_CONTAINS_VPTR_P): Likewise.
1212 * call.c (add_template_candidate_real): Use
1213 CLASSTYPE_VBASECLASSES.
1214 (build_special_member_call): Likewise.
1215 * class.c (finish_struct_bits): Remove
1216 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P & TYPE_USES_VIRTUAL_BASECLASSES
1217 bookkeeping.
1218 (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
1219 (create_vtable_ptr): Remove TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P
1220 bookkeeping.
1221 (build_vtt_inits): Use CLASSTYPE_VBASECLASSES.
1222 (accumulate_vtbl_inits, build_vbase_offset_vtbl_entries):
1223 Likewise.
1224 * decl.c (xref_basetypes): Remove TYPE_USES_MULTIPLE_INHERITANCE,
1225 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
1226 bookkeeping.
1227 (cxx_maybe_build_cleanup): Use CLASSTYPE_VBASECLASSES.
1228 * decl2.c (maybe_retrofit_in_chrg): Likewise.
1229 * init.c (expand_member, push_base_cleanups): Likewise.
1230 * pt.c (instantiate_class_template): Remove
1231 TYPE_USES_MULTIPLE_INHERITANCE,
1232 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
1233 bookkeeping.
1234 * ptree.c (cxx_print_type): Remove TYPE_USES_MULTIPLE_INHERITANCE
1235 check.
1236 * typeck2.c (process_init_constructor): Replace some sorrys with
1237 asserts.
1238
1239 2004-09-21 Andreas Tobler <a.tobler@schweiz.ch>
1240
1241 * decl.c (reshape_init_array): Initialize max_index_cst to fix
1242 bootstrap failure.
1243
1244 2004-09-20 Mark Mitchell <mark@codesourcery.com>
1245
1246 PR c++/17530
1247 * pt.c (tsubst): Fix parentheses to accomodate emacs.
1248 (tsubst_baselink): If we get a single function, mark it as used.
1249
1250 2004-09-20 Matt Austern <austern@apple.com>
1251 Zack Weinberg <zack@codesourcery.com>
1252
1253 * decl.c (make_rtl_for_nonlocal_decl, start_preparsed_function):
1254 Apply lbasename to input_filename before passing to get_fileinfo.
1255 * semantics.c (begin_class_definition): Likewise.
1256 * lex.c (handle_pragma_interface): Apply get_fileinfo to the
1257 correct filename. Rename variables to be less confusing.
1258 (handle_pragma_implementation): Likewise. Disable "appears
1259 after file is included" diagnostic.
1260
1261 * parser.c (struct cp_token): Add in_system_header fiag.
1262 (CP_TOKEN_BLOCK_NUM_TOKENS, struct cp_token_block)
1263 (CP_TOKEN_BUFFER_SIZE, cp_token_cache_push_token)
1264 (CPP_NONE, cp_lexer_read_token): Delete.
1265 (struct cp_lexer): Remove first_token, string_tokens,
1266 main_lexer_p fields. Clarify comments.
1267 (struct cp_token_cache): Now just a pair of pointers.
1268 (CP_LEXER_BUFFER_SIZE): New #define.
1269 (CPP_PURGED): New fake token type.
1270 (cp_lexer_new_from_token_array, cp_lexer_destroy)
1271 (cp_lexer_peek_token_emit_debug_info, cp_lexer_skip_purged_tokens)
1272 (cp_lexer_handle_pragma, cp_token_cache_new, cp_parser_string_literal):
1273 New functions.
1274 (cp_lexer_new_from_tokens): Now a simple wrapper around
1275 cp_lexer_new_from_token_array.
1276 (cp_lexer_set_source_position_from_token): Also update
1277 in_system_header.
1278 (cp_lexer_next_token, cp_lexer_prev_token, cp_lexer_advance_token):
1279 Don't wrap round.
1280 (cp_lexer_token_difference): Dont handle wrapping round.
1281 (cp_lexer_new_main): Enable pragma deferral and raw strings,
1282 read the entire translation unit through c_lex_with_flags into
1283 this lexer's buffer, then turn raw strings back off again.
1284 (cp_lexer_grow_buffer): Adjust for buffer no longer being circular.
1285 (cp_lexer_get_preprocessor_token): No need to handle not being
1286 the main lexer. Set token->in_system_header too.
1287 (cp_lexer_peek_token): Skip purged tokens. Feed pragma tokens
1288 to cp_lexer_handle_pragma. No need to call cp_lexer_read_token.
1289 (cp_lexer_peek_nth_token): Likewise.
1290 (cp_lexer_purge_token): Mark the token PURGED, don't shift all
1291 the other tokens down.
1292 (cp_lexer_purge_tokens_after): Likewise.
1293 (cp_lexer_save_tokens, cp_lexer_rollback_tokens): Don't worry
1294 about there being no tokens.
1295 (cp_lexer_print_token): Revise to give useful information on
1296 all tokens.
1297 (struct cp_parser): Add field translate_strings_p.
1298 (cp_parser_new): Initialize it.
1299 (cp_parser_translation_unit): Destroy the lexer when done.
1300 (cp_parser_parameter_declaration): Restructure saving of
1301 default arguments.
1302 (cp_parser_save_member_function_body): Likewise.
1303 (cp_parser_check_for_invalid_template_id)
1304 (cp_parser_nested_name_specifier_opt, cp_parser_template_id):
1305 Adjust calls to cp_lexer_advance_token.
1306 (cp_parser_skip_to_closing_parenthesis, cp_parser_declaration):
1307 No need to fiddle c_lex_string_translate.
1308 (cp_parser_primary_expression, cp_parser_linkage_specification)
1309 (cp_parser_asm_definition, cp_parser_asm_specification_opt)
1310 (cp_parser_asm_operand_list, cp_parser_asm_clobber_list)
1311 Use cp_parser_string_literal.
1312 (cp_parser_attribute_list): Save and restore
1313 parser->translate_strings_p, not c_lex_string_translate.
1314 (cp_parser_cache_group): Delete.
1315 (cp_parser_cache_group_1): Rename cp_parser_cache_group. Do
1316 not take a cache argument.
1317
1318 2004-09-20 Giovanni Bajo <giovannibajo@gcc.gnu.org>
1319
1320 PR c++/14179
1321 * decl.c (reshape_init): Extract array handling into...
1322 (reshape_init_array): New function. Use integers instead of trees
1323 for indices. Handle out-of-range designated initializers.
1324
1325 2004-09-20 Steven Bosscher <stevenb@suse.de>
1326
1327 * lex.c (cxx_init): Don't set the ridpointer for RID_NULL
1328 to null_node.
1329
1330 2004-09-19 Mark Mitchell <mark@codesourcery.com>
1331
1332 * decl2.c (determine_visibility): Allow class visibility
1333 directives to override targetm.cxx.export_class_data.
1334
1335 2004-09-18 Kazu Hirata <kazu@cs.umass.edu>
1336
1337 * call.c, semantics.c: Follow spelling conventions.
1338 * class.c: Fix a comment typo.
1339
1340 2004-09-16 Geoffrey Keating <geoffk@apple.com>
1341
1342 PR pch/13361
1343 * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
1344 (handle_pragma_implementation): Likewise.
1345
1346 2004-09-17 Jeffrey D. Oldham <oldham@codesourcery.com>
1347 Zack Weinberg <zack@codesourcery.com>
1348
1349 * cp-tree.def: Use tree_code_class enumeration constants
1350 instead of code letters.
1351 * call.c, class.c, cp-gimplify.c, cp-lang.c, cxx-pretty-print.c
1352 * mangle.c, pt.c, semantics.c, tree.c, typeck.c:
1353 Update for new tree-class enumeration constants.
1354
1355 2004-09-16 Mark Mitchell <mark@codesourcery.com>
1356
1357 PR c++/16002
1358 * parser.c (cp_parser_simple_declaration): Commit to tentative
1359 parses after seeing a decl-specifier.
1360 (cp_parser_simple_declaration): Eliminate spurious message.
1361 (cp_parser_init_declarator): Adjust error message.
1362
1363 PR c++/16029
1364 * lex.c (unqualified_name_lookup_error): Mark the dummy
1365 declaration as used.
1366
1367 PR c++/17501
1368 * parser.c (cp_parser_nested_name_specifier): Do not resolve
1369 typename types if the user explicitly said "typename".
1370
1371 2004-09-16 Andrew MacLeod <amacleod@redhat.com>
1372
1373 * error.c (dump_decl): Make sure there is lang_specific info before
1374 checking for DTOR and CTOR decls.
1375
1376 2004-09-16 Nathan Sidwell <nathan@codesourcery.com>
1377
1378 * class.c (copy_virtuals): Remove.
1379 (build_primary_vtable): Use copy_list directly.
1380 (build_secondary_vtable): Likewise.
1381 (update_vtable_entry_for_fn): Clear BV_CALL_INDEX here.
1382 (create_vtable_ptr): Likewise.
1383
1384 2004-09-16 Kazu Hirata <kazu@cs.umass.edu>
1385
1386 * search.c: Follow spelling conventions.
1387
1388 2004-09-16 Nathan Sidwell <nathan@codesourcery.com>
1389
1390 * cp-tree.h (struct lang_type_class): Make pure_virtuals a
1391 VEC(tree).
1392 (CLASSTYPE_INLINE_FRIENDS, CLASSTYPE_PURE_VIRTUALS): Update
1393 comments.
1394 * call.c (build_new_method_call): Don't confirm a pure virtual is
1395 in CLASSTYPE_PURE_VIRTUALS. Reorder checks. Make it a warning.
1396 * class.c (check_methods): CLASSTYPE_INLINE_FRIENDS is a VEC(tree).
1397 (fixup_inline_methods, finish_struct): Likewise.
1398 * decl.c (finish_method): Likewise.
1399 * search.c (dfs_get_pure_virtuals, get_pure_virtuals):
1400 CLASSTYPE_PURE_VIRTUALS is a VEC(tree).
1401 * typeck2.c (abstract_virtuals_error): Likewise. Truncate the
1402 vector to avoid repeating the list in error messages.
1403
1404 2004-09-15 Mark Mitchell <mark@codesourcery.com>
1405
1406 * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Define.
1407 * cp-tree.h (cxx_comdat_group): Declare.
1408 * decl.c (cxx_comdat_group): New function.
1409
1410 2004-09-15 Nathan Sidwell <nathan@codesourcery.com>
1411
1412 * search.c (get_pure_virtuals): Remove unused variables.
1413
1414 * cp-tree.h (struct lang_decl_flags): Remove
1415 needs_final_overrider.
1416 (DECL_NEEDS_FINAL_OVERRIDER_P): Remove.
1417 * decl.c (duplicate_decls): Do not copy DECL_NEEDS_FINAL_OVERRIDER_P.
1418 * class.c (finish_struct_bits): Correct comment about
1419 CLASSTYPE_PURE_VIRTUALS.
1420 * search.c (get_pure_virtuals): Remove useless loop.
1421
1422 2004-09-14 Mark Mitchell <mark@codesourcery.com>
1423
1424 PR c++/17324
1425 * mangle.c (partially_mangled_name): New variable.
1426 (partially_mangled_name_len): Likewise.
1427 (save_partially_mangled_name): New function.
1428 (restore_partially_mangled_name): Likewise.
1429 (write_encoding): Save and restore partially mangled names around
1430 calls to get_mostly_instantiated_function_type.
1431 (write_unqualified_name): Likewise.
1432
1433 2004-09-14 Nathan Sidwell <nathan@codesourcery.com>
1434
1435 * pt.c (unify): Replace gcc_unreachable with gcc_assert.
1436
1437 2004-09-13 Mark Mitchell <mark@codesourcery.com>
1438
1439 PR c++/16162
1440 * parser.c (cp_parser_id_expression): Correct value for
1441 is_declarator.
1442 (cp_parser_nested_name_specifier_opt): Look through typenames as
1443 necessary.
1444 (cp_parser_template_name): Honor check_dependency_p.
1445
1446 PR c++/16716
1447 * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
1448 Robustify.
1449
1450 PR c++/17327
1451 * pt.c (unify): Add ENUMERAL_TYPE case. Replace sorry with
1452 gcc_unreacable.
1453
1454 2004-09-12 Richard Henderson <rth@redhat.com>
1455
1456 PR c++/16254
1457 * semantics.c (maybe_cleanup_point_expr): Don't call fold.
1458 * typeck.c (condition_conversion): Likewise.
1459
1460 2004-09-11 Richard Henderson <rth@redhat.com>
1461
1462 PR c++/17404
1463 * pt.c (cur_stmt_expr): Move from tsubst_expr.
1464 (tsubst_expr) <case STMT_EXPR>: Move ...
1465 (tsubst_copy_and_build): ... here.
1466
1467 2004-09-10 Zack Weinberg <zack@codesourcery.com>
1468
1469 * cp-tree.h (interface_only, interface_unknown): Delete declarations;
1470 comment explaining them moved to c-common.h.
1471 * lex.c (interface_only, interface_unknown, extract_interface_info):
1472 Delete definitions.
1473 (cxx_finish): Don't reset interface_unknown.
1474 (handle_pragma_interface): Don't set interface_only and
1475 interface_unknown; just the like-named fields in finfo.
1476 (handle_pragma_implementation): Adjust comment.
1477 * decl2.c (cp_finish_file): Don't reset interface_only and
1478 interface_unknown.
1479 * method.c (synthesize_method): Don't reset interface_unknown or
1480 call extract_interface_info.
1481 * pt.c (pop_tinst_level): Don't call extract_interface_info.
1482 * decl.c (start_cleanup_fn): Don't save or restore interface_only
1483 and interface_unknown.
1484 (make_rtl_for_nonlocal_decl): Call get_fileinfo on input_filename
1485 and use the result instead of the interface_only/interface_unknown
1486 globals.
1487 (start_preparsed_function): Likewise.
1488 * lex.c (cxx_make_type): Likewise.
1489 * semantics.c (begin_class_definition): Likewise.
1490 (expand_body): Don't call extract_interface_info.
1491
1492 2004-09-10 Ziemowit Laski <zlaski@apple.com>
1493
1494 * decl.c (objc_mark_locals_volatile): Make description of
1495 routine more descriptive; only mark VAR_DECLs at each
1496 binding level.
1497
1498 2004-09-10 Richard Henderson <rth@redhat.com>
1499
1500 PR c++/17386
1501 * call.c (build_vfield_ref): Move...
1502 * class.c (build_vfield_ref): ... here. Convert datum to the
1503 primary base containing the vptr.
1504 (make_new_vtable): Simplify build_primary_vtable arguments.
1505 (finish_struct_1): Do not duplicate TYPE_VFIELD.
1506 * typeck.c (build_class_member_access_expr): Don't warn for
1507 null object access to base fields.
1508
1509 2004-09-10 Ziemowit Laski <zlaski@apple.com>
1510
1511 * decl.c (objc_get_current_scope, objc_mark_locals_volatile):
1512 New functions, to be called from ObjC++.
1513
1514 2004-09-10 Kazu Hirata <kazu@cs.umass.edu>
1515
1516 * class.c, cp-tree.h, decl.c, decl2.c, mangle.c,
1517 name-lookup.h, parser.c, search.c, semantics.c, typeck2.c: Fix
1518 comment typos.
1519
1520 2004-09-09 Ziemowit Laski <zlaski@apple.com>
1521
1522 * typeck.c (build_c_cast): Preserve the cast if casting
1523 to and from an Objective-C type.
1524
1525 2004-09-09 Ziemowit Laski <zlaski@apple.com>
1526
1527 * Make-lang.in (cp/typeck.o): Depend on c-common.h.
1528 * typeck.c: Include c-common.h.
1529 (comptypes): For RECORD_TYPEs, call objc_comptypes() and
1530 return the result if nonnegative.
1531
1532 2004-09-09 Zack Weinberg <zack@codesourcery.com>
1533
1534 * decl2.c (import_export_class)
1535 * lex.c (handle_pragma_interface):
1536 Test MULTIPLE_SYMBOL_SPACES with if, not #ifdef.
1537
1538 2004-09-08 Ziemowit Laski <zlaski@apple.com>
1539
1540 * Make-lang.in (cp/semantics.o): Depend on c-common.h.
1541 * semantics.c: Include c-common.h.
1542 (finish_compound_stmt): Call objc_clear_super_receiver().
1543
1544 2004-09-08 Ziemowit Laski <zlaski@apple.com>
1545
1546 * cp-tree.h (do_poplevel): New prototype.
1547 * semantics.c (do_poplevel): Make externally visible.
1548
1549 2004-09-08 Nathan Sidwell <nathan@codesourcery.com>
1550
1551 * cp-tree.h (tree_pair_s): Define a GC'd vector.
1552 * name-lookup.h (cxx_saved_binding, cp_class_binding): Likewise.
1553 * semantics.c (deferred_access): Likewise.
1554
1555 2004-09-06 Daniel Jacobowitz <dan@debian.org>
1556
1557 * semantics.c (expand_body): Assert that we are not nested.
1558
1559 2004-09-06 Zack Weinberg <zack@codesourcery.com>
1560
1561 * decl.c (build_enumerator): Use add_double and int_fits_type_p
1562 instead of cp_build_binary_op, to avoid creating short-lived trees.
1563 * parser.c (cp_parse_type_specifier <RID_ENUM>): Use two-token
1564 lookahead instead of backtracking. Move some code to avoid a
1565 conditional branch.
1566 (cp_parser_enum_specifier): Avoid duplication of effort with caller.
1567 Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.
1568 (cp_parser_enumerator_list, cp_parser_enumerator_definition):
1569 Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.
1570
1571 2004-09-04 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1572
1573 * decl.c (grok_declarator): Remove a redundant semicolon.
1574
1575 * parser.c (cp_parser_decl_specifier_seq, cp_parser_type_specifier):
1576 Correct comments describing function parameters.
1577
1578 2004-09-03 Matt Austern <austern@apple.com>
1579 Compile speed improvement.
1580 * parser.c (cp_lexer_print_token): Only define if ENABLE_CHECKING set.
1581 Otherwise define a stub macro that expands to nothing.
1582 (cp_lexer_debugging_p): Only define if ENABLE_CHECKING set. Otherwise
1583 define a stub macro that expands to 0.
1584 (cp_lexer_start_debugging): Only define if ENABLE_CHECKING set.
1585 (cp_lexer_stop_debugging): Likewise.
1586 (cp_lexer_debug_stream): Only define if ENABLE_CHECKING set. Otherwise
1587 define a stub macro that expands to NULL.
1588 (cp_lexer_new_main): Only set debugging_p if ENABLE_CHECKING set.
1589 (cp_lexer_new_from_tokens): Likewise.
1590
1591 2004-09-03 Jan Hubicka <jh@suse.cz>
1592
1593 * decl.c (finish_function): Clean out pointers we no longer need.
1594
1595 2004-09-03 Jan Beulich <jbeulich@novell.com>
1596
1597 * g++spec.c (MATH_LIBRARY_PROFILE): Default to MATH_LIBRARY rather
1598 than "-lm".
1599
1600 2004-09-02 Paul Brook <paul@codesourcery.com>
1601
1602 * decl2.c (determine_visibility): Only check data visibility
1603 for VAR_DECLS.
1604
1605 2004-08-31 Mark Mitchell <mark@codesourcery.com>
1606
1607 * cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): New macro.
1608 * class.c (build_ctor_vtbl_group): Set DECL_CONSTRUCTION_VTABLE_P.
1609 * decl2.c (determine_visibility): Honor
1610 TARGET_CXX_EXPORT_CLASS_DATA.
1611
1612 * class.c (key_method): Rename to ...
1613 (determine_key_method): ... this.
1614 (finish_struct_1): Adjust accordingly.
1615 * cp-tree.h (key_method): Declare.
1616 * decl2.c (maybe_emit_vtables): Determine the key method here if
1617 it has not already been done.
1618
1619 2004-08-31 Ziemowit Laski <zlaski@apple.com>
1620
1621 * Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-objcp-common.o.
1622 (cp/cp-lang.o): Depend on debug.h, gtype-cp.h and cp/cp-objcp-common.h.
1623 (cp/cp-decl.c): Do not depend on gtype-cp.h.
1624 (cp/cp-objcp-common.o): New target.
1625 * cp-lang.c: Include debug.h, cp-objcp-common.h and gtype-cp.h.
1626 (cxx_get_alias_set, cxx_warn_unused_global_decl, cp_expr_size,
1627 cp_tree_size, cp_var_mod_type_p, cxx_initialize_diagnostics): Move
1628 prototypes and definitions to cp-objcp-common.h and cp-objcp-common.c,
1629 respectively.
1630 (LANG_HOOKS_TREE_SIZE, LANG_HOOKS_FINISH,
1631 LANG_HOOKS_CLEAR_BINDING_STACK, LANG_HOOKS_INIT_OPTIONS,
1632 LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION,
1633 LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT,
1634 LANG_HOOKS_POST_OPTIONS, LANG_HOOKS_GET_ALIAS_SET,
1635 LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_EXPAND_EXPR,
1636 LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_PARSE_FILE,
1637 LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, LANG_HOOKS_TRUTHVALUE_CONVERSION,
1638 LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, LANG_HOOKS_MARK_ADDRESSABLE,
1639 LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
1640 LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
1641 LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_PRINT_ERROR_FUNCTION,
1642 LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, LANG_HOOKS_WRITE_GLOBALS,
1643 LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
1644 LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
1645 LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
1646 LANG_HOOKS_ATTRIBUTE_TABLE, LANG_HOOKS_TREE_INLINING_WALK_SUBTREES,
1647 LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
1648 LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
1649 LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P,
1650 LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
1651 LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P,
1652 LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN,
1653 LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN, LANG_HOOKS_EXPR_SIZE,
1654 LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR,
1655 LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_MAKE_TYPE,
1656 LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE,
1657 LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
1658 LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE, LANG_HOOKS_INCOMPLETE_TYPE_ERROR,
1659 LANG_HOOKS_TYPE_PROMOTES_TO, LANG_HOOKS_REGISTER_BUILTIN_TYPE,
1660 LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_FOLD_OBJ_TYPE_REF): Move
1661 hooks to cp-objcp-common.h.
1662 (finish_file): New function.
1663 * cp-objcp-common.c: New file.
1664 * cp-objcp-common.h: New file.
1665 * cp-tree.h (cp_finish_file): New prototype.
1666 * decl.c: Do not include gtype-cp.h.
1667 * decl2.c (finish_file): Rename to cp_finish_file.
1668
1669 2004-08-31 Richard Henderson <rth@redhat.com>
1670
1671 PR c++/17221
1672 * pt.c (tsubst_expr): Move OFFSETOF_EXPR handling ...
1673 (tsubst_copy_and_build): ... here.
1674
1675 2004-08-30 Mark Mitchell <mark@codesourcery.com>
1676
1677 * cp-tree.h (initialize_artificial_var): Declare.
1678 * decl.c (initialize_artifical_var): New function.
1679 * class.c (initialize_array): Remove.
1680 (initialize_vtable): Use initialize_artificial_var.
1681 (build_vtt): Likewise.
1682 (build_ctor_vtbl_group): Likewise.
1683
1684 2004-08-30 Richard Henderson <rth@redhat.com>
1685
1686 * class.c (build_base_path): Use build_address directly.
1687 * typeck.c (build_unary_op): Don't lower &a.b to pointer
1688 arithmetic directly.
1689 * typeck2.c (store_init_value): Don't assume !TREE_CONSTANT
1690 means !initializer_constant_valid_p.
1691
1692 2004-08-30 Richard Henderson <rth@redhat.com>
1693
1694 * class.c (fixed_type_or_null): Use get_base_address before
1695 assuming an ADDR_EXPR is non-null.
1696
1697 2004-08-30 Nathan Sidwell <nathan@codesourcery.com>
1698
1699 * name-lookup.c (pop_binding, pushdecl,
1700 set_identifier_type_value_with_scope, push_overloaded_decl,
1701 arg_assoc_type): Replace abort with gcc_assert or gcc_unreachable.
1702 * parser.c (cp_parser_diagnose_invalid_type_name,
1703 cp_parser_postfix_expression, cp_parser_unary_expression,
1704 cp_parser_check_declarator_template_para): Likewise.
1705 * pt.c (push_inline_template_parms_recursive,
1706 check_explicit_specialization, convert_nontype_argument,
1707 coerce_template_template_parms, uses_template_parms,
1708 instantiate_class_template, tsubst_decl, tsubst, tsubst_copy,
1709 tsubst_expr, instantiate_template,
1710 maybe_adjust_types_for_deduction, type_unification_real,
1711 resolve_overloaded_unification, template_decl_level,
1712 type_dependent_expression_p): Likewise.
1713 * search.c (lookup_base_r): Likewise.
1714 * semantics.c (finish_stmt_expr, simplify_aggr_init_expr): Likewise.
1715 * tree.c (lvalue_p_1, count_functions, cxx_printable_name,
1716 verify_stmt_tree_r, get_type_decl, stabilize_call): Likewise.
1717 * typeck.c (common_type, get_member_function_from_ptrfunc,
1718 build_binary_op, build_unary_op, expand_ptrmemfunc_cst): Likewise.
1719 * typeck2.c (cxx_incomplete_type_diagnostic,
1720 split_nonconstant_init_1, store_init_value,
1721 process_init_constructor): Likewise.
1722
1723 2004-08-30 Nathan Sidwell <nathan@codesourcery.com>
1724
1725 * call.c (check_dtor_name): Replace abort with gcc_assert or
1726 gcc_unreachable.
1727 (build_call, add_builtin_candidate, build_new_op,
1728 convert_like_real, build_over_call, in_charge_arg_for_name,
1729 source_type, joust): Likewise.
1730 * class.c (build_simple_base_path, get_vcall_index,
1731 finish_struct_1, instantiate_type, get_enclosing_class,
1732 add_vcall_offset_vtbl_entries_1, cp_fold_obj_type_ref): Likewise.
1733 * cp-gimplify.c (cp_genericize): Likewise.
1734 * cp-lang.c (cp_expr_size, cp_tree_size): Likewise.
1735 * cvt.c (cp_convert_to_pointer, ocp_convert): Likewise.
1736 * decl.c (poplevel, make_unbound_class_template, reshape_init,
1737 check_special_function_return_type, grokdeclarator,
1738 grok_op_properties, tag_name, xref_tag, start_preparsed_function,
1739 finish_function): Likewise.
1740 * decl2.c (grokfield, maybe_emit_vtables):Likewise.
1741 * error.c (dump_global_iord, dump_decl, dump_template_decl,
1742 language_to_string): Likewise.
1743 * except.c (choose_personality_routine): Likewise.
1744 * friend.c (do_friend): Likewise.
1745 * g++spec.c (lang_specific_driver): Likewise.
1746 * init.c (build_zero_init, expand_default_init, build_new_1,
1747 build_vec_delete_1, build_vec_init, build_dtor_call): Likewise.
1748 * lex.c (retrofit_lang_decl, cp_type_qual_from_rid): Likewise.
1749 * mangle.c (add_substitution, write_unscoped_name,
1750 write_template_prefix, write_identifier,
1751 write_special_name_destructor, write_type, write_builtin_type,
1752 write_expression, write_template_param,
1753 write_java_integer_type_codes): Likewise.
1754 * method.c (implicitly_declare_fn): Likewise.
1755
1756 2004-08-30 Nathan Sidwell <nathan@codesourcery.com>
1757
1758 * cp-tree.h (BINFO_PRIMARY_P): Use a binfo flag.
1759 (BINFO_INDIRECT_PRIMARY_P): Remove.
1760 * class.c (determine_primary_base): Rename to ...
1761 (determine_primary_bases): ... here. Set all primary bases.
1762 (set_primary_base): Remove.
1763 (mark_primary_bases): Remove.
1764 (build_simple_base_path, walk_subobject_offsets,
1765 propagate_binfo_offsets, end_of_class): Adjust.
1766 (layout_class_type): Rename determine_primary_base call.
1767 (dump_class_hierarchy_r, dump_vtable): Adjust. Don't pass a binfo
1768 to type_as_string.
1769 (dfs_build_secondary_vptr_vtt_inits, dfs_accumulate_vtbl_inits,
1770 build_rtti_vtbl_entries): Adjust.
1771 * init.c (build_vtbl_address): Adjust.
1772
1773 * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Use gcc_assert.
1774
1775 2004-08-28 Ziemowit Laski <zlaski@apple.com>
1776
1777 * Make-lang.in (CXX_OBJS): Split up into CXX_OBJS and
1778 CXX_AND_OBJCXX_OBJS.
1779 (CXX_C_OBJS): Include in CXX_AND_OBJCXX_OBJS instead of listing
1780 separately on the link line.
1781
1782 2004-08-28 Jason Merrill <jason@redhat.com>
1783
1784 * decl.c (expand_static_init): Avoid bogus warnings.
1785
1786 2004-08-27 Jason Merrill <jason@redhat.com>
1787
1788 PR c++/16851
1789 * tree.c (stabilize_init): See through a COMPOUND_EXPR.
1790
1791 PR c++/13684
1792 * decl.c (expand_static_init): Use thread-safety API.
1793 (register_dtor_fn): Return the call, don't expand it.
1794 * tree.c (add_stmt_to_compound): New fn.
1795 (stabilize_call): Use it.
1796
1797 2004-08-27 Richard Henderson <rth@redhat.com>
1798
1799 * cp-tree.def (OFFSETOF_EXPR): New.
1800 * parser.c (cp_parser_builtin_offsetof): Either built an
1801 OFFSETOF_EXPR, or call fold_offsetof immediately.
1802 * pt.c (tsubst_expr): Handle OFFSETOF_EXPR.
1803
1804 2004-08-27 Nathan Sidwell <nathan@codesourcery.com>
1805
1806 * call.c (validate_conversion_obstack): Replace
1807 my_friendly_assert with gcc_assert or gcc_unreachable.
1808 (direct_reference_binding, merge_conversion_sequences,
1809 build_user_type_conversion_1, perform_overload_resolution,
1810 build_op_delete_call, enforce_access, call_builtin_trap,
1811 build_over_call, build_special_member_call, build_new_method_call,
1812 initialize_reference): Likewise.
1813 * class.c (build_base_path, build_primary_vtable, alter_access,
1814 check_bases, update_vtable_entry_for_fn, layout_empty_base,
1815 clone_function_decl, adjust_clone_args,
1816 type_requires_array_cookie, include_empty_classes,
1817 finish_struct_1, resolve_address_of_overloaded_function,
1818 instantiate_type, get_vtbl_decl_for_binfo, build_vtt_inits,
1819 dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
1820 accumulate_vtbl_inits, build_vtbl_initializer,
1821 build_vbase_offset_vtbl_entries, build_rtti_vtbl_entries): Likewise.
1822 * cvt.c (build_up_reference, convert_to_reference): Likewise.
1823 * decl.c (poplevel, duplicate_decls, make_typename_type,
1824 cxx_init_decl_processing, reshape_init, check_initializer,
1825 make_rtl_for_nonlocal_decl, initialize_local_var, cp_finish_decl,
1826 expand_static_init, grokfndecl, grokvardecl, build_ptrmem_type,
1827 grokdeclarator, copy_fn_p, grok_op_properties, xref_tag,
1828 xref_basetypes, start_preparsed_function, save_function_data,
1829 finish_function, finish_method, maybe_register_incomplete_var,
1830 complete_vars): Likewise.
1831 * decl2.c (grok_array_decl, check_member_template,
1832 check_classfn, finish_static_data_member_decl, coerce_new_type,
1833 coerce_delete_type, import_export_class, decl_needed_p,
1834 determine_visibility, import_export_decl, build_cleanup,
1835 start_static_initialization_or_destructi, do_static_destruction,
1836 prune_vars_needing_no_initialization,
1837 build_offset_ref_call_from_tree): Likewise.
1838 * error.c (dump_decl, dump_expr): Likewise.
1839 * init.c (finish_init_stmts, build_zero_init,
1840 expand_virtual_init, expand_default_init, expand_aggr_init_1,
1841 build_offset_ref, build_new_1, build_delete, build_vbase_delete):
1842 Likewise.
1843 * mangle.c (write_method_parms, write_template_args,
1844 write_expression, write_template_arg): Likewise.
1845 * method.c (make_thunk, finish_thunk, use_thunk): Likewise.
1846 * name-lookup.c (pop_binding, begin_scope, leave_scope,
1847 resume_scope, push_using_decl, validate_nonmember_using_decl,
1848 is_ancestor, poplevel_class, set_inherited_value_binding_p,
1849 push_class_level_binding, do_class_using_decl, push_namespace,
1850 pop_namespace, add_using_namespace, ambiguous_decl,
1851 lookup_namespace_name, lookup_type_current_level,
1852 maybe_process_template_type_declaration): Likewise.
1853 * parser.c (cp_lexer_peek_nth_token,
1854 cp_parser_parse_and_diagnose_invalid_typ,
1855 cp_parser_translation_unit, cp_parser_template_id,
1856 cp_parser_lookup_name, cp_parser_late_parsing_for_member): Likewise.
1857 * pt.c (push_access_scope, finish_member_template_decl,
1858 push_inline_template_parms_recursive, add_outermost_template_args,
1859 get_innermost_template_args, begin_explicit_instantiation,
1860 end_explicit_instantiation, retrieve_specialization,
1861 is_specialization_of, is_specialization_of_friend,
1862 register_specialization, check_explicit_specialization,
1863 comp_template_parms, process_template_parm,
1864 process_partial_specialization, convert_nontype_argument,
1865 coerce_template_template_parms, coerce_template_parms,
1866 mangle_class_name_for_template, lookup_template_function,
1867 lookup_template_class, instantiate_class_template, tsubst_decl,
1868 tsubst_function_type, tsubst, tsubst_qualified_id, tsubst_copy,
1869 instantiate_template, fn_type_unification, type_unification_real,
1870 get_template_base, regenerate_decl_from_template,
1871 template_for_substitution, instantiate_decl,
1872 get_mostly_instantiated_function_type, dependent_scope_ref_p,
1873 value_dependent_expression_p, resolve_typename_type): Likewise.
1874 * repo.c (repo_emit_p): Likewise.
1875 * rtti.c (build_headof, get_tinfo_decl, get_pseudo_ti_init,
1876 create_tinfo_types, emit_tinfo_decl): Likewise.
1877 * search.c (lookup_base_r, lookup_base, lookup_field_1,
1878 dfs_access_in_type, build_baselink, lookup_member,
1879 adjust_result_of_qualified_name_lookup, copied_binfo): Likewise.
1880 * semantics.c (perform_or_defer_access_check,
1881 finish_non_static_data_member, finish_stmt_expr_expr,
1882 finish_stmt_expr, finish_call_expr, finish_pseudo_destructor_expr,
1883 finish_template_template_parm, finish_member_declaration,
1884 emit_associated_thunks): Likewise.
1885 * tree.c (build_target_expr_with_type, force_target_expr,
1886 copy_binfo, get_first_fn, cp_tree_equal): Likewise.
1887 * typeck.c (type_after_usual_arithmetic_conversions, comptypes,
1888 cxx_sizeof_or_alignof_type, perform_integral_promotions,
1889 build_class_member_access_expr, finish_class_member_access_expr,
1890 build_ptrmemfunc_access_expr, build_unary_op,
1891 unary_complex_lvalue, cxx_mark_addressable, build_modify_expr,
1892 build_ptrmemfunc, expand_ptrmemfunc_cst, check_return_expr
1893 * typeck2.c (complete_type_check_abstract,
1894 abstract_virtuals_error, process_init_constructor,
1895 add_exception_specifier): Likewise.
1896
1897 2004-08-27 Nathan Sidwell <nathan@codesourcery.com>
1898
1899 * class.c (build_vtbl_initializer): Use ssize_int.
1900 * decl.c (complete_array_type): Likewise.
1901 * method.c (finish_thunk): Likewise.
1902 * search.c (get_dynamic_base_type): Likewise.
1903
1904 2004-08-26 Richard Henderson <rth@redhat.com>
1905
1906 * cp-tree.h (DECL_FIELD_IS_BASE): New.
1907 * class.c (build_base_field): Set it.
1908 (build_simple_base_path): Use it.
1909 (fixed_type_or_null): Don't consider base fields definitive.
1910
1911 2004-08-25 Roger Sayle <roger@eyesopen.com>
1912
1913 PR middle-end/16693
1914 PR tree-optimization/16372
1915 * decl.c (finish_enum): Make the precision of the enumerated type
1916 the same width as the underlying integer type.
1917
1918 2004-08-25 Mark Mitchell <mark@codesourcery.com>
1919
1920 PR c++/17155
1921 * lex.c (build_lang_decl): Set DECL_NO_STATIC_CHAIN for all C++
1922 functions.
1923
1924 * mangle.c (get_identifier_nocopy): Add cast.
1925
1926 * cp-tree.h (mangle_type): Remove.
1927 * mangle.c (globals): GTY it.
1928 (mangle_obstack): New variable.
1929 (name_obstack): Likewise.
1930 (name_base): Likewise.
1931 (write_char): Adjust accordingly.
1932 (write_chars): Likewise.
1933 (write_string): Likewise.
1934 (start_mangling): Initialize G.substitutions only one. Add
1935 ident_p parameter.
1936 (finish_mangling): Use VARRAY_CLEAR to reclaim
1937 storage in G.substitutions. Use obstack_finish.
1938 (init_mangle): Adjust for changes to variable names above.
1939 Initialize G.substitutions.
1940 (mangle_decl_string): Adjust call to start_mangling.
1941 (get_identifier_nocopy): New function.
1942 (mangle_decl): Use it.
1943 (mangle_type_string): Adjust call to start_mangling.
1944 (mangle_special_for_type): Likewise.
1945 (mangle_vtt_for_type): Likewise.
1946 (mangle_ctor_vtbl_for_type): Likewise.
1947 (mangle_thunk): Likewise.
1948 (mangle_guard_variable): Likewise.
1949 (mangle_ref_init_variable): Likewise.
1950
1951 2004-08-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1952
1953 PR c++/14428
1954 * pt.c (redeclare_class_template): Check the type of non-type and
1955 template template parameter.
1956
1957 2004-08-25 Nathan Sidwell <nathan@codesourcery.com>
1958
1959 * call.c (convert_class_to_reference): Adjust build_int_cst calls.
1960 (build_user_type_conversion_1, convert_like_real,
1961 build_java_interface_fn_ref, build_special_member_call): Likewise.
1962 * class.c (finish_struct_1, build_vtbl_initializer): Likewise.
1963 * cp-gimplify.c (cp_gimplify_expr): Likewise.
1964 * cvt.c (cp_convert_to_pointer): Likewise.
1965 * decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
1966 * decl2.c (start_static_initialization_or_destruction,
1967 generate_ctor_or_dtor_function): Likewise.
1968 * except.c (build_throw): Likewise.
1969 * mangle.c (write_integer_cst): Likewise.
1970 * method.c (finish_thunk): Likewise.
1971 * rtti.c (build_headof, get_tinfo_decl_dynamic,
1972 build_dynamic_cast_1, ptr_initializer, ptm_initializer,
1973 get_pseudo_ti_init): Likewise.
1974 * search.c (get_dynamic_cast_base_type): Likewise.
1975
1976 2004-08-25 Zack Weinberg <zack@codesourcery.com>
1977
1978 * class.c, search.c: Remove references to DWARF_DEBUG.
1979
1980 2004-08-25 Adam Nemet <anemet@lnxw.com>
1981
1982 * repo.c (extract_string): Reset backquote after one character.
1983 (get_base_filename): Fix indentation.
1984
1985 2004-08-24 Nathan Sidwell <nathan@codesourcery.com>
1986
1987 * decl.c (cxx_init_decl_processing): Adjust
1988 build_common_tree_nodes call.
1989
1990 2004-08-24 Nathan Sidwell <nathan@codesourcery.com>
1991
1992 PR c++/16889
1993 * (is_subobject_of_p): Resurrect & optimize.
1994 (lookup_field_r): Use it.
1995
1996 2004-08-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1997
1998 PR c++/16706
1999 * search.c (friend_accessible_p): Increment processing_template_decl
2000 when deal with TEMPLATE_DECL of SCOPE.
2001
2002 2004-08-24 Nathan Sidwell <nathan@codesourcery.com>
2003
2004 PR c++/17149
2005 * semantics.c (check_accessibility_of_qualified_id): Defer check
2006 if qualifying_type is a template parameter.
2007
2008 2004-08-23 Mark Mitchell <mark@codesourcery.com>
2009
2010 PR c++/17163
2011 * pt.c (instantiate_decl): Do not try to apply
2012 DECL_DECLARED_INLINED_P to a VAR_DECL.
2013
2014 * search.c (build_baselink): Fix typo in comment.
2015
2016 2004-08-22 Andrew Pinski <apinski@apple.com>
2017
2018 Revert:
2019 2004-08-22 Andrew Pinski <apinski@apple.com>
2020 PR c++/14029
2021 * typeck.c (build_unary_op): Use &a.b if the folded lowered
2022 expression is not constant.
2023
2024 2004-08-23 Nathan Sidwell <nathan@codesourcery.com>
2025
2026 * name-lookup.c (pushdecl): Rename build_type_copy call.
2027 * tree.c (cp_build_qualified_type_real,
2028 build_exception_variant, handle_java_interface_attribute): Likewise.
2029
2030 2004-08-22 Andrew Pinski <apinski@apple.com>
2031
2032 PR c++/14029
2033 * typeck.c (build_unary_op): Use &a.b if the folded lowered
2034 expression is not constant.
2035
2036 2004-08-20 Mark Mitchell <mark@codesourcery.com>
2037
2038 PR c++/17121
2039 * decl.c (expand_static_init): Use DECL_FUNCTION_SCOPE_P.
2040
2041 2004-08-21 Joseph S. Myers <jsm@polyomino.org.uk>
2042
2043 PR c++/17120
2044 * pt.c (tsubst_copy_and_build): Avoid clearing TREE_NO_WARNING for
2045 MODOP_EXPR.
2046
2047 2004-08-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2048
2049 * pt.c (register_specialization): Check DECL_TEMPLATE_SPECIALIZATION
2050 before calling comp_template_args.
2051
2052 2004-08-20 Nathan Sidwell <nathan@codesourcery.com>
2053
2054 * class.c (build_vtbl_initializer): Use build_int_cst for
2055 negative size types.
2056 * decl.c (complete_array_type): Likewise.
2057 * method.c (finish_thunk): Likewise.
2058
2059 2004-08-20 Andreas Tobler <a.tobler@schweiz.ch>
2060
2061 * tree.c: Remove unused mark_local_for_remap_r.
2062
2063 2004-08-19 Eric Christopher <echristo@redhat.com>
2064
2065 * cp-tree.h (cxx_unsave_expr_now): Delete prototype.
2066 * tree.c (cxx_unsave_expr_now): Delete.
2067 (cp_unsave_r): Ditto.
2068
2069 2004-08-19 Mark Mitchell <mark@codesourcery.com>
2070
2071 PR c++/15890
2072 * pt.c (push_template_decl_real): Disallow template allocation
2073 functions with fewer than two parameters.
2074
2075 2004-08-19 Nathan Sidwell <nathan@codesourcery.com>
2076
2077 * cp-tree.h (build_shared_int_cst): Remove.
2078 * tree.c (shared_int_cache): Remove.
2079 (build_shared_int_cst): Remove.
2080 * class.c (finish_struct_1): Use build_int_cst.
2081
2082 2004-08-19 Nathan Sidwell <nathan@codesourcery.com>
2083
2084 * decl.c (finish_enum): Do not copy value node early, copy
2085 later.
2086 * lex.c (cxx_init): Force null_node to be unique.
2087
2088 2004-08-19 Joseph S. Myers <jsm@polyomino.org.uk>
2089
2090 PR c++/17041
2091 * pt.c (tsubst_copy, tsubst_copy_and_build): Copy TREE_NO_WARNING
2092 from input for MODOP_EXPR.
2093
2094 2004-08-18 Mark Mitchell <mark@codesourcery.com>
2095
2096 * pt.c (dependent_template_p): Fix typo in commment.
2097
2098 PR c++/17068
2099 * pt.c (dependent_template_p): Treat IDENTIFIER_NODEs as
2100 dependent.
2101
2102 2004-08-17 Mark Mitchell <mark@codesourcery.com>
2103
2104 PR c++/16246
2105 * pt.c (unify): Tidy ARRAY_TYPE handling. Make sure that non-type
2106 arguments have the same type as the corresponding parameter.
2107
2108 PR c++/16215
2109 * parser.c (cp_parser_name_lookup_error): If parser->object_scope
2110 is set use it for diagnostic purposes.
2111 (cp_parser_pseudo_destructor_name): Remove special-case error
2112 message.
2113
2114 PR c++/15871
2115 * semantics.c (expand_or_defer_fn): Honor -fkeep-inline-functions.
2116
2117 PR c++/16965
2118 * cp-tree.h (qualified_name_lookup_error): Add parameter.
2119 * name-lookup.c (do_class_using_decl): Restrict set of entities
2120 passed to cp_emit_debug_info_for_using more carefully.
2121 (lookup_qualified_name): Allow lookup_member to return sets of
2122 ambiguous entries.
2123 * parser.c (cp_parser_lookup_name): Add ambiguous_p parameter.
2124 (cp_parser_primary_expression): Handle ambiguous lookups.
2125 (cp_parser_template_name): Adjust use of cp_parser_lookup_name.
2126 (cp_parser_template_argument): Likewise.
2127 (cp_parser_elaborate_type_specifier): Likewise.
2128 (cp_parser_namespace_name): Likewise.
2129 (cp_parser_class_name): Likewise.
2130 (cp_parser_lookup_name_simple): Likewise.
2131 * pt.c (tsubst_qualified_id): Handle ambiguous results.
2132 (tsubst_expr): Likewise.
2133 * semantics.c (qualified_name_lookup_error): Add decl paramter.
2134 For ambiguous lookups, print candidates.
2135
2136 2004-08-16 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2137
2138 PR c++/6749
2139 * pt.c (instantiate_pending_templates): Add int parameter. Don't
2140 return anything.
2141 * cp-tree.h (instantiate_pending_templates): Adjust prototype.
2142 * decl2.c (finish_file): Adjust call to
2143 instantiate_pending_templates.
2144
2145 2004-08-15 Roger Sayle <roger@eyesopen.com>
2146
2147 * call.c (build_vfield_ref, build_call, build_conditional_expr,
2148 convert_arg_to_ellipsis, build_x_va_arg, build_over_call,
2149 build_java_interface_fn_ref, build_special_member_call,
2150 build_new_method_call, initialize_reference): Replace calls to
2151 build with calls to buildN.
2152 * class.c (build_base_path, convert_to_base_statically,
2153 build_vfn_ref, instantiate_type, dfs_accumulate_vtbl_inits,
2154 build_vtbl_initializer): Likewise.
2155 * cp-gimplify.c (genericize_try_block, genericize_catch_block,
2156 gimplify_if_stmt, cp_genericize_r): Likewise.
2157 * cvt.c (convert_to_void): Likewise.
2158 * decl.c (check_initializer, finish_constructor_body,
2159 finish_destructor_body): Likewise.
2160 * error.c (dump_expr): Likewise.
2161 * except.c (build_exc_ptr, expand_start_catch_block, build_throw):
2162 Likewise.
2163 * init.c (perform_member_init, expand_virtual_init,
2164 expand_cleanup_for_base, build_init, expand_default_init,
2165 build_offset_ref, decl_constant_value, build_new, build_new_1,
2166 build_vec_delete_1, build_vec_init, build_delete,
2167 push_base_cleanups, build_vec_delete): Likewise.
2168 * mangle.c (write_integer_cst): Likewise.
2169 * method.c (thunk_adjust, do_build_copy_constructor,
2170 do_build_assign_ref): Likewise.
2171 * pt.c (lookup_template_function, tsubst, tsubst_copy_and_build,
2172 unify, build_non_dependent_expr): Likewise.
2173 * rtti.c (build_headof, build_typeid, ifnonnull,
2174 build_dyanmic_cast_1, tinfo_base_init): Likewise.
2175 * semantics.c (begin_compound_stmt, finish_call_expr,
2176 finish_pseudo_destructor_expr, finish_id_expression,
2177 simplify_aggr_init_expr, finalize_nrv_r): Likewise.
2178 * tree.c (build_target_expr, build_cplus_new, array_type_nelts_top,
2179 array_type_nelts_total, stabilize_call): Likewise.
2180 * typeck.c (decay_conversion, build_class_member_access_expr,
2181 lookup_destructor, build_ptrmemfunc_access_expr, build_array_ref,
2182 get_member_function_from_ptrfunc, build_binary_op, pointer_diff,
2183 build_x_unary_op, build_unary_op, unary_complex_lvalue,
2184 build_compound_expr, build_modify_expr, expand_ptrmemfunc_cst,
2185 check_return_expr): Likewise.
2186 * typeck2.c (split_nonconstant_1, split_nonconstant_init_1,
2187 split_nonconstant_init, store_init_value, build_m_component_ref):
2188 Likewise.
2189
2190 2004-08-15 Nathan Sidwell <nathan@codesourcery.com>
2191
2192 * call.c (convert_class_to_reference,
2193 build_user_type_conversion_1, convert_like_real,
2194 build_java_interface_fn_ref, build_special_member_call): Use
2195 build_int_cst.
2196 * class.c (build_vtbl_initializer): Likewise.
2197 * cp-gimplify.c (cp_gimplify_expr): Likewise.
2198 * cvt.c (cp_convert_to_pointer): Likewise.
2199 * decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
2200 * decl2.c (start_static_initialization_or_destruction,
2201 generate_ctor_or_dtor_function): Likewise.
2202 * except.c (build_throw): Likewise.
2203 * lex.c (cxx_init): Likewise.
2204 * mangle.c (write_integer_cst): Likewise.
2205 * rtti.c (build_headof, get_tinfo_decl_dynamic,
2206 build_dynamic_cast_1, ptr_initializer, ptm_initializer,
2207 get_pseudo_ti_init): Likewise.
2208 * search.c (get_dynamic_cast_base_type): Likewise.
2209 * tree.c (build_shared_int_cst): Likewise.
2210
2211 2004-08-12 Mark Mitchell <mark@codesourcery.com>
2212
2213 PR c++/16273
2214 * class.c (count_depth_data): New type.
2215 (dfs_depth_post): New function.
2216 (dfs_depth_q): Likewise.
2217 (find_final_overrider_data_s): Change type of vpath.
2218 Add vpath_list.
2219 (dfs_find_final_overrider_1): New function.
2220 (dfs_find_final_overrider): Use it.
2221 (dfs_find_final_overrider_q): Adjust use of vpath.
2222 (dfs_find_final_overrider_post): Likewise.
2223 (find_final_overrider): Use dfs_depth. Allocate and deallocate
2224 vpath_list.
2225
2226 2004-08-12 Jan Beulich <jbeulich@novell.com>
2227
2228 * parser.c (cp_parser_asm_definition): Properly consume scope operator
2229 tokens preceding the clobbers. Don't check for scope operator
2230 following inputs. Simplify inputs handling to match that now used for
2231 clobbers.
2232
2233 2004-08-11 Mark Mitchell <mark@codesourcery.com>
2234
2235 PR c++/16698
2236 * except.c (build_throw): Allocate cleanup_type and the function
2237 for __cxa_throw separately.
2238
2239 PR c++/16853
2240 * call.c (standard_conversion): Do not accept conversions between
2241 pointers to members if the class types are unrelated.
2242
2243 PR c++/16618
2244 * parser.c (cp_parser_builtin_offsetof): Cast to "const volatile
2245 char &" instead of just "char &".
2246
2247 PR c++/16870
2248 * pt.c (tsubst): Just return the unknown_type_node.
2249
2250 2004-08-11 Mark Mitchell <mark@codesourcery.com>
2251
2252 PR c++/16964
2253 * parser.c (cp_parser_class_specifier): Robustify.
2254
2255 PR c++/16904
2256 * pt.c (tsubst_copy_and_build): Complain about invalid
2257 qualification.
2258
2259 PR c++/16929
2260 * pt.c (tsubst_default_argument): Clear out current_class_ptr and
2261 current_class_ref while tsubsting.
2262
2263 2004-08-10 Mark Mitchell <mark@codesourcery.com>
2264
2265 PR c++/16971
2266 * parser.c (cp_parser_init_declarator): Robustify.
2267
2268 2004-08-06 Richard Sandiford <rsandifo@redhat.com>
2269
2270 * typeck2.c (process_init_constructor): Guard the missing field warning
2271 with warn_missing_field_initializers rather than extra_warnings.
2272
2273 2004-08-06 Paolo Bonzini <bonzini@gnu.org>
2274
2275 * class.c (instantiate_type) <ENTRY_VALUE_EXPR>: Do not handle.
2276
2277 2004-08-05 Mark Mitchell <mark@codesourcery.com>
2278
2279 * decl.c (start_preparsed_function): Move determine_visibility
2280 call.
2281 * decl2.c (determine_visibility): Incorporate dllexport testing.
2282
2283 2004-08-05 Geoffrey Keating <geoffk@apple.com>
2284
2285 * g++spec.c (lang_specific_driver): An -Xlinker or -Wl, option
2286 means that libstdc++ is needed.
2287
2288 2004-08-05 Nathan Sidwell <nathan@codesourcery.com>
2289
2290 * cvt.c (cp_convert_to_pointer): Adjust force_fit_type call.
2291
2292 2004-08-04 Geoffrey Keating <geoffk@apple.com>
2293
2294 * decl.c (make_rtl_for_nonlocal_decl): Set DECL_ASSEMBLER_NAME rather
2295 than passing it as a parameter to rest_of_decl_compilation.
2296 * decl2.c (grokfield): Use set_user_assembler_name.
2297
2298 2004-08-04 Nathan Sidwell <nathan@codesourcery.com>
2299
2300 * decl.c (complete_array_type): Don't gratuitously copy
2301 maxindex. Its type is always set.
2302
2303 2004-08-04 Paul Brook <paul@codesourcery.com>
2304
2305 * Make-lang.in (cp/semantics.o, cp/optimize.o): Depend on TARGET_H.
2306 * cp-tree.h (struct language_function): Rename x_dtor_label to
2307 x_cdtor_label.
2308 (dtor_label): Rename ...
2309 (cdtor_label): ... to this.
2310 * decl.c (begin_constructor_body): Remove.
2311 (check_special_function_return_type): Maybe change the return type.
2312 (grokdeclarator): Pass the class type.
2313 (start_preparsed_function): Constructors may need a return label.
2314 (finish_constructor_body, finish_destructor_body): Set the return
2315 value.
2316 (begin_function_body): Don't call begin_constructor_body.
2317 (finish_function): Don't warn for constructors or destructors.
2318 (implicitly_declare_fn): Maybe change the return type.
2319 * optimize.c: Include target.h.
2320 (maybe_clone_body): Remap the function result.
2321 * semantics.c: Include target.h.
2322 (finish_return_stmt): Maybe jump to return label for constructors.
2323
2324 2004-08-03 Mark Mitchell <mark@codesourcery.com>
2325
2326 * class.c (build_vtable): Do not set DECL_VISIBILITY here.
2327 (check_field_decls): Or here.
2328 (check_methods): Or here.
2329 (initialize_array): Don't mess with DECL_CONTEXT.
2330 * cp-tree.h (start_decl): Adjust prototype.
2331 (determine_visibility): New function.
2332 * decl.c (duplicate_decls): Remove checks for hidden "operator
2333 new".
2334 (build_library_fn_1): Give all library functions default
2335 visibility.
2336 (start_decl): Add pop_scope_p parameter. Tidy.
2337 (cp_finish_decl): Do not pop scopes here. Call
2338 determine_visibility for variable definitions.
2339 (start_preparsed_function): Call determine_visibility.
2340 * decl2.c (determine_visibility): New function.
2341 * method.c (use_thunk): Fix formatting.
2342 * parser.c (cp_parser_condition): Adjust calls to start_decl.
2343 (cp_parser_init_declarator): Likewise.
2344 * pt.c (instantiate_decl): Always call pop_nested_class.
2345 * rtti.c (get_tinfo_decl): Do not set DECL_VISIBILITY.
2346 (tinfo_base_init): Likewise.
2347
2348 2004-08-02 Mark Mitchell <mark@codesourcery.com>
2349
2350 PR c++/16707
2351 * name-lookup.c (validate_nonmember_using_decl): Robustify.
2352
2353 2004-08-01 Mark Mitchell <mark@codesourcery.com>
2354
2355 PR c++/16224
2356 * name-lookup.c (decl_namespace): Remove.
2357 (current_decl_namespace): Use decl_namespace_context instead of
2358 decl_namespace.
2359 (push_decl_namespace): Likewise.
2360 (arg_assoc_class): Likewise.
2361 (arg_assoc_type): Likewise.
2362 * pt.c (check_specialization_namespace): New function.
2363 (maybe_process_partial_specialization): Use it.
2364 (register_specialization): Likewise.
2365
2366 PR c++/16489
2367 * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): New macro.
2368 * call.c (null_ptr_cst_p): Handle variables with constant
2369 initializers.
2370 * pt.c (convert_nontype_argument): Use
2371 DECL_INTEGRAL_CONSTANT_VAR_P.
2372 * semantics.c (finish_id_expression): Likewise.
2373
2374 PR c++/16529
2375 * decl.c (duplicate_decls): Reject duplicate namespace
2376 declarations.
2377
2378 PR c++/16810
2379 * typeck.c (build_ptrmemfunc): Loosen assertion.
2380
2381 2004-08-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
2382
2383 * call.c (z_candidate::template_decl): Rename from template.
2384 (add_template_candidate_real): Adjust member reference.
2385 (joust): Likewise.
2386
2387 2004-07-29 Mark Mitchell <mark@codesourcery.com>
2388
2389 * cp-tree.h (IDENTIFIER_REPO_CHOSEN): Define.
2390 (lang_decl_flags): Narrow the width of "languages". Add
2391 repo_available_p.
2392 (DECL_NEEDED_P): Remove.
2393 (FOR_EACH_CLONE): New macro.
2394 (DECL_REPO_AVAILABLE_P): Likewise.
2395 (DECL_TINFO_P): Likewise.
2396 (set_linkage_according_to_type): Declare.
2397 (import_export_vtable): Remove.
2398 (import_export_tinfo): Likewise.
2399 (mark_needed): New function.
2400 (decl_needed_p): Likewise.
2401 (note_vauge_linkage_fn): Likewise.
2402 (init_repo): Change prototype.
2403 (repo_template_used): Remove.
2404 (repo_template_instantiated): Likewise.
2405 (repo_emit_p): New function.
2406 (repo_export_class_p): Likewise.
2407 (no_linkage_check): Change prototype.
2408 * class.c (set_linkage_according_to_type): New function.
2409 (build_vtable): Use it. Do not call import_export_vtable. Set
2410 DECL_IGNORED_P if appropriate.
2411 * decl.c (duplicate_decls): Preserve DECL_REPO_AVAILABLE_P.
2412 (make_rtL_for_nonlocal_decls): Check for template instantiations
2413 explicitly.
2414 (grokfndecl): Adjust call to no_linkage_check.
2415 (set_linkage_for_static_data_member): New function.
2416 (grokvardecl): Use it. Adjust call to no_linkage_check.
2417 (grokdeclarator): Use set_linkage_for_static_data_member.
2418 * decl2.c (note_vague_linkage_fn): New function.
2419 (note_vague_linkage_var): Likewise.
2420 (finish_static_data_member_decl): Use it.
2421 (import_export_vtable): Remove.
2422 (import_export_class): Use repo_export_class_p.
2423 (var_finalized_p): Simplify.
2424 (maybe_emit_vtables): Simplify.
2425 (mark_needed): New function.
2426 (decl_needed_p): Likewise.
2427 (import_export_decl): Add documentation and consistency checks.
2428 Use repo_emit_p. Handle virtual tables and RTTI information
2429 here.
2430 (import_export_tinfo): Remove.
2431 (write_out_vars): Call import_export_decl.
2432 (cxx_callgraph_analyze_expr): Ensure that all vtables are emitted
2433 whenever one is.
2434 (finish_file): Use decl_needed_p. Do not call import_export_decl
2435 for undefined static data members. Do not warn about undefined
2436 inlines when using a repository.
2437 (mark_used): Use note_vague_linkage_fn. Always defer template
2438 instantiations.
2439 * lex.c (cxx_init): Adjust call to init_repo. Always set
2440 flag_unit_at_a-time.
2441 * method.c (synthesize_method): Remove unncessary
2442 import_export_decl call.
2443 (implicitly_declare_fn): Use set_linkage_according_to_type.
2444 * optimize.c (maybe_clone_body): Use FOR_EACH_CLONE.
2445 * pt.c (instantiate_class_template): Don't redundantly add classes
2446 to keyed_classes. Don't call repo_template_used.
2447 (tsubst_decl): Set DECL_INTERFACE_KNOWN for instantiations of
2448 templates with internal linkage.
2449 (check_instantiated_args): Adjust call to no_linkage_check.
2450 (instantiate_template): Use FOR_EACH_CLONE.
2451 (mark_definable): New function.
2452 (mark_decl_instantiated): Use it.
2453 (do_decl_instantiation): Adjust tests for explicit instantiation
2454 after "extern template".
2455 (instantiate_class_member): Do not use repo_template_instantiated.
2456 (do_type_instantiation): Simplify.
2457 (instantiate_decl): Use mark_definable. Check repo_emit_p.
2458 Simplify.
2459 * repo.c (repo_get_id): Remove.
2460 (original_repo): Remove.
2461 (IDENTIFIER_REPO_USED): Remove.
2462 (IDENTIFIER_REPO_CHOSEN): Remove.
2463 Remove all #if 0'd code.
2464 (repo_template_used): Remove.
2465 (repo_template_instantiated): Remove.
2466 (temporary_obstack_initialized_p): New variable.
2467 (init_repo): Register with lang_post_pch_load. Avoid creating
2468 identifiers unnecessarily. Don't use original_repo. Close the
2469 file here.
2470 (reopen_repo_file_for_write): Not here.
2471 (finish_repo): Always write out a new repository file.
2472 (repo_emit_p): New function.
2473 (repo_export_class_p): Likewise.
2474 * rtti.c (get_tinfo_decl): Use set_linkage_according_to_type.
2475 (involves_incomplete_p): New function.
2476 (tinfo_base_init): Use it.
2477 (ptr_initializer): Remove non_public_ptr parameter.
2478 (ptm_initializer): Likewise.
2479 (get_pseudo_ti_init): Likewise.
2480 (unemitted_tinfo_decl_p): Remove.
2481 (emit_tinfo_decl): Use import_export_decl.
2482 * semantics.c (expand_body): Move updates of static_ctors and
2483 static_dtors to ...
2484 (expand_or_defer_fn): ... here.
2485 * tree.c (no_linkage_check): Add relaxed_p parameter.
2486
2487 2004-07-28 Eric Christopher <echristo@redhat.com>
2488
2489 * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
2490
2491 2004-07-28 Nathan Sidwell <nathan@codesourcery.com>
2492
2493 * cp-tree.h (struct tree_pair_s): New.
2494 (typedef tree_pair_p): New.
2495 (DEF_VEC_O(tree_pair_s)): New.
2496 (struct lang_type_class): Make vcall_indices a VEC(tree_pair_s).
2497 (CLASSTYPE_VCALL_INDICES): Update documentation.
2498 * class.c (get_vcall_index): Adjust.
2499 (add_vcall_offset): Adjust.
2500
2501 2004-07-27 Kelley Cook <kcook@gcc.gnu.org>
2502
2503 * pt.c, typeck.c: Remove spurious carriage returns.
2504
2505 2004-07-27 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2506
2507 PR c++/14429
2508 * pt.c (coerce_template_template_parms) <PARM_DECL case>: Only check
2509 when the type of ARG is not dependent.
2510
2511 2004-07-26 Geoffrey Keating <geoffk@apple.com>
2512
2513 * g++spec.c (LIBSTDCXX_PROFILE): Default to LIBSTDCXX.
2514 (lang_specific_driver): If the C++ or math library options don't
2515 start with '-l', don't count them as added libraries.
2516
2517 2004-07-26 Nathan Sidwell <nathan@codesourcery.com>
2518
2519 * decl.c (xref_basetypes): Adjust base access vector creation.
2520 * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Adjust base
2521 access accesses.
2522 * search.c (dynamic_cast_base_recurse, dfs_access_in_type): Likewise.
2523
2524 2004-07-26 Niall Douglas <s_fsfeurope2@nedprod.com>
2525 Brian Ryner <bryner@brianryner.com>
2526
2527 PR c++/15000
2528 PR c++/9283
2529 * class.c (check_field_decls): Apply hidden visibility if
2530 -fvisibility-inlines-hidden and inlined unless otherwise specified
2531 (build_vtable): Set vtable visibility to class visibility.
2532 (check_field_decls): Default static member visibility to class
2533 visibility.
2534 (check_methods): Default method visibility to class visibility.
2535 * cp-tree.h: Added CLASSTYPE_VISIBILITY and
2536 CLASSTYPE_VISIBILITY_SPECIFIED macro.
2537 * decl.c (duplicate_decls): New logic for merging definition decls
2538 with declaration decls. Added ignore & warning when non default
2539 applied to global operator new or delete.
2540 * method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED
2541 wherever VISIBILITY was changed
2542 * rtti.c (get_tinfo_decl): Set typeinfo visibility to class
2543 visibility.
2544 (tinfo_base_init): Set typeinfo name visibility to class visibility.
2545
2546 2004-07-25 Bernardo Innocenti <bernie@develer.com>
2547
2548 * decl.c: Rename all identifiers named `class' to `cl'.
2549 * cp-tree.h: Likewise.
2550
2551 2004-07-25 Gabriel Dos Reis <gdr@integrable-solutions.net>
2552
2553 * cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Use GGC_CNEW.
2554 * typeck2.c (abstract_virtuals_error): Use GGC_NEW.
2555 * name-lookup.c (binding_entry_make): Use GGC_NEW.
2556 (binding_table_construct): Use GGC_CNEWVEC.
2557 (binding_table_new): Use GGC_NEW.
2558 (cxx_binding_make): Likewise.
2559 (begin_scope): Likewise.
2560 (push_to_top_level): Use GCC_CNEW.
2561 * parser.c (cp_token_cache_new): Likewise.
2562 (cp_token_cache_push_token): Likewise.
2563 (cp_lexer_new_main): Likewise.
2564 (cp_lexer_new_from_tokens): Likewise.
2565 (cp_parser_context_new): Likewise.
2566 (cp_parser_new): Likewise.
2567 (cp_lexer_new_from_tokens): Use GGC_NEWVEC.
2568 * lex.c (cxx_make_type): Use GGC_CNEW.
2569 (retrofit_lang_decl): Use GGC_NEWVAR.
2570 (cxx_dup_lang_specific_decl): Likewise.
2571 (copy_lang_type): Likewise.
2572 * decl.c (use_label): Use GGC_NEW instead of ggc_alloc.
2573 (save_function_data): Likewise.
2574 (lookup_label): Use GGC_CNEW instead of ggc_alloc_cleared.
2575 (cxx_push_function_context): Likewise.
2576
2577 2004-07-25 Richard Henderson <rth@redhat.com>
2578
2579 * decl.c (start_preparsed_function): Set DECL_ARTIFICIAL and
2580 DECL_IGNORED_P on RESULT_DECL.
2581 * semantics.c (finalize_nrv): Copy them too.
2582
2583 2004-07-23 Nathan Sidwell <nathan@codesourcery.com>
2584
2585 * search.c (lookup_conversion_operator): Avoid two loops.
2586 (add_conversions): Remove.
2587 (check_hidden_convs, split_conversions,
2588 lookup_conversions_r): New.
2589 (lookup_conversions): Use lookup_conversions_r.
2590
2591 2004-07-22 Nathan Sidwell <nathan@codesourcery.com>
2592
2593 * pt.c (get_template_base): Check type is completable.
2594
2595 2004-07-21 Eric Christopher <echristo@redhat.com>
2596
2597 * decl.c (poplevel): Inline unused variable checking.
2598 Change formatting.
2599
2600 2004-07-21 Paolo Bonzini <bonzini@gnu.org>
2601
2602 * typeck.c (build_binary_op): Do not use RDIV_EXPR for
2603 integer vectors.
2604
2605 2004-07-21 Giovanni Bajo <giovannibajo@gcc.gnu.org>
2606
2607 PR c++/14497
2608 * pt.c (check_explicit_specialization): Remove extension to accept
2609 specializations without template headers. Fall-through to normal
2610 processing.
2611
2612 2004-07-21 Giovanni Bajo <giovannibajo@gcc.gnu.org>
2613
2614 PR c++/509
2615 * pt.c (determine_specialization): New parameter template_count.
2616 Disambiguate between member templates and member functions counting
2617 the template headers.
2618 (check_explicit_specialization): Update caller.
2619 (tsubst_friend_function): Likewise.
2620
2621 2004-07-20 Steven Bosscher <stevenb@suse.de>
2622
2623 * cp-tree.def (TINST_LEVEL): Make it an 'x' node.
2624 * cp-tree.h (tinst_level_t): New tree type.
2625 (union lang_tree_node): Handle it.
2626 (TINST_LOCATION): New accessor macro.
2627 (make_tinst_level): New prototype.
2628 * cp-lang.c (cp_tree_size): Handle TINST_LEVEL.
2629 * decl.c (cp_tree_node_structure): Likewise.
2630 * error.c (print_instantiation_full_context): Use TINST_LOCATION.
2631 (print_instantiation_partial_context): Likewise.
2632 * pt.c (pop_tinst_level): Likewise.
2633 (push_tinst_level): Use make_tinst_level.
2634 * tree.c (make_tinst_level): New function.
2635 (cp_walk_subtrees): Walk TINST_DECL for a TINST_LEVEL node.
2636
2637 2004-07-20 Mark Mitchell <mark@codesourcery.com>
2638
2639 * parser.c (cp_parser_simple_type_specifier): Fix typo.
2640
2641 PR c++/16637
2642 * parser.c (cp_parser_simple_type_specifier): Do not record usage
2643 of globally-qualified names.
2644
2645 2004-07-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2646
2647 PR c++/16175
2648 * error.c (dump_type) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Output
2649 cv qualifier.
2650
2651 2004-07-19 Mark Mitchell <mark@codesourcery.com>
2652
2653 PR c++/16623
2654 * cp-tree.h (lang_type_class): Add lazy_assignment_op.
2655 (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
2656 * class.c (add_implicitly_declared_members): Use
2657 CLASSTYPE_LAZY_ASSIGNMENT_OP.
2658 * method.c (lazily_declare_fn): Clear
2659 CLASSTYPE_LAZY_ASSIGNMENT_OP.
2660 * search.c (lookup_fnfields_1): Check it.
2661
2662 2004-07-20 Nathan Sidwell <nathan@codesourcery.com>
2663
2664 * cp-tree.h (vec_binfo_member): Remove.
2665 * tree.c (vec_binfo_member): Remove.
2666
2667 * cp-tree.h (struct lang_type_class): Remove vfields field.
2668 (CLASSTYPE_VFIELDS): Remove.
2669 (SET_BINFO_NEW_VTABLE_MARKED): Adjust.
2670 * class.c (determine_primary_base): Remove CLASSTYPE_VFIELDS
2671 handling.
2672 (dfs_modify_vtables): Use TYPE_CONTAINS_VPTR_P.
2673 (finish_struct_1): Remove CLASSTYPE_VFIELDS handling.
2674 * init.c (dfs_initialize_vtbl_ptrs): Use TYPE_CONTAINS_VPTR_P.
2675
2676 2004-07-20 Nathan Sidwell <nathan@codesourcery.com>
2677
2678 * cp-tree.h (DEF_VEC_P(tree)): Remove here.
2679 (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
2680 Moved to common.
2681 (BINFO_LANG_SLOTS): Remove.
2682 * tree.c (copy_binfo): Adjust BINFO creation and accessors.
2683 * decl.c (xref_basetypes): Adjust BINFO creation and accessors.
2684 * class.c (check_bases): Adjust BINFO accessors.
2685 (determine_primary_base, finish_struct_bits,
2686 maybe_warn_about_overly_private_class, warn_hidden,
2687 walk_subobject_offsets, propagate_binfo_offsets, end_of_class,
2688 warn_about_ambiguous_bases, get_vfield_name,
2689 dump_class_hierarchy_r, build_vtt_inits, accumulate_vtbl_inits,
2690 add_vcall_offset_vtbl_entries_r): Likewise.
2691 * dump.c (cp_dump_tree): Likewise.
2692 * init.c (sort_mem_initializers, expand_member_init, build_delete,
2693 push_base_cleanups): Likewise.
2694 * method.c (do_build_copy_constructor, do_build_assign_ref,
2695 synthesize_exception_spec): Likewise.
2696 name-lookup.c (arg_assoc_class): Likewise.
2697 * pt.c (instantiate_class_template,
2698 get_template_base_recursive): Likewise.
2699 * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Likewise.
2700 * typeck2.c (process_init_constructor): Likewise.
2701 * search.c (lookup_base_r, dynamic_cast_base_recurse,
2702 dfs_access_in_type, dfs_walk_real, look_for_overrides,
2703 types_overlap_p, copied_binfo, original_binfo): Likewise.
2704 (binfo_for_vtable): Remove
2705
2706 2004-07-20 Steven Bosscher <stevenb@suse.de>
2707
2708 * cp-tree.h (struct lang_decl_flags): Unify the template_info and
2709 thunk_alias, and the access and virtual_offset fields.
2710 (THUNK_VIRTUAL_OFFSET, THUNK_ALIAS): Adjust.
2711 * decl.c (finish_case_label): Update c_add_case_node call.
2712
2713 2004-07-19 Mark Mitchell <mark@codesourcery.com>
2714
2715 Revert patch for PR c++/16623.
2716
2717 2004-07-19 Kelley Cook <kcook@gcc.gnu.org>
2718
2719 * except.c: Remove two spurious carriage returns.
2720
2721 2004-07-19 Mark Mitchell <mark@codesourcery.com>
2722
2723 PR c++/16623
2724 * cp-tree.h (lang_type_class): Add lazy_assignment_op.
2725 (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
2726 * class.c (add_implicitly_declared_members): Use
2727 CLASSTYPE_LAZY_ASSIGNMENT_OP.
2728 * method.c (lazily_declare_fn): Clear
2729 CLASSTYPE_LAZY_ASSIGNMENT_OP.
2730 * search.c (lookup_fnfields_1): Check it.
2731
2732 2004-07-19 Nathan Sidwell <nathan@codesourcery.com>
2733
2734 * class.c (add_method): Delay adding the slot until the end.
2735 (determine_primary_base): Adjust VEC_iterate invokation.
2736 (resort_type_method_vec, finish_struct_methods, warn_hidden,
2737 walk_subobject_offsets, end_of_class, warn_about_ambiguous_bases,
2738 build_vtbl_initializer): Likewise.
2739 * init.c (sort_mem_initializers, build_delete, push_base_cleanups,
2740 build_vbase_delete): Likewise.
2741 * method.c (do_build_copy_constructor): Likewise.
2742 * name-lookup.c (new_class_binding, print_binding_level,
2743 poplevel_class, store_class_bindings, push_to_top_level,
2744 pop_from_top_level): Likewise.
2745 * pt.c (check_explicit_specialization): Likewise.
2746 * search.c (lookup_conversion_operator, lookup_fnfields_1,
2747 get_pure_virtuals, add_conversions, dfs_check_overlap,
2748 binfo_for_vbase): Likewise.
2749
2750 2004-07-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2751
2752 PR c++/12170
2753 * pt.c (unify) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Use only
2754 innermost set of template arguments during deduction. Simplify.
2755
2756 2004-07-19 Joseph S. Myers <jsm@polyomino.org.uk>
2757
2758 * typeck.c (build_modify_expr, build_x_modify_expr): Set
2759 TREE_NO_WARNING on assignments with an operator other than '='.
2760
2761 2004-07-10 Steven Bosscher <stevenb@suse.de>
2762 Joseph S. Myers <jsm@polyomino.org.uk>
2763
2764 * cp-tree.h (C_SET_EXP_ORIGINAL_CODE): Remove.
2765 * decl2.c (grokfield): Don't check current_class_depth via
2766 unused TREE_COMPLEXITY.
2767 * semantics.c (finish_parenthesized_expr): Set TREE_NO_WARNING
2768 to avoid the missing parentheses warning.
2769 Don't set C_SET_EXP_ORIGINAL_CODE.
2770
2771 2004-07-18 Mark Mitchell <mark@codesourcery.com>
2772
2773 * tree.c (no_linkage_helper): Remove.
2774 (no_linkage_check): Don't use walk_tree_without_duplicates.
2775
2776 * mangle.c (write_expression): Issue a sorry for zero-operand
2777 functional casts.
2778
2779 2004-07-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2780
2781 PR c++/13092
2782 * init.c (build_offset_ref): Build SCOPE_REF with non-null
2783 TREE_TYPE for non-dependent names.
2784 * typeck.c (build_x_unary_op): Handle non-dependent SCOPE_REF.
2785 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
2786 unknown_type_node as its TREE_TYPE.
2787 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
2788 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
2789 (dump_expr) <SCOPE_REF case>: Likewise.
2790
2791 2004-07-17 Jason Merrill <jason@redhat.com>
2792
2793 PR c++/16115
2794 * call.c (type_passed_as): Make the invisible reference type
2795 __restrict.
2796 * cp-gimplify.c (gimplify_cleanup_stmt): Rename to
2797 cp_genericize_r. Handle invisible reference lowering.
2798 (is_invisiref_parm): New fn.
2799 (cp_genericize): Adjust the types of invisible reference parms.
2800 Don't repeat the walk for clones.
2801 * decl.c (store_parm_decls): Don't generate any code for clones.
2802
2803 2004-07-17 Joseph S. Myers <jsm@polyomino.org.uk>
2804
2805 * cp-tree.h (builtin_function): Declare.
2806
2807 2004-07-16 Mark Mitchell <mark@codesourcery.com>
2808
2809 * class.c (finish_struct_methods): Remove unncessary code.
2810 (add_implicitly_declared_members): Create declarations for default
2811 constructors and copy constructors lazily.
2812 * cp-tree.h (lang_type_class): Remove lazy_default_ctor and
2813 lazy_copy_ctor.
2814 (CLASSTYPE_LAZY_DEFAULT_CTOR): New macro.
2815 (CLASSTYPE_LAZY_COPY_CTOR): Likewise.
2816 * decl2.c (check_classfn): Robustify.
2817 (locate_dtor): Handle empty CLASSTYPE_METHOD_VEC.
2818 (locate_ctor): Handle lazy default constructors.
2819 (locate_copy): Handle lazy copy constructors.
2820 (implicitly_declare_fn): Make sure we're looking at the
2821 TYPE_MAIN_VARIANT for a class before creating functions. Don't
2822 set TYPE_HAS_CONSTRUCTOR.
2823 (lazily_declare_fn): New function.
2824 * name-lookup.c (constructor_name_full): Simplify.
2825 * search.c (lookup_fnfields_1): Lazily create methods, as
2826 necessary.
2827 (lookup_for_overrides): Handle empty CLASSTYPE_METHOD_VEC.
2828
2829 2004-07-16 Steven Bosscher <stevenb@suse.de>
2830
2831 * cp-tree.h (struct lang_type): Don't have three GTY options on a
2832 single bit GTY desc.
2833
2834 2004-07-16 Richard Henderson <rth@redhat.com>
2835
2836 * cp-lang.c (LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING): Die.
2837 * cp-tree.h (cp_copy_res_decl_for_inlining): Remove.
2838 * tree.c (cp_copy_res_decl_for_inlining): Remove.
2839
2840 2004-07-16 Nathan Sidwell <nathan@codesourcery.com>
2841
2842 * class.c (finish_struct_bits): Use for loop.
2843 (propagate_binfo_offsets): Do primary binfo outside of loop.
2844
2845 PR c++/16583
2846 * dump.c (cp_dump_tree): Don't dump the bases if there's no
2847 binfo.
2848
2849 * pt.c (tsubst) <TREE_BINFO case>: We should never get here.
2850
2851 2004-07-15 Mark Mitchell <mark@codesourcery.com>
2852
2853 * cp-tree.h (lang_type_class): Remove has_real_assign_ref and
2854 has_abstract_assign_ref. Make methods a VEC(tree) *.
2855 (TYPE_HAS_CONST_ASSIGN_REF): Add documentation.
2856 (CLASSTYPE_CONSTRUCTORS): Adjust for changes to CLASSTYPE_METHOD_VEC.
2857 (CLASSTYPE_DESTRUCTORS): Likewise.
2858 (TYPE_HAS_REAL_ASSIGN_REF): Remove.
2859 (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
2860 (add_method): Change prototoype.
2861 * class.c (add_method): Remove error_p parameter. Adjust for
2862 changes to CLASSTYPE_METHOD_VEC.
2863 (handle_using_decl): Adjust call to add_method.
2864 (maybe_warn_about_overly_private_class): Adjust for
2865 changes to CLASSTYPE_METHOD_VEC.
2866 (resort_type_method_vec): Likewise.
2867 (finish_struct_methods): Likewise.
2868 (check_for_override): Likewise.
2869 (warn_hidden): Likewise.
2870 (add_implicitly_declared_members): Defer creation of assignment
2871 operators. Adjust call to add_method.
2872 (clone_function_decl): Adjust call to add_method.
2873 (check_bases_and_members): Don't set TYPE_HAS_REAL_ASSIGN_REF.
2874 (finish_struct_1): Use CLASSTYPE_DESTRUCTORS.
2875 * decl.c (grok_special_member_properties): Don't set
2876 TYPE_HAS_ABSTRACT_ASSIGN_REF.
2877 * decl2.c (check_classfn): Adjust for
2878 changes to CLASSTYPE_METHOD_VEC.
2879 * method.c (locate_dtor): Use CLASSTYPE_DESTRUCTORS.
2880 (locate_ctor): Use CLASSTYPE_CONSTRUCTORS.
2881 (locate_copy): Adjust for changes to CLASSTYPE_METHOD_VEC.
2882 (implicitly_declare_fn): Set DECL_SOURCE_LOCATION. Do not call
2883 cp_finish_decl.
2884 * pt.c (check_explicit_specialization): Adjust for
2885 changes to CLASSTYPE_METHOD_VEC.
2886 (instantiate_class_template): Do not set
2887 TYPE_HAS_ABSTRACT_ASSIGN_REF.
2888 * ptree.c (cxx_print_type): Don't try to print
2889 CLASSTYPE_METHOD_VEC.
2890 * rtti.c (emit_support_tinfos): Use CLASSTYPE_DESTRUCTORS.
2891 * search.c (lookup_field_r): Adjust for
2892 changes to CLASSTYPE_METHOD_VEC.
2893 (lookup_fnfields): Likewise.
2894 (lookup_conversion_operator): Likewise.
2895 (lookup_fnfields_1): Likewise. Create assignment operators
2896 lazily.
2897 (look_for_overrides_here): Adjust for
2898 changes to CLASSTYPE_METHOD_VEC.
2899 (add_conversions): Likewise.
2900 * semantics.c (finish_member_declaration): Adjust call to add_method.
2901
2902 2004-07-15 Jason Merrill <jason@redhat.com>
2903
2904 * cp-lang.c (cxx_types_compatible_p): To the middle-end,
2905 references and pointers are compatible.
2906
2907 2004-07-15 Nathan Sidwell <nathan@codesourcery.com>
2908
2909 * decl.c (xref_basetypes): Refactor.
2910 * tree.c (copy_base_binfos): Replace with ...
2911 (copy_binfo): ... this. Deep copy the given binfo, (not the just
2912 bases of the given base).
2913 * cp-tree.h (copy_base_binfo): Remove.
2914 (copy_binfo): Declare.
2915
2916 2004-07-15 Mark Mitchell <mark@codesourcery.com>
2917
2918 * name-lookup.c (set_inherited_value_binding_p): Add class_type
2919 parameter.
2920 (get_class_binding): Adjust.
2921 (push_class_level_binding): Don't use set_inherited_value_binding_p.
2922
2923 2004-07-15 Nathan Sidwell <nathan@codesourcery.com>
2924
2925 * class.c (finish_struct_bits): Don't set TYPE_HAS_CONVERSION here.
2926 * decl.c (xref_basetypes): Set it here.
2927
2928 * class.c (check_bases): Don't set CLASSTYPE_NON_AGGREGATE here.
2929 Don't check for incomplete base.
2930 (get_vfield_name): Simplify while loop.
2931 * decl.c (xref_basetypes): Set CLASSTYPE_NON_AGGREGATE here.
2932
2933 2004-07-14 Mark Mitchell <mark@codesourcery.com>
2934
2935 * lex.c (cxx_make_type): Remove call to get_pointer_type.
2936
2937 * cp-tree.h (IDENTIFIER_VALUE): Remove.
2938 (BINFO_PUSHDECLS_MARKED): Likewise.
2939 (maybe_inject_for_scope_var): Likewise.
2940 (push_class_decls): Likewise.
2941 * name-lookup.h (push_class_binding): Remove.
2942 (innermost_non_namespace_value): New function.
2943 (outer_binding): Likewise.
2944 * class.c (add_method): Push bindings before adding to
2945 TYPE_METHODS.
2946 (restore_class_cache): Do not restore class_shadowed.
2947 (pushclass): Do not add USING_DECLs. Do not call
2948 push_class_decls.
2949 * config-lang.in (gtfiles): Remove $(srcdir)/cp/search.c.
2950 * decl.c (pushdecl): Use outer_binding.
2951 (poplevel): Set the scope for an out-of-scope for-loop declaration
2952 appropriately.
2953 (cp_finish_decl): Don't call maybe_inject_for_scope_var.
2954 * name-lookup.c (new_class_binding): New function.
2955 (push_binding): Use it.
2956 (pushdecl): Use innermost_non_namespace_value.
2957 (maybe_inject_for_scope_var): Remove.
2958 (push_class_binding): Remove.
2959 (set_inherited_value_binding_p): New function.
2960 (get_class_binding): New function.
2961 (push_class_level_binding): Assert that the current_class_type is
2962 being defined.
2963 (outer_binding): New function.
2964 (innermost_non_namespace_value): Likewise.
2965 (lookup_name_real): Use outer_binding.
2966 (lookup_name_current_level): Ignore out-of-scope variables.
2967 * pt.c (check_template_shadow): Use innermost_non_namespace_value.
2968 (lookup_template_class): Likewise.
2969 * search.c (dfs_push_type_decls): Remove.
2970 (dfs_push_decls): Likewise.
2971 (setup_class_bindings): Likewise.
2972 (lookup_field_1): Handle USING_DECLs from dependent scopes.
2973 (marked_pushdecls_p): Remove.
2974 (unmarked_pushdecls_p): Remove.
2975 (marked_identifiers): Remove.
2976 (setup_class_bindings): Remove.
2977 (dfs_push_type_decls): Remove.
2978 (dfs_push_decls): Remove.
2979 (push_class_decls): Remove.
2980
2981 2004-07-13 Mark Mitchell <mark@codesourcery.com>
2982
2983 PR c++/16518
2984 PR c++/16337
2985 * decl.c (grokvardecl): Make declspecs parameter const.
2986 (grokdeclarator): Likewise. Adjust accordingly.
2987 * decl.h (grokdeclarator): Adjust declaration.
2988 * parser.c (cp_parser_init_declarator): Do not clear
2989 decl_specifiers->attributes.
2990
2991 * cp-tree.h (lang_identifier): Remove class_value.
2992 (IDENTIFIER_CLASS_VALUE): Remove.
2993 (pop_class_decls): Likewise.
2994 (init_search_processing): Likewise.
2995 * class.c (handle_using_decl): Use lookup_member, not
2996 IDENTIFIER_CLASS_VALUE.
2997 (restore_class_cache): New function, split out from ...
2998 (pushclass): ... here. Do not call clear_identifier_class_values.
2999 (invalidate_class_lookup_cache): Do not clear
3000 IDENTIFIER_CLASS_VALUE.
3001 (popclass): Do not call pop_class_decls.
3002 (maybe_note_name_used_in_class): Do not save names looked up after
3003 the class is complete. Use lookup_member, not
3004 IDENTIFIER_CLASS_VALUE.
3005 * config-lang.in (gtfiles): Add $(srcdir)/cp/search.c.
3006 * decl.c (cxx_init_decl_processing): Do not call
3007 init_search_processing.
3008 * method.c (do_build_copy_constructor): Remove unnecessary code.
3009 (do_build_assign_ref): Likewise.
3010 * name-lookup.c (pushdecl): Use lookup_member, not
3011 IDENTIFIER_CLASS_VALUE.
3012 (set_identifier_type_value_with_scope): Set TREE_TYPE on the
3013 type_shadowed list.
3014 (poplevel_class): Do not restore IDENTIFIER_CLASS_VALUE.
3015 (push_class_binding): Do not set it.
3016 (clear_identifier_class_values): Remove.
3017 (push_class_level_binding): Do not set IDENTIFIER_CLASS_VALUE.
3018 (store_binding): Do not save it.
3019 (pop_from_top_level): Do not restore it.
3020 * name-lookup.h (cxx_saved_binding): Remove class_value.
3021 (clear_identifier_class_values): Remove.
3022 * ptree.c (cxx_print_identifier): Do not print
3023 IDENTIFIER_CLASS_VALUE.
3024 * search.c (search_obstack): Remove.
3025 (push_stack_level): Remove.
3026 (pop_stack_level): Remove.
3027 (search_level): Remove.
3028 (search_stack): Remove.
3029 (lookup_member): Don't check IDENTIFIER_CLASS_VALUE.
3030 (setup_class_bindings): Use IDENTIFIER_MARKED, not
3031 IDENTIFIER_CLASS_VALUE.
3032 (marked_identifiers): New variable.
3033 (push_class_decls): Clear IDENTIFIER_MARKED.
3034 (pop_class_decls): Don't call pop_search_level.
3035 (init_search_processing): Remove.
3036
3037 2004-07-12 Mark Mitchell <mark@codesourcery.com>
3038
3039 * cp-tree.h (get_aggr_typedef): Remove.
3040 * init.c (get_aggr_typedef): Likewise.
3041
3042 * name-lookup.c (push_class_level_binding): Simplify.
3043
3044 2004-07-12 Andrew Pinski <apinski@apple.com>
3045
3046 PR c++/16475
3047 Revert:
3048 2004-07-07 H.J. Lu <hongjiu.lu@intel.com>
3049 PR c++/16276
3050 * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
3051 is not public.
3052
3053 2004-07-12 Eric Christopher <echristo@redhat.com>
3054
3055 * parser.c (cp_parser_class_head): Remove unused variable.
3056
3057 2004-07-12 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3058
3059 * decl.c (grok_op_properties): Reject [de-]allocation functions
3060 declared in a namespace, or declared as static.
3061
3062 2004-07-12 Nathan Sidwell <nathan@codesourcery.com>
3063
3064 * cp-tree.h (make_binfo): Remove.
3065 * decl.c (xref_basetypes): Use make_tree_binfo directly.
3066 * tree.h (copy_base_binfos): Likewise.
3067 (make_binfo): Remove.
3068
3069 * call.c (build_user_type_conversion_1, build_new_op,
3070 check_constructor_callable, build_temp,
3071 perform_direct_initialization_of_possible): Pass type directly to
3072 lookup_fnfields & build_special_member_call.
3073 (build_special_member_call): Accept a type, and complete it.
3074 * class.c (finish_stuct_bits): Copy the BINFOs here.
3075 * cvt.c (ocp_convert): Pass type directly to
3076 build_special_member_call.
3077 * decl.c (build_ptrmemfunc_type): Call xref_bastypes here.
3078 (xref_basetypes): Allocate the binfo here. Adjust.
3079 * init.c (build_init, build_new_1): Pass type directly to
3080 build_special_member_call.
3081 * lex.c (cxx_make_type): Do not allocate binfo here.
3082 * name-lookup.c (arg_assoc_class): Incomplete types have no binfo.
3083 * parser.c (cp_parser_class_head): Always call xref_basetypes.
3084 * pt.c (instantiate_class_template): Likewise. Inhibit access
3085 checking for template friends.
3086 * ptree.c (cxx_print_type): Adjust record printing.
3087 * search.c (lookup_base): When taking a type, complete it before
3088 looking for a binfo.
3089 (lookup_member): Delay completing a type.
3090 (push_class_decls): Don't walk an incomplete type.
3091 (lookup_conversions): Likewise.
3092 * semantics.c (finish_stmt_expr_expr): Pass type directly to
3093 build_special_member_call.
3094 * tree.c (copy_base_binfos): Adjust.
3095 (make_binfo): Likewise.
3096 * typeck.c (build_modify_expr): Pass type directly to
3097 build_special_member_call.
3098 * typeck2.c (process_init_constructor): Check a binfo exists.
3099 (build_m_component_ref): Allow accessing an incomplete type.
3100 (build_functional_cast): Pass type directly to
3101 build_special_member_call.
3102
3103 2004-07-12 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3104
3105 PR c++/2204
3106 * config-lang.in (gtfiles): Add typeck2.c.
3107 * Make-lang.in: Tweak typeck2.c dependencies, and add rule for
3108 gt-cp-typeck2.h.
3109 * cp-tree.h: Declare complete_type_check_abstract.
3110 * typeck2.c (pat_calc_hash, pat_compare,
3111 complete_type_check_abstract): New functions.
3112 (abstract_virtuals_error): If the type is abstract, register the
3113 declaration within abstract_pending_vars for further checks.
3114 Inspect also dependent types. Handle IDENTIFIER_NODEs as decl.
3115 * decl.c (cp_finish_decl): Do not strip array types.
3116 (create_array_type_for_decl): Check for abstractness of the element
3117 type.
3118 (complete_vars): Call complete_type_check_abstract.
3119 * class.c (finish_struct): Prepare a list of virtual functions for
3120 template types, and call complete_vars on it to check for abstractness.
3121
3122 2004-07-12 Paolo Bonzini <bonzini@gnu.org>
3123
3124 PR tree-optimization/14107
3125 * decl.c (finish_function): Remove temporary band-aid.
3126
3127 2004-07-11 Mark Mitchell <mark@codesourcery.com>
3128
3129 * call.c (build_operator_new_call): Avoid using push_to_top_level.
3130 (build_new_op): Adjust call to lookup_function_nonclass.
3131 * name-lookup.c (identifier_type_value): Adjust call to
3132 lookup_name_real.
3133 (lookup_name_real): Add block_p parameter.
3134 (lookup_name_nonclass): Adjust call to lookup_name_real.
3135 (lookup_function_nonclass): Likewise.
3136 (lookup_name): Likewise.
3137 * name-lookup.h (lookup_name_real): Change prototype.
3138 (lookup_name_nonclass): Likewise.
3139 * parser.c (cp_parser_lookup_name): Likewise.
3140
3141 * cp-tree.h (saved_scope): Make old_bindings a vector.
3142 (unuse_fields): Remove.
3143 * name-lookup.h (cxx_saved_binding): Define it.
3144 * class.c (pushclass): Don't use unuse_fields.
3145 * name-lookup.c (cxx_saved_binding_make): Remove.
3146 (store_binding): Add new bindings to a vector, using an
3147 accumulator style, rather than adding them to a list.
3148 (store_bindings): Adjust accordingly.
3149 (store_class_bindings): Likewise.
3150 (push_to_top_level): Likewise.
3151 (pop_from_top_level): Likewise.
3152 * optimize.c (maybe_clone_body): Must push_to_top_level and
3153 pop_from_top_level calls outside of loop.
3154 * parser.c (cp_parser_class_specifier): Move push_scope/pop_scope
3155 calls here from cp_parser_late_parsing_default_args.
3156 (cp_parser_save_default_args): Record the class type in which the
3157 function is declared.
3158 (cp_parser_late_parsing_default_args): Do not call
3159 push_nested_class/pop_nested_class.
3160 * search.c (dfs_unuse_fields): Remove.
3161 (unuse_fields): Remove.
3162
3163 2004-07-11 Joseph S. Myers <jsm@polyomino.org.uk>
3164
3165 * cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP, LANG_HOOKS_PUSHLEVEL,
3166 LANG_HOOKS_POPLEVEL, LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Remove.
3167 * cp-tree.h (poplevel): Declare.
3168 (set_block): Remove.
3169 * decl.c (set_block): Remove.
3170
3171 2004-07-10 Mike Stump <mrs@apple.com>
3172
3173 * decl2.c (import_export_class): Never export/import vtables
3174 with inline key functions.
3175
3176 2004-07-09 Steven Bosscher <stevenb@suse.de>
3177
3178 * typeck.c (c_expand_asm_operands): Remove.
3179
3180 2004-07-09 Mike Stump <mrs@apple.com>
3181
3182 * typeck.c (build_class_member_access_expr): Skip null deref
3183 warning when we don't dereference it.
3184
3185 2004-07-09 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3186
3187 PR c++/8211
3188 PR c++/16165
3189 * class.c (check_field_decls): Improve -Weffc++ warning: do not
3190 warn for pointers to functions/members, or for classes without
3191 destructors.
3192
3193 2004-07-08 Mark Mitchell <mark@codesourcery.com>
3194
3195 * name-lookup.h (struct cp_binding_level): Update documentation
3196 for class_shadowed.
3197
3198 2004-07-08 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3199
3200 PR c++/16169
3201 * typeck.c (check_return_expr): Improve -Weffc++ warning: handle
3202 returning CALL_EXPR, and non-reference return type.
3203
3204 2004-07-08 Nathan Sidwell <nathan@codesourcery.com>
3205
3206 * name-lookup.c (push_binding): Use VEC_reserve.
3207
3208 2004-07-08 Richard Henderson <rth@redhat.com>
3209
3210 * cp-tree.h (expand_eh_spec_block): Remove.
3211
3212 2004-07-07 Mark Mitchell <mark@codesourcery.com>
3213
3214 * cp-tree.h (saved_scope): Remove x_previous_class_type and
3215 x_previous_class_values; add x_previous_class_level.
3216 (previous_class_type): Remove.
3217 (previous_class_values): Remove.
3218 (previous_class_level): New macro.
3219 * class.c (pushclass): Restore the identifier cache more
3220 expeditiously.
3221 (invalidate_class_lookup_cache): Use vector for class_shadowed and
3222 previous_class_values.
3223 * decl.c (poplevel): Likewise.
3224 * name-lookup.c (cxx_binding_init): New function.
3225 (cxx_binding_make): Use it.
3226 (push_binding): For a binding in a class level, use a vector of
3227 cp_class_binding nodes.
3228 (push_binding_level): New function.
3229 (begin_scope): Use it.
3230 (leave_scope): Do not put class binding levels on the free list.
3231 (print_binding_level): Adjust for the fact that class_shadowed is
3232 a vector.
3233 (poplevel_class): Likewise.
3234 (clear_identifier_class_values): Likewise.
3235 (push_class_level_binding): Likewise.
3236 (set_class_shadows): Remove.
3237 (store_binding): New function.
3238 (store_class_bindings): New function.
3239 (push_to_top_level): Use store_class_bindings as appropriate.
3240 (pop_from_top_level): Use previous_class_level, not
3241 previous_class_type.
3242 * name-lookup.h (cp_class_binding): New type.
3243 (cp_binding_level): Use a vector object for class_shadowed.
3244 (push_binding_level): Declare.
3245 (set_class_shadows): Remove.
3246
3247 2004-07-07 Andrew Pinski <apinski@apple.com>
3248
3249 * class.c (instantiate_type): BUFFER_REF is dead.
3250 * lex.c (init_operators): IN_EXPR is dead.
3251
3252 2004-07-07 Jason Merrill <jason@redhat.com>
3253
3254 PR c++/16334
3255 * call.c (build_new_op): Give overload warnings for built-in
3256 candidates.
3257
3258 2004-07-07 H.J. Lu <hongjiu.lu@intel.com>
3259
3260 PR c++/16276
3261 * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
3262 is not public.
3263
3264 2004-07-07 Nathan Sidwell <nathan@codesourcery.com>
3265
3266 * cp-tree.h (CLASSTYPE_N_BASECLASSES): Remove.
3267 * class.c (build_primary_vtable, check_bases,
3268 determine_primary_base, finish_struct_bits,
3269 maybe_warn_about_overly_private_class, dfs_find_final_overrider_q,
3270 get_basefndecls, warn_hidden, walk_subobject_offsets,
3271 build_base_fields, create_vtable_ptr, propagate_binfo_offsets,
3272 layout_virtual_bases, end_of_class, warn_about_ambiguous_bases,
3273 finish_struct_1, get_vfield_name, contains_empty_class_p,
3274 dump_class_hierarchy_r, finish_vtbls, build_vtt_inits,
3275 dfs_ctor_vtable_bases_queue_p, accumulate_vtbl_inits,
3276 add_vcall_offset_vtbl_entries_r, cp_fold_obj_type_ref): Adjust
3277 BINFO macros.
3278 * decl.c (xref_basetypes): Likewise.
3279 * dump.c (cp_dump_tree): Likewise.
3280 * error.c (dump_expr): Likewise.
3281 * init.c (sort_mem_initializers, expand_member_init,
3282 push_base_cleanups): Likewise.
3283 * method.c (do_build_copy_constructor, do_build_assign_reg,
3284 synthesize_exception_spec): Likewise.
3285 * name-lookup.c (arg_assoc_class): Likewise.
3286 * pt.c (instantiate_class_template, tsubst,
3287 get_template_base_recursive): Likewise.
3288 * ptree.c (cxx_print_type): Likewise.
3289 * rtti.c (get_psuedo_ti_init, get_pseudo_ti_desc): Likewise.
3290 * search.c (lookup_base_r, dynamic_cast_base_recurse,
3291 dfs_access_in_type, access_in_type, lookup_field_queue_p,
3292 bfs_walk, dfs_walk_real, look_for_overrides, markedp, unmarkedp,
3293 marked_pushdecls_p, unmarked_pushdecls_p, dfs_debug_markedp,
3294 dfs_debug_unmarkedp, dfs_check_overlap, dfs_no_overlap_yet,
3295 binfo_for_vtable, copied_binfo, original_binfo): Likewise
3296 * tree.c (copy_base_binfos, make_binfo): Likewise.
3297 * typeck.c (commmon_base_type): Likewise
3298 * typeck2.c (process_init_constructor): Likewise
3299
3300 2004-07-06 Joseph S. Myers <jsm@polyomino.org.uk>
3301
3302 * decl.c (check_tag_decl): Name redeclared type in diagnostic.
3303
3304 2004-07-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3305
3306 PR c++/3671
3307 * pt.c (convert_nontype_argument): Disallow conversions between
3308 different enumeration types.
3309
3310 2004-07-06 Nathan Sidwell <nathan@codesourcery.com>
3311
3312 * cp-tree.h (BINFO_MARKED): Remove.
3313 (BINFO_VTABLE_PATH_MARKED, BINFO_NEW_VTABLE_MARKED,
3314 BINFO_DEPENDENT_BASE_P, BINFO_LOST_PRIMARY_P,
3315 BINFO_INDIRECT_PRIMARY_P): Use appropriate BINFO_FLAG_n.
3316 (SET_BINFO_NEW_VTABLE_MARKED): Use BINFO_VIRTUAL_P.
3317 * class.c (build_base_path): Use BINFO_VIRTUAL_P.
3318 (mark_primary_bases, determine_primary_base, base_derived_from,
3319 dfs_find_final_overrider, dfs_find_final_overrider_q,
3320 dfs_find_inal_overrider_post, update_vtable_entry_for_fn,
3321 dfs_modify_vtables, walk_subobject_offsets,
3322 layout_nonempty_base_or_field, build_base_field,
3323 build_base_fields, propagate_binfo_offsets, layout_virtual_bases,
3324 end_of_class, get_vfield_name, dump_class_hierarchy, dump_vtable,
3325 finish_vtbls, build_vtt_inits, dfs_build_secondary_vptr_vtt_inits,
3326 build_ctor_vtbl_group, accumulate_vtble_inits,
3327 dfs_accumulate_vtbls_inits, build_vbase_offset_vtbl_entries,
3328 build_vcall_offset_vtbl_entries, add_vcall_offset_vtbl_entries_r,
3329 add_vcall_offset_vtbl_entries_1): Likewise.
3330 * decl.c (xref_basetypes): Incomming virtual base indicated by
3331 TREE_TYPE. Adjust.
3332 * dump.c (cp_dump_tree): Use BINFO_VIRTUAL_P.
3333 * init.c (finish_init_stmts, sort_mem_initializers,
3334 emit_mem_initializers, build_vtble_address, expand_member_init,
3335 push_base_cleanups): Likewise.
3336 * method.c (do_build_copy_constructor): Likewise.
3337 * pt.c (instantiate_class_template,
3338 get_template_base_recursive): Likewise.
3339 * rtti.c (dfs_class_hint_mark, get_pseudo_ti_init,
3340 get_pseudo_ti_desc): Likewise.
3341 * search.c (lookup_base_r, dynamic_cast_base_recurse,
3342 binfo_from_vbase, binfo_via_virtual, copied_binfo,
3343 original_binfo): Likewise.
3344 * semantics.c (finish_base_specifier): Virtualness is indicated
3345 by TREE_TYPE.
3346 * tree.c (copy_base_binfos): Use BINFO_VIRTUAL_P.
3347
3348 2004-07-06 Mark Mitchell <mark@codesourcery.com>
3349
3350 Revert:
3351 2004-06-24 Jason Merrill <jason@redhat.com>
3352 PR c++/16115
3353 * decl.c (grokparms): Give the PARM_DECL reference type if the
3354 parameter is passed by invisible reference.
3355
3356 2004-07-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
3357
3358 * cp-lang.c (cp_var_mod_type_p): Add extra arg.
3359 * decl.c (grokdeclarator): Extra arg to variably_modified_type_p.
3360 * pt.c (check_instantiated_args, unify): Likewise.
3361
3362 2004-07-05 Phil Edwards <phil@codesourcery.com>
3363
3364 * Make-lang.in (check-c++, lang_checks): Add some comments.
3365
3366 2004-07-05 Zack Weinberg <zack@codesourcery.com>
3367
3368 * cp-mudflap.c: Delete file.
3369 * Makefile.in: Remove all references to cp-mudflap.o.
3370
3371 2004-07-05 Zack Weinberg <zack@codesourcery.com>
3372
3373 * decl.c (cxx_init_decl_processing): Call
3374 build_common_tree_nodes before creating the global NAMESPACE_DECL.
3375
3376 2004-07-05 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3377
3378 PR c++/2518
3379 * call.c (build_operator_new_call): Look only at global scope.
3380
3381 2004-07-05 Nathan Sidwell <nathan@codesourcery.com>
3382
3383 * call.c (enforce_access): Expect TREE_BINFO.
3384 * class.c (binfo_ctor_vtable): Check TREE_BINFO.
3385 * cp-tree.h (RECORD_OR_UNION_TYPE_CHECK): Remove.
3386 (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
3387 Adjust.
3388 (BINFO_LANG_ELTS): Remove.
3389 (BINFO_LANG_SLOTS): New.
3390 (TYPE_RAISES_EXCEPTIONS, ENUM_TEMPLATE_INFO): Use TYPE_LANG_SLOT_1.
3391 (CLASSTYPE_TEMPLATE_INFO): Adjust.
3392 * pt.c (tsubst): Split TREE_BINFO case from TREE_VEC case.
3393 * search.c (lookup_member): Check TREE_BINFO.
3394 * semantics.c (perform_or_defer_access_check): Likewise.
3395 (check_accessibility_of_qualified_id): Check
3396 deferred_access_no_check.
3397 * tree.c (make_binfo): Use make_tree_binfo.
3398
3399 2004-07-04 Mark Mitchell <mark@codesourcery.com>
3400
3401 * method.c (implicitly_declare_fn): Set linkage of generated
3402 functions.
3403
3404 2004-07-04 Richard Henderson <rth@redhat.com>
3405
3406 * typeck.c (cxx_mark_addressable): Don't put_var_into_stack.
3407
3408 2004-07-03 Scott Brumbaugh <scottb.lists@verizon.net>
3409
3410 PR c++/3761
3411 * name-lookup.c (push_class_level_binding): Don't pass a
3412 TREE_LIST of ambiguous names to check_template_shadow as it
3413 only handles declarations. Instead, pull the declaration
3414 out and pass that.
3415
3416 2004-07-03 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3417
3418 PR c++/14971
3419 * pt.c (check_explicit_specialization): Clarify error message.
3420
3421 2004-07-02 Richard Henderson <rth@redhat.com>
3422
3423 * tree.c (cp_unsave_r): Update remap_save_expr call.
3424
3425 2004-07-02 Mark Mitchell <mark@codesourcery.com>
3426
3427 PR c++/16240
3428 * mangle.c (write_template_arg): Correct mangling.
3429
3430 PR c++/16297
3431 * decl.c (grokdeclarator): Robustify.
3432
3433 2004-07-01 Richard Henderson <rth@redhat.com>
3434
3435 * class.c (fixed_type_or_null): Don't handle RTL_EXPR.
3436 * method.c (synthesize_method): Don't clear_last_expr.
3437 * name-lookup.c (maybe_push_cleanup_level): Likewise.
3438
3439 2004-07-01 Nick Clifton <nickc@redhat.com>
3440
3441 * decl2.c (import_export_class): Invoke the
3442 import_export_class field in the gcc_target structure if it is not
3443 empty.
3444
3445 2004-06-30 Richard Henderson (rth@redhat.com>
3446
3447 * decl.c (start_preparsed_function): Don't set immediate_size_expand.
3448 * method.c (use_thunk): Likewise.
3449
3450 2004-06-30 Joseph S. Myers <jsm@polyomino.org.uk>
3451
3452 * call.c (build_over_call), typeck.c (build_function_call): Call
3453 check_function_arguments instead of check_function_format.
3454
3455 2004-06-30 Joseph S. Myers <jsm@polyomino.org.uk>
3456
3457 * call.c (build_over_call), typeck.c (build_function_call): Update
3458 calls to check_function_format.
3459
3460 2004-06-30 Richard Henderson <rth@redhat.com>
3461
3462 * call.c (build_over_call): Use __builtin_memcpy for copying
3463 CLASS_AS_BASE rather than funny casting.
3464
3465 2004-06-30 Richard Henderson <rth@redhat.com>
3466
3467 * init.c (build_new_1): Fill in TYPE_DOMAIN, TYPE_SIZE and
3468 TYPE_SIZE_UNIT of full_type.
3469
3470 2004-06-30 Per Bothner <per@bothner.com>
3471
3472 Conditionally compile support for --enable-mapped_location.
3473 * decl.c (pop_label): Handle (imperfectly) USE_MAPPED_LOCATION case.
3474 * decl2.c: If USE_MAPPED_LOCATION, don't do some line number
3475 adjustments - which I don't understand.
3476 * error.c (dump_decl): Rename "<interrnal>" to "<built-in>".
3477 * error.c: Use LOCATION_FILE and EXPR_LOCATION macros.
3478 (print_instantiation_partial_context): Use expand_location.
3479 * decl.c (duplicate_decl): Use new DECL_IS_BUILTIN macro.
3480 * name-lookup.c: Likewise.
3481 * lex.c (cxx_init): Likewise. Also use BUILTINS_LOCATION.
3482 * name-lookup.c: Use input_line macro.
3483 * parser.c (cp_lexer_get_preprocessor_token): Use UNKNOWN_LOCATION.
3484 (cp_parser_statement): Rename locaal variable statement_locus to
3485 statement_location and use SET_EXPR_LOCATION macro.
3486 * pt.c: Handle USE_MAPPED_LOCATION case. Use new macros.
3487 * tree.c (cp_walk_subtrees): Likewise.
3488
3489 2004-06-29 Per Bothner <per@bothner.com>
3490
3491 * tree.c (build_min_nt, build_min, build_min_non_dep):
3492 Don't set TREE_COMPLEXITY from input_line.
3493
3494 2004-06-29 Paul Brook <paul@codesourcery.com>
3495
3496 * init.c: Include target.h.
3497 (get_cookie_size): Remove and replace with target hook.
3498 Update callers.
3499 (build_new_1): Store the element size in the cookie.
3500
3501 2004-06-29 Nathan Sidwell <nathan@codesourcery.com>
3502
3503 PR c++/16260
3504 * parser.c (cp_parser_template_declaration_after_export): Disable
3505 access checks here ...
3506 (cp_parser_class_specifier): ... not here.
3507
3508 2004-06-28 Nathan Sidwell <nathan@codesourcery.com>
3509
3510 * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
3511 VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
3512 BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate
3513 TREE_CHECK macro.
3514
3515 2004-06-28 Nathan Sidwell <nathan@codesourcery.com>
3516
3517 * cp-tree.h (struct deferred_access): Move to ...
3518 * semantics.c (struct deferred_access): ... here. Adjust.
3519 (deferred_access_stack): Make a VEC(deferred_access),
3520 (deferred_access_free_list): Remove.
3521 (deferred_access_no_check): New.
3522 (push_deferring_access_checks, resume_deferring_access_checks,
3523 stop_deferring_access_checks, pop_deferring_access_checks,
3524 get_deferred_access_checks, pop_to_parent_deferring_access_checks,
3525 perform_deferred_access_checks, perform_or_defer_access_check): Adjust.
3526
3527 2004-06-28 Nathan Sidwell <nathan@codesourcery.com>
3528
3529 PR c++/16174
3530 * call.c (build_temp): Declare.
3531 (check_constructor_callable): New.
3532 (reference_binding): Only set CHECK_COPY_CONSTRUCTOR if not for
3533 CONSTRUCTOR_CALLABLE.
3534 (convert_like_real, initialize_reference): Use
3535 check_constructor_callable.
3536 * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): New.
3537 (LOOKUP_*): Renumber.
3538
3539 2004-06-28 Nathan Sidwell <nathan@codesourcery.com>
3540
3541 * friend.c (add_friend): Only perform access checks when context
3542 is a class.
3543 * lex.c (cxx_make_type): Only create a binfo for aggregate types.
3544 * parser.c (cp_parser_class_specifier): Disable access checks here
3545 when parsing the body of a templated class.
3546 * semantics.c (perform_or_defer_access_checks): Reorder to allow
3547 NULL binfos when not checking access.
3548
3549 2004-06-28 Nathan Sidwell <nathan@codesourcery.com>
3550
3551 Use vector API for vbase list.
3552 * cp-tree.h: Include vec.h
3553 (DEF_VEC_P (tree)): New type.
3554 (struct lang_type_class): Change vbase's member type.
3555 (binfo_for_vbase): Declare.
3556 * class.c (determine_primary_base, base_derived_from,
3557 update_vtable_entry_for_fn, walk_subobject_offsets, end_of_class,
3558 warn_about_ambiguous_bases, dfs_accumulate_vtbl_inits,
3559 build_vtbl_initializer): Adjust.
3560 * decl.c (xref_basetypes): Adjust, accumulate upper bound of
3561 vbases.
3562 * init.c (sort_mem_initializers, expand_member_init,
3563 push_base_cleanups): Adjust.
3564 * method.c (do_build_copy_constructor): Adjust.
3565 * search.c (get_pure_virtuals, copied_binfo, original_binfo): Adjust.
3566 (binfo_for_vbase): New.
3567 * tree.c (copy_base_binfos): Adjust.
3568
3569 2004-06-28 Mark Mitchell <mark@codesourcery.com>
3570
3571 * parser.c (cp_parser_set_decl_spec_type): Fix thinko.
3572
3573 2004-06-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
3574
3575 PR c++/14123
3576 * cxx-pretty-print.c (pp_cxx_ptr_operator): Properly put
3577 paranthesis in case of pointers to array members.
3578 * error.c (dump_type_prefix): Likewise.
3579 (dump_type_suffix): Maybe issue a whitespace when printing
3580 ARRAY_TYPE.
3581
3582 2004-06-27 Mark Mitchell <mark@codesourcery.com>
3583
3584 PR c++/16193
3585 * parser.c (cp_parser_set_decl_spec_type): Refine test for
3586 redefinition of built-in types.
3587
3588 2004-06-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
3589
3590 * error.c (pp_template_argument_list_start): Remove.
3591 (pp_template_argument_list_end): Likewise.
3592 (pp_separate_with_comma): Use pp_cxx_separate_with.
3593 (reinit_global_formatting_buffer): Remove.
3594 (pp_non_consecutive_character): Likewise.
3595 (dump_scope): Use pp_cxx_colon_colon.
3596 (dump_template_parameter): Use pp_cxx_identifier,
3597 pp_cxx_tree_identifier and pp_cxx_whitespace.
3598 (dump_templat_bindings): Replace use of pp_string with sequence
3599 of pp_cxx_whitespace and pp_equal.
3600 (dump_type): Use pp_cxx_identifier, pp_cxx_tree_identifier,
3601 pp_cxx_colon_colon, pp_cxx_whitespace throughout. Don't set
3602 padding here.
3603 (dump_aggr_type): Use pp_cxx_identifier amd pp_cxx_tree_identifier.
3604 (dump_type_prefix): Don't set padding. Use pp_cxx_whitespace,
3605 pp_cxx_left_parent, pp_cxx_colon_colon and pp_cxx_star troughout.
3606 (dump_type_suffix): Use pp_cxx_right_paren, pp_cxx_left_bracket,
3607 pp_cxx_right_bracket, pp_cxx_identifier throughout,
3608 (dump_decl): Likewise.
3609 (dump_template_decl): Likewise.
3610 (dump_function_decl): Likewise. Set padding as appropriate.
3611 (dump_parameters): Use pp_cxx_left_paren, pp_cxx_identifier and
3612 pp_cxx_right_paren.
3613 (dump_exception_spec): Likewise.
3614 (dump_function_name): Use pp_cxx_tree_identifier and
3615 pp_cxx_identifier.
3616 (dump_template_parms): Use pp_cxx_begin_template_argument_list and
3617 pp_cxx_end_template_argument_list.
3618 (dump_expr): Use pp_cxx_left_paren, pp_cxx_right_paren,
3619 pp_cxx_colon_colon, pp_cxx_identifier, pp_cxx_tree_identifier and
3620 pp_cxx_whitespace throughout.
3621 (dump_binary_op): Use pp_cxx_whitespace, pp_cxx_left_paren and
3622 pp_cxx_right_paren.
3623 (dump_unary_op): Likewise.
3624 (reinit_cxx_pp): New function.
3625 (type_as_string); Use it.
3626 (expr_as_string): Likewise.
3627 (decl_as_string); Likewise.
3628 (context_as_string): Likewise.
3629 (lang_decl_name): Likewise.
3630 (decl_to_string): Likewise.
3631 (expr_to_string): Likewise.
3632 (parm_to_string): Likewise.
3633 (type_to_string): Likewise.
3634 (args_to_string): Likewise.
3635 (cv_to_string): Likewise.
3636
3637 2004-06-26 Mark Mitchell <mark@codesourcery.com>
3638
3639 * cp-tree.h (cp_cv_quals): New type.
3640 (cp_declarator): Use it instead of "tree" as appropriate.
3641 (grok_method_quals): Adjust prototype.
3642 (grokclassfn): Likewise.
3643 (do_friend): Likewise.
3644 * decl.c (grokfndecl): Use cp_cv_quals, not tree.
3645 (grokdeclarator): Likewise.
3646 * decl2.c (grok_method_quals): Likewise.
3647 (grokclassfn): Likewise.
3648 * friend.c (do_friend): Likewise.
3649 * method.c (implicitly_declare_fn): Adjust call to grokclassfn.
3650 * parser.c (make_call_declarator): Use cp_cv_quals, not tree.
3651 (make_pointer_declarator): Likewise.
3652 (make_reference_declarator): Likewise.
3653 (make_ptrmem_declarator): Likewise.
3654 (cp_parser_ptr_operator): Likewise.
3655 (cp_parser_cv_qualifier_seq_opt): Likewise.
3656 (cp_parser_cv_qualifier_opt): Remove.
3657 (cp_parser_new_declarator_opt): Adjust call to
3658 cp_parser_ptr_operator.
3659 (cp_parser_conversion_declaration_opt): Likewise.
3660 (cp_parser_declarator): Use cp_cv_quals, not tree.
3661 (cp_parser_direct_declarator): Likewise.
3662
3663 2004-06-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
3664
3665 * call.c, cp-tree.h, cxx-pretty-print.c, decl.c, decl2.c:
3666 Rename DECL_STMT to DECL_EXPR.
3667 * init.c, name-lookup.c, parser.c, pt.c, semantics.c: Likewise.
3668 * cp-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.
3669 * tree.c (cp_walk_subtrees): Don't call c_walk_subtrees.
3670
3671 2004-06-26 Jan Hubicka <jh@suse.cz>
3672
3673 PR C++/14865
3674 * decl2.c (maybe_emit_vtables): Always import_export_vtable for the
3675 reachability analysis.
3676
3677 2004-06-25 Mark Mitchell <mark@codesourcery.com>
3678
3679 * cp-mudflap.c (mflang_flush_calls): Fix thinkos resulting from
3680 2004-06-23 change.
3681
3682 2004-06-25 Paul Brook <paul@codesourcery.com>
3683
3684 * decl2.c (get_guard): Call targetm.cxx.guard_type.
3685 (get_guard_bits, get_guard_cond): Call targetm.cxx.guard_mask_bit.
3686
3687 2004-06-24 Mark Mitchell <mark@codesourcery.com>
3688
3689 * decl.c (grokdeclarator): Restore error messages about __thread.
3690 * parser.c (cp_parser_decl_specifier_seq): Likewise.
3691
3692 2004-06-24 Jason Merrill <jason@redhat.com>
3693
3694 PR c++/16115
3695 * decl.c (grokparms): Give the PARM_DECL reference type if the
3696 parameter is passed by invisible reference.
3697
3698 2004-06-24 Andreas Schwab <schwab@suse.de>
3699
3700 * cp-tree.h (enum cp_storage_class): Remove trailing comma.
3701
3702 2004-06-23 Mark Mitchell <mark@codesourcery.com>
3703
3704 * Make-lang.in (cp/lex.o): Do not depend on cp/lex.h.
3705 (cp/decl.o): Likewise.
3706 (cp/decl2.o): Likewise.
3707 (cp/pt.o): Likewise.
3708 (cp/semantics.o): Likewise.
3709 * config-lang.in (gtfiles): Do not reference cp/lex.h.
3710 * class.c: Do not include lex.h.
3711 (add_implicitly_declared_members): Do not use
3712 adding_implicit_members.
3713 (check_bases_and_members): Do not talk about grok_x_components.
3714 * cp/cp-tree.h (adding_implicit_members): Remove.
3715 (cp_storage_class): New type.
3716 (cp_decl_spec): Likewise.
3717 (cp_decl_specifier_seq): Likewise.
3718 (cp_parameter_declarator): Use it for the decl_specifiers field.
3719 (check_tag_decl): Adjust prototype.
3720 (shadow_tag): Likewise.
3721 (groktypename): Likewise.
3722 (start_decl): Likewise.
3723 (start_function): Likewise.
3724 (start_method): Likewise.
3725 (grok_x_components): Remove.
3726 (grokfield): Adjust prototype.
3727 (grokbitfield): Likewise.
3728 (finish_member_class_template): Remove.
3729 * decl.c: Do not include lex.h.
3730 (adding_implicit_members): Do not define.
3731 (check_tag_decl): Do not use trees to represent decl-specifiers.
3732 (shadow_tag): Likewise.
3733 (groktypename): Likewise.
3734 (start_decl): Likewise.
3735 (grokvardecl): Likewise.
3736 (grokdeclarator): Likewise.
3737 (grokparms): Likewise.
3738 (start_function): Likewise.
3739 (start_method): Likewise.
3740 * decl.h (grokdeclarator): Adjust prototype.
3741 * decl2.c: Do not include lex.h.
3742 (grok_x_components): Remove.
3743 (grokfield): Do not use trees to represent decl-specifiers.
3744 (grokbitfield): Likewise.
3745 * lex.c: Do not include lex.h.
3746 * lex.h: Remove.
3747 * parser.c: Include target.h.
3748 (clear_decl_specs): New function.
3749 (cp_parser_translation_unit): Do not use trees to represent
3750 decl-specifiers.
3751 (cp_parser_postfix_expression): Likewise.
3752 (cp_parser_new_type_id): Likewise.
3753 (cp_parser_condition): Likewise.
3754 (cp_parser_simple_declaration): Likewise.
3755 (cp_parser_decl_specifier_seq): Likewise.
3756 (cp_parser_function_specifier_opt): Likewise.
3757 (cp_parser_conversion_type_id): Likewise.
3758 (cp_parser_template_parameter): Likewise.
3759 (cp_parser_explicit_instantiation): Likewise.
3760 (cp_parser_type_specifier): Likewise.
3761 (cp_parser_simple_type_specifier): Likewise.
3762 (cp_parser_init_declarator): Likewise.
3763 (cp_parser_type_id): Likewise.
3764 (cp_parser_type_specifier_seq): Likewise.
3765 (cp_parser_parameter_declaration): Likewise.
3766 (cp_parser_member_declaration): Likewise.
3767 (cp_parser_exception_declaration): Likewise.
3768 (cp_parser_function_definition_from_specifiers_and_declarator):
3769 Likewise.
3770 (cp_parser_single_declaration): Likewise.
3771 (cp_parser_save_member_function_body): Likewise.
3772 (cp_parser_friend_p): Likewise.
3773 (cp_parser_set_storage_class): New function.
3774 (cp_parser_set_decl_spec_type): Likewise.
3775 * pt.c: Do not include lex.h.
3776 * semantics.c: Likewise.
3777 (finish_member_class_template): Remove.
3778
3779 2004-06-23 Roger Sayle <roger@eyesopen.com>
3780
3781 * call.c (build_cxx_call): Don't call expand_tree_builtin. No
3782 longer take both "args" and "convert_args" as arguments.
3783 (build_op_delete_call): Update call to build_cxx_call.
3784 (build_over_call): Likewise, update call to build_cxx_call.
3785 * cp-tree.h (build_cxx_call): Update funtion prototype.
3786 * typeck.c (build_function_call): Don't call expand_tree_builtin.
3787 * rtti.c (throw_bad_cast): Update call to build_cxx_call.
3788 (throw_bad_typeid): Likewise.
3789 (build_dynamic_cast_1): Likewise.
3790
3791 2004-06-22 Richard Henderson <rth@redhat.com>
3792
3793 * class.c (build_vfn_ref): Take a pointer not object. Build
3794 an OBJ_TYPE_REF.
3795 (cp_fold_obj_type_ref): New.
3796 * call.c (build_over_call): Update build_vfn_ref call.
3797 * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
3798 * cp-tree.h (cp_fold_obj_type_ref): Declare.
3799
3800 2004-06-21 Jason Merrill <jason@redhat.com>
3801
3802 PR c++/16112
3803 * cp-gimplify.c (cp_gimplify_init_expr): Look through
3804 CLEANUP_POINT_EXPR.
3805
3806 2004-06-21 Mark Mitchell <mark@codesourcery.com>
3807
3808 * cp-tree.def (NEW_EXPR): Add a fourth slot.
3809 * cp-tree.h (PARMLIST_ELLIPSIS_P): Remove.
3810 (TREE_PARMLIST): Likewise.
3811 (CALL_DECLARATOR_PARMS): Likewise.
3812 (CALL_DECLARATOR_QUALS): Likewise.
3813 (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
3814 (cp_declarator_kind): New type.
3815 (cp_parameter_declarator): Likewise.
3816 (cp_declarator): Likewise.
3817 (cp_error_declarator): Likewise.
3818 (no_parameters): Likewise.
3819 (groktypename): Change prototype.
3820 (start_decl): Likewise.
3821 (start_handler_parms): Likewise.
3822 (get_scope_of_declarator): Likewise.
3823 (start_function): Likewise.
3824 (start_preparsed_function): New function.
3825 (start_function): Change prototype.
3826 (start_method): Likewise.
3827 (grokfield): Likewise.
3828 (grokbitfield): Likewise.
3829 (build_new): Likewise.
3830 (make_pointer_declarator): Remove.
3831 (make_reference_declarator): Likewise.
3832 (make_call_declarator): Likewise.
3833 (set_quals_and_spec): Likewise.
3834 (process_template_parm): Change prototype.
3835 (begin_function_definition): Remove.
3836 (finish_parmlist): Remove.
3837 * decl.c (groktypename): Do not use trees to represent
3838 declarators.
3839 (start_decl): Likewise.
3840 (start_handler_parms): Remove.
3841 (get_scope_of_declarator): Reimplement.
3842 (grokdeclarator): Do not use trees to represent declarators.
3843 (grokparms): Likewise.
3844 (start_function): Likewise.
3845 (start_method): Likewise.
3846 (build_void_list_mode): Do not use TREE_PARMLIST.
3847 * decl.h (grokdeclarator): Change prototype.
3848 * decl2.c (grok_method_quals): Robustify.
3849 (grok_x_components): Do not use trees to represent declarators.
3850 (grokfield): Likewise.
3851 (grokbitfield): Likewise.
3852 (start_objects): Build FUNCTION_DECLs, not declarators.
3853 (start_static_storage_duration_function): Likewise.
3854 * init.c (build_new): Simplify.
3855 * lex.c (make_pointer_declarator): Remove.
3856 (make_reference_declarator): Likewise.
3857 (make_call_declarator): Likewise.
3858 (set_quals_and_spec): Likewise.
3859 * method.c (use_thunk): Use start_preparsed_function.
3860 (synthesize_method): Likewise.
3861 (implicitly_declare_fn): Build FUNCTION_DECLs, not declarators.
3862 * optimize.c (maybe_clone_body): Use start_preparsed_function.
3863 * parser.c (cp_error_declarator): New variable.
3864 (declarator_obstack): Likewise.
3865 (alloc_declarator): New function.
3866 (make_declarator): Likewise.
3867 (make_id_declarator): Likewise.
3868 (make_pointer_declarator): Likewise.
3869 (make_reference_declarator): Likewise.
3870 (make_ptrmem_declarator): Likewise.
3871 (make_call_declarator): Likewise.
3872 (make_array_declarator): Likewise.
3873 (no_parameters): New variable.
3874 (make_parameter_declarator): Likewise.
3875 (cp_parser_check_for_definition_in_return_type): Do not use trees
3876 to represent declarators.
3877 (cp_parser_translation_unit): Likewise.
3878 (cp_parser_new_expression): Likewise.
3879 (cp_parser_new_type_id): Likewise.
3880 (cp_parser_new_declarator_opt): Likewise.
3881 (cp_parser_direct_new_declarator): Likewise.
3882 (cp_parser_condition): Likewise.
3883 (cp_parser_declaration_statement): Likewise.
3884 (cp_parser_declaration): Likewise.
3885 (cp_parser_conversion_type_id): Likewise.
3886 (cp_parser_conversion_declarator_opt): Likewise.
3887 (cp_parser_template_parameter_list): Likewise.
3888 (cp_parser_template_parameter): Likewise.
3889 (cp_parser_explicit_instantiation): Likewise.
3890 (cp_parser_init_declarator): Likewise.
3891 (cp_parser_declarator): Likewise.
3892 (cp_parser_direct_declarator): Likewise.
3893 (cp_parser_type_id): Likewise.
3894 (cp_parser_parameter_declaration_clause): Likewise.
3895 (cp_parser_parameter_declaration_list): Likewise.
3896 (cp_parser_parameter_declaration): Likewise.
3897 (cp_parser_member_declaration): Likewise.
3898 (cp_parser_exception_declaration): Likewise.
3899 (cp_parser_check_declarator_template_parameters): Likewise.
3900 (cp_parser_function_definition_from_specifiers_and_declarator):
3901 Likewise.
3902 (cp_parser_save_member_function_body): Likewise.
3903 * pt.c (process_template_parm): Add is_non_type parameter.
3904 (convert_template_argument): Adjust call to groktypename.
3905 (tsubst_call_declarator_parms): Remove use of TREE_PARMLIST.
3906 (tsubst): Do not expect declarators.
3907 (tsubst_copy_and_build): Adjust NEW_EXPR case to handle additional
3908 argument.
3909 (instantiate_decl): Use start_preparsed_function.
3910 * semantics.c (begin_function_definition): Remove.
3911 (finish_parmlist): Remove.
3912 * cp-mudflap.c (mflang_flush_calls): Build FUNCTION_DECLs, not
3913 declarators.
3914
3915 2004-06-21 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
3916
3917 * call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
3918 (build_new_method_call): Likewise.
3919 * decl.c (local_variable_p_walkfn): Don't walk into types.
3920 * decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
3921 (build_anon_union_vars): Add new operand for COMPONENT_REF.
3922 * init.c (buld_new): Add new operand for ARRAY_REF.
3923 * method.c (do_build_copy_constructor): New op for COMPONENT_REF.
3924 (do_build_assign_ref): Likewise.
3925 * parser.c (cp_parser_direct_new_declarator): Add new operands
3926 for ARRAY_REF.
3927 (cp_parser_direct_declarator): Likewise.
3928 * pt.c (tsubst): Likewise.
3929 (tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
3930 for COMPONENT_REF.
3931 * semantics.c (finish_non_static_data_member): Add new operand
3932 for COMPONENT_REF.
3933 * typeck.c (build_class_member_access_expr): Likewise.
3934 (build_class_member_access_expr, finish_class_member_access_expr):
3935 Likewise.
3936 (build_ptrmemfunc_access_expr): Likewise.
3937 (build_array_ref): Add new operands for ARRAY_REF.
3938 * typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
3939 * tree.c (count_trees_r, no_linkage_helper): Don't walk in types.
3940
3941 2004-06-21 Richard Henderson <rth@redhat.com>
3942
3943 * dump.c (cp_dump_tree): Don't use dump_next_stmt.
3944 * parser.c (cp_parser_jump_statement): Update commentary.
3945 * pt.c (tsubst_expr): Use RETURN_EXPR.
3946 * semantics.c (finish_return_stmt): Likewise.
3947 (finalize_nrv_r): Likewise.
3948 * typeck.c, typeck2.c: Update file start commentary.
3949
3950 2004-06-21 Richard Henderson <rth@redhat.com>
3951
3952 * semantics.c (finish_expr_stmt): Call verify_sequence_points.
3953
3954 2004-06-20 Richard Henderson <rth@redhat.com>
3955
3956 * cp-tree.h (add_decl_stmt): Declare.
3957 * pt.c (tsubst_copy): Abort for CLEANUP_POINT_EXPR.
3958 * semantics.c (maybe_cleanup_point_expr): New.
3959 (add_decl_stmt, finish_expr_stmt, finish_return_stmt,
3960 finish_for_expr, finish_switch_cond): Use it.
3961 (finalize_nrv_r): Don't build an EXPR_STMT. Don't frob TREE_CHAIN.
3962
3963 2004-06-20 Richard Henderson <rth@redhat.com>
3964
3965 * cp-tree.def (CLEANUP_STMT, IF_STMT): Move from c-common.def.
3966 * cp-gimplify.c (gimplify_if_stmt): Move from c-gimplify.c.
3967 (cp_gimplify_expr): Call it.
3968 (gimplify_cleanup_stmt): Move from c-gimplify.c.
3969 (cp_genericize): New.
3970 * decl.c (finish_function): Call it.
3971 * cp-tree.h (cp_stmt_codes): Add CLEANUP_STMT, IF_STMT.
3972 (CLEANUP_BODY, CLEANUP_EXPR, CLEANUP_DECL): Move from c-common.h.
3973 (IF_COND, THEN_CLAUSE, ELSE_CLAUSE): Likewise.
3974 (cp_genericize): Declare.
3975 * cxx-pretty-print.c (pp_cxx_statement): Add CLEANUP_STMT, IF_STMT.
3976 * dump.c (cp_dump_tree): Likewise.
3977 * semantics.c (push_cleanup): Move from c-semantics.c.
3978
3979 2004-06-20 Zack Weinberg <zack@codesourcery.com>
3980
3981 * cp-lang.c (has_c_linkage): Implement.
3982
3983 * cp-tree.h (set_mangled_name_for_decl): Don't prototype.
3984 * decl.c (duplicate_decls): Use COPY_DECL_RTL.
3985 (builtin_function_1): Don't call make_decl_rtl.
3986 (build_cp_library_fn): Don't call set_mangled_name_for_decl.
3987 (grokvardecl): Don't call mangle_decl.
3988 * except.c (nothrow_libfn_p): Look at DECL_NAME, not
3989 DECL_ASSEMBLER_NAME.
3990 * method.c (set_mangled_name_for_decl): Delete.
3991 * name-lookup.c (pushdecl): When a local extern shadows a
3992 file-scope declaration of the same object, give both DECLs the
3993 same DECL_UID.
3994 * typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE
3995 on DECL_ASSEMBLER_NAME.
3996
3997 2004-06-19 Richard Henderson <rth@redhat.com>
3998
3999 * cp-gimplify.c: Remove unnecessary prototypes.
4000 (cp_gimplify_stmt): Merge into ...
4001 (cp_gimplify_expr): ... here. Move to end of file. Handle
4002 stmts_are_full_exprs_p frobbing.
4003 * cp-tree.h (cp_gimplify_stmt): Remove.
4004 * pt.c (tsubst_expr): Merge prep_stmt and unify.
4005 * tree.c (init_tree): Don't set lang_gimplify_stmt.
4006
4007 2004-06-18 Richard Henderson <rth@redhat.com>
4008
4009 PR c++/16034
4010 * semantics.c (begin_cond): New.
4011 (finish_cond): Rewrite to handle template DECL_STMTs specially.
4012 Assume that non-template decls go land before the conditional.
4013 (simplify_loop_decl_cond): Likewise.
4014 (begin_if_stmt, finish_if_stmt_cond, begin_while_stmt,
4015 finish_while_stmt_cond, finish_for_init_stmt, finish_for_cond,
4016 begin_switch_stmt, finish_switch_cond): Update to match.
4017
4018 2004-06-17 Jason Merrill <jason@redhat.com>
4019
4020 PR c++/16015
4021 * semantics.c (simplify_aggr_init_expr): Don't return the slot.
4022 (finish_stmt_expr_expr): Update type after conversions.
4023 (finish_stmt_expr): Wrap initializer in CLEANUP_POINT_EXPR.
4024 Handle void initializer.
4025 * tree.c (build_cplus_new): Make AGGR_INIT_EXPRs void.
4026
4027 2004-06-17 Geoffrey Keating <geoffk@apple.com>
4028
4029 * class.c (build_clone): Don't call defer_fn, let mark_used do it.
4030 * cp-tree.h (defer_fn): Delete.
4031 * decl2.c (defer_fn): Delete.
4032 (finish_file): Simplify deferred_fns loops; check that
4033 only used inline functions get into deferred_fns.
4034 (mark_used): Inline previous contents of defer_fn.
4035
4036 2004-06-16 Richard Henderson <rth@redhat.com>
4037
4038 * cp-tree.h (COMPOUND_STMT_TRY_BLOCK, COMPOUND_STMT_BODY_BLOCK): Kill.
4039 (BIND_EXPR_TRY_BLOCK, BIND_EXPR_BODY_BLOCK): New.
4040 * cxx-pretty-print.c (pp_cxx_function_definition): Move handling
4041 of CTOR_INITIALIZER ...
4042 (pp_cxx_statement): ... here.
4043 * decl.c (begin_function_body): Don't set COMPOUND_STMT_BODY_BLOCK.
4044 (finish_function): Use alloc_stmt_list to zap entire function.
4045 * parser.c (cp_parser_compound_statement): Update commentary.
4046 * pt.c (tsubst_expr): Use BIND_EXPR instead of COMPOUND_STMT.
4047 * semantics.c (begin_compound_stmt, finish_compound_stmt): Likewise.
4048 (finish_stmt_expr): Don't look through COMPOUND_STMT.
4049
4050 2004-06-16 Geoffrey Keating <geoffk@apple.com>
4051
4052 * pt.c (mark_decl_instantiated): Don't call defer_fn.
4053
4054 2004-06-16 Richard Henderson <rth@redhat.com>
4055
4056 * parser.c (cp_parser_labeled_statement): Update commentary.
4057 * pt.c (tsubst_expr): Use CASE_LABEL_EXPR.
4058 * tree.c (mark_local_for_remap_r): Likewise.
4059
4060 2004-06-16 Richard Henderson <rth@redhat.com>
4061
4062 * parser.c (cp_parser_asm_definition): Update commentary.
4063 * pt.c (tsubst_expr): Use ASM_EXPR.
4064 * semantics.c (finish_asm_stmt): Likewise.
4065
4066 2004-06-16 Richard Henderson <rth@redhat.com>
4067
4068 * decl.c (finish_destructor_body): Use LABEL_EXPR.
4069 * parser.c (cp_parser_statement): Update commentary.
4070 * pt.c (tsubst_expr): Use LABEL_EXPR, GOTO_EXPR.
4071 * semantics.c (finish_goto_stmt, finish_label_stmt): Likewise.
4072 * tree.c (mark_local_for_remap_r): Likewise.
4073
4074 2004-06-16 Richard Henderson <rth@redhat.com>
4075
4076 PR c++/16012
4077 * semantics.c (begin_for_stmt, begin_for_stmt): Do put the init
4078 statement in FOR_INIT_STMT for templates.
4079
4080 2004-06-15 Richard Henderson <rth@redhat.com>
4081
4082 * call.c (initialize_reference): Don't build CLEANUP_STMT here.
4083 * cp-gimplify.c (cp_gimplify_stmt): Remove next_p argument.
4084 (genericize_try_block): Use gimplify_stmt.
4085 (genericize_catch_block, genericize_eh_spec_block): Likewise.
4086 (cp_gimplify_init_expr): Remove STMT_EXPR special case.
4087 (gimplify_must_not_throw_expr): Update voidify_wrapper_expr call.
4088 * cp-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
4089 (cp_tree_chain_matters_p): Remove.
4090 * cp-tree.h (COMPOUND_STMT_TRY_BLOCK): New.
4091 (COMPOUND_STMT_BODY_BLOCK): New.
4092 (STATEMENT_LIST_NO_SCOPE, STATEMENT_LIST_TRY_BLOCK): New.
4093 (EXPR_STMT_STMT_EXPR_RESULT): New.
4094 (building_stmt_tree): Check cur_stmt_list.
4095 (tf_stmt_expr_cmpd, tf_stmt_expr_body): Remove.
4096 (BCS_NO_SCOPE, BCS_TRY_BLOCK, BCS_FN_BODY): New.
4097 * decl.c (poplevel): Use pop_stmt_list for minding cleanups.
4098 (cp_finish_decl): Use push_cleanup.
4099 (start_function, finish_function): Use statement lists.
4100 (finish_stmt): Do nothing.
4101 * except.c (begin_eh_spec_block): Use statement lists.
4102 (check_handlers_1, check_handlers): Likewise.
4103 * init.c (construct_virtual_base): Don't add extra compound stmts.
4104 (build_vec_init): Likewise.
4105 * name-lookup.c (maybe_push_cleanup_level): Use statement lists.
4106 * name-lookup.h (struct cp_binding_level): Add statement_list.
4107 * parser.c (cp_parser_statement): Take the STMT_EXPR node, not a bool.
4108 (cp_parser_labeled_statement, cp_parser_expression_statement,
4109 cp_parser_statement_seq_opt): Likewise.
4110 (cp_parser_compound_statement): Likewise. Take bool for try block.
4111 (cp_parser_selection_statement): Tidy if processing.
4112 (cp_parser_already_scoped_statement): Rewrite to do what it says.
4113 * pt.c (tsubst_copy): Move STMT_EXPR to tsubst_expr.
4114 (tsubst_expr): Rewrite STMT_EXPR processing. Handle STATEMENT_LIST.
4115 Mind COMPOUND_STMT_TRY_BLOCK, EXPR_STMT_STMT_EXPR_RESULT.
4116 * semantics.c (do_poplevel, do_pushlevel): Use statement lists.
4117 (finish_cond): New, rewritten from FINISH_COND.
4118 (simplify_loop_decl_cond): New.
4119 (finish_expr_stmt): Avoid nested EXPR_STMTs.
4120 (begin_if_stmt, finish_if_stmt_cond, finish_then_clause,
4121 begin_else_clause, finish_else_clause, finish_if_stmt,
4122 begin_while_stmt, finish_while_stmt_cond, finish_while_stmt,
4123 begin_do_stmt, finish_do_body, begin_for_stmt, finish_for_init_stmt,
4124 finish_for_cond, finish_for_stmt, begin_switch_stmt,
4125 finish_switch_cond, finish_switch_stmt, begin_try_block,
4126 finish_try_block, finish_cleanup_try_block, finish_function_try_block,
4127 finish_handler_sequence, finish_function_handler_sequence,
4128 begin_handler, finish_handler_parms, finish_handler,
4129 begin_stmt_expr, finish_stmt_expr_expr, finish_stmt_expr): Rewrite
4130 using statement lists.
4131 (begin_compound_stmt): Replace has_no_scope argument with flags.
4132 Update all callers. Use statement lists.
4133 (finish_compound_stmt): Likewise.
4134 (finish_decl_cleanup, finish_eh_cleanup): Use push_cleanup.
4135 (current_scope_stmt_stack): Remove.
4136 (simplify_aggr_init_expr): Don't muck with TREE_CHAIN.
4137 * typeck2.c (split_nonconstant_init_1, split_nonconstant_init):
4138 Rewrite with statement lists.
4139
4140 2004-06-15 Alexandre Oliva <aoliva@redhat.com>
4141
4142 * parser.c: Change all assignments of c_lex_string_translate
4143 to true and false to 1 and 0.
4144 (cp_lexer_read_token): Convert type of the translated string.
4145 (cp_parser_skip_to_closing_parentheses): Preserve original
4146 value of c_lex_string_translate, and set it to -1 while
4147 running.
4148 (cp_parser_cache_group): Likewise.
4149 (cp_parser_cache_group_1): Renamed.
4150 (cp_parser_asm_operand_list): Remove redundant setting of
4151 c_lex_string_translate.
4152 (cp_parser_primary_expression) [CPP_STRING, CPP_WSTRING]:
4153 Handle chained strings.
4154
4155 2004-06-12 Andrew Pinski <apinski@apple.com>
4156
4157 PR c++/14639
4158 Revert:
4159 2004-06-02 Andrew Pinski <pinskia@physics.uc.edu>
4160
4161 * cp-tree.h: Fix typo.
4162
4163 * cp-tree.h: Include cgraph.h
4164 (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
4165 TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
4166
4167 2004-06-12 Jason Merrill <jason@redhat.com>
4168
4169 PR tree-optimization/14107
4170 * decl.c (finish_function): Warn about no return in all functions.
4171
4172 2004-06-15 Paolo Bonzini <bonzini@gnu.org>
4173
4174 * cp-tree.h (struct language_function): Remove cannot_inline.
4175 * decl.c (save_function_data): cannot_inline is no more.
4176 (cxx_push_function_context): Likewise.
4177 * decl2.c (start_objects, start_static_storage_duration_function):
4178 Reset DECL_INLINE, set DECL_UNINLINABLE.
4179
4180 2004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4181
4182 PR c++/15967
4183 * search.c (lookup_field): Propagate the ambiguity list.
4184 (lookup_fnfields): Likewise.
4185
4186 2004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4187
4188 PR c++/15947
4189 * parser.c (cp_parser_template_name): Ctors/dtors never need a
4190 template keyword to disambiguate.
4191
4192 2004-06-14 Mark Mitchell <mark@codesourcery.com>
4193
4194 PR c++/15096
4195 * decl.c (grokdeclarator): Ignore pointer-to-members when
4196 computing template depth.
4197
4198 PR c++/14930
4199 * name-lookup.c (pushtag): Do not try to put class declarations in
4200 explicit specialization scopes.
4201
4202 2004-06-11 Andrew Pinski <pinskia@physics.uc.edu>
4203
4204 * decl.c (grokdeclarator): Do not depend on C99's _Bool's behavior.
4205
4206 2004-06-11 Mark Mitchell <mark@codesourcery.com>
4207
4208 PR c++/15862
4209 * name-lookup.c (unqualified_namespace_lookup): Do not ignore type
4210 bindings for undeclared built-ins.
4211
4212 2004-06-11 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4213
4214 * typeck2.c (abstract_virtual_errors): Reword diagnostics, make them
4215 appear at the correct location.
4216
4217 2004-06-10 Jason Merrill <jason@redhat.com>
4218
4219 PR c++/15875
4220 Revert:
4221 2004-06-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4222 * init.c (build_offset_ref): Build SCOPE_REF with non-null
4223 TREE_TYPE for non-dependent names.
4224 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
4225 unknown_type_node as its TREE_TYPE.
4226 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
4227 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
4228 (dump_expr) <SCOPE_REF case>: Likewise.
4229
4230 2004-06-10 Mark Mitchell <mark@codesourcery.com>
4231
4232 PR c++/15227
4233 * parser.c (cp_parser_direct_declarator): Robustify.
4234
4235 PR c++/15877
4236 * pt.c (tsubst_copy): Use decl_constant_value on enumeration
4237 constants in non-dependent contexts.
4238
4239 PR c++/14211
4240 PR c++/15076
4241 * typeck.c (build_static_cast): Wrap casts in NON_LVALUE_EXPR when
4242 necessary.
4243
4244 2004-06-10 Jakub Jelinek <jakub@redhat.com>
4245
4246 PR c++/14791
4247 * decl.c (duplicate_decls): Handle fileptr_type_node arguments
4248 specially.
4249
4250 2004-06-09 Mark Mitchell <mark@codesourcery.com>
4251
4252 Revert:
4253 PR c++/15815
4254 2004-06-07 Mark Mitchell <mark@codesourcery.com>
4255 * lex.c (handle_pragma_interface): Deprecate.
4256 (handle_pragma_implementation): Likewise.
4257
4258 2004-06-09 Andrew Pinski <pinskia@physics.uc.edu>
4259
4260 * g++spec.c (lang_specific_driver): Remove check for -lm
4261 and -lmath when check it see if it was the math library.
4262
4263 2004-06-08 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4264
4265 PR c++/7841
4266 * parser.c (cp_parser_direct_declarator): Reject constructor named
4267 as qualified template-id.
4268
4269 2004-06-07 Mark Mitchell <mark@codesourcery.com>
4270
4271 PR c++/15815
4272 * lex.c (handle_pragma_interface): Deprecate.
4273 (handle_pragma_implementation): Likewise.
4274
4275 2004-06-07 Mark Mitchell <mark@codesourcery.com>
4276
4277 PR c++/15766
4278 * parser.c (cp_parser_iteration_statement): Fix typo in error
4279 message.
4280
4281 PR c++/14777
4282 * pt.c (tsubst_default_argument): Do not defer access checks
4283 while substituting into the default argument.
4284
4285 PR c++/15554
4286 * pt.c (tsubst_copy): Do not try to substitute for an enumeration
4287 constant in a non-dependent context.
4288
4289 PR c++/15057
4290 * except.c (build_throw): Ensure that temp_expr has been
4291 initialized.
4292
4293 2004-06-06 Roger Sayle <roger@eyesopen.com>
4294
4295 * cp/cp-tree.h (lvalue_or_else): Add function prototype.
4296
4297 2004-06-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4298
4299 PR c++/15503
4300 * parser.c (cp_parser_mem_initializer_id): Gracefully reject
4301 'typename', and accept 'template'.
4302
4303 2004-06-03 Andrew Pinski <pinskia@physics.uc.edu>
4304 Jan Hubicka <jh@suse.cz>
4305
4306 PR c++/14639
4307 * method.c (use_think): Do not mark thunk as referenced.
4308
4309 2004-06-03 Matt Austern <austern@apple.com>
4310
4311 PR c++/15428
4312 * decl2.c (maybe_emit_vtables): If TARGET_WEAK_NOT_IN_ARCHIVE_TOC
4313 is nonzero, and if we see a noninline definition of a key method,
4314 make the vtables nonweak.
4315
4316 2004-06-02 Matt Austern <austern@apple.com>
4317
4318 * cp-tree.h (instantiate_decl): new boolean parameter,
4319 undefined_ok. Current behavior is equivalent to its being 0.
4320 * decl2.c (mark_used): Add new argument when calling instantiate_decl
4321 * pt.c (mark_decl_instantiated): Unconditionally make
4322 instantiations explicit unconditionally
4323 (do_decl_instantiation): Don't call SET_DECL_EXPLICIT_INSTANTIATION,
4324 since mark_decl_instantiated now does it.
4325 (instantiate_class_member): New. Instantiate a member of an
4326 explicitly instantiated class template.
4327 (do_type_instantiation): Explicitly instantiate members of an
4328 explicitly instantiated class template.
4329 (instantiate_decl): if undefined_ok is nonzero, and if we're
4330 trying to explicitly instantiated a template with no definition,
4331 change it to an implicit instantiation.
4332 (instantiate_pending_templates): Add new argument to instantiate_decl.
4333 * tree.c (cp_cannot_inline_tree_fn): Likewise.
4334
4335 2004-06-02 Andrew Pinski <pinskia@physics.uc.edu>
4336
4337 * cp-tree.h: Fix typo.
4338
4339 * cp-tree.h: Include cgraph.h
4340 (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
4341 TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
4342
4343 2004-06-01 Jason Merrill <jason@redhat.com>
4344
4345 PR c++/15142
4346 * call.c (call_builtin_trap): Remove type parm.
4347 (convert_arg_to_ellipsis): Change a non-POD argument to integer type.
4348 (build_x_va_arg): Dereference a null pointer for a non-POD argument.
4349
4350 2004-06-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4351
4352 PR c++/13092
4353 * init.c (build_offset_ref): Build SCOPE_REF with non-null
4354 TREE_TYPE for non-dependent names.
4355 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
4356 unknown_type_node as its TREE_TYPE.
4357 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
4358 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
4359 (dump_expr) <SCOPE_REF case>: Likewise.
4360
4361 2004-06-01 Richard Henderson <rth@redhat.com>
4362 Andrew Pinski <pinskia@physics.uc.edu>
4363
4364 * lex.c (reswords): Rename "__offsetof" to "__builtin_offsetof".
4365 * parser.c (struct cp_parser): Remove in_offsetof.
4366 (cp_parser_new): Don't set it.
4367 (cp_parser_unary_expression): Don't check it.
4368 (cp_parser_postfix_open_square_expression): Split out from ...
4369 (cp_parser_postfix_expression): ... here.
4370 (cp_parser_postfix_dot_deref_expression): Likewise.
4371 (cp_parser_builtin_offsetof): New.
4372 (cp_parser_primary_expression): Use it.
4373
4374 2004-06-01 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4375
4376 PR c++/14932
4377 * parser.c (cp_parser_postfix_expression): Allow subscript
4378 operator in offsetof.
4379
4380 2004-05-31 Mark Mitchell <mark@codesourcery.com>
4381
4382 PR c++/15701
4383 * friend.c (add_friend): Do not try to perform access checks for
4384 functions from dependent classes.
4385
4386 2004-05-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
4387
4388 * cxx-pretty-print.c (pp_cxx_colon_colon): Expor.
4389 (pp_cxx_begin_template_argument_list): Turn into a function.
4390 (pp_cxx_end_template_argument_list): Likewise.
4391 (pp_cxx_separate_with): Define.
4392 (pp_cxx_unqualified_id): Tidy.
4393 (pp_cxx_primary_expression): Likewise.
4394 (pp_cxx_postfix_expression): Likewise.
4395 (pp_cxx_expression): Likewise.
4396 (pp_cxx_simple_type_specifier): Likewise.
4397 (pp_cxx_type_specifier_seq): Likewise.
4398 (pp_cxx_parameter_declaration_clause): Likewise.
4399 (pp_cxx_exception_specification): Likewise.
4400 (pp_cxx_direct_declarator): Likewise.
4401 (pp_cxx_type_id): Likewise.
4402 * cxx-pretty-print.h (pp_cxx_whitespace): Export from
4403 cxx-pretty-print.c.
4404 (pp_cxx_left_paren): Likewise.
4405 (pp_cxx_right_paren): Likewise.
4406 (pp_cxx_left_brace): Likewise.
4407 (pp_cxx_right_brace): Likewise.
4408 (pp_cxx_left_bracket): Likewise.
4409 (pp_cxx_right_bracket): Likewise.
4410 (pp_cxx_dot): Likewise.
4411 (pp_cxx_identifier): Likewise.
4412 (pp_cxx_tree_identifier): Likewise.
4413 (pp_cxx_ampersand): New macro.
4414 (pp_cxx_star): Likewise.
4415 (pp_cxx_arrow): Likewise.
4416 (pp_cxx_semicolon): Likewise.
4417 (pp_cxx_complement): Likewise.
4418 (pp_cxx_begin_template_argument_list): Declaree.
4419 (pp_cxx_end_template_argument_list): Likewise.
4420 (pp_cxx_colon_colon): likewise.
4421
4422 2004-05-31 Eric Botcazou <ebotcazou@libertysurf.fr>
4423
4424 * parser.c (cp_parser_simple_type_specifier): Explicitly test
4425 against NULL_TREE.
4426
4427 2004-05-31 Kazu Hirata <kazu@cs.umass.edu>
4428
4429 * call.c, class.c, cp-tree.def, decl2.c, name-lookup.c, pt.c,
4430 typeck.c: Fix comment formatting.
4431
4432 2004-05-30 Andrew Pinski <pinskia@physics.uc.edu>
4433
4434 * cp-lang.c (cp_expand_decl): Remove.
4435 (LANG_HOOKS_EXPAND_DECL): Use c_expand_decl.
4436
4437 2004-05-30 Andreas Jaeger <aj@suse.de>
4438
4439 * lang-specs.h: Add missing initializers for .ii.
4440
4441 2004-05-28 Aldy Hernandez <aldyh@redhat.com>
4442
4443 * decl.c (cp_make_fname_decl): Free return value from
4444 fname_as_string.
4445
4446 2004-05-28 Mark Mitchell <mark@codesourcery.com>
4447
4448 PR c++/15083
4449 * decl2.c (delete_sanity): Set TREE_SIDE_EFFECTS on a DELETE_EXPR,
4450 even in a templat.e
4451 * init.c (build_new): Likewise.
4452
4453 PR c++/15640
4454 * name-lookup.c (arg_assoc): Robustify.
4455
4456 PR c++/15471
4457 * typeck.c (unary_complex_lvalue): Use context_for_name_lookup
4458 when determining the scope to use for a pointer to member.
4459 (lookup_anon_field): Give it external linkage.
4460 * cp-tree.h (lookup_anon_field): Declare it.
4461 * expr.c (cplus_expand_constant): Use it.
4462
4463 2004-05-28 Mark Mitchell <mark@codesourcery.com>
4464
4465 PR c++/14668
4466 * parser.c (cp_parser_simple_type_specifier): Call
4467 maybe_note_name_used_in_class.
4468
4469 2004-05-28 Tom Marshall <tmarshall@real.com>
4470
4471 PR c++/15214
4472 * class.c (finish_struct_1): Warn only if the dtor is non-private or
4473 the class has friends.
4474
4475 2004-05-27 Adam Nemet <anemet@lnxw.com>
4476
4477 PR c++/12883
4478 * decl.c (complete_array_type): Set TYPE_NEEDS_CONSTRUCTING and
4479 TYPE_HAS_NONTRIVIAL_DESTRUCTOR based on the underlying type.
4480
4481 2004-05-24 Geoffrey Keating <geoffk@apple.com>
4482
4483 * method.c (implicitly_declare_fn): Don't call defer_fn; abort
4484 if it might be needed.
4485 * pt.c (mark_decl_instantiated): Only call defer_fn if
4486 the function actually needs processing in finish_file.
4487 * decl2.c (finish_file): Add check that elements in
4488 deferred_fns_used are really needed there. Remove unnecessary
4489 test of DECL_SAVED_TREE.
4490
4491 2004-05-23 Paolo Bonzini <bonzini@gnu.org>
4492
4493 * Make-lang.in: No need to specify $(LIBCPP).
4494
4495 2004-05-23 Mark Mitchell <mark@codesourcery.com>
4496
4497 PR c++/15044
4498 * parser.c (cp_parser_class_head): Robustify.
4499
4500 PR c++/15317
4501 * parser.c (cp_parser_decl_specifier_seq): Correct error in
4502 comment.
4503 (cp_parser_constructor_declarator_p): Treat attributes
4504 as decl-specifiers.
4505
4506 PR c++/15329
4507 * typeck.c (build_unary_op): Do not attempt to resolve casts to
4508 base classes in templates.
4509
4510 2004-05-23 Mark Mitchell <mark@codesourcery.com>
4511
4512 PR c++/15165
4513 * pt.c (instantiate_template): Robustify.
4514
4515 2004-05-23 Mark Mitchell <mark@codesourcery.com>
4516
4517 PR c++/15025
4518 * decl.c (xref_tag): Issue errors about redeclaring template
4519 classes as non-template classes.
4520
4521 2004-05-23 Mark Mitchell <mark@codesourcery.com>
4522
4523 PR c++/14821
4524 * name-lookup.c (supplement_binding): Allow redefinitions of
4525 namespace aliases.
4526
4527 PR c++/14883
4528 * parser.c (cp_parser_template_argument): Robustify.
4529
4530 2004-05-23 Gabriel Dos Reis <gdr@integrable-solutions.net>
4531
4532 * class.c (alter_access): Use %E format specifier to print an
4533 identifier node. Avoid looking at the IDENTIFIER_POINTER.
4534 (push_lang_context): Likewise.
4535 * decl.c (lookup_label): Likewise.
4536 (grokdeclarator): Likewise.
4537 * parser.c (cp_parser_check_for_invalid_template_id): Likewise.
4538 * pt.c (do_type_instantiation): Likewise.
4539 * tree.c (handle_java_interface_attribute): Likewise.
4540 (handle_com_interface_attribute): Likewise.
4541 (handle_init_priority_attribute): Likewise.
4542
4543 2004-05-22 Mark Mitchell <mark@codesourcery.com>
4544
4545 PR c++/15285
4546 PR c++/15299
4547 * pt.c (build_non_dependent_expr): Expand the set of tree nodes
4548 recognized as overloaded functions.
4549
4550 2004-05-22 Mark Mitchell <mark@codesourcery.com>
4551
4552 PR c++/15507
4553 * class.c (layout_nonempty_base_or_field): Do not try to avoid
4554 layout conflicts for unions.
4555
4556 PR c++/15542
4557 * typeck.c (build_x_unary_op): Instantiate template class
4558 specializations before looking for "operator &".
4559
4560 PR c++/15427
4561 * typeck.c (complete_type): Layout non-dependent array types, even
4562 in templates.
4563
4564 PR c++/15287
4565 * typeck.c (build_unary_op): Do not optimize "&x[y]" when in a
4566 template.
4567
4568 2004-05-22 Roger Sayle <roger@eyesopen.com>
4569
4570 * name-lookup.c (check_for_out_of_scope_variable): Avoid ICE by
4571 returning when TREE_TYPE is error_mark_node.
4572 * typeck.c (require_complete_type): Return error_mark_node if
4573 value's type is an error_mark_node.
4574
4575 2004-05-20 Andrew Pinski <pinskia@physics.uc.edu>
4576
4577 * optimize.c (calls_setjmp_r): Remove.
4578 (calls_setjmp_p): Remove.
4579 * cp-tree.c (calls_setjmp_p): Remove.
4580 * decl.c (finish_function): Do not call calls_setjmp_p.
4581
4582 2004-05-18 Zack Weinberg <zack@codesourcery.com>
4583
4584 * decl.c (cp_finish_decl): Use mark_decl_referenced.
4585 * decl2.c (maybe_make_one_only): Likewise.
4586 * method.c (use_thunk): Likewise.
4587
4588 2004-05-18 Jason Merrill <jason@redhat.com>
4589
4590 * class.c (build_base_path): Tidy a bit.
4591
4592 2004-05-14 Geoffrey Keating <geoffk@apple.com>
4593
4594 * name-lookup.c (struct scope_binding): New.
4595 (EMPTY_SCOPE_BINDING): New.
4596 (lookup_using_namespace): Take a scope_binding instead of a
4597 cxx_binding.
4598 (qualified_lookup_using_namespace): Likewise.
4599 (cxx_binding_clear): Delete.
4600 (do_nonmember_using_decl): Use a scope_binding instead of a
4601 cxx_binding.
4602 (lookup_tag): Don't call select_decl.
4603 (ambiguous_decl): Don't return anything (and change callers to match).
4604 Take a scope_binding as the second parameter.
4605 (lookup_namespace_name): Use a scope_binding instead of a
4606 cxx_binding.
4607 (unqualified_namespace_lookup): Likewise.
4608 (lookup_qualified_name): Likewise.
4609 (select_decl): Take a scope_binding instead of a cxx_binding.
4610 Use macros rather than hand-coding tests for type-ness.
4611
4612 2004-05-13 Diego Novillo <dnovillo@redhat.com>
4613
4614 * cp-gimplify.c: Rename from cp-simplify.c.
4615 * Make-lang.in, optimize.c: Update.
4616
4617 2004-05-13 Diego Novillo <dnovillo@redhat.com>
4618
4619 Merge from tree-ssa-20020619-branch. See
4620 ChangeLog.tree-ssa for details.
4621
4622 * Make-lang.in, call.c, class.c, cp-lang.c, cp-tree.def,
4623 cp-tree.h, cvt.c, decl.c, decl2.c, error.c, except.c,
4624 expr.c, init.c, name-lookup.h, optimize.c, parser.c,
4625 pt.c, rtti.c, semantics.c, tree.c, typeck.c, typeck2.c:
4626 Merged.
4627 * cp-mudflap.c: New file.
4628 * cp-simplify.c:: New file.
4629
4630 2004-05-03 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4631
4632 PR c++/14389
4633 * decl2.c (check_classfn): For member templates, compare also the
4634 template parameters to match the declaration.
4635 * cp-tree.h: Adjust declaration of check_classfn.
4636 * decl.c (start_decl, grokfndecl): Adjust callers of check_classfn.
4637 * friend.c (do_friend): Likewise.
4638 * pt.c (tsubst_friend_function): Likewise.
4639
4640 2004-05-01 Zack Weinberg <zack@codesourcery.com>
4641
4642 * decl.c (reshape_init): Do not apply TYPE_DOMAIN to a VECTOR_TYPE.
4643 Instead, dig into the representation type to find the array bound.
4644
4645 2004-04-30 Jason Merrill <jason@redhat.com>
4646
4647 Refer to base members using COMPONENT_REFs where possible.
4648 * class.c (build_simple_base_path): New fn.
4649 (build_base_path): Use it for non-virtual base references.
4650 (layout_class_type): Change base fields to their real type
4651 after layout is done.
4652 * cp-tree.h (IS_FAKE_BASE_TYPE): New macro.
4653 * cp-lang.c (cxx_get_alias_set): Use it.
4654
4655 2004-04-30 Kazu Hirata <kazu@cs.umass.edu>
4656
4657 * class.c, cp-tree.h, decl.c, decl2.c, pt.c, rtti.c: Fix
4658 comment typos.
4659
4660 2004-04-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4661
4662 PR c++/15064
4663 * parser.c (cp_parser_postfix_expression): typeid operator cannot be
4664 used in integral constant expressions.
4665
4666 2004-04-22 Mark Mitchell <mark@codesourcery.com>
4667
4668 * init.c (build_aggr_init): Fix accidental use of C99 construct in
4669 previous change.
4670
4671 * class.c (initialize_array): Don't set TREE_HAS_CONSTRUCTOR on
4672 braced initializer.
4673 * cp-tree.h (BRACE_ENCLOSED_INITIALIZER_P): New macro.
4674 * decl.c (reshape_init): Use it.
4675 * init.c (perform_member_init): Remove redundant condition.
4676 (build_aggr_init): Adjust to handle brace-enclosed initializers
4677 correctly.
4678 (expand_default_init): Use BRACE_ENCLOSED_INITIALIZER_P.
4679
4680 * parser.c (cp_parser_initializer_clause): Do not set
4681 TREE_HAS_CONSTRUCTOR on the initializer.
4682 * rtti.c (tinfo_base_init): Likewise.
4683 (generic_initializer): Likewise.
4684 (ptr_initializer): Likewise.
4685 (ptm_initializer): Likewise.
4686 (class_initializer): Likewise.
4687 (get_pseudo_ti_init): Likewise.
4688 * typeck2.c (digest_init): Use BRACE_ENCLOSED_INITIALIZER_P.
4689
4690 2004-04-22 Alan Modra <amodra@bigpond.net.au>
4691
4692 * name-lookup.c (anonymous_namespace_name): Make static.
4693
4694 2004-04-19 Roger Sayle <roger@eyesopen.com>
4695
4696 PR middle-end/14531
4697 * class.c (build_base_path): Call fold whilst building the NULL
4698 pointer check expression trees.
4699
4700 2004-04-15 Bryce McKinlay <mckinlay@redhat.com>
4701
4702 * init.c (build_new_1): Don't use type size argument for Java
4703 _Jv_AllocObject call.
4704
4705 2004-04-09 Danny Smith <dannysmith@users.sourceforge.net>
4706
4707 * method.c (make_alias_for_thunk): Remove preprocessor guard on
4708 declaration and definition.
4709
4710 2004-04-08 Danny Smith <dannysmith@users.sourceforge.net>
4711
4712 PR c++/14808
4713 * method.c (use_thunk): Test TARGET_USE_LOCAL_THUNK_ALIAS_P rather
4714 than ASM_OUTPUT_DEF.
4715
4716 2004-04-08 Jakub Jelinek <jakub@redhat.com>
4717
4718 * decl2.c (mark_used): Don't segfault if cfun != NULL but
4719 current_function_decl == NULL.
4720
4721 2004-04-05 Nathan Sidwell <nathan@codesourcery.com>
4722
4723 PR c++/3518
4724 * pt.c (check_cv_quals_for_unify): Ignore bogus CV quals at outer
4725 level.
4726
4727 2004-04-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4728
4729 * init.c (decl_constant_value): Don't look at DECL_INITIAL
4730 of PARM_DECL.
4731 * tree.c (bot_manip, build_min): Don't look at TREE_CONSTANT
4732 or TREE_SIDE_EFFECTS of a type.
4733
4734 2004-04-02 Nathan Sidwell <nathan@codesourcery.com>
4735
4736 PR c++/14007
4737 * pt.c (check_cv_quals_for_unify): Correct logic for disallowed
4738 cv-qualifier unification.
4739 * tree.c (cp_build_qualified_type_real): Renable DR295 logic.
4740
4741 2004-04-02 Jan Hubicka <jh@suse.cz>
4742
4743 * cp-lang. (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Define.
4744 * cp-tree.h (cp_update_decl_after_saving): Declare.
4745 * tree.c (cp_update_decl_after_saving): Define.
4746
4747 2004-04-01 Mark Mitchell <mark@codesourcery.com>
4748
4749 PR c++/14803
4750 * typeck.c (get_delta_difference): Call fold before returning the
4751 value.
4752
4753 2004-04-01 Richard Henderson <rth@redhat.com>
4754
4755 PR c++/14804
4756 * decl.c (cp_finish_decl): Preserve TREE_READONLY more often.
4757 * typeck2.c (split_nonconstant_init): Clear TREE_READONLY.
4758
4759 2004-04-01 Mark Mitchell <mark@codesourcery.com>
4760
4761 PR c++/14810
4762 * name-lookup.c (maybe_push_cleanup_level): Robustify.
4763
4764 2004-04-01 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4765
4766 * class.c (VTT_TOP_LEVEL_P): Use unsigned_flag directly.
4767
4768 2004-03-31 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4769
4770 * call.c (joust): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
4771 * class.c (check_bitfield_decl): Likewise.
4772 * cvt.c (type_promotes_to): Likewise.
4773 * decl.c (finish_enum): Likewise.
4774 * mangle.c (write_builtin_type): Likewise.
4775 * semantics.c (finish_switch_cond, finish_unary_op_expr): Likewise.
4776 * typeck.c (type_after_usual_arithmetic_conversions): Likewise.
4777 (build_binary_op): Likewise.
4778
4779 2004-03-31 Jan Hubicka <jh@suse.cz>
4780
4781 * tree.h (optimize_function): Kill prototype.
4782 * optimize.c (dump_function, optimize_function, dump_finction): Kill.
4783 * semantics.c (expand_body): Kill.
4784
4785 2004-03-30 Mark Mitchell <mark@codesourcery.com>
4786
4787 PR c++/14724
4788 * decl.c (start_decl_1): Do not decide whether or not to create a
4789 new cleanup level until after the type has been completed.
4790
4791 PR c++/14763
4792 * pt.c (tsubst_default_argument): Clear current_function_decl.
4793
4794 2004-03-30 Zack Weinberg <zack@codesourcery.com>
4795
4796 * name-lookup.c, parser.c: Use new shorter form of GTY markers.
4797
4798 2004-03-29 Zack Weinberg <zack@codesourcery.com>
4799
4800 * error.c (dump_function_name): If T's DECL_LANG_SPECIFIC
4801 is null, just print the literal name and return.
4802
4803 2004-03-25 Kazu Hirata <kazu@cs.umass.edu>
4804
4805 * cxx-pretty-print.c: Fix comment typos.
4806
4807 2004-03-24 Kazu Hirata <kazu@cs.umass.edu>
4808
4809 * cxx-pretty-print.c, cxx-pretty-print.h, decl.h, friend.c:
4810 Update copyright.
4811
4812 2004-03-23 Ziemowit Laski <zlaski@apple.com>
4813
4814 * Make-lang.in (cp/mangle.o): Depend on $(TARGET_H).
4815 * mangle.c (write_type): Add call to 'mangle_fundamental_type'
4816 target hook.
4817
4818 2004-03-23 Zack Weinberg <zack@codesourcery.com>
4819
4820 PR 12267, 12391, 12560, 13129, 14114, 14133
4821 * cp-lang.c (c_reset_state): Delete.
4822 (push_file_scope, pop_file_scope): New stubs.
4823 * parser.c (c_parse_file): Call sorry() here if called more than once.
4824
4825 2004-03-23 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4826
4827 * typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
4828 for INTEGER_CST.
4829
4830 2004-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
4831
4832 * cxx-pretty-print.c (pp_cxx_parameter_declaration_clause): Declare.
4833
4834 2004-03-21 Gabriel Dos Reis <gdr@integrable-solutions.net>
4835
4836 * error.c (enum pad): Remove.
4837 (dump_qualifiers): Likewise.
4838 (dump_type): Replace dump_qualifiers with pp_cxx_cv_qualifier_seq.
4839 (dump_aggr_type): Likewise.
4840 (dump_type_suffix): Likewise.
4841 (dump_simple_decl): Likewise.
4842 (dump_function_decl): Likewise.
4843 (cv_to_string): Likewise.
4844 (dump_type_prefix): Likewise. Adjust return void.
4845 * cxx-pretty-print.c (pp_cxx_cv_qualifier_seq): Move to
4846 cxx_pretty_print.h.
4847 (pp_cxx_template_keyword_if_needed): Document.
4848 (pp_cxx_qualified_id): Document case FUNCTION_DECL. Tidy.
4849 (pp_cxx_expression): Handle NON_DEPENDENT_EXPR and
4850 MUST_NOT_THROW_EXPR.
4851
4852 2004-03-21 Mark Mitchell <mark@codesourcery.com>
4853
4854 PR c++/14616
4855 * decl.c (cp_finish_decl): Compute the size of arrays declared in
4856 templates, if their type is non-dependent.
4857
4858 2004-03-19 Mark Mitchell <mark@codesourcery.com>
4859
4860 * call.c (build_op_delete_call): Do not forget the placement
4861 arguments when iterating through mutiple delete operators.
4862
4863 * cp-tree.h (svaed_scope): Remove last_parms.
4864 (NEW_DELETE_OPNAME_P): New macro.
4865 (last_function_parms): Remove.
4866 (do_friend): Adjust prototype.
4867 * decl.c (grokparms): Return the PARM_DECLs directly, rather than
4868 using last_function_parms.
4869 (grokfndecl): Take the PARM_DECLs as an argument, rather than
4870 using last_function_parms.
4871 (grokdeclarator): Adjust accordingly. Do not form METHOD_TYPEs
4872 for class-specific operator new and operator delete.
4873 (grok_op_properties): Do not look for allocation functions with
4874 METHOD_TYPEs.
4875 (start_function): Use DECL_ARGUMENTS instead of
4876 last_function_parms.
4877 * decl.h (last_function_parms): Do not declare.
4878 * decl2.c (grokclassfn): Do not use last_function_parms.
4879 * friend.c (do_friend): Remove parmdecls parameter.
4880 * name-lookup.c (push_to_top_level): Do not save last_function_parms.
4881 (pop_from_top_level): Do not restore it.
4882 * pt.c (check_explicit_specialization): Do not adjust
4883 last_function_parms.
4884
4885 * name-lookup.c (do_local_using_decl): Create a local binding for
4886 types brought in via using declarations.
4887
4888 * name-lookup.c (lookup_arg_dependent): Handle block-scope
4889 function declarations correctly.
4890
4891 * semantics.c (finish_id_expression): Correct handling of
4892 conversion operators to dependent types.
4893
4894 * typeck.c (lookup_destructor): Allow the use of destructors from
4895 base classes.
4896
4897 2004-03-19 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4898
4899 * cxx-pretty-print.c (pp_cxx_unqualified_id): Use
4900 TEMPLATE_TYPE_PARM_INDEX instead of TYPE_FIELDS.
4901 * search.c (dfs_unuse_fields): Add two more TREE_CODES that mean
4902 the field is named TEMPLATE_TYPE_PARM_INDEX.
4903
4904 2004-03-19 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4905
4906 PR c++/14545
4907 * parser.c (cp_parser_functional_cast): A cast to anything
4908 but integral or enumaration type is not an integral constant
4909 expression.
4910 * pt.c (value_dependent_expression_p): Handle cast expressions
4911 without operands (such as "int()").
4912
4913 2004-03-18 Mark Mitchell <mark@codesourcery.com>
4914
4915 * semantics.c (finish_pseudo_destructor_expr): Allow differing
4916 cv-qualification between the type named by the
4917 pseudo-destructor-name and the object-type.
4918
4919 * search.c (accessible_base_p): Handle non-proper bases.
4920
4921 * name-lookup.c (do_nonmember_using_decl): If a using declaration
4922 refers to a single overloaded function, set the type of the
4923 function.
4924 * tree.c (lvalue_type): Simplify.
4925 * typeck.c (type_unknown_p): Do not assume all OVERLOADs have an
4926 unknown type.
4927 (build_unary_op): Handle OVERLOADs with known types.
4928
4929 * decl.c (duplicate_decls): Do not destroy DECL_ARGUMENTS for
4930 function templates.
4931
4932 * parser.c (cp_parser_postfix_expression): Handle the use of
4933 "typename" in non-dependent contexts. Convert appropriately when
4934 when using a qualified name after "->" or ".".
4935
4936 * call.c (conditional_conversion): Honor the requirement that some
4937 conversions refer to the original object.
4938
4939 2004-03-18 Mark Mitchell <mark@codesourcery.com>
4940
4941 * call.c (build_conditional_expr): Do not call force_rvalue for
4942 operands of void_type when the conditional expression itself has
4943 void type.
4944 * name-lookup.c (pushdecl): Don't consider a declaration of a
4945 function named "main" to be an overload of a type named "main".
4946 * parser.c (cp_parser_template_name): Perform name lookup when the
4947 template name is proceeded by "template" if the qualifying scope
4948 is non-dependent.
4949 * typeck.c (composite_pointer_type_r): Correctly handle
4950 pointer-to-member types.
4951 (build_const_cast): Likewise.
4952
4953 2004-03-18 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4954
4955 * cp-tree.def (TEMPLATE_TYPE_PARM, TYPEOF_TYPE): Update comments.
4956 * cp-tree.h (NEW_EXPR_USE_GLOBAL, DELETE_EXPR_USE_GLOBAL): Add check.
4957 (DELETE_EXPR_USE_VEC, COMPOUND_EXPR_OVERLOADED): Likewise.
4958 (KOENIG_LOOKUP_P, PTRMEM_OK_P, TEMPLATE_TYPE_PARM_INDEX): Likewise.
4959 (TYPENAME_TYPE_FULLNAME): Add check and use type.values.
4960 (TYPEOF_TYPE_EXPR): New macro.
4961 * class.c (finish_struct_bits): Use TYPE_VFIELD and TYPE_METHODS.
4962 * error.c (dump_type): Use TYPEOF_TYPE_EXPR.
4963 * pt.c (tsubst): Likewise.
4964 * semantics.c (finish_typeof): Likewise.
4965 * search.c (dfs_unuse_fields): Handle TYPENAME_TYPE, TYPEOF_TYPE,
4966 and TEMPLATE_TYPE_PARM.
4967 * typeck.c (comptypes): Use TYPE_ORIG_SIZE_TYPE, not TYPE_DOMAIN.
4968 (build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES.
4969
4970 2004-03-16 Mark Mitchell <mark@codesourcery.com>
4971
4972 PR c++/14586
4973 * cp-tree.h (build_new_op): Change prototype.
4974 (build_x_binary_op): Likewise.
4975 * call.c (build_new_op): Add overloaded_p parameter.
4976 * decl2.c (grok_array_decl): Adjust call to build_new_op.
4977 * parser.c (cp_parser_binary_expression): Note that uses of
4978 overloaded operators prevents an expression from being considered
4979 an integral constant.
4980 * pt.c (tsubst_copy_and_build): Adjust calls to build_new_op and/or
4981 build_x_binary_op.
4982 * semantics.c (finish_call_expr): Likewise.
4983 * typeck.c (rationalize_conditional_expr): Likewise.
4984 (build_x_indirect_ref): Likewise.
4985 (build_x_binary_op): Likewise.
4986 (build_x_unary_op): Likewise.
4987 (build_x_compound_expr): Likewise.
4988 (build_modify_expr): Likewise.
4989 * typeck2.c (build_x_arrow): Likewise.
4990
4991 2004-03-15 Kazu Hirata <kazu@cs.umass.edu>
4992
4993 * cp-lang.c, ptree.c: Update copyright.
4994
4995 2004-03-13 Mark Mitchell <mark@codesourcery.com>
4996
4997 PR c++/14550
4998 * parser.c (cp_parser_non_integral_constant_expression): Encode
4999 more of the idiom that surrounded calls to this function within
5000 the function itself
5001 (cp_parser_primary_expression): Adjust accordingly.
5002 (cp_parser_postfix_expression): Likewise.
5003 (cp_parser_unary_expression): Likewise.
5004 (cp_parser_cast_expression): Likewise.
5005 (cp_parser_assignment_expression): Likewise.
5006 (cp_parser_expression): Likewise.
5007 (cp_parser_new_expression): Note that new-expressions are not
5008 allowed in integral constant expressions.
5009 (cp_parser_delete_expression): Likewise.
5010
5011 2004-03-12 Matt Austern <austern@apple.com>
5012
5013 * decl2.c (maybe_make_one_only): Look at
5014 TARGET_EXPLICIT_INSTANTIATION_ONE_ONLY when deciding whether
5015 to make an explicit instantiation weak.
5016 * method.c (use_thunk): Make sure we call comdat_linkage
5017 when appropriate.
5018 * pt.c (do_type_instantiation): On systems where weak symbols
5019 don't go in a static archive's TOC, explicit instantiation of a
5020 class must imply *explicit* instantiation of its memeber.
5021
5022 2004-03-11 Kazu Hirata <kazu@cs.umass.edu>
5023
5024 * call.c, cp-tree.h, pt.c: Fix comment typos.
5025
5026 2004-03-10 Mark Mitchell <mark@codesourcery.com>
5027
5028 PR c++/14510
5029 * decl.c (xref_tag): Disregard non-type declarations when
5030 looking up a tagged type.
5031
5032 2004-03-09 Nathan Sidwell <nathan@codesourcery.com>
5033
5034 PR c++/14397
5035 * call.c (convert_like_real): Build a const qualified temporary,
5036 when testing ctor access.
5037
5038 2004-03-09 Mark Mitchell <mark@codesourcery.com>
5039
5040 * call.c (initialize_reference): Fix typo.
5041
5042 2004-03-09 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5043
5044 PR c++/14409
5045 * pt.c (determine_specialization): For member templates, match also
5046 constness.
5047
5048 PR c++/14448
5049 * parser.c (cp_parser_initializer_clause): Fold initializer if it is
5050 non-dependent.
5051 * pt.c (tsubst_copy_and_build): Handle NOP_EXPRs.
5052
5053 2004-03-09 Mark Mitchell <mark@codesourcery.com>
5054
5055 PR c++/14230
5056 * call.c (initialize_reference): Handle initializers that are
5057 class-member access expressions applies to rvalues.
5058
5059 2004-03-09 Mark Mitchell <mark@codesourcery.com>
5060
5061 PR c++/14432
5062 * name-lookup.c (supplement_binding): Ignore functions that are
5063 marked DECL_ANTICIPATED.
5064
5065 2004-03-08 Mark Mitchell <mark@codesourcery.com>
5066
5067 PR c++/14401
5068 * class.c (check_field_decls): Complain about non-static data
5069 members of reference type in unions. Propagate
5070 CLASSTYPE_REF_FIELDS_NEED_INIT and
5071 CLASSTYPE_READONLY_FIELDS_NEED_INIT from the types of non-static
5072 data members.
5073 * init.c (perform_member_init): Complain about mbmers with const
5074 type that are not explicitly initialized.
5075
5076 2004-03-08 Mark Mitchell <mark@codesourcery.com>
5077
5078 * class.c (check_methods): Don't use IDENTIFIER_ERROR_LOCUS.
5079 * cp-tree.h (DECL_INVALID_OVERRIDER_P): New macro.
5080 (lang_identifier): Remove implicit_decl and error_locus.
5081 (IDENTIFIER_IMPLICIT_DECL): Remove.
5082 (SET_IDENTIFIER_IMPLICTI_DECL): Likewise.
5083 (IDENTIFIER_ERROR_LOCUS): Likewise.
5084 (SET_IDENTIFIER_ERROR_LOCUS): Likewise.
5085 (TYPE_ASSEMBLER_NAME_STRING): Likewise.
5086 (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
5087 (implicitly_declare): Remove.
5088 * decl.c (warn_extern_redeclared_static): Remove check of
5089 IDENTIFIER_IMPLICIT_DECL.
5090 (duplicate_decls): Don't check IDENTIFIER_ERROR_LOCUS.
5091 (implicitly_declare): Remove.
5092 (grok_ctor_properties): Don't set IDENTIFIER_ERROR_LOCUS.
5093 (start_function): Don't check IDENTIFIER_IMPLICIT_DECL.
5094 (start_method): Don't check IDENTIFIER_ERROR_LOCUS.
5095 * lex.c (unqualified_name_lookup_error): Create a dummy VAR_DECL
5096 in the innermost scope, rather than at namespace scope.
5097 * name-lookup.c (push_local_binding): Give it external linkage.
5098 (pushdecl): Remove dead code.
5099 * name-lookup.h (push_local_binding): Declare it.
5100 * ptree.c (cxx_print_identifier): Don't print
5101 IDENTIFIER_IMPLICIT_DECL or IDENTIFIER_ERROR_LOCUS.
5102 * search.c (check_final_overrider): Use DECL_INVALID_OVERRIDER_P,
5103 not IDENTIFIER_ERROR_LOCUS.
5104 * typeck.c (build_function_call): Remove dead code.
5105
5106 2004-03-08 Jason Merrill <jason@redhat.com>
5107
5108 PR c++/13170
5109 * decl.c (xref_tag): Remove attribute handling.
5110 * cp-tree.h: Adjust prototype.
5111 * decl.c, parser.c, rtti.c: Adjust callers.
5112 * parser.c (cp_parser_class_head): Pass back attributes in the
5113 class head.
5114 (cp_parser_class_specifier): Adjust.
5115
5116 2004-03-08 Matt Austern <austern@apple.com>
5117
5118 PR debug/14079
5119 * name-lookup.c (add_decl_to_level): Add extern variables, as well
5120 as static, to static_decls array.
5121
5122 2004-03-05 Jason Merrill <jason@redhat.com>
5123
5124 * tree.c (list_hash_pieces): s/TYPE_HASH/TREE_HASH/.
5125
5126 2004-03-04 Geoffrey Keating <geoffk@apple.com>
5127
5128 * decl.c (grokfndecl): Update old incorrect comment.
5129 (grokvardecl): Diagnose C++ variables of type with no linkage.
5130
5131 2004-03-01 Mark Mitchell <mark@codesourcery.com>
5132
5133 PR c++/14369
5134 * pt.c (build_non_dependent_expr): Do not create a
5135 NON_DEPENDENT_EXPR for a THROW_EXPR.
5136
5137 2004-03-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
5138
5139 PR c++/14369
5140 * error.c (dump_expr): Handle THROW_EXPR.
5141
5142 2004-03-01 Mark Mitchell <mark@codesourcery.com>
5143
5144 PR c++/14360
5145 * parser.c (cp_parser_postfix_expression): Do not perform Koenig
5146 lookup if ordinary name-lookup finds a non-function.
5147 * pt.c (tsubst_copy_and_build): Likewise.
5148
5149 PR c++/14361
5150 * parser.c (cp_parser_late_parsing_default_args): Check that there
5151 are no extra tokens after the end of the default-argument
5152 expression.
5153
5154 2004-03-01 Mark Mitchell <mark@codesourcery.com>
5155
5156 PR c++/14324
5157 * lex.c (retrofit_lang_decl): Treat entities with no linkage as
5158 having C++ linkage for name-mangling purposes.
5159
5160 PR c++/14260
5161 * parser.c (cp_parser_direct_declarator): Recognize constructor
5162 declarators that use a template-id to name the class being
5163 constructed.
5164
5165 PR c++/14337
5166 * pt.c (tsubst_qualified_id): Handle dependent qualifying scopes.
5167 (tsubst_expr): Do not call tsubst_copy, even when
5168 processing_template_decl.
5169
5170 2004-03-01 Jeff Law <law@redhat.com>
5171
5172 * init.c (build_vec_delete_1): Convert 2nd argument to NE_EXPR to
5173 the proper type.
5174
5175 2004-02-29 Mark Mitchell <mark@codesourcery.com>
5176
5177 PR c++/14138
5178 * name-lookup.h (push_scope): Change prototype.
5179 * name-lookup.c (push_scope): Do not reenter the current class
5180 scope.
5181 * decl.c (grokfndecl): Check return code from push_scope before
5182 calling pop_scope.
5183 * decl2.c (check_classfn): Likewise.
5184 * parser.c (cp_parser_conversion_function_id): Likewise.
5185 (cp_parser_init_declarator): Likewise.
5186 (cp_parser_direct_declarator): Likewise.
5187 (cp_parser_class_specifier): Likewise.
5188 (cp_parser_class_head): Likewise.
5189 (cp_parser_lookup_name): Likewise.
5190 (cp_parser_constructor_declarator_p): Likewise.
5191 * pt.c (instantiate_class_template): Likewise.
5192 (resolve_typename_type): Likewise.
5193
5194 2004-02-29 Mark Mitchell <mark@codesourcery.com>
5195
5196 PR c++/14267
5197 * typeck.c (build_modify_expr): Remove more of the cast-as-lvalue
5198 extension.
5199
5200 PR debug/12103
5201 * class.c (update_vtable_entry_for_fn): Do not go through
5202 covariance machinery if the type returned by an overrider is the
5203 same as the original.
5204
5205 2004-02-29 Kazu Hirata <kazu@cs.umass.edu>
5206
5207 * call.c: Fix a comment typo.
5208
5209 2004-02-27 Ziemowit Laski <zlaski@apple.com>
5210
5211 * tree.c (pod_type_p): Treat VECTOR_TYPEs as PODs.
5212
5213 2004-02-26 Mark Mitchell <mark@codesourcery.com>
5214
5215 PR c++/14278
5216 * parser.c (cp_parser_parameter_declaration_list): Commit
5217 to fewer tentative parses.
5218
5219 2004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5220
5221 PR c++/14284
5222 * pt.c (dependent_type_p_r): A template template parameter is a
5223 dependent type.
5224
5225 2004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5226
5227 PR c++/14246
5228 * mangle.c (write_template_arg_literal): Don't rely on identity for
5229 boolean constants.
5230
5231 2004-02-24 Jason Merrill <jason@redhat.com>
5232
5233 * tree.c (build_exception_variant): Use check_qualified_type.
5234
5235 2004-02-23 Zack Weinberg <zack@codesourcery.com>
5236 Kazu Hirata <kazu@cs.umass.edu>
5237
5238 * decl.c (cxx_init_decl_processing): Don't check
5239 flag_writable_strings.
5240
5241 2004-02-23 Andrew Pinski <pinskia@physics.uc.edu>
5242
5243 PR c++/14156
5244 * typeck.c (maybe_warn_about_returning_address_of_location):
5245 Change check for VAR_DECL to use DECL_P instead.
5246
5247 2004-02-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5248
5249 PR c++/14250
5250 * cvt.c (build_expr_type_conversion): Type must be complete before
5251 looking up for conversions.
5252
5253 2004-02-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5254
5255 PR c++/14143
5256 * name-lookup.c (arg_assoc_class): Don't look into template
5257 arguments if it is not a primary template.
5258
5259 2004-02-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
5260
5261 PR c++/12007
5262 * method.c (use_thunk): Always clone function argument tree.
5263
5264 2004-02-20 Mark Mitchell <mark@codesourcery.com>
5265
5266 PR c++/14199
5267 * pt.c (tsubst_copy): Call mark_used for a PARM_DECL.
5268
5269 PR c++/14173
5270 * semantics.c (begin_class_definition): Set TYPE_PACKED correctly
5271 for all type variants.
5272
5273 2004-02-19 Mark Mitchell <mark@codesourcery.com>
5274
5275 PR c++/13927
5276 * decl.c (duplicate_decls): Return error_mark_node for invalid
5277 redeclarations.
5278 * name-lookup.c (push_namespace): Ignore the return value from
5279 pushdecl.
5280 * pt.c (push_template_decl_real): Robustify.
5281
5282 PR c++/14186
5283 * name-lookup.c (push_class_level_binding): Do not complain about
5284 adding a binding for a member whose name is the same as the
5285 enclosing class if the member is located in a base class of the
5286 current class.
5287
5288 2004-02-19 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5289
5290 PR c++/14181
5291 * parser.c (cp_parser_new_expression): Parse an ill-formed
5292 direct-new-declarator after a parenthesized type-id to emit good
5293 diagnostic.
5294
5295 2004-02-18 Kazu Hirata <kazu@cs.umass.edu>
5296
5297 * cp-tree.def, cvt.c: Update copyright.
5298
5299 2004-02-17 Mark Mitchell <mark@codesourcery.com>
5300
5301 PR c++/11326
5302 * cp-tree.h (abi_version_at_least): Remove.
5303 * mangle.c: Include flags.h.
5304
5305 2004-02-15 Mark Mitchell <mark@codesourcery.com>
5306
5307 PR c++/13971
5308 * call.c (build_conditional_expr): Handle conversions between
5309 class types which result in differently cv-qualified type
5310 variants.
5311
5312 PR c++/14086
5313 * class.c (delete_duplicate_fields_1): Remove.
5314 (delete_duplicate_fields): Likewise.
5315 (finish_struct_anon): Remove check for members with the same name
5316 as their enclosing class.
5317 (check_field_decls): Do not call duplicate_fields.
5318 * decl.c (grokdeclarator): Remove check for static data members
5319 with the same name as their enclosing class.
5320 * name-lookup.c (push_class_level_binding): Check for members with
5321 the same name as their enclosing class.
5322
5323 2004-02-15 Gabriel Dos Reis <gdr@integrable-solutions.net>
5324
5325 PR c++/14085
5326 * error.c (dump_decl): Handle TEMPLATE_TYPE_PARM.
5327
5328 2004-02-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5329
5330 PR c++/13635
5331 * pt.c (push_template_decl_real): Make sure DECL_TI_ARGS of DECL
5332 has full set of arguments.
5333
5334 2004-02-13 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5335
5336 PR c++/13927
5337 * error.c (dump_decl) <ALIAS_DECL>: Dump as simple declarations.
5338
5339 2004-02-13 Mark Mitchell <mark@codesourcery.com>
5340
5341 PR c++/14122
5342 * cp-tree.h (delete_sanity): Change prototype.
5343 * decl2.c (delete_sanity): Make doing_vec a bool, not an int.
5344 Remove dead code. Adjust code to warn about deleting an array.
5345 * typekc.c (decay_conversion): Use build_address and build_nop.
5346
5347 PR c++/14108
5348 * search.c (accessible_p): Do not check access in thunks.
5349
5350 PR c++/14083
5351 * call.c (build_conditional_expr): Call force_rvalue on the
5352 non-void operand in the case that one result is a throw-expression
5353 and the other is not.
5354
5355 2004-02-13 Ian Lance Taylor <ian@wasabisystems.com>
5356
5357 PR c++/9851
5358 * parser.c (cp_parser_pseudo_destructor_name): Check for errors on
5359 the type name and look ahead for ::~, and bail out early with a
5360 better error message if the parse is going to fail.
5361
5362 2004-02-12 Mark Mitchell <mark@codesourcery.com>
5363
5364 * call.c (conversion_kind): New type.
5365 (conversion_rank): Likewise.
5366 (conversion): Likewise.
5367 (CONVERSION_RANK): New macro.
5368 (conversion_obstack): New variable.
5369 (obstack_initialized): Likewise.
5370 (z_candidate): Change type of convs and second_conv.
5371 (candidate_warning): New type.
5372 (IDENTITY_RANK): Remove.
5373 (EXACT_RANK): Likewise.
5374 (PROMO_RANK): Likewise.
5375 (STD_RANK): Likewise.
5376 (PBOOL_RANK): Likewise.
5377 (USER_RANK): Likewise.
5378 (ELLIPSIS_RANK): Likewise.
5379 (BAD_RANK): Likewise.
5380 (ICS_RANK): Likewise.
5381 (ICS_STD_RANK): Likewise.
5382 (ICS_USER_FLAG): Likewise.
5383 (ICS_ELLIPSIS_FLAG): Likewise.
5384 (ICS_THIS_FLAG): Likewise.
5385 (ICS_BAD_FLAG): Likewise.
5386 (NEED_TEMPORARY_P): Likewise.
5387 (CHECK_COPY_CONSTRUCTOR_P): Likewise.
5388 (USER_CONV_CAND): Likewise.
5389 (USER_CONV_FN): Likewise.
5390 (conversion_obstack_alloc): New function.
5391 (alloc_conversion): Likewise.
5392 (validate_conversion_obstack): Likewise.
5393 (alloc_conversions): Likewise.
5394 (build_conv): Adjust to deal with new conversion data structures.
5395 (build_identity_conv): New function.
5396 (build_ambiguous_conv): Likewise.
5397 (standard_conversion): Adjust to deal with new conversion data
5398 structures.
5399 (convert_class_to_reference): Likewise.
5400 (direct_reference_binding): Likewise.
5401 (reference_binding): Likewise.
5402 (implicit_conversion): Likewise.
5403 (add_candidate): Likewise.
5404 (add_function_candidate): Likewise.
5405 (add_conv_candidate): Likewise.
5406 (build_builtin_candidate): Likewise.
5407 (print_z_candidate): Likewise.
5408 (merge_conversion_sequences): Likewise.
5409 (build_user_type_conversion_1): Likewise.
5410 (build_user_type_conversion): Likewise.
5411 (build_new_function_call): Likewise.
5412 (build_object_call): Likewise.
5413 (conditional_conversion): Likewise.
5414 (build_conditional_expr): Likewise.
5415 (build_new_op): Likewise.
5416 (build_op_delete_call): Likewise.
5417 (convert_like_real): Likewise.
5418 (build_over_call): Likewise.
5419 (build_new_method_call): Likewise.
5420 (is_subseq): Likewise.
5421 (maybe_handle_implicit_object): Likewise.
5422 (maybe_handle_ref_bind): Likewise.
5423 (compare_ics): Likewise.
5424 (source_type): Likewise.
5425 (add_warning): Likewise.
5426 (joust): Likewise.
5427 (can_convert_arg): Likewise.
5428 (can_convert_arg_bad): Likewise.
5429 (perform_implicit_conversion): Likewise.
5430 (perform_direct_initialization_if_possible): Likewise.
5431 (initialize_reference): Likewise.
5432 * cp-lang.c (cp_tree_size): Do not handle WRAPPER.
5433 * cp-tree.def (WRAPPER): Likewise.
5434 (IDENTITY_CONV): Remove.
5435 (LVALUE_CONV): Likewise.
5436 (QUAL_CONV): Likewise.
5437 (STD_CONV): Likewise.
5438 (PTR_CONV): Likewise.
5439 (PMEM_CONV): Likewise.
5440 (BASE_CONV): Likewise.
5441 (REF_BIND): Likewise.
5442 (USER_CONV): Likewise.
5443 (AMBIG_CONV): Likewise.
5444 (RVALUE_CONV): Likewise.
5445 * cp-tree.h (tree_wrapper): Remove.
5446 (WRAPPER_ZC): Remove.
5447 (lang_tree_node): Remove wrapper.
5448 (LOOKUP_SPECULATIVELY): Remove.
5449 (build_op_delete_call): Adjust prototype.
5450 (validate_conversion_obstack): Declare.
5451 (build_zc_wrapper): Remove.
5452 * cvt.c (convert_to_reference): Remove dead code.
5453 (ocp_convert): Likewise.
5454 * decl.c (redeclaration_error_message): Correct handling of
5455 templates.
5456 (finish_destructor_body): Do not use LOOKUP_SPECULATIVELY.
5457 (cp_tree_node_structure): Remove WRAPPER case.
5458 * decl2.c (finish_file): Call validate_conversion_obstack.
5459 * init.c (build_new_1): Remove use of LOOKUP_SPECULATIVELY.
5460 (build_op_delete_call): Likewise.
5461 (build_x_delete): Likewise.
5462 (build_delete): Adjust call to build_op_delete_call.
5463 * pt.c (tsubst_friend_declaration): Adjust code to determine
5464 whether or not a friend template is a definition.
5465 (tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs.
5466 * tree.c (build_zc_wrapper): Remove.
5467
5468 2004-02-12 Zack Weinberg <zack@codesourcery.com>
5469
5470 * cp-lang.c: Don't define LANG_HOOKS_BUILTIN_TYPE_DECLS.
5471 * cp-tree.h: Don't declare cxx_builtin_type_decls.
5472 * decl.c (builtin_type_decls, cxx_builtin_type_decls): Delete.
5473 (record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.
5474
5475 2004-02-10 Mark Mitchell <mark@codesourcery.com>
5476
5477 * typeck.c (lookup_destructor): Fix typo in error message.
5478
5479 2004-02-09 Kazu Hirata <kazu@cs.umass.edu>
5480
5481 * call.c, parser.c, tree.c: Fix comment typos.
5482
5483 2004-02-07 Zack Weinberg <zack@codesourcery.com>
5484
5485 Bug 13856
5486 * optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
5487 * decl.c (duplicate_decls, start_function): Likewise.
5488
5489 2004-02-07 Zack Weinberg <zack@codesourcery.com>
5490
5491 * name-lookup.c (pushdecl): Issue shadow warnings directly.
5492 * parser.c (free_parser_stacks): Delete.
5493
5494 2004-02-07 Kazu Hirata <kazu@cs.umass.edu>
5495
5496 * rtti.c: Update copyright.
5497
5498 2004-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5499
5500 PR c++/14033
5501 * decl.c (require_complete_types_for_parms): Do not insert
5502 error_mark_node in the parameter list.
5503
5504 2004-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5505
5506 PR c++/14028
5507 * parser.c (cp_parser_enclosed_template_argument_list): Emit straight
5508 error when terminator can not be found.
5509
5510 2004-02-05 Kelley Cook <kcook@gcc.gnu.org>
5511
5512 Make-lang.in (po-generated): Delete.
5513
5514 2004-02-05 Kazu Hirata <kazu@cs.umass.edu>
5515
5516 * call.c (type_passed_as): Replace PROMOTE_PROTOTYPES with
5517 targetm.calls.promote_prototypes.
5518
5519 2004-02-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
5520
5521 PR middle-end/13750
5522 Revert:
5523 2004-01-15 Geoffrey Keating <geoffk@apple.com>
5524 PR pch/13361
5525 * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
5526 (handle_pragma_implementation): Likewise.
5527
5528 2004-02-05 Mark Mitchell <mark@codesourcery.com>
5529
5530 PR c++/13714
5531 * typeck.c (lookup_destructor): Tweak error message.
5532
5533 2004-02-05 Jan Hubicka <jh@suse.cz>
5534
5535 * tree.c (cp_cannot_inline_tree_fn): Allow inlining of comdat
5536 functions.
5537
5538 2004-02-05 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5539
5540 PR c++/14008
5541 * parser.c (cp_parser_diagnose_invalid_typename): Removed parsing
5542 code, only emits the diagnostic now. Added lookup of the identifier
5543 and support for qualified ids.
5544 (cp_parser_parse_and_diagnose_invalid_type_name): New function.
5545 Parse an (invalid) type name as id-expression within a declarator.
5546 (cp_parser_simple_declaration): Use it.
5547 (cp_parser_member_declaration): Likewise.
5548 (cp_parser_make_typename_type): New function. Handle errors through
5549 cp_parser_diagnose_invalid_typename.
5550 (cp_parser_elaborated_type_specifier): Use it.
5551
5552 2004-02-04 Mark Mitchell <mark@codesourcery.com>
5553
5554 PR c++/13932
5555 * call.c (convert_like_real): Use "converting" rather than
5556 "argument" as the descriptive keyword to
5557 dubious_conversion_warnings.
5558 * typeck.c (convert_for_assignment): Do not call
5559 dubious_conversion_warnings.
5560
5561 2004-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5562
5563 PR c++/13086
5564 * init.c (build_delete): Emit a more informative error message in
5565 case of an incomplete type, and on the correct source line.
5566
5567 2004-02-04 Kazu Hirata <kazu@cs.umass.edu>
5568
5569 * error.c, search.c: Update copyright.
5570
5571 2004-02-04 Mark Mitchell <mark@codesourcery.com>
5572
5573 PR c++/9941
5574 * rtti.c (tinfo_base_init): Use import_export_tinfo to decide the
5575 linkage for the typeinfo name string.
5576
5577 2004-02-04 Mark Mitchell <mark@codesourcery.com>
5578
5579 PR c++/13969
5580 * cp-tree.h (fold_non_dependent_expr): New function.
5581 * parser.c (cp_parser_fold_non_dependent_expr): Remove.
5582 (cp_parser_template_argument): Use fold_non_dependent_expr.
5583 (cp_parser_direct_declarator): Likewise.
5584 * pt.c (fold_non_dependent_expr): New function.
5585 (convert_nontype_argument): Use it.
5586 (tsubst_qualified_id): Simplify.
5587 (tsubst_copy_and_build): Likewise.
5588
5589 2004-02-04 Mark Mitchell <mark@codesourcery.com>
5590
5591 * decl.c (cxx_push_function_context): Do not set
5592 current_function_is_thunk.
5593 * method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
5594 actual function.
5595
5596 2004-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5597
5598 PR c++/13997
5599 * pt.c (more_specialized_class): Increase processing_template_decl
5600 while partial ordering.
5601
5602 2004-02-03 Mark Mitchell <mark@codesourcery.com>
5603
5604 PR c++/13925
5605 * decl.c (start_function): Do not call pushdecl for any
5606 instantiation or specialization of a primary template.
5607
5608 2004-02-03 Mark Mitchell <mark@codesourcery.com>
5609
5610 PR c++/13950
5611 * parser.c (cp_parser_class_name): Robustify.
5612
5613 PR c++/13970
5614 * parser.c (cp_parser_cache_group): Do not consume the EOF token.
5615
5616 PR c++/14002
5617 * semantics.c (finish_id_expression): Do not return an
5618 IDENTIFIER_NODE when lookup finds a PARM_DECL.
5619
5620 2004-02-03 Mark Mitchell <mark@codesourcery.com>
5621
5622 PR c++/13978
5623 * pt.c (build_non_dependent_expr): Do not build
5624 NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs.
5625
5626 PR c++/13968
5627 * semantics.c (finish_id_expression): Do not return an
5628 IDENTIFIER_NODE when lookup finds a VAR_DECL.
5629
5630 PR c++/13975
5631 * parser.c (cp_parser_simple_declaration): When skipping to the
5632 end of the statement swallow the terminating semicolon.
5633
5634 2004-02-02 Mark Mitchell <mark@codesourcery.com>
5635
5636 PR c++/13113
5637 * init.c (build_offset_ref): Improve error recovery for invalid
5638 uses of non-static member functions.
5639
5640 PR c++/13854
5641 * cp-tree.h (cp_build_type_attribute_variant): New function.
5642 * class.c (build_clone): Use cp_build_type_attribute_variant.
5643 * decl.c (duplicate_decls): Likewise.
5644 * pt.c (copy_default_args_to_explicit_spec): Likewise.
5645 (tsubst_function_type): Likewise.
5646 * tree.c (build_exception_variant): Check attributes before
5647 concluding that two types are the same.
5648 (cp_build_type-attribute_variant): New method.
5649 * typeck.c (merge_types): Use cp_build_type_attribute_variant.
5650
5651 PR c++/13907
5652 * call.c (convert_class_to_reference): Keep better track of
5653 pedantically invalid user-defined conversions.
5654
5655 2004-02-01 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5656
5657 PR c++/13957
5658 * pt.c (tsubst_qualified_id): Improved error message when a type
5659 is expected but not found.
5660
5661 2004-01-31 Kazu Hirata <kazu@cs.umass.edu>
5662
5663 * class.c: Fix comment typos.
5664 * decl.c: Likewise.
5665 * error.c: Likewise.
5666 * parser.c: Likewise.
5667 * pt.c: Likewise.
5668 * search.c: Likewise.
5669 * typeck.c: Likewise.
5670
5671 2004-01-30 Richard Henderson <rth@redhat.com>
5672
5673 PR c++/13693
5674 * method.c (use_thunk): Don't force_target_expr for void thunks.
5675 * tree.c (build_target_expr_with_type): Assert non-void type.
5676 (force_target_expr): Likewise.
5677
5678 2004-01-30 Michael Matz <matz@suse.de>
5679
5680 * parser.c (cp_parser_labeled_statement): Accept case ranges.
5681
5682 2004-01-30 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5683
5684 DR206
5685 PR c++/13813
5686 * decl.c (grokdeclarator): Check immediatly type completeness for
5687 non-dependent types.
5688
5689 2004-01-30 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5690
5691 PR c++/13683
5692 * call.c (convert_arg_to_ellipsis): Don't emit a warning if within
5693 a sizeof expression.block
5694
5695 2004-01-29 Mark Mitchell <mark@codesourcery.com>
5696
5697 PR c++/13883
5698 * mangle.c (write_encoding): Correct encoding of member template
5699 constructors.
5700
5701 2004-01-28 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5702
5703 * parser.c (cp_parser_template_id): Parse tentatively `[:' after a
5704 template name as it was `<::' (digraph typo).
5705 (cp_parser_nth_token_starts_template_argument_list_p): New function.
5706 (cp_parser_id_expression): Use it.
5707 (cp_parser_nested_name_specifier_opt): Likewise.
5708 (cp_parser_template_name): Likewise.
5709 (cp_parser_class_name): Likewise.
5710 (cp_lexer_get_preprocessor_token): Use c_lex_with_flags.
5711
5712 2004-01-28 Mark Mitchell <mark@codesourcery.com>
5713
5714 PR c++/13791
5715 * typeck.c (merge_types): Do not merge attributes into
5716 TYPENAME_TYPEs.
5717
5718 PR c++/13736
5719 * parser.c (cp_parser_direct_declarator): Do not prevent
5720 backtracking inside a parenthesized declarator.
5721 (cp_parser_parameter_declaration): Fix typo in comment.
5722
5723 2004-01-28 Jan Hubicka <jh@suse.cz>
5724
5725 * semantics.c (expand_body) Do emit_associated_thunks before
5726 expansion.
5727
5728 2004-01-27 Devang Patel <dpatel@apple.com>
5729
5730 * name-lookup.c: Include "debug.h"
5731 (do_namespace_alias): Invoke debug_hooks to emit debug info
5732 for namespace alias.
5733 (do_local_using_decl): Invoke debug_hooks to emit debug info
5734 for using decl.
5735 (do_class_using_decl): Same.
5736 (do_toplevel_using_decl): Same.
5737 (do_using_directive): Same.
5738 (cp_emit_debug_info_for_using): New function.
5739 * Make-lang.in (cp/parser.o): Depend on debug.h
5740 (cp/name-lookup.o): Same.
5741
5742 2004-01-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5743
5744 * cp-tree.h (language_function, lang_type_header): Use
5745 BOOL_BITFIELD.
5746 * name-lookup.h (cp_binding_level): Likewise.
5747
5748 2004-01-26 Mark Mitchell <mark@codesourcery.com>
5749
5750 PR c++/13663
5751 * semantics.c (finish_for_expr): Check for unresolved overloaded
5752 functions.
5753
5754 * class.c (add_method): Just check processing_template_decl to
5755 determine whether or not we are within a template.
5756 * decl2.c (maybe_retrofit_in_chrg): Likewise.
5757 * init.c (decl_constant_value): Check the type of the declaration,
5758 not TREE_READONLY.
5759 * name-lookup.c (maybe_push_to_top_level): Rename to ...
5760 (push_to_top_level): ... this.
5761 * name-lookup.h (maybe_push_to_top_level): Do not declare it.
5762 * pt.c (push_template_decl_real): Reorder condition for speed.
5763 (convert_template_argument): Use dependency-checking functions in
5764 place of uses_template_parms.
5765 (lookup_template_class): Avoid calling uses_template_parms more
5766 than once.
5767 (uses_template_parms): Reimplement, using dependency-checking
5768 functions.
5769 (instantiate_class_template): Use push_to_top_level, not
5770 maybe_push_to_top_level.
5771 (type_unification_real): Simplify.
5772 (type_dependent_expression_p): Handle OFFSET_REFs and
5773 TEMPLATE_DECLs.
5774 (any_dependent_template_arguments_p): Handle multiple levels of
5775 template argument.
5776 * semantics.c (expand_or_defer_fn): Do not check
5777 uses_template_parms for template instantiations.
5778 * typeck.c (comptypes): Avoid calling cp_type_quals.
5779
5780 2004-01-25 Mark Mitchell <mark@codesourcery.com>
5781
5782 PR c++/13833
5783 * call.c (build_over_call): Do not convert arguments when
5784 processing a template.
5785 * pt.c (build_non_dependent_expr): Do not build a
5786 NON_DEPENDENT_EXPR for arithmetic constants.
5787
5788 2004-01-25 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5789
5790 PR c++/13810
5791 * parser.c (cp_parser_type_parameter): When cp_parser_id_expression
5792 returns a TYPE_DECL. no further lookup is required.
5793 * semantics.c (check_template_template_default_arg): A TYPE_DECL
5794 is invalid. Rework to give better diagnostics.
5795
5796 2004-01-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5797
5798 PR c++/13797
5799 * pt.c (instantiate_class_template): Add an error_mark_node
5800 check.
5801 (tsubst_decl) <TEMPLATE_DECL case>: Likewise.
5802
5803 2004-01-23 Andrew Pinski <pinskia@physics.uc.edu>
5804
5805 PR c++/13701
5806 * decl.c (finish_function): Move the call to
5807 finish_fname_decls below the call to
5808 finish_eh_spec_block.
5809
5810 2004-01-21 Kazu Hirata <kazu@cs.umass.edu>
5811
5812 * optimize.c, typeck2.c: Update copyright.
5813
5814 2004-01-21 Kazu Hirata <kazu@cs.umass.edu>
5815
5816 * Make-lang.in, call.c, class.c, decl2.c, except.c, expr.c,
5817 init.c, mangle.c, typeck.c: Update copyright.
5818
5819 2004-01-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
5820
5821 * parser.c (cp_parser_class_specifier): Prevent garbage collection.
5822
5823 2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
5824
5825 * Make-lang.in: Replace $(docdir) with doc.
5826 (c++.info, c++.srcinfo): Dummy entry.
5827 (c++.man, c++.srcman): New rules.
5828 (c++.install-man): Revamp rule.
5829
5830 2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
5831
5832 * Make-lang.in (CXX_INSTALL_NAME, GXX_INSTALL_NAME,
5833 CXX_TARGET_INSTALL_NAME, GXX_TARGET_INSTALL_NAME): Define via a
5834 immediate $(shell) instead of deferred backquote.
5835
5836 2004-01-19 Mark Mitchell <mark@codesourcery.com>
5837
5838 PR c++/13651
5839 * parser.c (cp_parser_postfix_expression): When encountering
5840 incomplete type on left-hand side of "->" or ".", treat the entire
5841 expression as erroneous.
5842
5843 PR c++/13592
5844 * call.c (build_field_call): Remove.
5845 (n_build_method_call): Likewise.
5846 (build_method_call): Likewise.
5847 (build_new_method_call): Do not call build_field_call.
5848 * class.c (n_build_method_call): Remove.
5849 (print_class_statistics): Do not print it.
5850 * cp-tree.h (build_method_call): Remove declaration.
5851 (finish_object_call_expr): Likewise.
5852 (build_new_1): Do not use build_method_call.
5853 * parser.c (cp_parser_postfix_expression): Use finish_call_expr
5854 when the function appearing on the right-hand-side of "." or "->"
5855 is not actually a function.
5856 * pt.c (tsubst_copy_and_build): Likewise.
5857 * semantics.c (finish_object_call_expr): Remove.
5858
5859 2004-01-18 Mark Mitchell <mark@codesourcery.com>
5860
5861 PR c++/13710
5862 * pt.c (tsubst): Use finish_typeof.
5863
5864 2004-01-18 Jason Merrill <jason@redhat.com>
5865
5866 PR c++/11725
5867 * except.c (build_throw): In a template, set
5868 current_function_returns_abnormally.
5869
5870 2004-01-17 Fred Fish <fnf@intrinsity.com>
5871
5872 PR c++/11895
5873 * decl.c (reshape_init): Handle VECTOR_TYPE like ARRAY_TYPE,
5874 except don't call array_type_nelts() with a VECTOR_TYPE.
5875
5876 2004-01-16 Jan Hubicka <jh@suse.cz>
5877
5878 * mangle.c (write_mangled_name): Remove inline modifier.
5879
5880 2004-01-16 Mark Mitchell <mark@codesourcery.com>
5881
5882 PR c++/13574
5883 * decl.c (compute_array_index_type): Fix grammar in comment.
5884 * init.c (build_zero_init): Handle zero-sized arrays correctly.
5885
5886 PR c++/13178
5887 * call.c (name_as_c_string): Print conversion operator names
5888 correctly.
5889
5890 PR c++/13478
5891 * call.c (initialize_reference): Pass -1 for inner parameter to
5892 convert_like_real.
5893
5894 2004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5895
5896 PR c++/13407
5897 * parser.c (cp_parser_base_specifier): Check for an invalid
5898 keyword `typename' and emit an user-friendly error message.
5899
5900 2004-01-15 Geoffrey Keating <geoffk@apple.com>
5901
5902 PR pch/13361
5903 * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
5904 (handle_pragma_implementation): Likewise.
5905
5906 2004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5907
5908 PR c++/9259
5909 * typeck.c (build_class_member_access_expr): Allow to access members
5910 of the currently open class.
5911 (finish_class_member_access_expr): Likewise.
5912
5913 2004-01-15 Alexandre Oliva <aoliva@redhat.com>
5914
5915 PR c++/13659
5916 * name-lookup.c (validate_nonmember_using_decl): Take scope and
5917 name by value, instead of computing them.
5918 (do_local_using_decl, do_toplevel_using_decl): Add scope and name
5919 arguments. Pass them to validate_nonmember_using_decl.
5920 * name-lookup.h (do_local_using_decl): Adjust.
5921 (do_toplevel_using_decl): Likewise.
5922 * parser.c (cp_parser_using_declaration): Likewise.
5923 * pt.c (tsubst_expr): Likewise.
5924
5925 2004-01-15 Alexandre Oliva <aoliva@redhat.com>
5926
5927 PR c++/13594
5928 PR c++/13658
5929 * name-lookup.c (qualified_lookup_using_namespace): Search
5930 strongly-associated namespaces first, and only then try other
5931 namespaces.
5932
5933 2004-01-15 Kelley Cook <kcook@gcc.gnu.org>
5934
5935 * Make-lang.in (c++.srcextra): Dummy entry.
5936
5937 2004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5938
5939 PR c++/8856
5940 * parser.c (cp_parser_template_name): Don't try to parse a
5941 conversion-function-id, as it cannot be a template-name.
5942 (cp_parser_simple_type_specifier): Check for invalid template-ids
5943 even after a built-in type.
5944
5945 2004-01-14 Jan Hubicka <jh@suse.cz>
5946
5947 PR c++/12850
5948 * pt.c (instantiate_decl): Do not increase function_depth.
5949
5950 2004-01-14 Danny Smith <dannysmith@users,sourceforge.net>
5951
5952 PR c++/9021
5953 PR c++/11005
5954 * parser.c (cp_parser_elaborated_type_specifier): Warn about
5955 attributes and discard.
5956 * decl.c (xref_tag): Don't overwite existing attributes with
5957 NULL_TREE.
5958
5959 2004-01-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5960
5961 PR c++/12335
5962 * parser.c (cp_parser_lookup_name): Return error_mark_node if there
5963 is no destructor while looking up a BIT_NOT_EXPR.
5964
5965 2004-01-13 Ian Lance Taylor <ian@wasabisystems.com>
5966
5967 * cxxfilt.c: Remove unused file.
5968
5969 2004-01-14 Jan Hubicka <jh@suse.cz>
5970
5971 Partial fix to PR c++/12850
5972 * decl2.c (mark_used): Do not proactively instantiate templates
5973 when compiling in unit-at-a-time or not optimizing.
5974 * optimize.c (maybe_clone_body): Do not increase function depth.
5975
5976 2004-01-13 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5977
5978 PR c++/13474
5979 * pt.c (tsubst) <INTEGER_TYPE>: Remove obsolete array index tweaking.
5980
5981 2004-01-12 Steven Bosscher <stevenb@suse.de>
5982
5983 PR c++/13558
5984 * parser.c (cp_parser_member_declaration): Any non-type is also
5985 not a class or a function.
5986
5987 2004-01-12 Jason Merrill <jason@redhat.com>
5988
5989 PR c++/12815
5990 * class.c (build_base_path): Do not mark vtable references as
5991 TREE_CONSTANT.
5992 (build_vtbl_ref_1): Likewise.
5993
5994 2004-01-12 Richard Henderson <rth@redhat.com>
5995
5996 PR opt/10776
5997 * typeck2.c (split_nonconstant_init_1, split_nonconstant_init): New.
5998 (store_init_value): Use it.
5999 * decl.c (check_initializer): Expect full initialization code
6000 from store_init_value.
6001 * init.c (expand_aggr_init_1): Likewise.
6002 * decl2.c (maybe_emit_vtables): Abort if runtime init needed.
6003
6004 2004-01-12 Mark Mitchell <mark@codesourcery.com>
6005
6006 * class.c (layout_class_type): For non-POD class types, also copy
6007 the DECL_SIZE and DECL_MODE of fields to the base class type.
6008
6009 2004-01-12 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6010
6011 PR c++/13289
6012 * pt.c (instantiate_decl): Set DECL_TEMPLATE_INSTANTIATED before
6013 calling regenerate_decl_from_template.
6014
6015 2004-01-12 Scott Brumbaugh <scottb.lists@verizon.net>
6016
6017 PR c++/4100
6018 * parser.c (cp_parser_decl_specifier_seq): Add check for a friend
6019 decl-specifier occurring along with a class definition.
6020
6021 2004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
6022
6023 * parser.c (cp_parser_decl_specifier_seq): Add parenthetical
6024 clauses to comments describing declares_class_or_enum.
6025 (cp_parser_type_specifier): Set *declares_class_or_enum to 0, not
6026 false.
6027
6028 2004-01-12 Jan Hubicka <jh@suse.cz>
6029
6030 * pt.c (for_each_template_parm): Do not check for duplicates.
6031 (for_each_template_parm): Use walk_tree duplicate checking code.
6032
6033 2004-01-11 Ian Lance Taylor <ian@wasabisystems.com>
6034
6035 PR c++/3478
6036 * parser.c (cp_parser_decl_specifier_seq): If the first decl_spec
6037 is error_mark_node, don't add any more decl_specs.
6038 (cp_parser_init_declarator): After committing to a declaration, if
6039 the decl_specifiers start with error_mark_node, issue an error and
6040 change the type to "int".
6041
6042 2004-01-09 Nathanael Nerode <neroden@gcc.gnu.org>
6043
6044 PR bootstrap/7817
6045 * Make-lang.in: Copy gcc.1 to g++.1 rather than using .so.
6046
6047 2004-01-10 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6048
6049 DR 337
6050 PR c++/9256
6051 * pt.c (tsubst): Substitution must fail if we are attempting to
6052 create an array with element type that is an abstract class type.
6053 * decl.c (cp_finish_decl): Strip pointers and array types recursively
6054 before calling abstract_virtuals_error.
6055
6056 2004-01-09 Alexandre Oliva <aoliva@redhat.com>
6057
6058 * name-lookup.c (qualified_lookup_using_namespace): Consider
6059 strong using directives even if we've already found a binding.
6060
6061 2004-01-09 Mark Mitchell <mark@codesourcery.com>
6062
6063 * cp-tree.h (cxx_expand_expr): Change prototype.
6064 * expr.c (cxx_expand_expr): Add alt_rtl parameter.
6065
6066 2004-01-08 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6067
6068 PR c++/12573
6069 * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
6070 looking into them recursively. They can be there because of the
6071 new __offsetof__ extension.
6072
6073 2004-01-07 Zack Weinberg <zack@codesourcery.com>
6074
6075 * parser.c (cp_parser_save_member_function_body): Mark the
6076 definition static.
6077
6078 2004-01-05 Mark Mitchell <mark@codesourcery.com>
6079
6080 PR c++/13057
6081 * class.c (build_clone): Copy type attributes from the original
6082 function to the clone.
6083
6084 PR c++/12815
6085 * class.c (build_vtbl_ref_1): Do not unconditionally mark vtable
6086 references as constant.
6087
6088 PR c++/12132
6089 * parser.c (cp_parser_explicit_instantiation): Improve error
6090 recovery.
6091 (cp_parser_require): Improve indication of the error location.
6092
6093 PR c++/13451
6094 * parser.c (cp_parser_class_head): Reorder logic to check for
6095 invalid qualification.
6096
6097 2004-01-04 Mark Mitchell <mark@codesourcery.com>
6098
6099 PR c++/13157
6100 * name-lookup.c (lookup_using_namespace): Remove spacesp
6101 parameter.
6102 (unqualified_namespace_lookup): Likewise.
6103 (lookup_qualified_name): Adjust accordingly.
6104 (lookup_name_real): Likewise.
6105 (lookup_arg_dependent): Do not eliminate the namespace of the
6106 functions found by unqualified name lookup unless that is the
6107 current namespace.
6108
6109 2004-01-04 Andrew Pinski <pinskia@physics.uc.edu>
6110
6111 * semantics.c (push_deferring_access_checks): Fix format.
6112 (resume_deferring_access_checks): Likewise.
6113 (stop_deferring_access_checks): Likewise.
6114 (pop_deferring_access_checks): Likewise.
6115 (get_deferred_access_checks): Likewise.
6116 (pop_to_parent_deferring_access_checks): Likewise.
6117 (perform_deferred_access_checks): Likewise.
6118 (perform_or_defer_access_check): Likewise.
6119
6120 2004-01-04 Richard Henderson <rth@redhat.com>
6121
6122 * call.c (build_over_call): Don't create a save_expr of an
6123 aggregate, but rather its address.
6124
6125 2004-01-04 Mark Mitchell <mark@codesourcery.com>
6126
6127 PR c++/13529
6128 * parser.c (cp_parser_postfix_expression): Allow "." to appear in
6129 an offsetof expression.
6130
6131 * parser.c (cp_parser_parameter_declaration): Fix comment.
6132
6133 PR c++/12226
6134 * call.c (CHECK_COPY_CONSTRUCTOR_P): New macro.
6135 (reference_binding): Set it when appropriate.
6136 (build_temp): New function, split out from ...
6137 (convert_like_real): ... here. Honor CHECK_COPY_CONSTRUCTOR_P.
6138 (initialize_reference): Likewise.
6139
6140 PR c++/13536
6141 * parser.c (cp_parser): Add in_type_id_in_expr_p.
6142 (cp_parser_new): Initialize it.
6143 (cp_parser_postfix_expression): Set it.
6144 (cp_parser_sizeof_operand): Likewise.
6145 (cp_parser_parameteR_declaration): Do not commit early to tenative
6146 parsers when in_type_id_in_expr_p is set.
6147
6148 2004-01-03 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6149
6150 PR c++/13094
6151 * parser.c (cp_parser_template_argument): Don't call
6152 make_unbound_class_template directly.
6153 (cp_parser_lookup_name): Don't extract TEMPLATE_DECL from
6154 UNBOUND_CLASS_TEMPLATE tree node.
6155
6156 2004-01-02 Richard Sandiford <rsandifo@redhat.com>
6157
6158 PR target/12729
6159 * method.c (use_thunk): Pass the CALL_EXPR through force_target_expr.
6160
6161 2004-01-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6162
6163 PR c++/13520
6164 * cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): New macro.
6165 (DECL_FUNCTION_TEMPLATE_P): Use it.
6166 (DECL_CLASS_TEMPLATE_P): Likewise.
6167 * parser.c (cp_parser_lookup_name): Add is_template parameter.
6168 (cp_parser_type_parameter): Adjust call to cp_parser_lookup_name.
6169 (cp_parser_template_name): Likewise.
6170 (cp_parser_elaborated_type_specifier): Likewise.
6171 (cp_parser_namespace_name): Likewise.
6172 (cp_parser_class_name): Likewise.
6173 (cp_parser_lookup_name_simple): Likewise.
6174
6175 See ChangeLog.3 for earlier changes.