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