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