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