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