12003-12-30  Nathan Sidwell  <nathan@codesourcery.com>
2
3	PR c++/13507
4	* decl.c (duplicate_decls): Use build_type_attribute_variant to
5	merge attributes.
6
7	PR c++/13494
8	* tree.c (build_cplus_array_type_1): Only build a minimal array
9	type for dependent types or domains.
10
112003-12-29  Nathan Sidwell  <nathan@codesourcery.com>
12
13	PR c++/12774
14	* typeck.c (comp_array_types): Fold non-dependent domains for
15	ABI-1.
16
172003-12-29  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
18
19	PR c++/13289
20	* semantics.c (finish_id_expression): Only check if the type of
21	a template argument is integral or enumeration when it is not
22	dependent.
23
242003-12-29  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
25
26	PR c++/12403
27	* parser.c (cp_parser_template_declaration_after_export): Set up
28	template specialization scope in case of explicit specialization.
29
302003-12-28  Mark Mitchell  <mark@codesourcery.com>
31
32	PR c++/13081
33	* decl.c (duplicate_decls): Preserve inline-ness when redeclaring
34	a function template.
35
36	PR c++/12613
37	* decl.c (reshape_init): Reject GNU colon-style designated
38	initializers in arrays.
39
40	PR c++/13009
41	* call.c (build_special_member_call): Do not assume that we have a
42	pointer to the complete object in an assignment operator.
43
442003-12-28  Roger Sayle  <roger@eyesopen.com>
45
46	PR c++/13070
47	* decl.c (duplicate_decls): When setting the type of an anticipated
48	declaration, merge the existing type attributes.
49
502003-12-25  Andrew Pinski  <pinskia@physics.uc.edu>
51
52	PR c++/13268, c++/13339
53	* class.c (add_method): Return early when method is error_mark_node.
54	* pt.c (tsubst_friend_function): Return early when new_friend is
55	error_mark_node.
56
572003-12-23  Mark Mitchell  <mark@codesourcery.com>
58
59	* cp-lang.c (cp_expr_size): Return zero for empty classes.
60
61	* cp-tree.h (warn_if_uknown_interface): Remove unused function.
62	* decl2.c (warn_if_unknown_interface): Likewise.
63
642003-12-23  Nathan Sidwell  <nathan@codesourcery.com>
65
66	PR c++/13387
67	* cp-lang.c (cxx_get_alias_set): Correct logic for a base type.
68
692003-12-22  Mark Mitchell  <mark@codesourcery.com>
70
71	* decl.c (start_function): Do not check
72	flag_alt_external_templates or flag_external_templates.
73	* decl2.c (warn_if_unknown_interface): Likewise.
74	* lex.c (extract_interface_info): Likewise.
75	* pt.c (lookup_template_class): Likewise.
76
77	PR c++/12862
78	* name-lookup.c (pushdecl): Look up all namespace-scope entities
79	in their corresponding namespace.
80
81	PR c++/12397
82	* typeck.c (finish_class_member_access_expr): Don't tree
83	IDENTIFIER_NODEs as non-dependent expressions.
84
852003-12-22  Andrew Pinski  <pinskia@physics.uc.edu>
86
87	PR c++/5050
88	* tree.c (cp_start_inlining): Remove.
89	(cp_end_inlining): Remove.
90	* cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Do not define.
91	(LANG_HOOKS_TREE_INLINING_END_INLINING): Do not define.
92	* cp-tree.h (cp_start_inlining): Do not declare.
93	(cp_end_inlining): Do not declare.
94
952003-12-22  Mark Mitchell  <mark@codesourcery.com>
96
97	PR c++/12479
98	* parser.c (cp_parser_declaration_seq_opt): Only issue "extra ;"
99	pedwarn when not in a system header.
100
1012003-12-21  Mark Mitchell  <mark@codesourcery.com>
102
103	* cp-tree.h (cp_tree_index): Remove CPTI_RECORD_TYPE,
104	CPTI_UNION_TYPE, CPTI_ENUM_TYPE.
105	(record_type_node): Remove.
106	(union_type_node): Likewise.
107	(enum_type_node): Likewise.
108	* decl.c: Remove mention of above tree nodes in comment.
109	* lex.c (cxx_init): Do not assign to record_type_node,
110	union_type_node, or enum_type_node.  Simplify handling of
111	class_type_node.
112
113	PR c++/11554
114	* init.c (sort_mem_initializers): Add warning.
115
1162003-12-21  Kazu Hirata  <kazu@cs.umass.edu>
117
118	* call.c: Fix comment formatting.
119	* class.c: Likewise.
120	* cp-tree.h: Likewise.
121	* cvt.c: Likewise.
122	* cxx-pretty-print.c: Likewise.
123	* decl.c: Likewise.
124	* decl2.c: Likewise.
125	* error.c: Likewise.
126	* except.c: Likewise.
127	* init.c: Likewise.
128	* name-lookup.c: Likewise.
129	* parser.c: Likewise.
130	* pt.c: Likewise.
131	* rtti.c: Likewise.
132	* semantics.c: Likewise.
133	* typeck.c: Likewise.
134	* typeck2.c: Likewise.
135
1362003-12-19  Kazu Hirata  <kazu@cs.umass.edu>
137
138	* cvt.c: Remove uses of "register" specifier in
139	declarations of arguments and local variables.
140	* decl.c: Likewise.
141	* decl2.c: Likewise.
142	* expr.c: Likewise.
143	* friend.c: Likewise.
144	* lex.c: Likewise.
145	* name-lookup.c: Likewise.
146	* repo.c: Likewise.
147	* search.c: Likewise.
148	* tree.c: Likewise.
149	* typeck.c: Likewise.
150	* typeck2.c: Likewise.
151
1522003-12-19  Mark Mitchell  <mark@codesourcery.com>
153
154	PR c++/12795
155	* name-lookup.c (pushdecl): Do not treated any functions as being
156	"nested" in C++.
157
1582003-12-19  Jason Merrill  <jason@redhat.com>
159
160	PR c++/13371
161	* typeck.c (build_modify_expr): Stabilize lhs if we're narrowing.
162	* cvt.c (convert_to_void): Don't warn about the RHS of a comma
163	being useless if TREE_NO_UNUSED_WARNING is set.
164
1652003-12-18  Richard Henderson  <rth@redhat.com>
166
167	* cp-tree.h (struct lang_type_header): Remove __extension__.
168
1692003-12-18  Jason Merrill  <jason@redhat.com>
170
171	PR c++/12253
172	* init.c (build_vec_init): Initialization of an element from
173	an initializer list is also a full-expression.
174
175	* parser.c, pt.c, semantics.c: Rename constant_expression_p
176	to integral_constant_expression_p.
177
1782003-12-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
179
180	PR c++/13262
181	* pt.c (instantiate_decl): Wrap push_nested_class and
182	pop_nested_class around cp_finish_decl call for static member
183	variable.
184
1852003-12-18  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
186
187	PR c++/9154
188	* parser.c (cp_parser_template_argument): A type-id followed by '>>'
189	is just an user typo, and should be accepted as last resort if any
190	other parsing fails.
191	(cp_parser_enclosed_template_argument_list): If the argument list is
192	parsed correctly, but the next token is '>>', emit a diagnostic.
193	(cp_parser_next_token_ends_template_argument): Accept '>>' as
194	delimiter of template argument, it will be later detected as a typo.
195
1962003-12-17  Kelley Cook  <kcook@gcc.gnu.org>
197
198	* Make-lang.in: Replace cp/g++.1 with $(docobjdir)/g++.1.
199
2002003-12-17  Mark Mitchell  <mark@codesourcery.com>
201
202	PR c++/10603
203	PR c++/12827
204	* parser.c (cp_parser_error): Help c_parse_error print good
205	messages if the next token is a keyword.
206	(cp_parser_parameter_declaration_list): When resynchronizing after
207	a bad parameter declaration, stop if a comma is found.
208	(cp_parser_parameter_declaration): Avoid backtracking.
209
2102003-12-16  Mark Mitchell  <mark@codesourcery.com>
211
212	PR c++/12696
213	* decl.c (reshape_init): Recover quickly from errors.
214
2152003-12-16  Nathan Sidwell  <nathan@codesourcery.com>
216
217	PR c++/9043
218	C++ ABI change: Mangling array indices in templates.
219	* decl.c (compute_array_index_type): Reorganize for earlier
220	template errors. Use value_dependent_expression_p for abi-2.
221	* mangle.c (write_array_type): Check broken mangling for
222	expression indices on abi-1
223
2242003-12-16  Mark Mitchell  <mark@codesourcery.com>
225
226	PR c++/12696
227	* decl.c (reshape_init): Recover quickly from errors.
228
229	PR c++/13275
230	* lex.c (reswords): Add "__offsetof" and "__offsetof__".
231	* parser.c (cp_parser): Add in_offsetof_p.
232	(cp_parser_new): Initialize it.
233	(cp_parser_primary_expression): Handle __offsetof__ (...).
234	(cp_parser_postfix_expression): Allow casts to pointer type and
235	uses of "->" in a constant expression if implementing offsetof.
236	(cp_parser_unary_expression): Allow the use of "&" in a constant
237	expression if implementing offsetof.
238
2392003-12-16  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
240
241	PR c++/2294
242	* name-lookup.c (push_overloaded_decl): always construct an OVERLOAD
243	if the declaration comes from an using declaration.
244
2452003-12-16  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
246
247	* semantics.c (finish_id_expression): Refactor the code to handle
248	template parameters, and emit a more informative error message
249	when they are used within an integral constant expression.
250
2512003-12-16  Nathan Sidwell  <nathan@codesourcery.com>
252
253	PR c++/13387
254	* class.c (finish_struct_1): Compute mode and alias set for
255	CLASSTYPE_AS_BASE.
256	* call.c (build_over_call): Use CLASSTYPE_AS_BASE for trivial
257	assignment of a class, as necessary.
258	* cp-lang.c (cxx_get_alias_set): The alias set as a base is the
259	same as for the complete type.
260
261	PR c++/13242
262	C++ ABI change. Mangling template parameters of reference type
263	* mangle.c (write_template_args): Remove unreachable code.
264	(write_template_arg): Look through an argument of reference type.
265
2662003-12-16  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
267
268	PR c++/2294
269	* name-lookup.c (push_overloaded_decl): always construct an OVERLOAD
270	if the declaration comes from an using declaration.
271
2722003-12-15  Mark Mitchell  <mark@codesourcery.com>
273
274	PR c++/10926
275	* decl2.c (grokfield): Robustify.
276
277	PR c++/11116
278	* parser.c (cp_parser_throw_expression): Determine whether or not
279	an assignment-expression is present by doing one-token lookahead.
280
281	PR c++/13269
282	* parser.c (cp_parser_function_definition_after_declarator): Stop
283	scanning tokens when reaching EOF.
284
285	PR c++/12989
286	* typeck.c (cxx_sizeof_or_alignof_expr): Robustify.
287
288	PR c++/13310
289	* pt.c (dependent_template_p): Handle OVERLOADs.
290
2912003-12-15  Mark Mitchell  <mark@codesourcery.com>
292
293	PR c++/13243
294	PR c++/12573
295	* parser.c (cp_parser_postfix_expression): Tighten handling of
296	integral constant expressions.
297	(cp_parser_unary_expression): Likewise.
298	* pt.c (value_dependent_expression_p): Remove handling for
299	COMPONENT_REFs.
300
3012003-12-15  Nathan Sidwell  <nathan@codesourcery.com>
302
303	* class.c (add_method): Disallow destructor for java classes.
304	* decl.c (xref_basetypes): Check java class inheritance.
305	* decl2.c (check_java_method): Skip artificial params.
306
307	PR c++/13241
308	C++ ABI change. Mangling of symbols in expressions.
309	* mangle.c (write_mangled_name): Add top_level flag. Rework for
310	nested and unnested mangling. Deal with abi version 1 and version
311	2 differences.
312	(write_expression): Adjust write_mangled_name call.
313	(mangle_decl_string): Use write_mangled_name for all non-type decls.
314
3152003-12-14  Mark Mitchell  <mark@codesourcery.com>
316
317	PR c++/10779
318	PR c++/12160
319	* parser.c (struct cp_parser): Add in_template_argument_list_p.
320	(cp_parser_error): Use c_parse_error.
321	(cp_parser_name_lookup_error): New function.
322	(cp_parser_new): Initialize it.
323	(cp_parser_declarator): Add parenthesized_p parameter.
324	(cp_parser_nested_name_specifier_opt): Use
325	cp_parser_name_lookup_error.
326	(cp_parser_parenthesized_expression_list): Improve comments.
327	(cp_parser_condition): Adjust call to cp_parser_declarator.
328	(cp_parser_template_parameter): Adjust call to
329	cp_parser_parameter_declaration.
330	(cp_parser_template_argument_list): Set
331	in_template_argument_list_p.
332	(cp_parser_explicit_instantiation): Adjust call to
333	cp_parser_declarator.
334	(cp_parser_simple_type_specifier): Remove unncessary code.
335	(cp_parser_using_declaration): Use cp_parser_name_lookup_error.
336	(cp_parser_init_declarator): Handle member function definitions.
337	(cp_parser_direct_declarator): Adjust call to
338	cp_parser_declarator.
339	(cp_parser_type_id): Adjust call to cp_parser_declarator.
340	(cp_parser_parameter_declaration_list): Avoid backtracking where
341	possible.
342	(cp_parser_parameter_declaration): Add parenthesized_p parameter.
343	(cp_parser_function_definition): Remove.
344	(cp_parser_member_declaration): Do not backtrack to look for
345	function definitions.
346	(cp_parser_exception_declaration): Adjust call to
347	cp_parser_declarator.
348	(cp_parser_single_declaration): Handle function definitions via
349	cp_parser_init_declarator.
350	(cp_parser_save_member_function_body): New function.
351
3522003-12-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
353
354	PR c++/13106
355	* decl.c (finish_function): Check if return type is dependent before
356	issuing no return statement warning.
357
3582003-12-12  Nathan Sidwell  <nathan@codesourcery.com>
359
360	PR c++/13118
361	* cp-tree.h (lang_decl_u): Add thunk_alias member.
362	(THUNK_VIRTUAL_OFFSET): Must be a FUNCTION_DECL.
363	(THUNK_ALIAS_P): Remove.
364	(THUNK_ALIAS): Adjust.
365	* class.c (update_vtable_entry_for_fn): Get the vbase within the
366	overriding function's return type.
367	(dump_thunk): Adjust THUNK_ALIAS printing.
368	(build_vtbl_initializer): Adjust THUNK_ALIAS use.
369	* method.c (make_thunk): Revert 12881 test change. Clear
370	THUNK_ALIAS.
371	(finish_thunk): Adjust THUNK_ALIAS setting.
372	(use_thunk): Adjust THUNK_ALIAS use.
373	* semantics.c (emit_associated_thunks): Likewise.
374
375	PR c++/13114, c++/13115
376	* class.c (layout_empty_base): Propagate the move of an empty base
377	to offset zero.
378
379	PR c++/12881
380	* method.c (make_thunk): Deal with thunk aliases when searching
381	for a thunk. Robustify assertion.
382
3832003-12-11  Nathan Sidwell  <nathan@codesourcery.com>
384
385	* mangle.c (conv_type_names): Holds IDENTIFIER_NODEs only.
386	(hash_type): Use TYPE_UID of the identifier's type.
387	(compare_type): Adjust.
388	(mangle_conv_op_name_for_type): Store identifier nodes only, use
389	TYPE_UID has hash value.
390
3912003-12-10  Mark Mitchell  <mark@codesourcery.com>
392
393	* cp-tree.h (DECL_CONV_FN_P): Check that DECL_NAME is non-NULL.
394
3952003-12-08  Matt Austern  <austern@apple.com>
396
397	PR c/13134
398	* decl.c (duplicate_decls): Copy visibility flag when appropriate.
399
4002003-12-09  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
401
402	* init.c (build_new_1): Deal with an OVERLOAD set when
403	looking up for _Jv_AllocObject.
404	* except.c (build_throw): Likewise for _Jv_Throw.
405
4062003-12-08  Jason Merrill  <jason@redhat.com>
407
408	PR c++/11971
409	* tree.c (build_local_temp): Split out from build_cplus_new.
410	(force_target_expr): New fn.
411	* call.c (call_builtin_trap): Call it.  Take a type parm.
412	(convert_arg_to_ellipsis): Pass it.
413	(build_x_va_arg): Use call_builtin_trap.
414
415	PR c++/11929
416	* call.c (magic_varargs_p): New fn.
417	(build_over_call): Do no ellipsis conversions for arguments to
418	functions with magic varargs.
419
420	* name-lookup.c, init.c, except.c: Revert Giovanni's patch from
421	yesterday.
422
423	Give the anonymous namespace a null DECL_NAME.
424	* cp-tree.h: Don't declare anonymous_namespace_name.
425	* decl.c: Don't define it.
426	* dump.c (cp_dump_tree): Don't check for it.
427	* cxx-pretty-print.c (pp_cxx_original_namespace_definition): Likewise.
428	* error.c (dump_decl): Likewise.
429	* name-lookup.c: Define it here.
430	(push_namespace): Put it in DECL_ASSEMBLER_NAME instead.
431	* mangle.c (write_unqualified_name): Adjust.
432
4332003-12-07  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
434
435	PR c++/2294
436	* name-lookup.c (push_overloaded_decl): Always construct an
437	OVERLOAD unless the declaration is a built-in.
438	(set_namespace_binding): While binding OVERLOADs with only one
439	declaration, we still need to call supplement_binding.
440	* init.c (build_new_1): Deal with an OVERLOAD set when
441	looking up for _Jv_AllocObject.
442	* except.c (build_throw): Likewise for _Jv_Throw.
443
4442003-12-06  Mark Mitchell  <mark@codesourcery.com>
445
446	PR c++/13323
447	* class.c (same_signature_p): Handle conversion operators
448	correctly.
449	(check_for_override): Likewise.
450
4512003-12-06  Kelley Cook  <kcook@gcc.gnu.org>
452
453	* Make-lang.in (GXX_CROSS_NAME, CXX_CROSS_NAME): Delete.
454	(c++.install_common, cp/g++.1, c++.install-man): Adjust for above.
455	(c++.uninstall): Likewise.
456
4572003-12-05  Danny Smith <dannysmith@gcc.gnu.org>
458	    Mark Mitchell  <mark@codesourcery.com>
459
460	PR c++/13305
461	* parser.c (cp_parser_elaborated_type_specifier): Accept
462	attributes.
463
4642003-12-05  Mark Mitchell  <mark@codesourcery.com>
465
466	PR c++/13314
467	* parser.c (cp_parser_class_specifier): Match push_scope/pop_scope
468	calls.
469	(cp_parser_class_head): Likewise.
470
4712003-12-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
472
473	PR c++/13166
474	* parser.c (cp_parser_late_parsing_default_args): Make sure the
475	context is a class before calling push_nested_class and
476	pop_nested_class.
477
4782003-12-03  James E Wilson  <wilson@specifixinc.com>
479
480	* g++spec.c (lang_specific_driver): Delete USE_LIBUNWIND_EXCEPTIONS
481	support.
482
4832003-12-03  Mark Mitchell  <mark@codesourcery.com>
484
485	PR c++/9127
486	* cp-tree.h (at_namespace_scope_p): New function.
487	* parser.c (cp_parser_class_head): Handle invalid explicit
488	specializations.
489	* search.c (at_namespace_scope_p): New function.
490
491	PR c++/13179
492	* semantics.c (finish_handler_parms): Do not call eh_type_info for
493	types used in templates.
494
495	PR c++/10771
496	* parser.c (cp_parser_check_for_invalid_template_id): New
497	function.
498	(cp_parser_simple_type_specifier): Use it.
499	(cp_parser_elaborated_type_specifier): Likewise.
500	(cp_parser_class_head): Likewise.
501
5022003-12-02  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
503
504	PR c++/10126
505	* pt.c (convert_nontype_argument): Handle default conversions
506	while converting a pointer to member function.
507
5082003-12-02  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
509
510	PR c++/12573
511	* pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
512	looking into them recursively.
513
5142003-12-02  Richard Henderson  <rth@redhat.com>
515
516	* name-lookup.h (struct cp_binding_level): Use ENUM_BITFIELD.
517	* parser.c (struct cp_token): Likewise.
518	(struct cp_parser_token_tree_map_node): Likewise.
519	* lex.c (struct resword): Move const after ENUM_BITFIELD.
520
5212003-11-30  Mark Mitchell  <mark@codesourcery.com>
522
523	PR c++/9849
524	* parser.c (cp_lexer_prev_token): New function.
525	(cp_parser_skip_to_closing_parenthesis): Add consume_paren
526	parameter.
527	(cp_parser_nested_name_specifier_opt): Add is_declaration
528	parameter.
529	(cp_parser_nested_name_specifier): Likewise.
530	(cp_parser_class_or_namespace_name): Likewise.
531	(cp_parser_class_name): Likewise.
532	(cp_parser_template_id): Likewise.
533	(cp_parser_template_name): Likewise.
534	(cp_parser_id_expression): Adjust calls to
535	cp_parser_nested_name_specifier_op, cp_parser_template_id,
536	cp_parser_class_name.
537	(cp_parser_unqualified_id): Likewise.
538	(cp_parser_postfix_expression): Likewise.
539	(cp_parser_pseudo_destructor_name): Likewise.
540	(cp_parser_cast_expression): Likewise.
541	(cp_parser_mem_initializer_id): Likewise.
542	(cp_parser_simple_type_specifier): Likewise.
543	(cp_parser_type_name): Likewise.
544	(cp_parser_elaborated_type_specifier): Likewise.
545	(cp_parser_qualified_namespace_specifier): Likewise.
546	(cp_parser_using_declaration): Likewise.
547	(cp_parser_using_directive): Likewise.
548	(cp_parser_ptr_operator): Likewise.
549	(cp_parser_declarator_id): Likewise.
550	(cp_parser_class_head): Likewise.
551	(cp_parser_base_specifier): Likewise.
552	(cp_parser_constructor_declarator_p): Likewise.
553	(cp_parser_direct_declarator): Fix typo in comment.
554	(cp_parser_parenthesized_expression_list): Adjust call to
555	cp_parser_skip_to_closing_parenthesis.
556	(cp_parser_selection_statement): Likewise.
557
5582003-11-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
559
560	PR c++/12924
561	* typeck.c (finish_class_member_access_expr): Handle TEMPLATE_ID_EXPR
562	with OVERLOAD and DECL nodes as the first operand.
563
5642003-11-22  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
565
566	* pt.c (tsubst) <ARRAY_REF>: Remove erroneous argument to build_nt.
567
5682003-11-22  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
569
570	PR c++/5369
571	* friend.c (is_friend): Handle member function of a class
572	template as template friend.
573	(do_friend): Likewise.
574	* decl2.c (check_classfn): Add template_header_p parameter.
575	* decl.c (start_decl): Adjust check_classfn call.
576	(grokfndecl): Likewise.
577	* pt.c (is_specialization_of_friend): New function.
578	(uses_template_parms_level): Likewise.
579	(push_template_decl_real): Use uses_template_parms_level.
580	(tsubst_friend_function): Adjust check_classfn call.
581	* cp-tree.h (check_classfn): Adjust declaration.
582	(uses_template_parms_level): Add declaration.
583	(is_specialization_of_friend): Likewise.
584
5852003-11-21  Mark Mitchell  <mark@codesourcery.com>
586
587	PR c++/12515
588	* pt.c (build_non_dependent_expr): Handle GNU extension to ?:
589	operator.
590
5912003-11-21  Jan Hubicka  <jh@suse.cz>
592
593	* parser.c (cp_parser_postfix_expression): Initialize 's' to
594	NULL_TREE.
595
5962003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
597
598	* Make-lang.in (c++.extraclean): Delete.
599
6002003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
601
602	* Make-lang.in (check-g++, lang_checks): Add.
603
6042003-11-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
605
606	PR c++/12932
607	* class.c (currently_open_derived_class): Check if
608	current_class_type is NULL_TREE.
609	* semantics.c (finish_call_expr): Check if
610	currently_open_derived_class returns NULL_TREE.
611	* cp-tree.h (DERIVED_FROM_P): Add parenthesis around PARENT
612	parameter.
613
6142003-11-17  Jason Merrill  <jason@redhat.com>
615
616	* init.c (build_new_1): Preevaluate placement args.
617	* call.c (build_op_delete_call): Don't expose placement args to
618	overload resolution.
619
6202003-11-16  Jason Merrill  <jason@redhat.com>
621
622	* Make-lang.in (c++.tags): Create TAGS.sub files in each directory
623	and TAGS files that include them for each front end.
624
6252003-11-15  Bernardo Innocenti  <bernie@develer.com>
626
627	PR c++/2294
628	* name-lookup.c: Revert previous patch for PR c++/2294 to prevent
629	build failure on libjava.
630
6312003-11-14  Giovanni Bajo  <giovannibajo@libero.it>
632
633	PR c++/2294
634	* name-lookup.c (push_overloaded_decl): Always construct an OVERLOAD
635	unless the declaration is a built-in.
636	(set_namespace_binding): While binding OVERLOADs with only one
637	declaration, we still need to call supplement_binding.
638
6392003-11-14  Mark Mitchell  <mark@codesourcery.com>
640
641	PR c++/12762
642	* parser.c (cp_parser_enclosed_template_argument_list): New
643	function.
644	(cp_parser_template_id): Use it.
645	(cp_parser_simple_type_specifier): Recognize invalid template
646	syntax.
647
6482003-11-14  Giovanni Bajo  <giovannibajo@libero.it>
649
650	PR c++/2094
651	* pt.c (unify): Add support for PTRMEM_CST and
652	FIELD_DECL unification.
653
6542003-11-13  Richard Earnshaw  <rearnsha@arm.com>
655
656	* decl.c (grokfndecl): Change OK to type tree.
657
6582003-11-12  Mark Mitchell  <mark@codesourcery.com>
659
660	* tree.c (build_target_expr_with_type): Treate VA_ARG_EXPR like
661	CONSTRUCTOR.
662
663	* decl.c (cp_make_fname_decl): When creating a top-level
664	__FUNCTION__-like symbol, do register it with pushdecl.
665
666	* decl.c (finish_case_label): Do not check that we are within a
667	switch statement here.
668	* parser.c (struct cp_parser): Add in_iteration_statement_p and
669	in_switch_statement_p.
670	(cp_parser_new): Initialize them.
671	(cp_parser_labeled_statement): Check validity of case labels
672	here.
673	(cp_parser_selection_statement): Set in_switch_statement_p.
674	(cp_parser_iteration_statement): Set in_iteration_statement_p.
675	(cp_parser_jump_statement): Check validity of break/continue
676	statements here.
677
678	PR c++/12735
679	* cp-tree.h (duplicate_decls): Return a tree.
680	* decl.c (duplicate_decls): Clarify documentation.  Return
681	error_mark_node to indicate a failed redeclaration.
682	* friend.c (do_friend): Handle that case.
683	* name-lookup.c (pushdecl): Likewise.
684
6852003-11-11  Jason Merrill  <jason@redhat.com>
686
687	* cp-tree.h (DECL_NAMESPACE_ASSOCIATIONS): New macro.
688	* name-lookup.c (parse_using_directive): New fn.
689	(is_associated_namespace): New fn.
690	(arg_assoc_namespace): Also check associated namespaces.
691	* name-lookup.h: Declare new fns.
692	* pt.c (maybe_process_partial_specialization): Allow
693	specialization in associated namespace.
694	* parser.c (cp_parser_using_directive): Accept attributes.  Use
695	parse_using_directive.
696
6972003-11-10  Richard Henderson  <rth@redhat.com>
698
699	* cvt.c (convert_to_void): Use void_zero_node after overload failure.
700
7012003-11-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
702
703	PR c++/12832
704	* name-lookup.c (supplement_binding): Gracefully handle names
705	used at non-class scope prior declaration.
706
7072003-11-06  Matt Austern  <austern@apple.com>
708
709	* decl.c (duplicate_decls): copy DECL_VISIBILITY field.
710	* method.c (use_thunk): give thunk same visibility as function.
711	* optimize.c (maybe_clone_body): copy DECL_VISIBILITY field.
712
7132003-11-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
714
715	PR c++/11616
716	* pt.c (instantiate_pending_templates): Save and restore
717	input_location.
718
7192003-11-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
720
721	PR c++/2019
722	* friend.c (add_friend): Don't display previous declaration in
723	case of duplicate friend warning.
724
7252003-11-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
726
727	PR c++/9810
728	* call.c (build_over_call): Check access using primary template
729	if FN is a member function template.
730
7312003-11-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
732
733	PR c++/12796
734	* class.c (handle_using_decl): Set input_location before calling
735	error_not_base_type.
736
7372003-10-26  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
738
739	PR c++/10371
740	* semantics.c (finish_non_static_data_member): Handle when
741	both processing_template_decl and qualifying_scope are true.
742
7432003-10-24  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
744
745	PR c++/11076
746	* class.c (handle_using_decl): Swap arguments of error_not_base_type.
747	* parser.c (cp_parser_direct_declarator): Only resolve typename for
748	namespace scope declarations.
749
7502003-10-24  Nathan Sidwell  <nathan@codesourcery.com>
751
752	PR c++/12698, c++/12699, c++/12700, c++/12566
753	* cp-tree.h (THUNK_ALIAS_P, THUNK_ALIAS): New.
754	(debug_class, debug_thunks): New.
755	* class.c (dump_class_hierarchy_1): New break out from ...
756	(dump_class_hierarchy): ... here.
757	(dump_thunk, debug_thunks, debug_class): New.
758	(update_vtable_entry_for_fn): Add ssizetype casts. Correct
759	continued search for primary binfo via virtual.
760	(build_vtbl_initializer): Follow covariant thunk alias.
761	* method.c (make_thunk): Clear DECL_THUNKS of the thunk.
762	(finish_thunk): Look for an alias of the covariant thunk and point
763	to it.
764	(use_thunk): We should never use an alias.
765	* semantics.c (emit_associated_thunks): Do not emit aliases.
766
767	PR c++/12566
768	* cp-tree.h (cp_fname_init): Add TYPE pointer param.
769	* decl.c (cp_fname_init): Add TYPE pointer param. Set it. Don't
770	create an ad-hoc ERROR_MARK.
771	(cp_make_fname_decl): Adjust.
772	* pt.c (tsubst_expr): Adjust.
773
7742003-10-23  Jason Merrill  <jason@redhat.com>
775
776	PR c++/12726
777	* tree.c (build_target_expr_with_type): Don't call force_rvalue
778	for CONSTRUCTORs.
779
7802003-10-22  Kazu Hirata  <kazu@cs.umass.edu>
781
782	* call.c: Fix comment formatting.
783	* class.c: Likewise.
784	* cxx-pretty-print.c: Likewise.
785	* init.c: Likewise.
786	* parser.c: Likewise.
787	* pt.c: Likewise.
788	* semantics.c: Likewise.
789	* tree.c: Likewise.
790	* typeck.c: Likewise.
791	* typeck2.c: Likewise.
792
7932003-10-21  Mark Mitchell  <mark@codesourcery.com>
794
795	PR c++/11962
796	* typeck.c (build_x_conditional_expr): Handle missing middle
797	operands in templates.
798	* mangle.c (write_expression): Issue errors about attempts to
799	mangle a non-existant middle operator to the ?: operator.
800
8012003-10-21  Robert Bowdidge   <bowdidge@apple.com>
802
803	* decl.c (cp_finish_decl): Remove clause intended for asm directives
804	  in struct or class fields: this code is never executed.
805
8062003-10-22  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
807
808	* decl.c (start_decl): Exit if push_template_decl returns
809	error_mark_node.
810
8112003-10-20  Kazu Hirata  <kazu@cs.umass.edu>
812
813	* ChangeLog: Fix typos.
814	* call.c: Fix comment typos.
815	* class.c: Likewise.
816	* cp-tree.h: Likewise.
817	* cvt.c: Likewise.
818	* cxx-pretty-print.c: Likewise.
819	* decl.c: Likewise.
820	* decl2.c: Likewise.
821	* init.c: Likewise.
822	* mangle.c: Likewise.
823	* name-lookup.c: Likewise.
824	* parser.c: Likewise.
825	* search.c: Likewise.
826	* semantics.c: Likewise.
827	* tree.c: Likewise.
828	* typeck.c: Likewise.
829
8302003-10-20  Jan Hubicka  <jh@suse.cz>
831
832	* decl.c (start_cleanup_fn):  Set DECL_DECLARED_INLINE_P to deffer
833	the expansion.
834
8352003-10-20  Mark Mitchell  <mark@codesourcery.com>
836
837	* Make-lang.in (c++.install-info): Remove.
838
8392003-10-20  Jason Merrill  <jason@redhat.com>
840
841	* class.c (layout_class_type): Set DECL_ARTIFICIAL on padding
842	field.
843
8442003-10-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
845
846	PR c++/9781, c++/10583, c++/11862
847	* decl.c (cp_finish_decl): Exit immediately if decl is an
848	error_mark_node.
849	* pt.c (push_template_decl_real): Return error_mark_node for
850	invalid template declaration of variable.
851
8522003-10-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
853
854	PR c++/12495
855	* pt.c (lookup_template_class): Handle when current_class_type
856	is a local class.
857
8582003-10-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
859
860	PR c++/2513
861	* decl.c (make_typename_type): Use dependent_type_p.
862	(make_unbound_class_template): Likewise.
863	* pt.c (instantiate_class_template): Increment
864	processing_template_decl during substitution of template friend
865	function.  Preincrement processing_template_decl rather than
866	postincrement.
867	(get_mostly_instantiated_function_type): Increment
868	processing_template_decl during partial substitution of function
869	type.
870
8712003-10-15  Jan Hubicka  <jh@suse.cz>
872
873	PR c++/12574
874	* decl2.c (cxx_callgraph_analyze_expr): Deal with baselink.
875
8762003-10-14  Jason Merrill  <jason@redhat.com>
877
878	PR c++/11878
879	* tree.c (build_target_expr_with_type): Call force_rvalue for
880	classes with non-trivial copy ctors.
881
882	PR c++/11063
883	* typeck.c (build_modify_expr): Call convert rather than abort.
884
8852003-10-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
886
887	Breack out decl.c (3/n)
888	* name-lookup.c: Include flags.h
889	(lookup_name_current_level): Make static.
890	(add_decl_to_level): Likewise.
891	(push_local_binding): Likewise.
892	(push_overloaded_decl): Likewise.
893	(lookup_using_namespace): Likewise.
894	(qualified_lookup_using_namespace): Likewise.
895	(lookup_type_current_level): Likewise.
896	(unqualified_namespace_lookup): Likewise.
897	(namespace_ancestor): Likewise.
898	(push_using_directive): Likewise.
899	* decl.c (pushdecl): Move to name-lookup.c.
900	(pushdecl_top_level_1): Likewise.
901	(pushdecl_top_level): Likewise.
902	(pushdecl_top_level_and_finish): Likewise.
903	(maybe_push_decl): Likewise.
904	(push_using_decl): Likewise.
905	(push_overloaded_decl): Likewise.
906	(make_anon_name): Likewise.
907	(anon_cnt): Likewise.
908	(clear_anon_tags): Likewise.
909	(maybe_inject_for_scope_var): Likewise.
910	(check_for_out_of_scope_variable): Likewise.
911	* Make-lang.in (cp/name-lookup.o): Depend on flags.h.
912	* decl.c (warn_extern_redeclared_static): Export.
913	* cp-tree.h (warn_extern_redeclared_static): Declare.
914
9152003-10-14  Nathanael Nerode  <neroden@gcc.gnu.org>
916
917	* Make-lang.in: Replace uses of $(target_alias) with
918	$(target_noncanonical).
919
9202003-10-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
921
922	* ChangeLog: Add PR number to patch for PR c++/12370.
923
9242003-10-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>
925
926	* name-lookup.h (cxx_scope_find_binding_for_name): Don't export.
927	(binding_for_name): Likewise.
928	(cxx_binding_clear): Move to name-lookup.c.
929	* name-lookup.c (cxx_scope_find_binding_for_name): Now static.
930	(binding_for_name): Likewise.
931	* decl2.c (is_ancestor): Move to name-lookup.c
932	(namespace_ancestor): Likewise.
933	(add_using_namespace): Likewise.
934	(ambiguous_decl): Likewise.
935	(lookup_using_namespace): Likewise.
936	(qualified_lookup_using_namespace): Likewise.
937	(set_decl_namespace): Likewise.
938	(decl_namespace): Likewise.
939	(current_decl_namespace): Likewise.
940	(push_decl_namespace): Likewise.
941	(pop_decl_namespace): Likewise.
942	(push_scope): Likewise.
943	(pop_scope): Likewise.
944	(struct arg_lookup): Likewise.
945	(arg_assoc): Likewise.
946	(arg_assoc_args): Likewise.
947	(arg_assoc_type): Likewise.
948	(add_function): Likewise.
949	(arg_assoc_namespace): Likewise.
950	(arg_assoc_class): Likewise.
951	(arg_assoc_template_arg): Likewise.
952	(do_namespace_alias): Likewise.
953	(validate_nonmember_using_decl): Likewise.
954	(do_nonmember_using_decl): Likewise.
955	(do_toplevel_using_decl): Likewise.
956	(do_local_using_decl): Likewise.
957	(do_class_using_decl): Likewise.
958	(do_using_directive): Likewise.
959	(constructor_name_full): Likewise.
960	(constructor_name): Likewise.
961	(constructor_name_p): Likewise.
962
9632003-10-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>
964
965	Break out decl.c (2/n)
966	* name-lookup.c: Include diagnostic.h
967	(cxx_binding_free): Make static.
968	(cxx_binding_make): Likewise.
969	(binding_table_new): Likewise
970	(binding_table_free): Likewise.
971	(binding_table_insert): Likewise.
972	(binding_table_find_anon_type): Likewise.
973	(binding_table_reverse_maybe_remap): Likewise.
974	(supplement_binding): Likewise.
975	* name-lookup.h (global_scope_name): Declare extern.
976	(global_type_node): Likewise.
977	(cxx_binding_free): Don't export.
978	(cxx_binding_make): Likewise.
979	(binding_table_new): Likewise.
980	(binding_table_free): Likewise.
981	(binding_table_insert): Likewise.
982	(binding_table_find_anon_type): Likewise.
983	(binding_table_reverse_maybe_remap): Likewise.
984	* Make-lang.in (cp/name-lookup.o): Depend on $(DIAGNOSTIC_H)
985	* decl.c (lookup_namespace_name): Move to name-lookup.c
986	(select_decl): Likewise.
987	(unqualified_namespace_lookup): Likewise.
988	(lookup_qualified_name): Likewise.
989	(lookup_name_real): Likewise.
990	(lookup_name_nonclass): Likewise.
991	(lookup_function_nonclass): Likewise.
992	(lookup_name): Likewise.
993	(lookup_name_current_level): Likewise.
994	(lookup_type_current_level): Likewise.
995	(lookup_flags): Likewise.
996	(qualify_lookup): Likewise.
997	(lookup_tag): Likewise.
998	(lookup_tag_reverse): Likewise.
999	(getdecls): Likewise.
1000	(storedecls): Remove.
1001	(cxx_remember_type_decls): Move to name-lookup.c.
1002	(global_bindings_p): Likewise.
1003	(innermost_nonclass_level): Likewise.
1004	(toplevel_bindings_p): Likewise.
1005	(namespace_bindings_p): Likewise.
1006	(kept_level_p): Likewise.
1007	(innermost_scope_kind): Likewise.
1008	(template_parm_scope_p): Likewise.
1009	(push_binding): Likewise.
1010	(push_local_binding): Likewise.
1011	(add_decl_to_level): Likewise.  Make extern.
1012	(push_class_binding): Move to name-lookup.c.
1013	(resume_level): Likewise.  Rename to resume_scope.
1014	(begin_scope): Move to name-lookup.c.
1015	(indent): Likewise.
1016	(binding_depth): Likewise.
1017	(is_class_level): Likewise.
1018	(cxx_scope_descriptor): Likewise.
1019	(cxx_scope_debug): Likewise.
1020	(namespace_scope_ht_size): Likewise.
1021	(leave_scope): Likewise.
1022	(pushlevel_class): Likewise.
1023	(poplevel_class): Likewise.
1024	(clear_identifier_class_values): Likewise.
1025	(pushdecl_with_scope): Likewise.
1026	(pushdecl_namespace_level): Likewise.
1027	(pushdecl_class_level): Likewise.
1028	(push_class_level_binding): Likewise.
1029	(push_using_directive): Likewise.
1030	(identifier_global_value): Likewise.
1031	(keep_next_level_flag): Likewise.
1032	(keep_next_level): Likewise.
1033	(free_binding_level): Likewise.
1034	(set_class_shadows): Likewise.
1035	(maybe_push_cleanup_level): Likewise.
1036	(cp_namespace_decls): Likewise.
1037	(bt_print_entry): Likewise.
1038	(print_binding_level): Likewise.
1039	(print_other_binding_stack): Likewise.
1040	(print_binding_stack): Likewise.
1041	(push_namespace): Likewise.
1042	(pop_namespace): Likewise.
1043	(push_nested_namespace): Likewise.
1044	(pop_nested_namespace): Likewise.
1045	(cxx_saved_binding_make): Likewise.
1046	(struct cxx_saved_binding_make): Likewise.
1047	(store_bindings): Likewise.
1048	(maybe_push_to_top_level): Likewise.
1049	(push_to_top_level): Likewise.
1050	(pop_from_top_level): Likewise.
1051	(identifier_type_value): Likewise.
1052	(set_identifier_type_value): Likewise.
1053	(set_identifier_type_value_with_scope): Likewise.
1054	(pop_everything): Likewise.
1055	(pushtag): Likewise.
1056	(follow_tag_typedef): Likewise.
1057	(maybe_process_template_type_declaration): Likewise.
1058	(pop_binding): Likewise.
1059	* cp-tree.h: Move corresponding declarations to name-lookup.h
1060
10612003-10-12  Steven Bosscher  <steven@gcc.gnu.org>
1062
1063	* cvt.c (ocp_convert): Move warning to C common code.
1064
10652003-10-09  Jason Merrill  <jason@redhat.com>
1066
1067	PR c++/6392
1068	* tree.c (build_cplus_array_type): Handle all quals the same.
1069	(cp_build_qualified_type_real): Look through arrays first.
1070
1071	* tree.c (build_cplus_new): Use build_decl to create a VAR_DECL.
1072	(build_target_expr_with_type): Likewise.
1073
1074	* pt.c (instantiate_class_template): Sanity check that our
1075	enclosing class has been instantiated.
1076
10772003-10-08  Giovanni Bajo  <giovannibajo@libero.it>
1078
1079	* cp_tree.h: Added TFF_NO_FUNCTION_ARGUMENTS.
1080	* error.c (dump_function_decl): Use it to skip the dump of the
1081	arguments.
1082	(dump_expr): When dumping a declaration found within an
1083	expression, always set TFF_NO_FUNCTION_ARGUMENTS
1084	in the flags.
1085
10862003-10-08  Giovanni Bajo  <giovannibajo@libero.it>
1087
1088	PR c++/11097
1089	* pt.c (tsubst_decl): Substitute also the DECL_NAME node of
1090	USING_DECL.
1091
10922003-10-06  Mark Mitchell  <mark@codesourcery.com>
1093
1094	PR c++/10147
1095	* call.c (initialize_reference): Tweak error message.
1096	* cxx-pretty-print.h (cxx_pretty_printer_flags): Remove
1097	pp_cxx_flag_qualified_id and pp_cxx_flag_global_scope.
1098	* cxx-pretty-print.c (pp_cxx_id_expression): Always display
1099	qualified entities using qualified names.
1100
1101	PR c++/12337
1102	* init.c (build_new_1): Make sure that the expression returned is
1103	not an lvalue.
1104
1105	PR c++/12344, c++/12236, c++/8656
1106	* decl.c (start_function): Do not ignore attributes embedded in a
1107	function declarator.
1108
11092003-10-06  Mark Mitchell  <mark@codesourcery.com>
1110
1111	* Make-lang.in (c++.info): Remove.
1112	(c++.dvi): Remove.
1113	(c++.generated-manpages): Replace with ...
1114	(generated-manpages): ... this.
1115
11162003-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1117
1118	* decl.c (struct cp_binding_level): Move to name-lookup.h
1119	(current_binding_level): Likewise.
1120	(class_binding_level): Likewise.
1121	* cp-tree.h (enum scope_kind): Likewise.
1122
11232003-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1124
1125	* name-lookup.c (binding_entry_free): Nullify name and type
1126	fields.
1127
11282003-10-02  Mark Mitchell  <mark@codesourcery.com>
1129
1130	PR c++/12486
1131	* typeck.c (finish_class_member_access_expr): Issue diagnostic
1132	on erroneous use of qualified name.
1133
11342003-09-30  Richard Henderson  <rth@redhat.com>
1135
1136	PR c++/12370
1137	* decl.c (duplicate_decls): Copy DECL_SAVED_INSNS too.
1138
11392003-09-30  Kelley Cook  <kelleycoook@wideopenwest.com>
1140
1141	* g++spec.c: Convert to ISO C90 prototypes.
1142	* parser.c: Likewise.
1143
11442003-09-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1145
1146	* decl.c (pop_binding): Don't mess with nullifying binding->scope
1147	here.
1148	* name-lookup.c: Re-format.
1149	(cxx_binding_free): Nullify binding->scope.
1150
11512003-09-29  Jan Hubicka  <jh@suse.cz>
1152
1153	PR C++/12047
1154	* except.c (build_eh_type_type): Call mark_used on the type.
1155
11562003-09-28  Richard Henderson  <rth@redhat.com>
1157
1158	* typeck.c (c_expand_asm_operands): Take location_t, instead of
1159	individual file and line.
1160
11612003-09-28  Andreas Jaeger  <aj@suse.de>
1162
1163	* decl.c (cxx_builtin_type_decls): Convert to ISO C90 function
1164	definition.
1165	* init.c (push_base_cleanups): Likewise.
1166	* decl2.c (finish_file): Likewise.
1167	* mangle.c (init_mangle): Likewise.
1168	(dump_substitution_candidates): Likewise.
1169	* search.c: Likewise.
1170
11712003-09-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1172
1173	* name-lookup.h (get_global_value_if_present): New function.
1174	(is_typename_at_global_scope): Likewise.
1175	* except.c (do_begin_catch): Use get_global_value_if_present.
1176	(do_end_catch): Likewise.
1177	(do_allocate_exception): Likewise.
1178	(do_free_exception): Likewise.
1179	(build_throw): Likewise.
1180	* parser.c (cp_parser_member_declaration): Likewise.
1181	* rtti.c (throw_bad_cast): Likewise.
1182	(throw_bad_typeid): Likewise.
1183	* decl.c (check_tag_decl): Use is_typename_at_global_scope.
1184	(grokdeclarator): Likewise.
1185	* cp-tree.h (global_namespace): Move to name-lookup.h
1186	* call.c (call_builtin_trap): Tidy.
1187
11882003-09-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1189
1190	PR c++/11415
1191	* parser.c (cp_parser_nested_name_specifier_opt): Issue correct
1192	error message when parser->scope is global_namespace.
1193
11942003-09-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1195
1196	* cp-tree.h, name-lookup.h, decl.c, decl2.c: Remove reference to
1197	macros BINDING_SCOPE, BINDING_VALUE and BINDING_TYPE.
1198
11992003-09-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1200
1201	* decl.c (pop_binding_level, suspend_binding_level,
1202	find_class_binding_level): Merge into leave_scope.  Remove.
1203	(leave_scope):  New function.
1204	(poplevel): Update.
1205	(poplevel_class): Likewise.
1206	(pop_namespace): Likewise.
1207
12082003-09-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1209
1210	PR c++/5655
1211	* parser.c (cp_parser_check_access_in_redeclaration): New function.
1212	(cp_parser_member_declaration): Use it.
1213	(cp_parser_template_declaration_after_export): Likewise.
1214
12152003-09-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1216
1217	* cp-tree.h (scope_kind): Add new enumerator.
1218	(keep_next_level): Change parameter type to bool.
1219	(begin_scope):  Change prototype.
1220	(pushlevel): Remove declaration.
1221	* decl.c (push_binding_level): Fold in begin_scope.  Remove.
1222	(struct cp_binding_level): Remove tag_tranparent field.  Make keep
1223	of bitsize one.
1224	(keep_next_level_flag): Make a bool.
1225	(cxx_scope_descriptor): Update scope names table
1226	(make_cxx_scope): Fold in begin_scope.  Remove..
1227	(namespace_scope_ht_size): New function.
1228	(begin_scope): Change prototype.  Return a scope.  Tidy.
1229	(kept_level_p): Update.
1230	(pushlevel): Remove.
1231	(maybe_push_cleanup_level): Simplify.
1232	(poplevel): Update for sk_cleanup and keep change.
1233	(print_binding_level): Likewise.
1234	(initial_push_namespace_scope): Fold in begin_scope.  Remove.
1235	(push_namespace): Update.
1236	(pushtag): Likewise.
1237	(lookup_tag): Likewise.
1238	(lookup_name_current_level): Likewise.
1239	(lookup_type_current_level): Likewise.
1240	(cxx_init_decl_processing): Likewise.
1241	(start_function): Likewise.
1242	(begin_function_body): Likewise.
1243	(start_method): Likewise.
1244	* pt.c (push_inline_template_parms_recursive): Likewise.
1245	(begin_template_parm_list): Likewise.
1246	(begin_specialization): Likewise.
1247	* semantics.c (do_pushlevel): Likewise.
1248	(begin_compound_stmt): Likewise.
1249	(begin_stmt_expr): Likewise.
1250
12512003-09-21  Richard Henderson  <rth@redhat.com>
1252
1253	* class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c,
1254	method.c, optimize.c, pt.c, semantics.c, tree.c: Revert.
1255
12562003-09-21  Richard Henderson  <rth@redhat.com>
1257
1258	* class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c,
1259	method.c, optimize.c, pt.c, semantics.c, tree.c: Update for
1260	DECL_SOURCE_LOCATION rename and change to const.
1261
12622003-09-20  Richard Henderson  <rth@redhat.com>
1263
1264	* decl.c, decl2.c, pt.c: Use %J in diagnostics.
1265
12662003-09-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1267
1268	PR c++/157
1269	* parser.c (cp_parser_direct_declarator): Clear
1270	parser->num_template_parameter_lists when parsing function
1271	parameters.
1272	(cp_parser_constructor_declarator_p): Likewise.
1273
12742003-09-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1275
1276	PR c++/495
1277	* pt.c (tsubst_friend_class): Only use innermost template
1278	arguments for the injected friend class template.
1279
12802003-09-19  Nathan Sidwell  <nathan@codesourcery.com>
1281
1282	PR c++/12332
1283	* pt.c (instantiate_class_template): Increment
1284	processing_template_decl around the tsubst of a template member
1285	function.
1286
12872003-09-19  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1288
1289	* decl.c (cxx_scope_descriptor): Fix thinko.
1290	(struct cp_binding_level): Adjust type of binding_depth field.
1291
12922003-09-18  Danny Smith  <dannysmith@users.sourceforge.net>
1293
1294	PR c++/12320
1295	* call.c (type_passed_as): Check for incomplete type.
1296	(convert_for_arg_passing): Likewise.
1297
12982003-09-18  Nathan Sidwell  <nathan@codesourcery.com>
1299
1300	PR c++/9848
1301	* optimize.c (maybe_clone_body): Don't set MARK_USED on parameters
1302	here.
1303	* semantics.c (expand_body): Set it here on the remaining clones.
1304
13052003-09-18  Roger Sayle  <roger@eyesopen.com>
1306
1307	* lex.c (init_operators): Remove operator_name_info for FFS_EXPR.
1308	* class.c (instantiate_type): Remove FFS_EXPR case.
1309
13102003-09-18  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1311
1312	* ChangeLog: Fix recent commit.
1313
13142003-09-18  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1315
1316	* ChangeLog: Add PR number to patch for PR c++/12316.
1317
13182003-09-18  Gabriel Dos Reis <gdr@integrable-solutions.net>
1319
1320	* error.c (dump_type): Simplify.  Use pp_type_specifier_seq for
1321	"C" types.
1322	* cxx-pretty-print.c (pp_cxx_type_specifier_seq): Fix thinko.
1323
13242003-09-17  Richard Henderson  <rth@redhat.com>
1325
1326	* semantics.c (expand_body): Don't save/restore input_location.
1327
13282003-09-17  Mark Mitchell  <mark@codesourcery.com>
1329
1330	PR c++/12266
1331	* cp-tree.h (tsubst_flags_t): Add tf_conv.
1332	* class.c (standard_conversion): Pass tf_conv to
1333	instantiate_type.
1334	(resolve_address_of_overloaded_function): Do not call mark_used
1335	when just checking conversions.
1336
1337	PR debug/12066
1338	* cp-lang.c (LANG_HOOKS_BUILTIN_TYPE_DECLS): Define.
1339	* cp-tree.h (cxx_builtin_type_decls): Declare.
1340	* decl.c (builtin_type_decls): New variables.
1341	(cxx_builtin_type_decls): New function.
1342	(record_builtin_type): Add to builtin_type_decls.
1343
13442003-09-17  Richard Henderson  <rth@redhat.com>
1345
1346	PR c++/12316
1347	* semantics.c (expand_or_defer_fn): Inc/dec function_depth.
1348
13492003-09-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1350
1351	PR c++/7939
1352	* typeck.c (comptypes): Don't ICE when its first argument is
1353	error_mark_node.
1354	(compparms): Reverse the arguments of same_type_p.
1355
13562003-09-15  Nathan Sidwell  <nathan@codesourcery.com>
1357
1358	PR c++/12184
1359	* typeck.c (convert_arguments): Return error_mark_node for an
1360	incomplete parameter. Make error message more informative.
1361
13622003-09-12  Mark Mitchell  <mark@codesourcery.com>
1363
1364	PR c++/3907
1365	* class.c (maybe_note_name_used_in_class): Refine test for whether
1366	or not we are in a class scope.
1367
1368	* cp-tree.h (language_function): Remove x_expanding_p.
1369	(expanding_p): Remove.
1370	(doing_semantic_analysis_p): Remove.
1371	(scope_kind): Add sk_function_parms, sk_class,
1372	sk_namespace.
1373	(innermost_scope_kind): New method.
1374	* call.c (cxx_type_promotes_to): Use type_decays_to.
1375	* cp-lang.c (LANG_HOOKS_PUSHLEVEL): Redefine.
1376	(LANG_HOOKS_POPLEVEL): Likewise.
1377	* decl.c (cp_binding_level): Remove parm_flag, template_parms_p,
1378	template_spec_p, namespace_p, is_for_scope, is_try_scope, and
1379	is_catch_scope.  Add kind and explicit_spec_p.
1380	(cxx_scope_descriptor): Use a lookup table.
1381	(find_class_binding_level): Use "kind" field in binding_level, not
1382	the various flags.
1383	(pop_binding_level): Likewise.
1384	(innermost_nonclass_level): Likewise.
1385	(toplevel_bindings_p): Likewise.
1386	(namespace_bindings_p): Likewise.
1387	(template_parm_scope_p): Likewise.
1388	(innermost_scope_kind): New method.
1389	(current_tmpl_spec_kind): Use "kind" field in binding_level, not
1390	the various flags.
1391	(pushlevel): Remove check for doing_semantic_analysis_p.
1392	(begin_scope): Simplify.
1393	(add_decl_to_level): Use "kind" field in binding_level, not
1394	the various flags.
1395	(push_local_binding): Likewise.
1396	(pop_label): Remove check for doing_semantic_analysis_p.
1397	(poplevel): Use "kind" field in binding_level, not
1398	the various flags.
1399	(set_block): Remove check for doing_semantic_analysis_p.
1400	(pushlevel_class): Use "kind" field in binding_level, not
1401	the various flags.
1402	(poplevel_class): Likewise.
1403	(initial_push_namespace_scope): Likewise.
1404	(maybe_push_to_top_level): Likewise.
1405	(set_identifier_type_value_with_scope): Likewise.
1406	(pop_everything): Likewise.
1407	(maybe_process_template_type_declaration): Likewise.
1408	(pushtag): Likewise.
1409	(pushdecl): Likewise.
1410	(pushdecl_with_scope): Likewise.
1411	(check_previous_goto_1): Likewise.
1412	(define_label): Likewise.
1413	(finish_case_label): Likewise.
1414	(lookup_tag): Likewise.
1415	(unqualified_namespace_lookup): Likewise.
1416	(lookup_name_real): Likewise.
1417	(lookup_name_current_level): Likewise.
1418	(lookup_type_current_level): Likewise.
1419	(record_builtin_type): Likewise.
1420	(cp_make_fname_decl): Likewise.
1421	(maybe_inject_for_scope_var): Likewise.
1422	(cp_finish_decl): Remove check for doing_semantic_analysis_p.
1423	(start_function): Use begin_scope, not pushlevel.
1424	(finish_function): Use "kind" field in binding_level, not
1425	the various flags.
1426	(start_method): Use begin_scope, not pushlevel.
1427	(make_label_decl): Do not check expanding_p.
1428	(save_function-data): Do not set expanding_p.
1429	(cxx_push_function_context): Do not clear expanding_p.
1430	* semantics.c (cxx_expand_function_start): Do not set expanding_p.
1431
14322003-09-14  Mark Mitchell  <mark@codesourcery.com>
1433
1434	* class.c (layout_class_type): Make DECL_MODE match TYPE_MODE for
1435	an bit-field whose width exceeds that of its type.
1436
14372003-09-14  Geoffrey Keating  <geoffk@apple.com>
1438
1439	* rtti.c (get_tinfo_decl): Set TREE_PUBLIC for typeinfo decls.
1440
14412003-09-14  Kazu Hirata  <kazu@cs.umass.edu>
1442
1443	* ChangeLog: Follow spelling conventions.
1444	* parser.c: Likewise.
1445
14462003-09-13  Richard Henderson  <rth@redhat.com>
1447
1448	* decl2.c (finish_file): Check cgraph_assemble_pending_functions
1449	during relaxation loop.
1450
14512003-09-11  David Edelsohn  <edelsohn@gnu.org>
1452
1453	* decl2.c (var_finalized_p): Swap arms of conditional.
1454
14552003-09-10  Nathan Sidwell  <nathan@codesourcery.com>
1456
1457	PR c++/11788
1458	* typeck.c (build_address): If it is a function, mark it used.
1459	(build_unary_op): Do not lose object's side-effects when taking
1460	address of static member function.
1461	* class.c (resolve_address_of_overloaded_function): Use
1462	tsubst_flags_t parameter. Only expect overload sets. Adjust.
1463	(instantiate_type): Adjust flags passing. Do not lose object's
1464	side-effects when taking address of static member function.
1465
14662003-09-11  Richard Henderson  <rth@redhat.com>
1467
1468	* semantics.c (expand_or_defer_fn): Update for new
1469	cgraph_finalize_function argument.
1470
14712003-09-10  Richard Henderson  <rth@redhat.com>
1472
1473	* decl2.c (cxx_callgraph_analyze_expr): Mark argument unused.
1474
14752003-09-10  Jan Hubicka  <jh@suse.cz>
1476
1477	* decl2.c (var_finalized_p): New.
1478	(maybe_emit_vtables, write_out_vars, finish_file): Use it.
1479
14802003-09-10  Richard Henderson  <rth@redhat.com>
1481
1482	* decl2.c (cxx_callgraph_analyze_expr): New, from corpse of
1483	mark_member_pointers.
1484	(lower_function): Remove.
1485	* cp-tree.h: Update to match.
1486	* cp-lang.c (LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): New.
1487	(LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION): Remove.
1488
14892003-09-09  Richard Henderson  <rth@redhat.com>
1490
1491	* semantics.c (expand_or_defer_fn): Update call to
1492	cgraph_finalize_function.
1493
1494	* semantics.c (expand_or_defer_fn): Use cgraph_finalize_function
1495	always.
1496
1497	* decl2.c (finish_file): Avoid out-of-bounds array reference
1498	during memmove.
1499
15002003-09-09  Richard Henderson  <rth@redhat.com>
1501
1502	* decl2.c (mark_member_pointers): Rename from
1503	mark_member_pointers_and_eh_handlers and don't check eh handlers.
1504
15052003-09-09  Christian Ehrhardt  <ehrhardt@mathematik.uni-ulm.de>
1506
1507	PR bootstrap/12168
1508	* method.c (use_thunk): Clear DECL_RTL of copied nodes.
1509
15102003-09-08  Mark Mitchell  <mark@codesourcery.com>
1511
1512	* cp-lang.c (LANG_HOOKS_REGISTER_BUILTIN_TYPE): Define to
1513	c_register_builtin_type.
1514
1515	PR c++/11786
1516	* decl2.c (add_function): Do not complain about seeing the same
1517	non-function twice.
1518	* semantics.c (perform_koenig_lookup): Improve documentation.
1519
1520	PR c++/5296
1521	* pt.c (try_one_overload): Add addr_p parameter.
1522	(resolve_overloaded_unification): Pass it.
1523
15242003-09-08  Richard Henderson  <rth@redhat.com>
1525
1526	* optimize.c (maybe_clone_body): Inc/dec function_depth.
1527
15282003-09-08  Richard Henderson  <rth@redhat.com>
1529
1530	* decl.c (finish_function): Clear current_function_decl.
1531	* decl2.c (mark_used): Don't push/pop gc context.
1532	* optimize.c (optimize_function): Likewise.
1533	* tree.c (cp_cannot_inline_tree_fn): Likewise.
1534	* pt.c (instantiate_decl): Inc/dec function_depth instead.
1535	* semantics.c (expand_body): Update for tree_rest_of_compilation
1536	nested argument.
1537
15382003-09-07  Gabriel Dos Reis  <gcc@integrable-solutions.net>
1539
1540	PR c++/11762
1541	* error.c (dump_decl): Handle namespace-alias-definition.
1542	* decl.c (warn_extern_redeclared_static): There is no point in
1543	checking changes in storage class specifier for a namespace
1544	declaration.
1545	(duplicate_decls): Tidy diagnostic message.
1546	* cxx-pretty-print.c (pp_cxx_left_brace): New macro.
1547	(pp_cxx_right_brace): Likewise.
1548	(pp_cxx_original_namespace_definition): New function.
1549	(pp_cxx_namespace_alias_definition): Likewise.
1550	(pp_cxx_declaration): Use them.  Handle NAMESPACE_DECLs.
1551
15522003-09-07  Jan Hubicka  <jh@suse.cz>
1553
1554	* decl2.c (maybe_emit_vtables, write_out_vars, finish_file):
1555	Avoid re-emitting variables in unit-at-a-time mode.
1556
15572003-09-06  Mark Mitchell  <mark@codesourcery.com>
1558
1559	PR c++/11867
1560	* call.c (standard_conversion): Improve comments.
1561	(perform_direct_initialization): Make sure we return an expression
1562	of the correct type.
1563	* typeck.c (build_static_cast): Check for ambiguity and
1564	accessibility when performing conversions.
1565
15662003-09-06  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1567
1568	* cp-tree.h (add_binding): Remove declaration.
1569	* name-lookup.h (supplement_binding): Declare.
1570	* decl.c (add_binding): Move to name-lookup.c.
1571	(push_local_binding): Adjust.
1572	(push_class_binding): Likewise.
1573	(set_identifier_type_value_with_scope): Likewise.
1574	* name-lookup.c (supplement_binding): Rename from add_binding.
1575	Return a bool.  Improve documentation.
1576	(set_namespace_binding): Adjust.
1577	* Make-lang.in (cp/name-lookup.o): Depend on toplev.h
1578
15792003-09-06  Nathan Sidwell  <nathan@codesourcery.com>
1580
1581	PR c++/11794
1582	* class.c (pushclass): Push dependent using decls for nested
1583	classes of templates too.
1584
15852003-09-06  Roger Sayle  <roger@eyesopen.com>
1586
1587	PR c++/11409
1588	* class.c (resolve_address_of_overloaded_function): When building
1589	list of matching non-template function decls, ignore anticipated
1590	declarations of undeclared or shadowed GCC builtins.
1591
15922003-09-06  Steven Bosscher  <steven@gcc.gnu.org>
1593
1594	PR c++/11595
1595	* decl.c (define_label): Remove unreachable timevar pop.
1596	Always return the decl, even if the definition is invalid.
1597
15982003-09-06  Nathan Sidwell  <nathan@codesourcery.com>
1599
1600	PR c++/12167
1601	* parser.c (cp_parser_late_parsing_default_args): Push & pop the
1602	unparsed functions queue.
1603
16042003-09-05  Mark Mitchell  <mark@codesourcery.com>
1605
1606	PR c++/12163
1607	* call.c (perform_direct_initialization): Correct logic for
1608	direct-initialization of a class type.
1609
1610	PR c++/12146
1611	* pt.c (lookup_template_function): Robustify.
1612
16132003-09-05  Nathan Sidwell  <nathan@codesourcery.com>
1614
1615	PR c++/11922
1616	* pt.c (tsubst_qualified_id): Make sure we get a non-type.
1617	(tsubst_expr, tsubst_copy_and_build): Pass false, not zero, as
1618	is_type_p to lookup_qualified_name.
1619
1620	* semantics.c (finish_call_expr): Refactor some code.
1621
1622	PR c++/12037
1623	* cp-tree.h (COMPOUND_EXPR_OVERLOADED): New.
1624	(build_min_non_dep): Declare.
1625	* tree.c (build_min): Propagate TREE_SIDE_EFFECTS.
1626	(build_min_non_dep): New.
1627	* cvt.c (convert_to_void): Don't explicitly copy
1628	TREE_SIDE_EFFECTS, TREE_NO_UNUSED_WARNING.
1629	* call.c (build_new_method_call): Use build_min_non_dep.
1630	* decl2.c (grok_array_decl): Likewise.
1631	(build_offset_ref_call_from_tree): Likewise.
1632	* typeck.c (finish_class_member_access_expr,
1633	build_x_indirect_ref, build_x_binary_op, build_x_unary_op,
1634	build_x_conditional_expr, build_x_compound_expr): Likewise.
1635	(build_static_cast, build_reinterpret_cast,
1636	build_const_cast): Propagate TREE_SIDE_EFFECTS inside a template.
1637	* typeck2.c (build_x_arrow): Use build_min_non_dep.
1638	(build_functional_cast): Propagate TREE_SIDE_EFFECTS inside a
1639	template.
1640	* rtti.c (build_dynamic_cast_1): Set DECL_IS_PURE.
1641	(build_dynamic_cast): Set TREE_SIDE_EFFECTS.
1642	* pt.c (build_non_dependent_expr): Check COMPOUND_EXPR_OVERLOADED.
1643
16442003-09-04  Richard Henderson  <rth@redhat.com>
1645
1646	* decl2.c (mark_member_pointers_and_eh_handlers): Update for
1647	change in cgraph_mark_needed_node arguments.
1648
16492003-09-02  Geoffrey Keating  <geoffk@apple.com>
1650
1651	PR 12161
1652	* decl2.c (mark_used): Use ggc_push_context/ggc_pop_context.
1653	* tree.c (cp_cannot_inline_tree_fn): Likewise.
1654
16552003-09-04  Nathan Sidwell  <nathan@codesourcery.com>
1656
1657	* cp-tree.h (finish_sizeof, finish_alignof): Remove.
1658	(expr_sizeof): Replace with ...
1659	(cxx_sizeof_or_alignof_expr): ... here.
1660	(cxx_sizeof_or_alignof_type): Make complain parameter a bool.
1661	* parser.c (cp_parser_unary_expression): Commonize alignof and
1662	sizeof handling.
1663	* pt.c (tsubst_copy_and_build): Adjust alignof and sizeof
1664	substitution.
1665	* semantics.c (finish_sizeof, finish_alignof): Remove.
1666	* typeck.c (cxx_sizeof_or_alignof_type): Complain parameter
1667	becomes bool. Set TREE_READONLY.
1668	(expr_sizeof): Replace with ...
1669	(cxx_sizeof_or_alignof_expr): ... here. Clear TREE_SIDE_EFFECTS.
1670
16712003-09-04  Mark Mitchell  <mark@codesourcery.com>
1672
1673	Remove cast-as-lvalue extension.
1674	* call.c (build_conditional_expr): Correct formatting.
1675	(convert_like_real): Use lvalue_p, not non_cast_lvalue_p.
1676	(initialize_real): Use real_lvalue_p, not real_non_cast_lvalue_p.
1677	* cp-tree.h (non_cast_lvalue_p): Remove.
1678	(real_non_cast_lvalue_p): Remove.
1679	(non_cast_lvalue_or_else): Remove.
1680	* tree.c (lvalue_p_1): Remove allow_cast_as_lvalue parameter.
1681	(real_lvalue_p): Adjust call to lvalue_p_1.
1682	(non_cast_lvalue_p): Remove.
1683	(non_cast_lvalue_or_else): Remove.
1684	(lvalue_p): Adjust call to lvalue_p_1.
1685	(lvalue_or_else): Simplify.
1686	* typeck.c (build_unary_op): Use lvalue_or_else, not
1687	non_cast_lvalue_or_else.
1688	(build_static_cast): Use real_lvalue_p, not real_non_cast_lvalue_p.
1689
16902003-09-03  DJ Delorie  <dj@redhat.com>
1691
1692	* decl.c (finish_function): Pass fndecl to aggregate_value_p.
1693
16942003-09-03  Mark Mitchell  <mark@codesourcery.com>
1695
1696	PR c++/12053
1697	* class.c (include_empty_classes): Correct logic for ABI version 1.
1698
16992003-09-03  Richard Henderson  <rth@redhat.com>
1700
1701	* optimize.c (optimize_function): Push/pop ggc context around
1702	the call to optimize_inline_calls.
1703
17042003-09-02  Scott Brumbaugh  <scottb.lists@verizon.net>
1705
1706	PR c++/11553
1707	* parser.c (cp_parser_decl_specifier_seq): Add check for a
1708	duplicate friend decl-specifier.
1709
17102003-09-02  Mark Mitchell  <mark@codesourcery.com>
1711
1712	PR c++/11847
1713	* pt.c (convert_nontype_argument): Correct representation of
1714	REFERENCE_TYPE expressions.
1715
1716	PR c++/11808
1717	* cp-tree.h (KOENIG_LOOKUP_P): New macro.
1718	(finish_call_expr): Change prototype.
1719	* parser.c (cp_parser_postfix_expression): Adjust call to
1720	finish_call_expr.
1721	* pt.c (tsubst_copy_and_build): Use KOENIG_LOOKUP_P.
1722	* semantics.c (finish_call_expr): Add koenig_p parameter.
1723
17242003-09-01  Mark Mitchell  <mark@codesourcery.com>
1725
1726	PR c++/12114
1727	* cp-tree.h (initialize_reference): Change prototype.
1728	* call.c (initialize_reference): Add cleanup parameter.
1729	* decl.c (grok_reference_init): Likewise.
1730	(check_initializer): Likewise.
1731	(cp_finish_decl): Insert a CLEANUP_STMT if necessary.
1732	(duplicate_decls): When replacing an anticipated builtin, do not
1733	honor TREE_NOTHROW.
1734	* typeck.c (convert_for_initialization): Correct call to
1735	initialize_reference.
1736
1737	PR c++/11972
1738	* pt.c (dependent_type_p_r): Pass only the innermost template
1739	arguments to any_dependent_template_arguments_p.
1740
17412003-09-01  Josef Zlomek  <zlomekj@suse.cz>
1742
1743	* error.c (dump_expr): Kill BIT_ANDTC_EXPR.
1744	* lex.c (init_operators): Kill BIT_ANDTC_EXPR.
1745	* pt.c (tsubst_copy): Kill BIT_ANDTC_EXPR.
1746	* typeck.c (build_binary_op): Kill BIT_ANDTC_EXPR.
1747	(tsubst_copy_and_build): Kill BIT_ANDTC_EXPR.
1748
17492003-08-29  Mark Mitchell  <mark@codesourcery.com>
1750
1751	PR c++/12093
1752	* pt.c (build_non_dependent_expr): Do not build a
1753	NON_DEPENDENT_EXPR for a STRING_CST.
1754
1755	PR c++/11928
1756	* search.c (add_conversions): Avoid adding two conversion
1757	operators for the same type.
1758
17592003-08-29  Mark Mitchell  <mark@codesourcery.com>
1760
1761	PR c++/6196
1762	* pt.c (tsubst_copy_and_build): Correct handling of
1763	address-of-label extension.
1764	* semantics.c (finish_goto_stmt): The address of a label must go
1765	through the lvalue-to-rvalue conversion.
1766
17672003-08-29  Richard Henderson  <rth@redhat.com>
1768	    Jason Merrill <jason@redhat.com>
1769
1770	* cp-lang.c (LANG_HOOKS_RTL_EXPAND_START): New.
1771	(LANG_HOOKS_RTL_EXPAND_STMT): New.
1772	* cp-tree.h (cxx_expand_function_start): Declare.
1773	* decl.c (start_function): Use allocate_struct_function.
1774	Move stmts_are_full_exprs_p assertion from expand_body.
1775	Do not free_after_parsing or free_after_compilation.
1776	(cxx_push_function_context): Move code to set struct function
1777	data from genrtl_start_function.
1778	* optimize.c (optimize_function): Don't inc/dec function_depth.
1779	* semantics.c (expand_body): Use tree_rest_of_compilation.
1780	(cxx_expand_function_start): Rename from genrtl_start_function,
1781	omit bits done by tree_rest_of_compilation.
1782	(genrtl_finish_function): Remove.
1783	(clear_decl_rtl): Move to ../tree-optimize.c.
1784
17852003-08-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1786
1787	PR c++/11811
1788	* cxx-pretty-print.c (pp_cxx_canonical_template_parameter): New
1789	function.
1790	* cxx-pretty-print.h: Declare.
1791	* error.c (dump_template_parameter): Use it.
1792	(dump_type): Likewise.
1793
17942003-08-28  Mark Mitchell  <mark@codesourcery.com>
1795
1796	* init.c (decl_constant_value): Deal with COND_EXPR specially.
1797	* call.c (build_conditional_expr): Revert previous patch.
1798
1799	PR optimization/5079
1800	* call.c (build_conditional_expr): Use decl_constant_value to
1801	simplify the arguments.
1802
18032003-08-26  Dan Nicolaescu  <dann@ics.uci.edu>
1804
1805	* parser.c (struct cp_token): Use enum bitfields.
1806	(CP_TOKEN_BLOCK_NUM_TOKENS): Make sure cp_token_block fits in a
1807	512B allocation unit.
1808	(cp_parser_token_tree_map_node): Use enum bitfields.
1809
18102003-08-26  Nathan Sidwell  <nathan@codesourcery.com>
1811
1812	PR c++/11871
1813	* decl.c (push_class_level_binding): Correct old_decl value from
1814	my 2003-07-29 reorganization.
1815
1816	* call.c (build_call): Don't set TREE_SIDE_EFFECTS here.
1817	(build_new_method_call): Add goto finish.
1818	* semantics.c (simplify_aggr_init_exprs_r): Don't set
1819	TREE_SIDE_EFFECTS on a call.
1820
18212003-08-25  Richard Henderson  <rth@redhat.com>
1822
1823	* cxx-pretty-print.c (pp_cxx_class_name): Remove unused function.
1824
18252003-08-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1826
1827	* cxx-pretty-print.h (pp_cxx_flag_default_argument): New flag.
1828	(cxx_pretty_printer): Adjust base type.
1829	(pp_cxx_function_specifier): Declare.
1830	* cxx-pretty-print.c (pp_cxx_whitespace): New macro.
1831	(pp_cxx_left_paren): Likewise.
1832	(pp_cxx_right_paren): Likewise.
1833	(pp_cxx_dot): Likewise.
1834	(pp_cxx_arrow): Likewise.
1835	(pp_cxx_semicolon): Likewise.
1836	(pp_cxx_identifier): Likewise.
1837	(pp_cxx_cv_qualifier_seq): Likewise.
1838	(pp_cxx_storage_class_specifier): Likewise.
1839	(pp_cxx_expression_list): Likewise.
1840	(pp_cxx_space_for_pointer_operator): Likewise.
1841	(pp_cxx_init_declarator): Likewise.
1842	(pp_cxx_call_argument_list): Likewise.
1843	(pp_cxx_nonconsecutive_character): Tidy.
1844	(pp_cxx_conversion_function_id): New function.
1845	(pp_cxx_template_id): Likewise.
1846	(pp_cxx_template_keyword_if_needed): Likewise.
1847	(pp_cxx_nested_name_specifier): Likewise.
1848	(pp_cxx_unqualified_id): Tidy
1849	(pp_cxx_qualified_id): Handle more nodes.
1850	(pp_cxx_primary_expression): Tidy.
1851	(pp_cxx_postfix_expression): Likewise.
1852	(pp_cxx_new_expression): Tidy.
1853	(pp_cxx_delete_expression): Likewise.
1854	(pp_cxx_cast_expression): New function.
1855	(pp_cxx_pm_expression): Tidy.
1856	(pp_cxx_conditional_expression): Likewise.
1857	(pp_cxx_assignment_operator): New function.
1858	(pp_cxx_assignment_expression): Tidy.
1859	(pp_cxx_expression): New function.
1860	(pp_cxx_function_specifier): Likewise.
1861	(pp_cxx_decl_specifier_seq): Likewise.
1862	(pp_cxx_simple_type_specifier): Tidy.
1863	(pp_cxx_type_specifier_seq): Likewise.
1864	(pp_cxx_ptr_operator): New function.
1865	(pp_cxx_implicit_parameter_type): Likewise.
1866	(pp_cxx_parameter_declaration): Tidy.
1867	(pp_cxx_parameter_declaration_clause): New function.
1868	(pp_cxx_exception_specification): Likewise.
1869	(pp_cxx_direct_declarator): Tidy.
1870	(pp_cxx_declarator): Likewise.
1871	(pp_cxx_ctor_initializer): New function.
1872	(pp_cxx_function_definition): Likewise.
1873	(pp_cxx_abstract_declarator): Tidy.
1874	(pp_cxx_direct_abstract_declarator): Likewise.
1875	(pp_cxx_type_id): Likewise.
1876	(pp_cxx_exception_declaration): New function.
1877	(pp_cxx_statement): Likewise.
1878	(pp_cxx_simple_declaration): Likewise.
1879	(pp_cxx_template_parameter_list): Likewise.
1880	(pp_cxx_template_parameter): Likewise.
1881	(pp_cxx_template_declaration): Likewise.
1882	(pp_cxx_explicit_specialization): Likewise.
1883	(pp_cxx_explicit_instantiation): Likewise.
1884	(pp_cxx_declaration): Tidy.
1885	(pp_cxx_pretty_printer_init): Initialize more fields.
1886
18872003-08-25  Mark Mitchell  <mark@codesourcery.com>
1888
1889	PR c++/8795
1890	* cp-tree.h (build_cplus_method_type): Remove.
1891	* call.c (standard_conversion): Use build_method_type_directly
1892	instead of build_cplus_method_type.
1893	* class.c (build_clone): Likewise.
1894	(adjust_clone_args): Likewise.
1895	* decl.c (build_ptrmem_type): Likewise.
1896	(grokdeclarator): Likewise.
1897	(check_function_type): Likewise.
1898	* decl2.c (grok_method_quals): Likewise.
1899	(maybe_retrofit_in_chrg): Likewise.
1900	* pt.c (copy_default_args_to_explicit_spec): Likewise.
1901	(tsubst_function_type): Likewise.
1902	(tsubst): Likewise.
1903	* tree.c (build_cplus_method_type): Remove.
1904	* typeck.c (merge_types): Use build_method_type_directly.
1905
19062003-08-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1907
1908	PR c++/3765
1909	* search.c (dfs_access_in_type): Fix typo in comment.
1910	(dfs_accessible_queue_p): Likewise.
1911	(dfs_accessible_p): Only terminate when a friend is found.
1912	(accessible_p): Return immediately if access_in_type allows
1913	access.
1914
19152003-08-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1916
1917	PR c++/641, c++/11876
1918	* friend.c (add_friend): Add complain parameter.
1919	(make_friend_class): Likewise.
1920	(do_friend): Adjust add_friend call.
1921	* decl.c (grokdeclarator): Adjust make_friend_class call.
1922	* parser.c (cp_parser_member_declaration): Likewise.
1923	(cp_parser_template_declaration_after_export): Likewise.
1924	* pt.c (instantiate_class_template): Adjust make_friend_class
1925	and add_friend call.
1926	* cp-tree.h (make_friend_class): Adjust declaration.
1927	(add_friend): Likewise.
1928
19292003-08-21  Jason Merrill  <jason@redhat.com>
1930
1931	PR c++/11283
1932	* call.c (build_conditional_expr): Ignore cv-qual differences for
1933	non-class types.
1934
19352003-08-21  Mark Mitchell  <mark@codesourcery.com>
1936
1937	PR c++/11551
1938	* parser.c (cp_parser_id_expression): Add declarator_p parameter.
1939	(cp_parser_primary_expression): Adjust call to
1940	cp_parser_id_expression.
1941	(cp_parser_unqualified_id): Complain about the use of
1942	typedef-names in a destructor declarator.
1943	(cp_parser_postfix_expression): Adjust call to
1944	cp_parser_id_expression.
1945	(cp_parser_type_parameter): Likewise.
1946	(cp_parser_template_argument): Likewise.
1947	(cp_parser_declarator_id): Likewise.
1948
1949	PR c++/11919
1950	* call.c (standard_conversion): Use same_type_p, not pointer
1951	equality, to compare types.
1952
1953	PR c++/10762
1954	* parser.c (cp_parser_using_declaration): Check for invalid uses
1955	of template-ids here...
1956	* decl2.c (do_class_using_decl): ... rather than here.
1957
19582003-08-20  Mark Mitchell  <mark@codesourcery.com>
1959
1960	PR c++/11834
1961	* pt.c (more_specialized): Bump processing_template_decl.
1962
19632003-08-21  Jason Merrill  <jason@redhat.com>
1964
1965	PR c++/11614
1966	* decl.c (grokdeclarator): Recognize a flexible array based on the
1967	type, not the form of the declarator.
1968
19692003-08-20  Jason Merrill  <jason@redhat.com>
1970
1971	* semantics.c (simplify_aggr_init_expr): Split out from
1972	simplify_aggr_init_exprs_r.  Convert slot address to match
1973	the return type.
1974	* cp-tree.h: Declare it.
1975	* tree.c (cp_copy_res_decl_for_inlining): Don't clobber the
1976	DECL_NAME of a user variable.
1977
19782003-08-20  Nathan Sidwell  <nathan@codesourcery.com>
1979
1980	PR c++/11945
1981	* pt.c (build_non_dependent_expr): Look inside COND_EXPR and
1982	COMPOUND_EXPR.
1983	* semantics.c (finish_expr_stmt): Always convert to void.
1984	* typeck.c (build_x_compound_exp): Always convert to void.
1985
19862003-08-19  Mark Mitchell  <mark@codesourcery.com>
1987
1988	PR c++/11684
1989	* cp-tree.h (grok_op_properties): Change prototype.
1990	* decl.c (grok_op_properties): Add complain parameter.
1991	(grokfndecl): Pass it.
1992	* pt.c (tsubst_decl): Adjust accordingly.
1993
1994	PR c++/10926
1995	* decl.c (start_method): Return immediately if push_template_decl
1996	does not like the declaration.
1997	* pt.c (push_template_decl_real): Disallow member template
1998	destructors.
1999
2000	PR c++/11036
2001	* cp-tree.h (add_binding): Add prototype.
2002	* class.c (add_method): Set TYPE_HAS_DESTRUCTOR if appropriate.
2003	(maybe_warn_about_overly_private_class): Use
2004	CLASSTYPE_DESTRUCTORS.
2005	(pushclass): Adjust call to set_identifier_type_value.
2006	* decl.c (add_binding): Give it external linkage.
2007	(push_local_binding): Adjust call to add_binding.
2008	(push_class_binding): Likewise.
2009	(set_identifier_type_value_with_scope): Change prototype.  Use
2010	add_binding for global bindings.
2011	(set_identifier_type_value): Adjust accordingly.
2012	(pushtag): Likewise.
2013	(pushdecl): Use set_identifier_type_value, not
2014	set_identifier_type_value_with_scope.
2015	(pushdecl_namespace_level): Adjust calls to
2016	SET_IDENTIFIER_TYPE_VALUE to pass a DECL.
2017	(pushdecl_class_level): Likewise.
2018	(lookup_tag): Use select_decl.
2019	(select_decl): Improve comment.
2020	(record_builtin_type): Do not call pushdecl.
2021	(cxx_init_decl_processing): Do not call xref_tag for bad_alloc.
2022	(cp_finish_decl): Adjust call to set_identifier_type_value.
2023	(check_elaborated_type_specifier): Improve checks for invalid uses
2024	of typedefs.
2025	(xref_tag): Adjust call to check_elaborated_type_specifier.
2026	* decl2.c (grokclassfn): Do not set TYPE_HAS_DESTRUCTOR.
2027	* name-lookup.c (set_namespace_binding): Use add_binding.
2028	* parser.c (cp_parser_simple_type_specifier): Return a TYPE_DECL,
2029	rather than an IDENTIFIER_NODE, to represent built-in types, if
2030	requested by the caller.
2031	(cp_parser_postfix_expression): Adjust call.
2032	(cp_parser_type_specifier): Likewise.
2033	(cp_parser_elaborated_type_specifier): Adjust call to
2034	check_elaborated_type_specifier.
2035	* typeck2.c (build_functional_cast): Do not perform name lookups.
2036
2037	PR c++/10717
2038	* decl.c (expand_static_init): Remove unnecessary code.
2039
20402003-08-19  Andrew Pinski  <pinskia@physics.uc.edu>
2041
2042	PR c++/10538, PR c/5582
2043	* cp/cp-lang.c (LANG_HOOKS_DECL_UNINIT): Define.
2044
20452003-08-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2046
2047	PR c++/11174
2048	* init.c (build_offset_ref): Perform access checking for
2049	pointer to member correctly.
2050
20512003-08-19  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2052
2053	* cp-lang.c (LANG_HOOKS_INITIALIZE_DIAGNOSTICS): Fix spelling.
2054
20552003-08-18  Nathan Sidwell  <nathan@codesourcery.com>
2056
2057	PR c++/11957
2058	* cp-tree.h (finish_stmt_expr): Add bool parameter.
2059	* init.c (finish_init_stmts): Pass true to finish_stmt_expr. Don't
2060	adjust the stmt_expr here.
2061	(build_vec_init): Use finish_stmt_expr_expr, convert result to
2062	array type.
2063	* parser.c (cp_parser_primar_expression): Adjust finish_stmt_expr
2064	call.
2065	* pt.c (tsubst_copy): Likewise.
2066	* semantics.c (finish_stmt_expr): Add parameter.
2067
2068	* pt.c (instantiate_class_template): Push to class's scope before
2069	tsubsting base.
2070
20712003-08-17  Jan Hubicka  <jh@suse.cz>
2072
2073	PR C++/11702
2074	* semantics.c (finish_id_expression): Mark all functions as used.
2075
20762003-08-16  Nathan Sidwell  <nathan@codesourcery.com>
2077
2078	PR c++/11512
2079	* cvt.c (convert_to_void): Indicate which side of conditional has
2080	no effects, and rhs of comma operator. Test for no sideeffect
2081	expressions here and always build a convert expr.
2082	* init.c (expand_default_init): Convert the init to void.
2083	* typeck.c (build_x_compound_expr): Do not check for side effects
2084	here.
2085	(build_compound_expr): Do not convert lhs when building a
2086	template.
2087
20882003-08-15  Nathan Sidwell  <nathan@codesourcery.com>
2089
2090	* cp-tree.def (NON_DEPENDENT_EXPR): Add operand.
2091	* decl2.c (build_offset_ref_call_from_tree): Use
2092	build_non_dependent_expr.
2093	* error.c (dump_expr) <NON_DEPENDENT_EXPR case>: Dump the operand.
2094	* pt.c (build_non_dependent_expr): Set operand.
2095
20962003-08-14  Jan Hubicka  <jh@suse.cz>
2097
2098	* decl2.c (mark_member_pointers): Rename to...
2099	(mark_member_pointers_and_eh_tinfos): ... this one; deal with eh tinfos
2100	(lower_function): Update call.
2101	* except.c (eh_type_info): Break out from ...
2102	(build_eh_type): ... here; tinfo is already used.
2103	(finish_eh_spec_block): Mark tinfos as used.
2104	* semantics.c (finish_handler_params): Mark tinfo as used.
2105	* cp-tree.h (eh_type_info): Declare.
2106
21072003-08-15  Nathan Sidwell  <nathan@codesourcery.com>
2108
2109	* pt.c (instantiate_class_template): Set location before
2110	substuting bases.
2111
2112	* decl.c (make_typename_type): Use my_friendly_assert.
2113	* pt.c (tsubst_aggr_type): Rearrange context substitution.
2114
21152003-08-14  Jan Hubicka  <jh@suse.cz>
2116
2117	* method.c (use_thunk): Expand body directly.
2118
21192003-08-12  Mark Mitchell  <mark@codesourcery.com>
2120
2121	PR c++/11703
2122	* call.c (type_passed_as): Use TYPE_SIZE, not TYPE_PRECISION to
2123	determine whether or not to promote types.
2124	(convert_for_arg_passing): Likewise.
2125	* decl2.c (cp_build_parm_decl): Do not set DECL_ARG_TYPE in
2126	templates.
2127	* pt.c (tsubst_decl): Do not expect it to be set.
2128
2129	PR c++/9512
2130	PR c++/10923
2131	* cp-tree.h (check_elaborated_type_specifier): Declare.
2132	(handle_class_head): Remove.
2133	(note_got_semicolon): Likewise.
2134	(note_list_got_semicolon): Likewise.
2135	(finish_class_definition): Likewise.
2136	* decl.c (check_elaborated_type_specifier): Make it public.
2137	Robustify.
2138	(handle_class_head): Remove.
2139	* parser.c (cp_parser_elaborated_type_specifier): Use
2140	check_elaborated_type_specifier.
2141	(cp_parser_class_specifier): Do not call finish_class_definition.
2142	(cp_parser_class_head): Or handle_class_head.  Check for
2143	over-qualified names.
2144	* semantics.c (finish_class_definition): Remove.
2145
2146	* parser.c (cp_parser_check_for_definition_in_return_type): New
2147	function.
2148	(cp_parser_simple_declaration): Adjust call to
2149	cp_parser_init_declarator.
2150	(cp_parser_decl_specifier_seq): Change type of
2151	declares_class_or_enum parameter.
2152	(cp_parser_explicit_instantiation): Adjust accordingly.
2153	(cp_parser_type_specifier): Change type of
2154	declares_class_or_enum parameter.
2155	(cp_parser_init_declarator): Add declares_class_or_enum
2156	parameter.
2157	(cp_parser_parameter_declaration): Adjust call to
2158	cp_parser_decl_specifier_seq.
2159	(cp_parser_function_definition): Likewise.
2160	(cp_parser_member_declaration): Likewise.
2161	(cp_parser_single_declaration): Likewise.
2162
2163	* cp-tree.h (lang_type_class): Remove has_call_overloaded,
2164	has_array_ref_overloaded, has_arrow_overloaded, and got_semicolon.
2165	(TYPE_OVERLOADS_CALL_EXPR): Remove.
2166	(TYPE_OVERLOADS_ARRAY_REF): Likewise.
2167	(TYPE_OVERLOADS_ARROW): Likewise.
2168	(CLASSTYPE_GOT_SEMICOLON): Likewise.
2169	* class.c (check_bases): Do not set them.
2170	(finish_struct_1): Likewise.
2171	* decl.c (cp_finish_decl): Do not set CLASSTYPE_GOT_SEMICOLON.
2172	(build_ptrmemfunc_type): Likewise.
2173	(grok_op_properties): Do not set TYPE_OVERLOADS_*.
2174	(start_function): Do not check CLASSTYPE_GOT_SEMICOLON.
2175	* decl2.c (grokfield): Do not set CLASSTYPE_GOT_SEMICOLON.
2176	* lex.c (note_got_semicolon): Remove.
2177	(note_list_got_semicolon): Likewise.
2178	* parser.c (cp_parser_simple_declaration): Do not call
2179	note_list_got_semicolon.
2180	* pt.c (list_eq): Remove.
2181	(lookup_template_class): Do not set CLASSTYPE_GOT_SEMICOLON.
2182	(instantiate_class_template): Do not set TYPE_OVERLOADS*.
2183	(instantiate_class_template): Do not set CLASSTYPE_GOT_SEMICOLON.
2184	* ptree.c (cxx_print_type): Do not print them.
2185	* semantics.c (finish_member_class_template): Do not call
2186	note_list_got_semicolon.
2187
21882003-08-11  Aldy Hernandez  <aldyh@redhat.com>
2189
2190	* call.c (standard_conversion): Opaque pointers interconvert.
2191
2192	* testsuite/g++.dg/other/opaque-3.C: New.
2193
21942003-08-11  Mark Mitchell  <mark@codesourcery.com>
2195
2196	* typeck.c (merge_types): Handle cv-qualified pointer-to-member
2197	types correctly.
2198
21992003-08-10  Mark Mitchell  <mark@codesourcery.com>
2200
2201	PR c++/11789
2202	* cp-tree.h (get_vbase): Remove.
2203	(get_vbase_types): Remove.
2204	* init.c (expand_member_init): Correct logic for looking up base
2205	classes.
2206
22072003-08-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2208
2209	* error.c (dump_expr): Tidy.
2210	* cxx-pretty-print.c (pp_cxx_nonconsecutive_character): New.
2211	(pp_cxx_begin_template_argument_list): Likewise.
2212	(pp_cxx_end_template_argument_list): Likewise.
2213	(is_destructor_name): Likewise.
2214	(pp_cxx_unqualified_id): Likewise.
2215	(pp_cxx_qualified_id): Likewise.
2216	(pp_cxx_id_expression): Likewise.
2217	(pp_cxx_new_expression): Likewise.
2218	(pp_cxx_delete_expression): Likewise.
2219	(pp_cxx_pm_expression): Likewise.
2220	(pp_cxx_type_specifier): Rework.
2221	(pp_cxx_type_id): Likewise.
2222	(pp_cxx_primary_expression): Likewise.
2223	(pp_cxx_postfix_expression): Likewise.
2224	(pp_cxx_unary_expression): Likewise.
2225	(pp_cxx_multiplicative_expression): Likewise.
2226	(pp_cxx_conditional_expression): Likewise.
2227	(pp_cxx_assignment_expression): Likewise.
2228	(pp_cxx_pretty_printer_init): Tidy.
2229
22302003-08-10  Nathan Sidwell  <nathan@codesourcery.com>
2231
2232	* cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): non-NULL
2233	NODE is always a TREE_VEC of nonzero size.
2234	(NUM_TMPL_ARGS): NODE is always a TREE_VEC.
2235	* decl2.c (arg_assoc): Template args will be a vec.
2236	* error.c (dump_decl) <TEMPLATE_ID_EXPR case>: Call
2237	dump_template_argument_list.
2238	(dump_template_parms): Args will be a vec.
2239	* parser.c (cp_parser_template_argument_list): Produce a
2240	vector, not a list.
2241	* pt.c (coerce_template_parms): Args are always vectors.
2242	(mangle_class_name_for_template): Likewise.
2243	(lookup_template_function): Likewise.
2244	(lookup_template_class): Likewise.
2245	(tsubst_template_args): Likewise.
2246	(tsubst_baselink): Use tsubst_template_args.
2247	(tsubst_qualified_id): Likewise.
2248	(tsubst_copy) <TEMPLATE_ID_EXPR case>: Likewise.
2249	(tsubst_copy_and_build) <TEMPLATE_ID_EXPR case>: Likewise.
2250	(any_dependent_template_args_p):  Args are always vectors.
2251	* tree.c (cp_tree_equal): Add TEMPLATE_ID_EXPR case.
2252
2253	PR c++/11670
2254	* call.c (convert_like_real): Add rvalue binding error message.
2255	* error.c (dump_expr) <NOP_EXPR case>: Detect when the no expr is
2256	really a cast.
2257
2258	PR c++/10530
2259	* pt.c (dependent_type_p_r): A dependent template-id is a class
2260	type with dependent template arguments, or a bound template
2261	template parameter.
2262	(type_dependent_expression_p): A template function decl cannot
2263	have a dependent context.
2264
22652003-08-07  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2266
2267	PR c++/5767
2268	* parser.c (cp_parser_class_name): Return immediately when scope
2269	is error_mark_node.
2270
22712003-08-07  Aldy Hernandez  <aldyh@redhat.com>
2272
2273	* cp/Make-lang.in (cp/call.o): Add dependency for target.h.
2274
2275	* cp/call.c (standard_conversion): Support opaque types.
2276	Include target.h.
2277	(strip_top_quals): Use cp_build_qualified_type instead of
2278	TYPE_MAIN_VARIANT.
2279
2280	* cp/typeck.c (convert_for_assignment): Support opaque types.
2281
2282	* testsuite/g++.dg/other/opaque-1.C: New.
2283
2284	* testsuite/g++.dg/other/opaque-2.C: New.
2285
22862003-08-06  Aldy Hernandez  <aldyh@redhat.com>
2287
2288	* decl.c (grokparms): Use cp_build_qualified_type instead
2289	TYPE_MAIN_VARIANT.
2290
22912003-08-05  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2292
2293	* cxx-pretty-print.h: New file.
2294	* cxx-pretty-print.c: Likewise.
2295	* error.c (scratch_pretty_printer): Change type.
2296	(init_error): Tidy.
2297	(dump_aggr_type): Likewise.
2298	(dump_global_iord): Likewise.
2299	(dump_expr): Likewise.
2300	(dump_char): Remove.
2301	* cp-lang.c (LANG_HOOKS_INITIALIZE_DIAGNOSTITCS): Define.
2302	(cxx_initialize_diagnostics): New function.
2303	* Make-lang.in (CXX_OBJS): Add cp/cxx-pretty-print.o
2304	(CXX_PRETTY_PRINT_H): New variable.
2305	(cp/cxx-pretty-print.o): New rule.
2306	(cp/cp-lang.o): Update dependence.
2307	(cp/error.o): Likewise.
2308
23092003-08-05  Steven Bosscher  <steven@gcc.gnu.org>
2310
2311	* cp-tree.h (struct lang_decl): Don't include c_lang_decl.
2312	(DECL_DECLARED_INLINE_P): Remove.
2313	* decl2.c (import_export_decl): Only look at DECL_DECLARED_INLINE_P
2314	if decl is a FUNCTION_DECL.  This never made sense, but now it is
2315	required to avoid a tree check failure.
2316	* decl.c (grokfndecl): Don't touch DID_INLINE_FUNC.
2317	* optimize.c (maybe_clone_body): Likewise.
2318
23192003-08-04  Roger Sayle  <roger@eyesopen.com>
2320
2321	* decl.c (cxx_insert_default_attributes): Delete.
2322	* cp-tree.h (cxx_insert_default_attributes): Don't prototype.
2323	* cp-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Don't define.
2324
23252003-08-03  Nathan Sidwell  <nathan@codesourcery.com>
2326
2327	PR c++/11704
2328	* pt.c (type_dependent_expression_p): Cope with COMPONENT_REF with
2329	unknown type.
2330
2331	PR c++/11766
2332	* typeck.c (comp_ptr_ttypes_real): Don't loop on pointers to
2333	member functions.
2334
23352003-08-02  Nathan Sidwell  <nathan@codesourcery.com>
2336
2337	PR c++/9447
2338	* cp-tree.def (USING_DECL): Document its type.
2339	* class.c (pushclass): If we're entering a template, push any
2340	dependent using decls it has.
2341	* decl2.c (do_class_using_decl): Refactor. Type is NULL iff it is
2342	a dependent scope.
2343	* pt.c (tsubst_decl) <USING_DECL case>: Set type.
2344	(tsubst): Remove USING_DECL checks.
2345	(type_dependent_expression_p): Remove USING_DECL case.
2346	* semantics.c (finish_member_declaration): A USING_DECL's type
2347	indicates whether it is dependent.
2348
23492003-08-02  Nathan Sidwell  <nathan@codesourcery.com>
2350
2351	* cp-tree.h (pushclass): Remove unneeded parameter.
2352	* class.c (pushclass): Remove unneeded MODIFY parm. Adjust.
2353	(push_nested_class): Adjust pushclass call.
2354	* pt.c (instantiate_class_template): Likewise.
2355	* semantics.c (begin_class_definition): Likewise.
2356
23572003-08-01  Nathanael Nerode  <neroden@gcc.gnu.org>
2358
2359	* typeck2.c (add_exception_specifier): Use 'bool' where appropriate.
2360
23612003-08-01  Mark Mitchell  <mark@codesourcery.com>
2362
2363	PR c++/11697
2364	* decl.c (decls_match): Don't ignore the types of template
2365	classes.
2366
2367	PR c++/11744
2368	* pt.c (tsubst_copy_and_build): Refine Koenig lookup logic.
2369
23702003-08-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2371
2372	PR c++/8442, c++/8806
2373	* decl.c (qualify_lookup): Accept TEMPLATE_DECL if types are
2374	preferred.
2375	(check_elaborated_type_specifier): Add allow_template_p
2376	parameter.  Check tag mismatch and class template.
2377	(xref_tag): Add template_header_p parameter.  Add assertion
2378	that name is an IDENTIFIER_NODE.  Remove implicit typename
2379	warning.  Simplify lookup process if globalize is true.
2380	(cxx_init_decl_processing): Adjust call to xref_tag.
2381	(xref_tag_from_type): Likewise.
2382	* decl2.c (handle_class_head): Likewise.
2383	* parser.c (cp_parser_elaborated_type_specifier,
2384	cp_parser_class_head): Likewise.
2385	* rtti.c (init_rtti_processing, build_dynamic_cast1,
2386	tinfo_base_init, emit_support_tinfos): Likewise.
2387	* class.c (is_base_of_enclosing_class): Remove.
2388	* pt.c (convert_template_argument): Don't accept RECORD_TYPE as
2389	template template argument.
2390	* cp-tree.h (xref_tag): Adjust declaration.
2391	(is_base_of_enclosing_class): Remove.
2392	* NEWS: Document template template argument change.
2393
23942003-08-01  Nathan Sidwell  <nathan@codesourcery.com>
2395
2396	* parser.c (cp_parser_init_declarator,
2397	cp_paser_member_declaration): Reformat.
2398	* pt.c (lookup_template_class, type_unification_real, unify,
2399	type_dependent_expression_p): Reformat.
2400
2401	PR c++/11295
2402	* cp-tree.h (tubst_flags_t): Add tf_stmt_expr_cmpd,
2403	tf_stmt_expr_body.
2404	(finish_stmt_expr_expr): Declare.
2405	* parser.c (cp_parser_primary_expression): Tell
2406	cp_parser_compount_statement that it is a statement expression.
2407	(cp_parser_statement, cp_parser_labeled_statement,
2408	cp_parser_compound_statement, cp_parser_statement_seq_opt): Add
2409	in_statement_expr_p parameter.
2410	(cp_parser_expression_statement): Likewise. Call
2411	finish_stmt_expr_expr for final expression of a statement
2412	expression.
2413	(cp_parser_for_init_statement,
2414	cp_parser_implicitly_scoped_statement,
2415	cp_parser_already_scoped_statement, cp_parser_function_definition,
2416	cp_parser_try_block, cp_parser_handled): Adjust.
2417	* pt.c (tsubst_copy) <STMT_EXPR case>: Pass tf_stmt_expr.
2418	(tsubst_expr): Process tf_stmt_expr and tf_stmt_exprs flags.
2419	(tsubst_expr) <EXPR_STMT case>: Check tf_stmt_exprs flag.
2420	* semantics.c (finish_expr_stmt): Do not deal with statement
2421	expressions.
2422	(begin_stmt_expr): Clear last_expr_type.
2423	(finish_stmt_expr_expr): New.
2424	(finish_stmt_expr): Process the value expression.
2425
2426	* typeck.c (build_compound_expr): If RHS is a TARGET_EXPR, put the
2427	compound expr inside the target's initializer.
2428
2429	PR c++/11525
2430	* parser.c (cp_parser_primary_expression): Do not set
2431	non-constant-p merely because it is a dependent scope.
2432
2433	PR c++/9447
2434	* decl2.c (do_class_using_decl): Set type to NULL_TREE.
2435	* semantics.c (finish_expr_stmt): Do not convert to void in a
2436	template.
2437
24382003-07-31  Nathan Sidwell  <nathan@codesourcery.com>
2439
2440	* pt.c (coerce_template_parms): Refactor.
2441	(fn_type_unification): Increment processing_template_decl when
2442	tsubsting an incomplete set of explicit args.
2443
2444	PR c++/11347
2445	* pt.c (instantiate_class_template): Increment
2446	processing_template_decl around the tsubst of a template member
2447	class.
2448	(tsubst_qualified_id): Assert we do not have a dependent scope.
2449
2450	* pt.c (coerce_template_template_parms, lookup_template_class,
2451	can_complete_type_without_circularity, instantiate_class_template,
2452	tsubst_decl, unify): Reformat.
2453
24542003-07-31  Jan Hubicka  <jh@suse.cz>
2455
2456	* decl2.c (maybe_make_one_only): Use mark_referenced.
2457	* method.c (use_thunk): Likewsie.
2458
24592003-07-30  Jan Hubicka  <jh@suse.cz>
2460
2461	* class.c (build_vtable_entry_ref): Kill.
2462	(build_vtbl_ref_1): Do not call build_vtable_entry_ref.
2463	(build_vfn_ref): Do not call build_vtable_entry_ref.
2464	* cp-lang.c (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
2465	* cp-tree.h (prepare_assemble_variable): Kill.
2466	* cp-decl.c (prepare_assemble_variable): Kill.
2467
24682003-07-29  Geoffrey Keating  <geoffk@apple.com>
2469
2470	* parser.c (cp_lexer_new_main): Use c_common_no_more_pch instead
2471	of setting valid_pch by hand.
2472
24732003-07-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2474
2475	* decl.c (finish_enum): Initialize underlying_type.
2476
24772003-07-29  Nathan Sidwell  <nathan@codesourcery.com>
2478
2479	PR c++/9447
2480	* decl.c (add_binding): Add bval local variable.
2481	(push_class_level_binding): Likewise. Allow a USING_DECL to be
2482	pushed.
2483	* decl2.c (do_class_using_decl):  The type of a using decl is
2484	unknown.
2485	* parser.c (cp_parser_postfix_expression): Refactor unqualified-id
2486	function call lookup code.
2487	* pt.c (tsubst): A USING_DECL will have unknown type.
2488	(tsubst_copy_and_build): Allow a using decl.
2489	(type_dependent_expression_p): A USING_DECL will make it
2490	dependent.
2491	* semantics.c (finish_member_declaration): Push a dependent using
2492	declaration.
2493
24942003-07-28  Mark Mitchell  <mark@codesourcery.com>
2495
2496	PR c++/11530
2497	* parser.c (cp_parser_postfix_expression): Do not call mark_used.
2498	* semantics.c (finish_id_expression): Call mark_used for all
2499	declarations.
2500
25012003-07-28  Mark Mitchell  <mark@codesourcery.com>
2502
2503	PR c++/11667
2504	* call.c (standard_conversion): Allow all integral->enumeral
2505	conversions, after marking them as bad.
2506	* decl.c (finish_enum): Make sure that all enumerators are
2507	properly converted to the underlying type.
2508	(build_enumerator): Set DECL_CONTEXT for namespace-scope
2509	enumeration types.
2510	* pt.c (tsubst_copy): Adjust handling of CONST_DECLs accordingly.
2511	(tsubst_enum): Tidy.
2512
2513	* Make-lang.in (typeck.o): Depend on convert.h.
2514	(class.o): Likewise.
2515	(rtti.o): Likewise.
2516	* call.c: Include convert.h.
2517	(convert_arg_to_ellipsis): Use convert_to_real.
2518	* class.c: Include convert.h.
2519	(build_base_path): Use convert_to_integer.
2520	* rtti.c: Include convert.h.
2521	(build_headof): Use convert_to_integer.
2522	* typeck.c: Include convert.h.
2523	(decay_conversion): Use convert_to_integer.
2524	(build_unary_op): Use build_nop.
2525	(get_delta_difference): Use convert_to_integer.
2526	(build_ptrmemfunc): Avoid unnecessary conversions.
2527
25282003-07-28  Jan Hubicka  <jh@suse.cz>
2529
2530	* decl2.c (mark_member_pointers): Verify that member pointer points to
2531	the function.
2532
25332003-07-28  Nathan Sidwell  <nathan@codesourcery.com>
2534
2535	* cp-tree.h (begin_compound_stmt): No scope arg is a bool.
2536	(finish_compound_stmt): Remove no scope arg.
2537	* decl.c (register_dtor_fn): Adjust begin_compound_stmt and
2538	end_compound_stmt calls.
2539	(expand_static_init, begin_destructor_body, begin_function_body,
2540	finish_function_body): Likewise.
2541	* decl2.c (start_objects, finish_objects,
2542	start_static_storage_duration_function,
2543	finish_static_storage_duration_function): Likewise.
2544	* init.c (begin_init_stmts, finish_init_stmts,
2545	construct_virtual_base, build_vec_init): Likewise.
2546	* method.c (do_build_assign_ref, synthesize_method): Likewise.
2547	* parser.c (cp_parser_compound_statement,
2548	cp_parser_implicitly_scoped_statement,
2549	cp_parser_already_scoped_statement): Likewise.
2550	* pt.c (tsubst_expr): Likewise.
2551	* semantics.c (begin_compound_stmt): No scope arg is a bool.
2552	(finish_compound_stmt): Remove no scope arg.
2553
2554	* error.c (dump_expr) <COMPOUND_EXPR case>: A compound expr is
2555	always dyadic.
2556
25572003-07-27  Mark Mitchell  <mark@codesourcery.com>
2558
2559	* call.c (standard_conversion): Tweak handling of
2560	pointer-to-member types.
2561	* pt.c (tsubst): Correctly qualify pointers-to-data member types.
2562	* typeck.c (comp_ptr_ttypes_real): Check qualifiers on
2563	pointer-to-data member types.
2564
25652003-07-27  Nathan Sidwell  <nathan@codesourcery.com>
2566
2567	* parser.c (cp_parser_type_parameter): Reformat.
2568	(cp_parser_parameter_declaration): Deprecate default args where
2569	not allowed.
2570
25712003-07-26  Nathan Sidwell  <nathan@codesourcery.com>
2572
2573	* cfns.h: Rebuilt.
2574
2575	* cp-tree.h (begin_init_stmts, finish_init_stmts): Remove.
2576	(begin_global_stmt_expr, finish_global_stmt_expr): Remove.
2577	* init.c (begin_init_stmts): Make static. Return is_global
2578	value. Always call begin_stmt_expr.
2579	(finish_init_stmts): Make static. Add is_global parm. Always
2580	building a stmt tree.
2581	(build_aggr_init): Adjust begin_init_stmts, finish_init_stmts calls.
2582	(build_vec_init): Likewise. Always building a stmt tree.
2583	(expand_default_init): Always building a stmt tree.
2584	(get_temp_regvar): Likewise.
2585	* semantics.c (begin_global_stmt_expr,
2586	finish_global_stmt_expr): Remove.
2587
25882003-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2589
2590	* cp-tree.h (build_compound_expr): Take LHS & RHS args.
2591	(build_x_compound_expr_from_list): Declare.
2592	* typeck.c (build_x_compound_expr_from_list): New.
2593	(build_x_compound_expr): Adjust.
2594	(build_compound_expr): Remove unreachable code. Take two
2595	parameters, adjust.
2596	* decl.c (grok_reference_init): Use
2597	build_x_compound_expr_from_list.
2598	(expand_static_init): Adjust build_compound_expr call.
2599	(cxx_maybe_build_cleanup): Likewise.
2600	* init.c (perform_member_init): Use
2601	build_x_compound_expr_from_list.
2602	(build_new_1): Likewise.
2603	(build_vec_delete): Adjust build_compound_expr calls.
2604	(build_vbase_delete): Likewise.
2605	* typeck2.c (store_init_value): Use
2606	build_x_compound_expr_from_list.
2607	(build_functional_cast): Likewise.
2608
26092003-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2610
2611	* cp-tree.h (enum tsubst_flags_t): Add tf_user.
2612	* decl.c (make_typename_type): Pass it.
2613	* pt.c (lookup_template_class): Use it.
2614	(resolve_typename_type): Pass it.
2615	* semantics.c (finish_template_type): Pass it.
2616
26172003-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2618
2619	PR c++/11617
2620	* cp-tree.h (qualified_name_lookup_error): Declare.
2621	* pt.c (tsubst_qualified_id): Use qualified_name_lookup_error for
2622	errors.
2623	(tsubst_expr) <DECL_STMT case>: Likewise.
2624	(tsubst_copy_and_build) <COMPONENT_REF case>: Likewise.
2625	* semantics.c (qualified_name_lookup_error): New, broken out of ...
2626	(finish_id_expression): ... here. Use it.
2627
26282003-07-25  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>
2629
2630	* cfns.gperf: Add '%%' delimiter to placate gperf 3.0.
2631
26322003-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2633
2634	PR c++/11596
2635	* pt.c (maybe_fold_nontype_arg, maybe_fold_nontype_args): Remove.
2636	(tsubst_template_arg): New.
2637	(tsubst_template_arg_vector): Rename to ...
2638	(tsubst_template_args): ... this. Accept a TREE_LIST form. Use
2639	tsubst_template_arg.
2640	(coerce_template_parms): Use tsubst_template_arg for default
2641	value.
2642	(tsubst_template_parms): Likewise.
2643	(tsubst_aggr_type): Adjust.
2644	(tsubst_decl): Likewise.
2645	(tsubst): Use tsubst_template_arg for a DOMAIN. Adjust.
2646	(tsubst_copy) <TEMPLATE_ID_EXPR case>: Use tsubst_template_args.
2647
26482003-07-25 Gabriel Dos Reis  <gdr@integrable-solutions.net>
2649
2650	* Make-lang.in (cp/error.o): Depend on DIAGNOSTIC_H.
2651	* error.c: Use the new pretty-printer framework.
2652
26532003-07-24  Per Bothner  <pbothner@apple.com>
2654
2655	* decl.c (pushdecl_class_level): Don't use push_srcloc/pop_srcloc
2656	which causes errors messages to incorrectly mention included files.
2657
26582003-07-24  Mark Mitchell  <mark@codesourcery.com>
2659
2660	* cp-tree.h (convert_to_base_statically): Declare.
2661	* call.c (build_special_member_call): Convert INSTANCE to the base
2662	type.
2663	* class.c (convert_to_base_statically): New method.
2664	* init.c (construct_virtual_base): Use it.
2665	* method.c (do_build_assign_ref): Fix typo in comment.
2666
26672003-07-24  Jason Merrill  <jason@redhat.com>
2668
2669	* decl.c: Just set truthvalue_* to boolean_*.
2670
26712003-07-24  Nathan Sidwell  <nathan@codesourcery.com>
2672
2673	* decl.c (reshape_init): Remove unreachable code.
2674
26752003-07-24  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2676
2677	PR c++/11513
2678	* cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): Use current_scope.
2679
26802003-07-23  Mark Mitchell  <mark@codesourcery.com>
2681
2682	PR c++/11645
2683	* cp-tree.h (accessible_base_p): Declare.
2684	* call.c (build_over_call): Use it.
2685	* search.c (accessible_base_p): New function, split out from ...
2686	(lookup_base): ... here.
2687
2688	PR c++/11517
2689	* call.c (build_conditional_expr): Use perform_implicit_conversion
2690	and error_operand_p.  Robustify.
2691	* typeck.c (build_unary_op): Use perform_implicit_conversion.
2692
26932003-07-23  Nathan Sidwell  <nathan@codesourcery.com>
2694
2695	PR c++/10953
2696	* parser.c (cp_parser_nested_name_specifier): Reset scope on
2697	failure.
2698	(cp_parser_elaborated_type_specifier): Likewise.
2699
27002003-07-22  Mark Mitchell  <mark@codesourcery.com>
2701
2702	Eliminate use of POINTER_TYPE for pointers-to-members.
2703	* call.c (standard_conversion): Rework pointer-to-member handling.
2704	Add comments.
2705	(add_builtin_candidate): Likewise.
2706	(resolve_scoped_fn_name): Remove.
2707	(build_conditional_expr): Rework pointer-to-member handling.
2708	(compare_ics): Likewise.
2709	* class.c (check_field_decls): Use TYPE_PTR_P.
2710	* cp-lang.c (cp_var_mod_type_p): Rework pointer-to-member
2711	handling.
2712	* cp-tree.h (SCALAR_TYPE_P): Use TYPE_PTR_TO_MEMBER_P.
2713	(TYPE_PTRMEM_P): Add comment.
2714	(TYPE_PTR_P): Simplify.
2715	(TYPE_PTROB_P): Correct definition.
2716	(TYPE_PTR_TO_MEMBER_P): New macro.
2717	(TYPE_PTRMEM_CLASS_TYPE): Adjust.
2718	(TYPE_PTRMEM_POINTED_TO_TYPE): Likewise.
2719	(resolved_scoped_fn_name): Remove declaration.
2720	(build_offset_ref): Change prototype.
2721	(resolve_offset_ref): Remove.
2722	(comp_target_types): Remove.
2723	* cvt.c (cp_convert_to_pointer): Rework pointer-to-member
2724	handling.
2725	(convert_to_reference): Use can_convert.
2726	(ocp_convert): Improve error handling.  Rework pointer-to-member
2727	handling.
2728	(perform_qualification_conversions): Rework pointer-to-member
2729	handling.
2730	* decl.c (build_ptrmem_type): Handle functions too.
2731	(create_array_type_for_decl): Remove OFFSET_TYPE error message.
2732	(grokdeclarator): Use OFFSET_TYPE for pointers to data members.
2733	(grokparms): Remove OFFSET_TYPE error message.
2734	* dump.c (cp_dump_tree): Rework pointer-to-member handling.
2735	* error.c (dump_type_prefix): Likewise.
2736	* expr.c (cplus_expand_constant): Use build_nop.
2737	* init.c (build_offset_ref): Add address_p parameter.  Fold in
2738	necessary bits from resolve_offset_ref.
2739	(resolve_offset_ref): Remove.
2740	* parser.c (cp_parser_postfix_expression): Remove special case
2741	code for OFFSET_TYPE.
2742	* pt.c (convert_nontype_argument): Rework pointer-to-member
2743	handling.
2744	(convert_template_argument): Likewise.
2745	(unify): Likewise.
2746	(invalid_nontype_parm_type_p): Likewise.
2747	(dependent_type_p_r): Likewise.
2748	* rtti.c (get_tinfo_decl): Remove OFFSET_TYPE special case.
2749	(target_incomplete_p_): Rework pointer-to-member
2750	handling.
2751	(get_pseudo_ti_init): Likewise.
2752	(get_pseudo_ti_desc): Likewise.
2753	* semantics.c (finish_qualified_id_expr): Adjust call to
2754	build_offset_ref.  Remove use of resolve_offset_ref.
2755	* tree.c (pod_type_p): Use TYPE_PTR_TO_MEMBER_P.
2756	* typeck.c (target_type): Use TYPE_PTRMEM_P.
2757	(type_unknown_p): Remove obsolete code about the time before
2758	non-dependent expressions were handled correctly.
2759	(qualify_type_recursive): Remove.
2760	(composite_pointer_type_r): New function.
2761	(composite_pointer_type): Use it.
2762	(merge_types): Remove dead comments.
2763	(comp_cv_target_types): Remove.
2764	(comp_target_types): Likewise.
2765	(comp_target_parms): Likewise.
2766	(cxx_sizeof_or_alignof_type): Remove OFFSET_TYPE error.
2767	(build_indirect_ref): Use TYPE_PTR_TO_MEMBER_P.
2768	(build_binary_op): Do not use of comp_target_types.
2769	(pointer_diff): Remove OFFSET_TYPE case.
2770	(build_unary_op): Adjust pointer-to-member handling.
2771	(unary_complex_lvalue): Likewise.
2772	(check_for_casting_away_constness): Add description parameter.
2773	(build_static_cast): Pass it.
2774	(build_reinterpret_cast): Use check_for_casting_away_constness.
2775	(build_const_cast): Adjust pointer-to-member handling.
2776	(build_c_cast): Likewise.
2777	(convert_for_assignment): Remove OFFSET_TYPE error message.
2778	(comp_ptr_ttypes_real): Adjust pointer-to-member handling.
2779	(comp_ptr_ttypes_reinterpret): Remove.
2780	(casts_away_constness_r): Adjust pointer-to-member handling.
2781	(casts_away_constness): Liekwise.
2782	(strip_all_pointer_quals): Remove.
2783	* typeck2.c (digest_init): Adjust pointer-to-member handling.
2784	(build_m_component_ref): Likewise.
2785
27862003-07-22  Wolfgang Bangerth  <bangerth@dealii.org>
2787
2788	* lex.c (unqualified_fn_lookup_error): Mention that the error
2789	message needs to be kept in synch with the manual.
2790
27912003-07-22  Nathan Sidwell  <nathan@codesourcery.com>
2792
2793	PR c++/11614
2794	* decl.c (grokdeclarator): An array member is only a flexible
2795	array member if the field itself is the array.
2796
27972003-07-22  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2798
2799	PR c++/10793
2800	* decl.c (xref_basetypes): Handle error_mark_node.
2801
28022003-07-22  Nathan Sidwell  <nathan@codesourcery.com>
2803
2804	* cp-tree.h (enum cp_lvalue_kind): Add clk_packed.
2805	* tree.c (lvalue_p_1): Set it.
2806	* class.c (check_field): Don't allow non-packed non-POD fields to
2807	be packed.
2808	* call.c (reference_binding): Need a temporary for all bitfield
2809	and packed fields.
2810	(convert_like_real): Check it is ok to make a temporary here.
2811
28122003-07-21  Nathan Sidwell  <nathan@codesourcery.com>
2813
2814	* cp-tree.h (hack_identifier): Remove.
2815	* method.c (hack_identifier): Remove.
2816	* semantics.c (finish_id_expression): Expand hack_identifier
2817	here. Simplify.
2818
28192003-07-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2820
2821	* call.c class.c decl.c decl2.c g++spec.c lex.c parser.c pt.c rtti.c
2822	semantics.c typeck.c: Remove unnecessary casts.
2823
28242003-07-18  Nathan Sidwell  <nathan@codesourcery.com>
2825
2826	* cp-tree.h (hack_identifier): Remove.
2827	* method.c (hack_identifier): Remove.
2828	* semantics.c (finish_id_expression): Expand hack_identifier
2829	here. Simplify.
2830
28312003-07-18  Nathan Sidwell  <nathan@codesourcery.com>
2832
2833	* cp-tree.h (finish_non_static_data_member): Add object param.
2834	* method.c (hack_identifier): Adjust.
2835	* pt.c (tsubst_copy_and_build) <COMPONENT_REF case>: Don't search
2836	again for a FIELD_DECL.
2837	* semantics.c (finish_non_static_data_member): Add object
2838	parameter. Always save the DECL in the COMPONENT_REF.
2839	* call.c (resolve_scoped_fn_name): Adjust.
2840
28412003-07-17  Zack Weinberg  <zack@codesourcery.com>
2842
2843	* pt.c (get_bindings): Make definition consistent with
2844	forward declaration.
2845
28462003-07-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2847
2848	PR c++/7809
2849	* friend.c (add_friend): Check access for member functions
2850	and templates.
2851
28522003-07-17  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2853
2854	PR c++/10668
2855	* typeck.c (build_class_member_access_expr): Improve diagnostic.
2856
28572003-07-16  Mark Mitchell  <mark@codesourcery.com>
2858
2859	PR c++/11547
2860	* cp-tree.h (DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P): New
2861	macro.
2862	(DECL_PRETTY_FUNCTION_P): Use VAR_DECL_CHECK.
2863	* decl.c (duplicate_decls): Merge
2864	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2865	* parser.c (cp_parser_postfix_expression): Adjust call to
2866	cp_parser_initializer_list and
2867	cp_parser_parenthesized_expression_list.
2868	(cp_parser_parenthesized_expression_list): Add non_constant_p.
2869	(cp_parser_new_placement): Adjust call to
2870	cp_parser_parenthesized_expression_list.
2871	(cp_parser_direct_new_declarator): Likewise.
2872	(cp_parser_conditional_expression): Remove.
2873	(cp_parser_constant_expression): Parse an assignment-expression,
2874	not a conditional-expression.
2875	(cp_parser_simple_declaration): Resolve expression/declaration
2876	ambiguity more quickly.
2877	(cp_parser_mem_initializer): Adjust call to
2878	cp_parser_parenthesized_expression_list.
2879	(cp_parser_init_declarator): Keep track of whether or not the
2880	initializer is a constant-expression.
2881	(cp_parser_initializer): Add non_constant_p parameter.
2882	(cp_parser_initializer_clause): Likewise.
2883	(cp_parser_initializer_list): Likewise.
2884	(cp_parser_attribute_list): Adjust call to
2885	cp_parser_parenthesized_expression_list.
2886	(cp_parser_functional_cast): Likewise.
2887	* pt.c (tsubst_decl): Copy
2888	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2889	(tsubst_expr): Tweak use of DECL_PRETTY_FUNCTION_P.
2890	* semantics.c (finish_id_expression): Use
2891	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2892
28932003-07-16  Neil Booth  <neil@daikokuya.co.uk>
2894
2895	* lang-options.h: Remove.
2896
28972003-07-16  Andrew Pinski  <pinskia@physics.uc.edu>
2898
2899	PR c/10962
2900	* class.c (field_decl_cmp): Remove.
2901	(resort_field_decl_cmp): Remove.
2902	(resort_sorted_fields): Remove.
2903	(add_fields_to_vec): Rename to ...
2904	(add_fields_to_record_type): this.
2905	(finish_struct_1): Change to be using
2906	sorted_fields_type's fields.
2907	* cp-tree.h (lang_decl): In lang_decl_u3
2908	change sorted_fields to be a pointer to
2909	sorted_fields_type.
2910	(resort_sorted_fields): Remove prototype.
2911	* search.c (lookup_field_1): Change to be using
2912	sorted_fields_type's fields.
2913
29142003-07-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2915
2916	PR c++/5421
2917	* decl.c (grokdeclarator): Handle TEMPLATE_ID_EXPR if friend
2918	is a member of other class.
2919	* friend.c (do_friend): Don't build TEMPLATE_DECL if friend
2920	is a specialization of function template.
2921
29222003-07-16  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2923
2924	PR c++/10903
2925	* pt.c (convert_nontype_argument): Fix thinko in diagnostic.
2926	Improve.
2927
29282003-07-15  Mark Mitchell  <mark@codesourcery.com>
2929
2930	* cp-tree.def (LOOKUP_EXPR): Remove.
2931	* cp-tree.h (cp_id_kind): Add CP_ID_KIND_UNQUALIFIED_DEPENDENT.
2932	(LOOKUP_EXPR_GLOBAL): Remove.
2933	(get_bindings): Remove.
2934	(is_aggr_type_2): Remove.
2935	* call.c (resolved_scoped_fn_name): Remove support for
2936	LOOKUP_EXPR.
2937	* decl.c (grokfndecl): Likewise.
2938	(grokdeclarator): Likewise.
2939	* error.c (dump_decl): Likewise.
2940	(dump_expr): Likewise.
2941	* friend.c (do_friend): Likewise.
2942	* init.c (build_offset_ref): Likewise.
2943	* lex.c (unqualified_fn_lookup_error): Use pedwarn.  Do not create
2944	LOOKUP_EXPRs
2945	* mangle.c (write_expression): Remove support for LOOKUP_EXPR.
2946	* parser.c (cp_parser_postfix_expression): Modify Koenig lookup
2947	test.
2948	* pt.c (get_bindings): Give it internal linkage.
2949	(check_explicit_specialization): Remove support for LOOKUP_EXPR.
2950	(lookup_template_function): Likewise.
2951	(for_each_tempalte_parm_r): Likewise.
2952	(tsubst_decl): Likewise.
2953	(tsubst_qualified_id): Handle template template parameters.
2954	(tsubst_copy): Remove support for LOOKUP_EXPR.
2955	(tsubst_copy_and_build): Likewise.
2956	(most_general_template): Likewise.
2957	(value_dependent_expression_p): Likewise.
2958	(type_dependent_expression_p): Note that IDENTIFIER_NODEs are
2959	always dependent.
2960	* semantics.c (perform_koenig_lookup): Do not create
2961	IDENTIFIER_NODEs.
2962	(finish_fname): Likewise.
2963	(finish_id_expression): Likewise.
2964	* tree.c (is_aggr_type_2): Remove.
2965
29662003-07-16  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2967
2968	PR c++/11531
2969	* typeck.c (check_return_expr): Fix thinko in diagnostic.
2970
29712003-07-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2972
2973	PR c++/10108
2974	* pt.c (tsubst_decl) <TEMPLATE_DECL>: Add a check for
2975	error_mark_node.
2976
29772003-07-14  Mark Mitchell  <mark@codesourcery.com>
2978
2979	PR c++/11509
2980	* pt.c (dependent_scope_ref_p): New function.
2981	(value_dependent_expression_p): Use it.
2982	(type_dependent_expression_p): Likewise.
2983
2984	* pt.c (tsubst_friend_function): Use reregister_specialization.
2985
2986	PR c++/7019
2987	* cp-tree.h (lookup_qualified_name): Adjust prototype.
2988	* decl.c (lookup_qualified_name): Add complain parameter.  Adjust
2989	call to is_aggr_type.
2990	* parser.c (cp_parser_lookup_name): Adjust call to
2991	lookup_qualified_name.
2992	* pt.c (tsubst_qualified_id): Likewise.
2993	(tsubst_copy_and_build): Likewise.
2994	* semantics.c (finish_qualified_id_expr): Deal with erroneous
2995	expressions.
2996
29972003-07-14  Gabriel Dos Reis <gdr@integrable-solutions.net>
2998
2999	PR c++/11510
3000	* call.c (op_error): Properly format  REALPART_EXPR and
3001	IMAGPART_EXPR.
3002	* error.c (dump_expr): Likewise.
3003
30042003-07-14  Gabriel Dos Reis <gdr@integrable-solutions.net>
3005
3006	* error.c (dump_expr): Handle EMPTY_CLASS_EXPR.
3007
30082003-07-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3009
3010	PR c++/5293
3011	* call.c (initialize_reference): Improve diagnostic.
3012
30132003-07-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3014
3015	PR c++/11154
3016	* pt.c (more_specialized_class): Add full_args parameter.
3017	(most_specialized_class): Adjust calls to more_specialized_class.
3018	* cp-tree.h (more_specialized_class): Adjust declaration.
3019
30202003-07-14  Dan Nicolaescu  <dann@ics.uci.edu>
3021
3022	* lex.c (enum tree_node_kind): Delete.
3023
30242003-07-13  Mark Mitchell  <mark@codesourcery.com>
3025
3026	PR c++/11503
3027	* cp-tree.h (DECL_SELF_REFERENCE_P): New macro.
3028	(SET_DECL_SELF_REFERENCE_P): Likewise.
3029	* class.c (build_self_reference): Use SET_DECL_SELF_REFERENCE_P.
3030	* pt.c (tsubst_decl): Copy it.
3031	* search.c (lookup_base): Use DECL_SELF_REFERENCE_P.
3032
3033	* pt.c (reregister_specialization): Fix thinko in previous change.
3034
3035	* cp-tree.h (cp_id_kind): New type.
3036	(unqualified_name_lookup_error): Change prototype.
3037	(unqualified_fn_lookup_error): New function.
3038	(do_identifier): Remove.
3039	(do_scoped_id): Likewise.
3040	(tsubst_copy_and_build): Change prototype.
3041	(reregister_specialization): New function.
3042	(perform_koenig_lookup): Likewise.
3043	(finish_id_expression): Likewise.
3044	* call.c (build_method_call): Adjust call to
3045	unqualified_name_lookup_error.
3046	* decl.c (duplicate_decls): Use reregister_specialization.
3047	* lex.c (is_global): Remove.
3048	(unqualified_name_lookup_error): Return a value.
3049	(do_identifier): Remove.
3050	(do_scoped_id): Likewise.
3051	(identifier_typedecl_value): Remove.
3052	(unqualified_fn_lookup_error): New function.
3053	* parser.c (cp_parser_id_kind): Remove.
3054	(cp_parser_non_constant_id_expression): Remove.
3055	(cp_parser_primary_expression): Use finish_id_expression.
3056	(cp_parser_class_or_namespace_name): Use cp_id_kind, not
3057	cp_parser_id_kind.
3058	(cp_parser_postfix_expression): Use perform_koenig_lookup.
3059	(cp_parser_template_argument): Use cp_id_kind.
3060	(cp_parser_fold_non_dependent_expr): Adjust call to
3061	tsubst_copy_and_build.
3062	* pt.c (unregister_specialization): Rename to ...
3063	(reregister_specialization): This.
3064	(tsubst_friend_function): Use it.
3065	(maybe_fold_nontype_arg): Adjust call to tsubst_copy_and_build.
3066	(tsubst_qualified_id): Likewise.
3067	(tsubst_expr): Likewise.
3068	(tsubst_copy_and_build): Add function_p parameter.  Use
3069	finish_id_expression.  Introduce RECUR macro.
3070	(tsubst_non_call_postfix_expression): New function.
3071	(regenerate_decl_from_template): Use reregister_specialization.
3072	* semantics.c (perform_koenig_lookup): New function.
3073	(finish_id_expression): Likewise.
3074
30752003-07-13  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3076
3077	* pt.c (push_access_scope_real): Remove.
3078	(push_access_scope): Move code from push_access_scope_real.
3079	(pop_access_scope): Don't check for TEMPLATE_DECL.
3080	(instantiate_template): Defer access checking during template
3081	substitution.
3082	(regenerate_decl_from_template): Tidy.
3083
30842003-07-11  Nathanael Nerode  <neroden@gcc.gnu.org>
3085
3086	PR c++/11437
3087	* operators.def: Add definitions for __imag__, __real__.
3088
30892003-07-11  Nathan Sidwell  <nathan@codesourcery.com>
3090
3091	PR c++/11050
3092	* parser.c (cp_parser_expression_list): Rename to ...
3093	(cp_parser_parenthesized_expression_list): ... here. Add attribute
3094	parameter, parse the surounding parentheses.
3095	(cp_parser_skip_to_closing_parenthesis): Add recover and or_comma
3096	parameters. Return int.
3097	(cp_parser_skip_to_closing_parenthesis or comma): Remove.
3098	(cp_parser_postfix_expression): Adjust function call parsing.
3099	(cp_parser_new_placement): Adjust.
3100	(cp_parser_new_initializer): Likewise.
3101	(cp_parser_cast_expression): Likewise.
3102	(cp_parser_selection_statement): Likewise.
3103	(cp_parser_mem_initializer): Likewise.
3104	(cp_parser_asm_definition): Likewise.
3105	(cp_parser_init_declarator): Likewise.
3106	(cp_parser_declarator): Make
3107	cdtor_or_conv_p an int ptr.
3108	(cp_parser_direct_declarator): Likewise. Check for a parameter
3109	list on cdtors & conv functions.
3110	(cp_parser_initializer): Adjust.
3111	(cp_parser_member_declaration): Adjust.
3112	(cp_parser_attribute_list): Move code into
3113	cp_parser_parens_expression_list.
3114	(cp_parser_functional_cast): Adjust.
3115	* pt.c (type_dependent_expression_p): Erroneous expressions are
3116	non-dependent.
3117
31182003-07-11  Geoffrey Keating  <geoffk@apple.com>
3119
3120	* decl.c (cp_finish_decl): Handle 'used' attribute.
3121
3122	* cp-lang.c (c_reset_state): New dummy routine.
3123	* cp-tree.h (finish_file): Move prototype to c-common.h.
3124	* parser.c (c_parse_file): Rename from yyparse; don't call finish_file.
3125
31262003-07-11  Mark Mitchell  <mark@codesourcery.com>
3127
3128	PR c++/8327
3129	* pt.c (tsubst_qualified_id): Implement suggested resolution for
3130	Core Issue 2.
3131	(type_dependent_expression_p): Likewise.
3132
31332003-07-10  Mark Mitchell  <mark@codesourcery.com>
3134
3135	* typeck.c (build_binary_op): Do not warn about signed
3136	vs. unsigned comparisons in the bodies of templates.
3137
3138	PR c++/9411
3139	* parser.c (cp_parser_postfix_expression): Check dependency of
3140	functions.
3141
31422003-07-09  Mark Mitchell  <mark@codesourcery.com>
3143
3144	PR c++/10032
3145	* decl.c (cxx_init_decl_processing): With -pedantic, pedwarns are
3146	still errors.
3147
3148	PR c++/10527
3149	* error.c (decl_to_string): Do not print default argument
3150	expressions.
3151
3152	* cp-tree.h (break_out_calls): Remove declaration.
3153	* tree.c (break_out_calls): Remove.
3154	* typeck.c (build_modify_expr): Avoid invalid sharing of trees.
3155
31562003-07-09  Nathan Sidwell  <nathan@codesourcery.com>
3157
3158	PR c++ 9483
3159	* class.c (check_field_decls): Pass DECL_NAME to constructor_name_p.
3160	* decl2.c (constructor_name_p): Avoid repeated constructor_name
3161	calls.
3162	* decl.c (grokdeclarator): Refactor ctor/dtor detection.
3163
31642003-07-09  Mark Mitchell  <mark@codesourcery.com>
3165
3166	* typeck.c (build_x_unary_op): Take note of the fact that
3167	PREINCREMENT_EXPR and POSTINCREMENT_EXPR are binary operations on
3168	trees.
3169
3170	* parser.c (cp_parser_primary_expression): Preserve the form of
3171	qualified expressions in templates, even if they are not
3172	dependent.
3173	* pt.c (convert_nontype_argument): Handle non-dependent SCOPE_REFs.
3174	(tsubst_qualified_id): Likewise.
3175	* search.c (accessible_p): Treat everything in the body of a
3176	template as accessible.
3177
31782003-07-08  Mark Mitchell  <mark@codesourcery.com>
3179
3180	* cp-tree.def (NON_DEPENDENT_EXPR): New node.
3181	* cp-tree.h (build_call_from_tree): Remove.
3182	(build_member_call): Likewise.
3183	(dependent_template_arg_p): Remove.
3184	(any_dependent_template_arguments_p): New function.
3185	(dependent_template_id_p): Likewise.
3186	(any_type_dependent_arguments_p): Likewise.
3187	(build_non_dependent_expr): Likewise.
3188	(build_non_dependent_args): Likewise.
3189	(build_x_compound_expr): Adjust prototype.
3190	* call.c (build_new_method_call): Handle non-dependent expressions
3191	correctly.
3192	* decl2.c (grok_array_decl): Likewise.
3193	(build_offset_ref_call_from_tree): Likewise.
3194	(build_call_from_tree): Remove.
3195	* error.c (dump_decl): Handle NON_DEPENDENT_EXPR.
3196	(dump_expr): Likewise.
3197	* init.c (build_member_call): Remove.
3198	* mangle.c (write_expression): Update handling for template-ids.
3199	* parser.c (cp_parser_primary_expression): Use
3200	any_dependent_template_arguments_p.  Update constant-expression
3201	handling.
3202	(cp_parser_postfix_expression): Use
3203	any_type_dependent_arguments_p.  Simplify call processing.
3204	(cp_parser_unary_expression): Simplify.
3205	(cp_parser_expression): Adjust for changes to
3206	build_x_compound_expr.
3207	(cp_parser_template_argument): Implement standard-conforming
3208	parsing of non-type template arguments.
3209	(cp_parser_direct_declarator): Use
3210	cp_parser_fold_non_dependent_expr.
3211	(cp_parser_fold_non_dependent_expr): New function.
3212	(cp_parser_next_token_ends_template_argument_p): Likewise.
3213	* pt.c (convert_template_argument): Do not call
3214	maybe_fold_nontype_arg.
3215	(tsubst_baselink): Likewise.
3216	(tsubst_copy_and_build): Share common code.  Make sizeof/alignof
3217	processing work correctly for non-dependent expressions.  Adjust
3218	handling of COMPOUND_EXPR.  Simplify call processing.
3219	(value_dependent_expression_p): Deal with functional casts and
3220	sizeof/alignof correctly.
3221	(type_dependent_expression_p): Handle overloaded functions.
3222	(any_type_dependent_arguments_p): New function.
3223	(any_dependent_template_arguments_p): Likewise.
3224	(dependent_template_p): Treat SCOPE_REFs as dependent.
3225	(dependent_template_id_p): Simplify.
3226	(build_non_dependent_expr): New function.
3227	(build_non_dependent_args): Likewise.
3228	* semantics.c (finish_stmt_expr): Don't make dependent
3229	statement-expresions have void type.
3230	(finish_call_expr): Handle non-dependent expressions
3231	correctly.
3232	* tree.c (lvalue_p_1): Treat NON_DEPENDENT_EXPRs as lvalues.
3233	* typeck.c (cxx_sizeof_or_alignof_type): Give the expression
3234	type size_t, even in templates.
3235	(expr_sizeof): Likewise.
3236	(finish_class_member_access_expr): Handle non-dependent expressions
3237	correctly.
3238	(build_x_indirect_ref): Likewise.
3239	(build_x_binary_op): Likewise.
3240	(build_x_unary_op): Likewise.
3241	(build_x_conditional_expr): Likewise.
3242	(build_x_compound_expr): Likewise.
3243	* typeck2.c (build_x_arrow): Likewise.
3244
32452003-07-09  Jan Hubicka  <jh@suse.cz>
3246
3247	* cp-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): New.
3248	* decl.c (duplicate_decls): Use DECL_ESTIMATED_INSNS.
3249	(start_function): Use DECL_ESTIMATED_INSNS.
3250	* optimize.c (maybe_clone_body): Use DECL_ESTIMATED_INSNS.
3251
3252	* decl2.c (maybe_emit_vtables): Fix marking vtables as needed in
3253	unit-at-a-time
3254
32552003-07-08  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3256
3257	PR c++/11030
3258	* pt.c (instantiate_class_template): Don't call xref_tag to
3259	inject name when the friend class is a specialization.
3260
32612003-07-07  Mark Mitchell  <mark@codesourcery.com>
3262
3263	* cp-tree.h (build_scoped_method_call): Remove.
3264	(lookup_qualified_name): Remove parameter.
3265	(tsubst_copy_and_build): Declare.
3266	(finish_qualified_object_call_expr): Remove.
3267	(check_accessibility_of_qualified_id): New function.
3268	(finish_qualified_id_expr): Likewise.
3269	(non_reference): Likewise.
3270	(build_expr_from-tree): Remove.
3271	* call.c (non_reference): Remove.
3272	(build_scoped_method_call): Likewise.
3273	(build_method_call): Use error_operand_p.  Assert that we are not
3274	processing a template.
3275	(standard_conversion): Use non_reference.
3276	* class.c (build_vtbl_entry_ref): Likewise.
3277	(build_vtbl_ref_1): Likewise.
3278	* cvt.c (build_expr_type_conversion): Use non_reference.
3279	* decl.c (lookup_qualified_name): Remove flags parameter.
3280	(grok_op_properties): Use non_reference.
3281	* decl2.c (grok_array_decl): Likewise.
3282	(build_expr_from_tree): Remove.
3283	(build_offset_ref_call_from_tree): Update comment.
3284	* error.c (parm_to_string): Call reinit_global_formatting_buffer.
3285	* except.c (prepare_eh_types): Use non_reference.
3286	(can_convert_eh): Likewise.
3287	* init.c (build_dtor_call): Avoid using build_method_call.
3288	* mangle.c (write_template_param): Remove misleading comment.
3289	* method.c (locate_copy): Use non_reference.
3290	* parser.c (cp_parser_scope_through_which_access_occurs): Remove.
3291	(cp_parser_primary_expression): Do not create SCOPE_REFs is
3292	non-dependent contexts.
3293	(cp_parser_postfix_expression): Use finish_qualified_id_expr.
3294	(cp_parser_direct_declarator): Use tsubst_copy_and_build, not
3295	build_expr_from_tree.
3296	(cp_parser_lookup_name): Adjust call to lookup_qualified_name.
3297	Use check_accessibility_of_qualified_id.
3298	* pt.c (maybe_fold_nontype_arg): Use tsubst_copy_and_build, not
3299	build_expr_from_tree.
3300	(tsubst_baselink): New function.
3301	(tsubst_qualified_id): Likewise.
3302	(tsubst_copy): Use them.  Remove support for METHOD_CALL_EXPR.
3303	(tsubst_expr): Adjust call to lookup_qualified_name.
3304	(tsubst_copy_and_build): Handle SCOPE_REFs specially.  Adjust
3305	handling of CALL_EXPRs.
3306	(value_dependent_expression_p): Use INTEGRAL_OR_ENUMERATION_TYPE_P.
3307	* rtti.c (get_tinfo_decl_dynamic): Use non_reference.
3308	* search.c (check_final_overrider): Likewise.
3309	* semantics.c (check_accessibility_of_qualified_id): New function.
3310	(finish_qualified_object_call_expr): Remove.
3311	* typeck.c (target_type): Use non_reference.
3312	(cxx_sizeof_or_alignof_type): Likewise.
3313	(dubious_conversion_warnings): Likewise.
3314	(convert_for_initialization): Likewise.
3315	(non_reference): New function.
3316
33172003-07-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3318
3319	* decl.c (print_binding_level, print_other_binding_stack,
3320	print_binding_stack): Merge uses of HOST_PTR_PRINTF with adjacent
3321	stdio calls.
3322	* ptree.c (cxx_print_decl, cxx_print_binding): Likewise.
3323
33242003-07-07  Andreas Jaeger  <aj@suse.de>
3325
3326	* friend.c: Convert to ISO C90 prototypes.
3327
3328	* Make-lang.in ($(srcdir)/cp/cfns.h): Use ANSI-C as output
3329	language.
3330	* cfns.h: Regenerate.
3331
3332	* typeck.c: Convert remaining prototypes to ISO C90.
3333	* search.c: Likewise.
3334
3335	* decl2.c (build_expr_from_tree): Convert prototype to ISO C90.
3336	* semantics.c (expand_or_defer_fn): Likewise
3337	* mangle.c (discriminator_for_string_literal): Likewise.
3338	* g++spec.c (lang_specific_driver): Likewise.
3339
3340	* search.c (lookup_base_r): Remove unused variable.
3341
33422003-07-07  Nathan Sidwell  <nathan@codesourcery.com>
3343
3344	* semantics.c: (genrtl_try_block) Adjust emit_line_note
3345	calls.
3346
33472003-07-07  Andreas Jaeger  <aj@suse.de>
3348
3349	* search.c (lookup_base_r): Remove unused variable.
3350
33512003-07-06  Michael Chastain  <mec@shout.net>
3352
3353	PR debug/10055
3354	* lex.c (cxx_init): Call push_srcloc and pop_srcloc rather than
3355	assigning to input_filename directly.
3356
33572003-07-06  Kazu Hirata  <kazu@cs.umass.edu>
3358
3359	* call.c: Fix comment formatting.
3360	* class.c: Likewise.
3361	* cp-tree.h: Likewise.
3362	* decl.c: Likewise.
3363	* decl2.c: Likewise.
3364	* error.c: Likewise.
3365	* method.c: Likewise.
3366	* name-lookup.c: Likewise.
3367	* parser.c: Likewise.
3368	* pt.c: Likewise.
3369	* rtti.c: Likewise.
3370	* search.c: Likewise.
3371	* typeck.c: Likewise.
3372
33732003-07-06  Mark Mitchell  <mark@codesourcery.com>
3374
3375	PR c++/11345
3376	* search.c (lookup_base_r): Remove is_non_public and
3377	within_current_scope parameters.  Remove other dead code.
3378	(lookup_base): Adjust call to lookup_base_r.
3379	(adjust_result_of_qualified_name_lookup): Improve comment.
3380	* semantics.c (finish_call_expr): Use maybe_dummy_object.
3381
33822003-07-06  Neil Booth  <neil@daikokuya.co.uk>
3383
3384	* cp-lang.c (LANG_HOOKS_HANDLE_FILENAME,
3385	LANG_HOOKS_MISSING_ARGUMENT): Override.
3386
33872003-07-05  Mark Mitchell  <mark@codesourcery.com>
3388
3389	PR c++/11431
3390	* typeck.c (build_static_cast): Check for reference conversions
3391	earlier.
3392
33932003-07-04  Mark Mitchell  <mark@codesourcery.com>
3394
3395	* cp-tree.h (perform_integral_promotions): Declare.
3396	* call.c (build_addr_func): Use decay_conversion.
3397	(convert_arg_to_ellipsis): Likewise.  Remove misleading comment.
3398	(convert_for_arg_passing): Use perform_integral_promotions.
3399	* cvt.c (build_expr_type_conversion): Use decay_conversion.
3400	(type_promotes_to): Do not return a cv-qualified type.
3401	* decl.c (grok_reference_init): Fix formatting.
3402	(get_atexit_node): Use decay_conversion.
3403	(build_enumerator): Use perform_integral_promotions.
3404	* init.c (build_vec_init): Use decay_conversion.
3405	* semantics.c (finish_expr_stmt): Likewise.
3406	(finish_switch_cond): Use perform_integral_promotions.
3407	* typeck.c (default_conversion): Likewise.
3408	(perform_integral_promotions): New function.
3409	(build_indirect_ref): Use decay_conversion.
3410	(build_array_ref): Use perform_integral_promotions.
3411	(convert_arguments): Use decay_conversion.
3412	(build_unary_op): Use perform_integral_promotions.
3413	(build_c_cast): Use decay_conversion.
3414	(build_modify_expr): Likewise.
3415	(convert_for_initialization): Likewise.
3416	* typeck2.c (build_x_arrow): Likewise.
3417
34182003-07-04  Kazu Hirata  <kazu@cs.umass.edu>
3419
3420	* call.c: Fix comment typos.
3421	* class.c: Likewise.
3422	* cp-tree.h: Likewise.
3423	* cvt.c: Likewise.
3424	* decl2.c: Likewise.
3425	* decl.c: Likewise.
3426	* init.c: Likewise.
3427	* mangle.c: Likewise.
3428	* parser.c: Likewise.
3429	* pt.c: Likewise.
3430	* search.c: Likewise.
3431	* semantics.c: Likewise.
3432	* tree.c: Likewise.
3433	* typeck.c: Likewise.
3434
34352003-07-04  Zack Weinberg  <zack@codesourcery.com>
3436
3437	* parser.c (cp_lexer_read_token): No need to handle string
3438	constant concatenation.
3439
34402003-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3441
3442	* cp-tree.h (GCC_DIAG_STYLE, ATTRIBUTE_GCC_CXXDIAG): Define.
3443	(cp_error_at, cp_warning_at, cp_pedwarn_at): Mark with
3444	ATTRIBUTE_GCC_CXXDIAG.
3445
34462003-07-03  Mark Mitchell  <mark@codesourcery.com>
3447
3448	* call.c (build_addr_func): Handle bound pointers-to-members.
3449	(build_method_call): Do not call resolve_offset_ref.
3450	(implicit_conversion): Likewise.
3451	(resolve_scoped_fn_name): Use finish_non_static_data_member, not
3452	resolve_offset_ref.
3453	(resolve_args): Do not call resolve_offset_ref.
3454	(build_conditional_expr): Likewise.
3455	(build_new_method_call): Likewise.
3456	* cp-tree.def (OFFSET_REF): Update documentation.
3457	* cvt.c (cp_convert_to_pointer): Update handling of conversions from
3458	pointers to members to pointers.
3459	(ocp_convert): Do not call resolve_offset_ref.
3460	(convert_to_void): Likewise.
3461	(build_expr_type_conversion): Likewise.
3462	* decl2.c (delete_sanity): Likewise.
3463	* init.c (resolve_offset_ref): Simplify greatly.
3464	(build_vec_delete): Do not call resolve_offset_ref.
3465	* parser.c (cp_parser_postfix_expression): Call resolve_offset_ref
3466	if appropriate.
3467	(cp_parser_unary_expression): Use
3468	cp_parser_simple_cast_expression.
3469	(cp_parser_delete_expression): Likewise.
3470	(cp_parser_cast_expression): Likewise.
3471	(cp_parser_pm_expression): Use cp_parser_binary_op.
3472	(cp_parser_simple_cast_expression): New function.
3473	* rtti.c (build_dynamic_cast_1): Do not call resolve_offset_ref.
3474	* semantics.c (finish_increment_expr): Likewise.
3475	(finish_typeof): Likewise.
3476	* tree.c (lvalue_p_1): Do not handle OFFSET_REF.
3477	* typeck.c (require_complete_type): Do not handle OFFSET_REFs.
3478	(decay_conversion): Do not call resolve_offset_ref.
3479	(finish_class_member_access_expr): Likewise.
3480	(convert_arguments): Likewise.
3481	(build_x_binary_op): Handle DOTSTAR_EXPR.
3482	(condition_conversion): Do not call resolve_offset_ref.
3483	(unary_complex_lvalue): Likewise.
3484	(build_static_cast): Likewise.
3485	(build_reinterpret_cast): Likewise.
3486	(build_const_cast): Likewise.
3487	(build_c_cast): Likewise.
3488	(build_modify_expr): Likewise.
3489	(convert_for_assignment): Likewise.
3490	(convert_for_initialization): Likewise.
3491	* typeck2.c (build_x_arrow): Likewise.
3492	(build_m_component_ref): Simplify.
3493
3494	* call.c (build_scoped_method_call): Use convert_to_void.
3495	(build_method_call): Likewise.
3496	* class.c (check_field_decls): Remove dead code.
3497	* cvt.c (convert_from_reference): Remove OFFSET_TYPE handling.
3498	* decl2.c (grok_array_decl): Remove dead code.
3499	(arg_assoc_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE
3500	as pointer-to-member representation.
3501	* init.c (build_offset_ref): Tidy.
3502	(build_vec_delete_1): Use convert_to_void.
3503	* mangle.c (write_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE
3504	as pointer-to-member representation.
3505
35062003-07-03  Nathan Sidwell  <nathan@codesourcery.com>
3507
3508	PR c++/9162
3509	* decl.c (grokdeclarator): Return friend decls, not
3510	void_type_node.
3511	* decl2.c (grokfield): Alter friend decl check.
3512	* parser.c (struct cp_parser): Document default_arg chain on
3513	unparsed_functions_queue.
3514	(cp_parser_save_default_args): New.
3515	(cp_parser_init_declarator, cp_parser_function_definition,
3516	cp_parser_member_declaration): Call it.
3517	(cp_parser_class_specifier): Remove unused variable. Alter
3518	processing of unparsed_functions_queue.
3519
35202003-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3521
3522	* class.c (add_method, check_field_decl): Fix format specifier.
3523	* decl.c (duplicate_decls, pushdecl, check_goto,
3524	fixup_anonymous_aggr, maybe_commonize_var, grokdeclarator,
3525	start_enum): Likewise.
3526	* decl2.c (ambiguous_decl): Likewise.
3527	* pt.c (redeclare_class_template): Likewise.
3528
35292003-07-02  Nathan Sidwell  <nathan@codesourcery.com>
3530
3531	PR c++/10219
3532	* pt.c (type_unification_real): Don't unify exprs of error type.
3533	* tree.c (error_type): Don't die on error_type.
3534
3535	PR c++/9779
3536	* decl2.c (arg_assoc_class): Don't die on NULL type.
3537	* typeck.c (type_unknown_p): Don't die on untyped expressions.
3538
35392003-07-01  Mark Mitchell  <mark@codesourcery.com>
3540
3541	PR c++/6949
3542	* decl2.c (grokfield): Create TEMPLATE_DECLs for methods in local
3543	classes.
3544
35452003-07-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3546
3547	* error.c (locate_error): %P takes an `int', not a `tree'.
3548
35492003-07-02  Jan Hubicka  <jh@suse.cz>
3550
3551	* decl2.c (defer_fn): Set DECL_DEFER_OUTPUT.
3552	(finish-file): Do not process function with DECL_DEFER_OUTPUT clear;
3553	clear DECL_DEFER_OUTPUT once function is processed; avoid flags
3554	massaging.
3555
3556	* cp-tree.h (DECL_NEEDED_P): Support unit-at-a-time
3557	(expand_or_defer_fn): Declare.
3558	(lower_function): Declare.
3559	* decl.c (start_cleanup_fn): Use expand_or_defer_fn.
3560	* decl2.c: Include cgraph.h and varpool.h
3561	(maybe_emit_vtables):  Make explicit instantations as needed.
3562	(mark_member_pointers, lower_function): New functions.
3563	(finish_file): Do unit-at-a-time.
3564	* method.c (synthesize_method): Use expand_or_defer_fn.
3565	* optimize.c (maybe_clone_body): Use expand_or_defer_fn.
3566	* parser.c (cp_parser_function_definition_after_decl): Use
3567	expand_or_defer_fn.
3568	* pt.c (instantiate_decl): Likewise.
3569	* semantics.c: Include cgraph.h
3570	(expand_or_defer_fn): Break out from ...
3571	(expand_body): ... here; deal with unit-at-a-time.
3572	* cp-lang.c (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION,
3573	LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION): Define.
3574
35752003-07-01  Mark Mitchell  <mark@codesourcery.com>
3576
3577	* call.c (resolve_scoped_fn_name): Return error_mark_node for
3578	erroneous cases.
3579
35802003-07-01  Mark Mitchell  <mark@codesourcery.com>
3581
3582	PR c++/11149
3583	* call.c (resolve_scoped_fn_name): Check that the qualifying scope
3584	is a class type.
3585
35862003-07-01  Giovanni Bajo  <giovannibajo@libero.it>
3587
3588	PR c++/8046
3589	* error.c (dump_decl): Handle BIT_NOT_EXPR as
3590	pseudo destructor calls.
3591
35922003-07-01  Nathan Sidwell  <nathan@codesourcery.com>
3593
3594	* cp-tree.h (define_label): Replace filename and lineno
3595	arguments with a location_t.
3596	* decl.c (pop_label): Adjust define_label call.
3597	(define_label): Replace filename and lineno arguments with a
3598	location_t.
3599	* semantics.c (finish_label): Adjust define_label call.
3600
36012003-07-01  Mark Mitchell  <mark@codesourcery.com>
3602
3603	PR c++/9559
3604	* decl2.c (grokfield): Do not build NOP_EXPRs around the
3605	error_mark_node.
3606
36072003-06-30  Neil Booth  <neil@daikokuya.co.uk>
3608
3609	* Make-lang.in: Update.
3610	* cp-lang.c (c_language): Define.
3611	(LANG_HOOKS_INIT_OPTIONS): Use common hook.
3612	* cp-tree.h (cxx_init_options): Remove.
3613	* lex.c: Don't include diagnostic.h.
3614	(cxx_init_options): Remove.
3615
36162003-06-30  Giovanni Bajo  <giovannibajo@libero.it>
3617
3618	PR c++/4933
3619	* error.c (dump_expr): Support correctly the COMPOUND_EXPR
3620	tree generated within a template. Use dump_expr to dump an
3621	expression sizeof.
3622
36232003-06-30  Giovanni Bajo  <giovannibajo@libero.it>
3624
3625	* mangle.c (write_expression): Exit gracefully when trying to
3626	mangle a CALL_EXPR.
3627
36282003-06-30  Giovanni Bajo  <giovannibajo@libero.it>
3629
3630	PR c++/10750
3631	* parser.c (cp_parser_primary_expression): A VAR_DECL with a
3632	(value- or type-) dependent expression as DECL_INITIAL is a
3633	valid constant-expression (at parser time).
3634
36352003-06-30  Giovanni Bajo  <giovannibajo@libero.it>
3636
3637	PR c++/11106
3638	* error.c (dump_decl): Call dump_decl to dump the DECL_NAME for a
3639	USING_DECL, instead of print_tree_identifier.
3640
36412003-06-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3642
3643	* cp-tree.h (language_to_string): Adjust declaration.
3644	* dump.c (cp_dump_tree): Adjust usage.
3645	* error.c (dump_char): Use output_formatted_scalar. Tidy.
3646	(parm_to_string): Lose unused parameter.  Tidy.
3647	(expr_to_string): Likewise.
3648	(code_to_string): Likewise.
3649	(language_to_string): Likewise.
3650	(op_to_string): Likewise.
3651	(assop_to_string): Likewise.
3652	(digit_buffer): Remove.
3653	(dump_type): Format builtin vector type as __vector__.
3654
36552003-06-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3656
3657	* error.c (print_integer): Remove.
3658	(dump_type_suffix): Adjust.
3659	(dump_expr): Likewise.
3660
36612003-06-28  Nathan Sidwell  <nathan@codesourcery.com>
3662
3663	* error.c (print_instantiation_partial_context): Take a
3664	location_t.
3665	(print_instantiation_full_context): Adjust.
3666	(print_instantiation_context): Adjust.
3667
3668	* cp-tree.h (cp_line_of, cp_file_of): Remove.
3669	* error.c (cp_line_of, cp_file_of): Merge into ...
3670	(location_of): ... here. Make static, return a location_t.
3671	(cp_error_at, cp_warning_at, cp_pedwarn_at): Adjust.
3672
36732003-06-28  Nathan Sidwell  <nathan@codesourcery.com>
3674
3675	PR c++/10784
3676	* call.c (joust): Move warn_conversion check outwards.
3677
36782003-06-27  Zack Weinberg  <zack@codesourcery.com>
3679
3680	* decl.c (build_typename_type)
3681	* mangle.c (write_template_template_arg)
3682	* parser.c (cp_parser_scope_through_which_access_occurs)
3683	* pt.c (push_access_scope_real, push_access_scope, pop_access_scope)
3684	* repo.c (get_base_filename)
3685	* semantics.c (maybe_convert_cond):
3686	Mark the definition static, matching the forward declaration.
3687
36882003-06-27  Mark Mitchell  <mark@codesourcery.com>
3689
3690	PR c++/10468
3691	* pt.c (tsubst): Handle qualified TYPEOF_TYPEs correctly.
3692
36932003-06-27  Mark Mitchell  <mark@codesourcery.com>
3694
3695	PR c++/10796
3696	* decl.c (finish_enum): Implement DR377.
3697
3698	* decl.c (cp_finish_decl): Don't make variables with reference
3699	type readonly while they are being initialized.
3700
37012003-06-26  Mark Mitchell  <mark@codesourcery.com>
3702
3703	PR c++/11332
3704	* typeck.c (build_static_cast): Avoid returning expressions with
3705	reference type.
3706
37072003-06-26  Nathan Sidwell  <nathan@codesourcery.com>
3708
3709	* call.c (build_op_delete_call): Use strip_array_call. Correct
3710	error message to say 'delete' or 'delete[]'.
3711
37122003-06-26  Giovanni Bajo  <giovannibajo@libero.it>
3713
3714	PR c++/8266
3715	* pt.c (check_explicit_specialization): When looking up a
3716	template function from an identifier outside class-scope, bind
3717	it to CP_DECL_CONTEXT.
3718
37192003-06-25  Mark Mitchell  <mark@codesourcery.com>
3720
3721	PR c++/10990
3722	* search.c (lookup_base_r): Rely on accessible_p, rather than
3723	trying to emulate that logic here.
3724
3725	PR c++/10931
3726	* call.c (convert_like): Pass issue_conversion_warnings.
3727	(convert_like_with_context): Likewise.
3728	(convert_like_real): Add issue_conversion_warnings parameter.
3729	(perform_direct_initialization_if_possible): New function.
3730	* cp-tree.h (perform_direct_initialization_if_possible): Declare it.
3731	* typeck.c (check_for_casting_away_constness): New function.
3732	(build_static_cast): Rewrite.
3733
37342003-06-24  Nathan Sidwell  <nathan@codesourcery.com>
3735
3736	* call.c (enforce_access): Assert we get a binfo.
3737	(build_op_delete_call): Pass a binfo to
3738	perform_or_defer_access_check.
3739	* class.c (alter_access): Likewise.
3740	* decl.c (make_typename_type): Likewise.
3741	(make_unbound_class_template): Likewise.
3742	* lex.c (do_identifier): Likewise.
3743	* method.c (hack_identifier): Likewise.
3744	* parser.c (cp_parser_lookup_name): Likewise.
3745	* search.c (lookup_member): Likewise. Move IDENTIFIER_CLASS_VALUE
3746	test.
3747	* semantics.c (finish_non_static_data_member): Likewise.
3748	(perform_or_defer_access_check): Expect a binfo.
3749	* typeck.c (comptypes): Expect types.
3750
3751	* mangle.c (find_substitution): Don't pass a non-type to same_type_p
3752	* friend.c (make_friend_class): Likewise.
3753	* pt.c (check_default_tmpl_args): Likewise.
3754	(lookup_template_class): Likewise.
3755
37562003-06-24  Jan Hubicka  <jh@suse.cz>
3757
3758	* method.c (thunk_labelno): Move outside ifdef block to make garbage
3759	collector happy.
3760
37612003-06-24  Jan Hubicka  <jh@suse.cz>
3762
3763	* class.c (build_vtable): Make vtables.
3764	* cp-tree.h (DECL_VTABLE_OR_VTT_P): New macro.
3765	* decl2.c (output_vtable_inherit): Rename to ...
3766	(prepare_assemble_variable): ... this one; change interface.
3767	(maybe_emit_vtables): Do not call output_vtable_inherit.
3768	* cp-lang.c (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Define.
3769	* cp-tree.h (prepare_assemble_variable): New.
3770
37712003-06-23  Andrew Pinski <pinskia@physics.uc.edu>
3772
3773	* method.c: add prototype for make_alias_for_thunk.
3774	(thunk_labelno, make_alias_for_thunk): only define
3775	if ASM_OUTPUT_DEF is defined.
3776
37772003-06-23  Jakub Jelinek  <jakub@redhat.com>
3778
3779	* method.c (thunk_labelno): New variable.
3780	(make_alias_for_thunk): New function.
3781	(use_thunk): Use it if defined ASM_OUTPUT_DEF.  Put the thunk
3782	into the same section as the function it is calling.
3783	Include gt-cp-method.h.
3784	* Make-lang.in (gt-cp-method.h): Depend on s-gtype.
3785	(cp/method.o): Depend on gt-cp-method.h.
3786	* config-lang.in (gtfiles): Add $(srcdir)/cp/method.c.
3787
37882003-06-23  Jan Hubicka  <jh@suse.cz>
3789
3790	* decl.c (register_dtor_fn): Mark cleanup as used.
3791	* decl2.c (mark_vtable_entries): Skip nops.
3792	* rtti.c (get_tinfo_ptr): Mark tinfo as used.
3793	(build_dynamic_cast_1): Likewise.
3794	(tinfo_base_init): Likewise.
3795	(emit_tinfo_decl): Likewise.
3796
37972003-06-23  Jakub Jelinek  <jakub@redhat.com>
3798
3799	* mangle.c (hash_type): Val is the TREE_LIST itself, not a pointer
3800	to it.
3801
38022003-06-21  Gabriel Dos Reis <gdr@integrable-solutions.net>
3803
3804	PR c++/10784
3805	* call.c (joust): Warn about choosing conversion sequence only if
3806	-Wconversion.
3807
38082003-06-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3809
3810	PR c++/10864
3811	* call.c (op_error): Tidy.
3812	* error.c (dump_expr): Properly format 'T()' when T is an
3813	aggregate type.
3814
38152003-06-21  Gabriel Dos Reis <gdr@integrable-solutions.net>
3816
3817	PR c++/10915
3818	* decl.c (grok_op_properties): Warn possible confusing conversion
3819	only if -Wconversion.
3820
38212003-06-20  Mark Mitchell  <mark@codesourcery.com>
3822
3823	PR c++/10749
3824	* parser.c (cp_parser_class_head): See through dependent names
3825	when parsing a class-head.
3826
3827	PR c++/10845
3828	* pt.c (try_class_unification): Correct handling of member class
3829	templates.
3830
38312003-06-20  Nathan Sidwell  <nathan@codesourcery.com>
3832
3833	* semantics.c (genrtl_finish_function): Adjust
3834	expand_function_end call.
3835
38362003-06-19  Mark Mitchell  <mark@codesourcery.com>
3837
3838	PR c++/10939
3839	* pt.c (tsubst_decl): Do not try to substitute into non-dependent
3840	functions.
3841	(value_dependent_expression_p): Correct logic for FUNCTION_DECLs.
3842
3843	PR c++/9649
3844	* cp-tree.h (pushdecl_class_level): Change prototype.
3845	(push_class_level_binding): Likewise.
3846	* decl.c (add_binding): Reject duplicate static data members.
3847	(pushdecl_class_level): Return a value indicating whether or not
3848	the binding was valid.
3849	(push_class_level_binding): Likewise.
3850	* semantics.c (finish_member_declaration): Don't keep invalid
3851	declarations.
3852
3853	PR c++/11041
3854	* call.c (initialize_reference): Do not use cp_finish_decl to emit
3855	temporary variables.
3856	* cp-tree.h (static_aggregates): Declare.
3857	(pushdecl_top_level_and_finish): Likewise.
3858	* decl.c (pushdecl_top_level_1): New function.
3859	(pushdecl_top_level): Use it.
3860	(pushdecl_top_level_and_finish): New function.
3861	(initialize_local_var): Remove redundant code.
3862	(cp_finish_decl): Remove support for RESULT_DECLs.  Don't check
3863	building_stmt_tree.
3864	* decl.h (static_aggregates): Remove.
3865	* decl2.c (get_guard): Use pushdecl_top_level_and_finish.
3866	* rtti.c (get_tinfo_decl): Use pushdecl_top_level_and_finish.
3867	(tinfo_base_init): Likewise.
3868
38692003-06-19  Matt Austern  <austern@apple.com>
3870
3871	PR c++/11228
3872	* init.c (build_zero_init): Assert that number of array elements
3873	is an integer constant.
3874	(build_default_init) Don't use build_zero_init for arrays with
3875	variable number of elements.
3876
38772003-06-19  Andreas Jaeger  <aj@suse.de>
3878
3879	* cp-tree.h: Remove duplicated declarations.
3880
38812003-06-18  Nathanael Nerode  <neroden@gcc.gnu.org>
3882
3883	* pt.c: Convert to ISO C.
3884	* semantics.c: Convert to ISO C.
3885
38862003-06-18  Nathan Sidwell  <nathan@codesourcery.com>
3887
3888	* cp-tree.h (comp_except_specs, compparms, cp_has_mutable_p,
3889	at_least_as_qualified_p, more_qualified_p): Return bool.
3890	* typeck.c: ANSIFY function definitions.
3891	(comp_array_types): Take redeclaration bool parameter.
3892	(comptypes): Rearrange STRICT handling.
3893	(at_least_as_qualified_p, more_qualified_p,
3894	comp_cv_qualification): Cache cv quals.
3895	(compparms): Rearrange loop.
3896
38972003-06-18  Nathan Sidwell  <nathan@codesourcery.com>
3898
3899	* cp-tree.h (COMPARE_RELAXED): Rename to ...
3900	(COMPARE_DERIVED): ... here. Adjust comment.
3901	(resolve_typename_type_in_current_instantiation): Remove.
3902	(cp_tree_equal, comptypes): Return a bool.
3903	* cvt.c (convert_to_reference): Adjust comptypes call.
3904	* pt.c (template_args_equal, unify,): Adjust cp_tree_equal call.
3905	(resolve_typename_type_in_current_instantiation): Remove.
3906	* tree.c (cp_tree_equal): Return bool. Cope with TEMPLATE_DECLs and
3907	IDENTIFIER_NODEs. Abort if undeciderable. Adjust recursive
3908	calls. Refactor code.
3909	* typeck.c (comp_array_types): Return bool. Lose callback.
3910	parameter. Adjust cp_tree_equal calls.
3911	(comptypes): Return bool. Adjust strict handling. Remove relaxed
3912	enumeration and java type handling. Deal with typename types here.
3913	Adjust recursive and cp_tree_equals calls. Adjust base and derived
3914	checking.
3915	(comp_target_types): Remove unreachable code. Adjust
3916	same_or_base_type_p calls.
3917	(ptr_reasonably_similar): Adjust base and derived check.
3918
3919	* typeck.c (maybe_warn_about_returning_address_of_local): Remove
3920	unused calculation.
3921	(check_return_expr): Adjust error messages.
3922	* cp-tree.def (SCOPE_REF): Correct comment.
3923
39242003-06-17  Mark Mitchell  <mark@codesourcery.com>
3925
3926	* mangle.c (mangle_conv_op_name_for_type): Correct sprintf format
3927	string again.
3928
39292003-06-17  Robert Abeles  <rabeles@archaelogic.com>
3930
3931	* optimize.c (dump_function): Form complete flag name by
3932	prefixing 'fdump-' to string returned by dump_flag_name().
3933
39342003-06-17  Mark Mitchell  <mark@codesourcery.com>
3935
3936	* mangle.c (mangle_conv_op_name_for_type): Correct sprintf format
3937	string.
3938
39392003-06-17  Jason Merrill  <jason@redhat.com>
3940
3941	PR c++/10929
3942	* decl.c (grokfndecl): Don't mark a function inline for
3943	-finline-functions if it isn't defined.
3944
39452003-06-17  Mark Mitchell  <mark@codesourcery.com>
3946
3947	PR c++/10712
3948	* class.c (handle_using_decl): Robustify.
3949
3950	PR c++/11105
3951	* cp-tree.h (DECL_CONV_FN_TYPE): New method.
3952	* mangle.c (struct globals): Remove internal_mangling_p.
3953	(write_unqualified_name): Use DECL_CONV_FN_TYPE.
3954	(write_template_parm): Don't write out the level number.
3955	(conv_type_names): New variable.
3956	(hash_type): New function.
3957	(compare_type): Likewise.
3958	(mangle_conv_op_name_for_type): Don't try to mangle conversion
3959	operator names.
3960	* search.c (lookup_conversion_operator): New function.
3961	(lookup_fnfields_1): Use it.
3962
39632003-06-17  Andreas Jaeger  <aj@suse.de>
3964
3965	* except.c: Remove duplicate declaration of push_eh_cleanup.
3966
3967	* call.c: Remove extra declaration of inhibit_warnings.
3968
39692003-06-16  Nathanael Nerode  <neroden@gcc.gnu.org>
3970
3971	2003-06-16  Jens-Michael Hoffmann  <jensmh@gmx.de>
3972	* mangle.c: Convert to ISO C.
3973
39742003-06-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3975
3976	* cp/decl.c, cp/pt.c, cp/search.c, cp/tree.c: Don't use the PTR
3977	macro.
3978
39792003-06-16  Nathanael Nerode  <neroden@gcc.gnu.org>
3980
3981	* tree.c: Convert to ISO C.
3982
39832003-06-16  Kazu Hirata  <kazu@cs.umass.edu>
3984
3985	* cp-tree.h: Follow spelling conventions.
3986	* mangle.c: Likewise.
3987	* method.c: Likewise.
3988	* parser.c: Likewise.
3989
39902003-06-14  Nathan Sidwell  <nathan@codesourcery.com>
3991
3992	* decl.c (start_function): Adjust init_function_start call.
3993	* method.c (use_thunk): Likewise.
3994	* semantics.c (genrtl_start_function): Likewise.
3995
39962003-06-14  Neil Booth  <neil@daikokuya.co.uk>
3997
3998	* Make-lang.in: Remove c-options.o.
3999
40002003-06-13  Nathanael Nerode  <neroden@gcc.gnu.org>
4001
4002	* lex.c: Convert to ISO C.
4003
4004	2003-05-19  Jens-Michael Hoffmann  <jensmh@gmx.de>
4005	* init.c: removes use of PARAMS macro.  Use ISO style function
4006	declarations.  (Not copyright-significant change.)
4007
4008	* rtti.c: Remove PARAMS.
4009
4010	* typeck2.c: Convert to ISO C.
4011
40122003-06-12  Mark Mitchell  <mark@codesourcery.com>
4013
4014	PR c++/10635
4015	* typeck.c (build_c_cast): Check that the destination type is
4016	complete.
4017
40182003-06-11  Mark Mitchell  <mark@codesourcery.com>
4019
4020	PR c++/10432
4021	* cp-tree.h (finish_declarator): Remove.
4022	* decl.c (cp_finish_decl): Make sure to pop_nested_class even for
4023	erroneous declarations.
4024	* semantics.c (finish_declarator): Remove.
4025
40262003-06-11  Roger Sayle  <roger@eyesopen.com>
4027
4028	* decl2.c (generate_ctor_or_dtor_function): Avoid expanding a
4029	global static constructor/destructor if it will be empty, i.e.
4030	either doesn't call any ctors/dtors or only calls pure or const
4031	ctors/dtors.
4032
40332003-06-11  Mark Mitchell  <mark@codesourcery.com>
4034
4035	* mangle.c (tm_p.h): Include it.
4036	* Make-lang.in (cp/mangle.o): Depend on $(TM_P_H).
4037
4038	PR c++/11131
4039	* tree.c (cp_cannot_inline_fn): Check for "inline" before
4040	instantiation.
4041
40422003-06-10  Jason Merrill  <jason@redhat.com>
4043
4044	PR c++/10968
4045	* pt.c (mark_decl_instantiated): Clear DECL_COMDAT.
4046
40472003-06-10  Andrew Pinski  <pinskia@physics.uc.edu>
4048
4049	* decl.c (start_cleanup_fn): Move static 'counter' out, mark with GTY.
4050	(start_cleanup_cnt): New.
4051
40522003-06-10  Mark Mitchell  <mark@codesourcery.com>
4053
4054	PR c++/11131
4055	* cp-tree.h (template_for_substitution): Declare.
4056	* decl2.c (mark_used): Use it when figuring out whether or not a
4057	function is inline.
4058	* pt.c (template_for_substitution): Give it external linkage.
4059	* tree.c (cp_cannot_inline_tree_fn): Instantiate as early as
4060	possible.
4061
40622003-06-09  Zack Weinberg  <zack@codesourcery.com>
4063
4064	PR 8861
4065	* mangle.c (write_real_cst): New function.  Implement
4066	ABI-compliant mangling of floating-point literals when
4067	-fabi-version>=2; provide backward compatibility with 3.3 when
4068	-fabi-version=1 (with warning).  Clarify commentary.
4069	(write_template_arg_literal): Use write_real_cst.
4070
40712003-06-07  Andreas Jaeger  <aj@suse.de>
4072
4073	* cp/decl.c (xref_tag): Remove undefined macro NONNESTED_CLASSES.
4074
40752003-06-07  Neil Booth  <neil@daikokuya.co.uk>
4076
4077	* cp-lang.c (LANG_HOOKS_DECODE_OPTON): Drop.
4078	(LANG_HOOKS_HANDLE_OPTION): Override.
4079	* cp-tree.h (cxx_init_options): Update.
4080	* lex.c (cxx_init_options): Update.
4081
40822003-06-05  Jan Hubicka  <jh@suse.cz>
4083
4084	* Make-lang.in:  Add support for stageprofile and stagefeedback
4085
40862003-06-04  J"orn Rennecke <joern.rennecke@superh.com>
4087
4088	* decl.c (grokdeclarator): Error_mark_node in, error_mark_node out.
4089
40902003-06-04  Andreas Jaeger  <aj@suse.de>
4091
4092	* g++spec.c (lang_specific_driver): Remove ALT_LIBM usage.
4093
40942003-06-03  Jason Merrill  <jason@redhat.com>
4095
4096	* cp/cp-tree.h (CP_AGGREGATE_TYPE_P): Accept vectors.
4097
4098	* cp/decl.c (reshape_init): Handle vectors.
4099
4100	* testsuite/g++.dg/init/array10.C: New.
4101
41022003-06-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4103
4104	PR c++/10940
4105	* pt.c (check_explicit_specialization): Check for 'static'
4106	earlier.
4107
41082003-05-31  Diego Novillo  <dnovillo@redhat.com>
4109
4110	* class.c (dump_array): Call CONSTRUCTOR_ELTS to access
4111	the operand of a CONSTRUCTOR node.
4112
41132003-05-31  Gabriel Dos Reis <gdr@integrable-solutions.net>
4114
4115	* decl.c (cp_binding_level::this_entity): Rename from this_class.
4116	(cxx_scope_descriptor): New function.
4117	(cxx_scope_debug): Likewise.
4118	(push_binding_level): Use it.
4119	(pop_binding_level): Likewise.
4120	(suspend_binding_level): Likewise.
4121	(resume_binding_level): Likewise.
4122	(pushlevel_class): Adjust use of this_class.
4123	(pushtag): Likewise.
4124	(lookup_name_real): Likewise.
4125	(global_scope_name): New variable.
4126	(initialize_predefined_identifiers): Initialize it.
4127	(push_namespace): Use it.
4128	(make_cxx_scope): New function.
4129	(pushlevel): Use it.
4130	(pushlevel_class): Likewise.
4131	(push_binding_level): Simplify.  Loose the last two arguments.
4132	(make_binding_level): Remove.
4133	(initial_push__namespace_scope): New function.
4134	(push_namespace): Use it.  Simplify.
4135	(cxx_init_decl_processing): Likewise.
4136	(declare_namespace_level): Remove.
4137
41382003-05-31  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4139
4140	PR c++/10956
4141	* pt.c (instantiate_decl): Don't use full template arguments if
4142	we are dealing with specializations.
4143
41442003-05-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4145
4146	* decl.c (ENABLE_SCOPE_CHECKING): Rename from DEBUG_BINDING_LEVELS.
4147	(binding_depth): Unconditionally define.
4148	(is_class_level): Likewise.
4149	(indent): Likewise.  Take an indenting parameter.
4150	(push_binding_level): Remove conditional definittion.
4151	(pop_binding_level): Likewise.
4152	(suspend_binding_level): Likewise.
4153	(resume_binding_level): Likewise.
4154	(pushlevel): Likewise.
4155	(pushlevel_class): Likewise.
4156	(poplevel_class): Likewise.
4157	(pop_everything): Likewise.
4158
41592003-05-27  Gabriel Dos Reis <gdr@integrable-solutions.net>
4160
4161	* name-lookup.h (global_scope_p): New macro.
4162	* decl.c (pop_binding_level): Use it.  Don't refer directly to
4163	global_binding_level.
4164	(suspend_binding_level): Likewise.
4165	(global_bindings_p): Likewise.
4166	(print_other_binding_stack): Likewise.
4167	(print_binding_stack): Likewise.
4168	(maybe_push_to_top_level): Likewise.
4169	(pushdecl_namespace_level): Likewise.
4170	(cxx_init_decl_processing): Likewise.
4171	(start_decl): Likewise.
4172	(cp_finish_decl): Likewise.
4173	(start_function): Likewise.
4174	(global_binding_level): Remove.
4175
41762003-05-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4177
4178	* parser.c (cp_parser_explicit_instantiation): Restore old
4179	access before template instantiation.
4180
41812003-05-23  Geoffrey Keating  <geoffk@apple.com>
4182
4183	* lang-specs.h: Use -o to specify preprocessor's output file.
4184	Make -no-integrated-cpp work when building PCH files.
4185
41862003-05-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4187
4188	PR c++/10682
4189	* pt.c (instantiate_class_template): Use DECL_ARTIFICIAL to
4190	check for implicitly created typedef to an enum.
4191
41922003-05-21  Jason Merrill  <jason@redhat.com>
4193
4194	* init.c (build_vec_delete): Copy the address into a temporary
4195	variable before calling build_vec_delete_1.
4196	* decl2.c (delete_sanity): Don't call stabilize_reference.
4197
41982003-05-21  Nathan Sidwell  <nathan@codesourcery.com>
4199
4200	* pt.c (register_specialization): Update the decl's location,
4201	if necessary.
4202	(check_explicit_specialization): Likewise.
4203
42042003-05-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4205
4206	* error.c (dump_expr): Use HOST_WIDE_INT_PRINT_DOUBLE_HEX.
4207
42082003-05-21  Danny Smith  <dannysmith@users.sourceforge.net>
4209
4210	PR c++/9738
4211	* decl.c (duplicate_decls): Re-invoke make_decl_rtl
4212	if the old decl had instantiated DECL_RTL.
4213	(Base on Richard Henderson 2003-05-13 patch to c-decl.c).
4214
42152003-05-19  Matt Austern  <austern@apple.com>
4216
4217	* lang-options.h: Document -Wno-invalid-offsetof
4218	* typeck.c (build_class_member_access_expr): Don't complain about
4219	(Foo *)p->x for non-POD Foo if warn_invalid_offset is zero.
4220
42212003-05-18 Andrew Pinski <pinskia@physics.uc.edu>
4222
4223	* name-lookup.c (free_binding_entry): fix where the GTY markers are.
4224	(binding_entry_make): Make entry->chain NULL after getting an entry.
4225	fix the spelling of chain in a comment.
4226	(binding_table_free): speed up by having temporary variable.
4227	(binding_table_new): set table->chain to be NULL after allocating
4228	a table.
4229	(cxx_binding_make): use gcc_alloc instead of ggc_alloc_cleared and set
4230	binding->previous to NULL after getting an binding for speed.
4231
42322003-05-18  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4233
4234	* cp-tree.h (struct lang_type_class): Replace data member tags
4235	with hash-table nested_udts.
4236	(CLASSTYPE_NESTED_UTDS): Rename from CLASSTYPE_TAGS.
4237	* class.c (unreverse_member_declarations): Don't touch
4238	CLASSTYPE_TAGS.
4239	(pushclass): Use cxx_remember_type_decls.
4240	* decl.c (struct cp_binding_level): Replace data member tags with
4241	hash-table type_decls.
4242	(pop_binding_level): Handle level->type_decls.
4243	(kept_level_p): Adjust.
4244	(poplevel): Remove unused local variable.
4245	(bt_print_entry): New function.
4246	(print_binding_level): Use it.
4247	(push_namespace): Build current_binding_level->type_decls.
4248	(maybe_process_template_type_declaration): Adjust.
4249	(pushtag): Likewise.
4250	(clear_anon_tags): Use binding_table_remove_anonymous_types.
4251	(gettags): Remove.
4252	(cxx_remember_type_decls):  Rename from storetags.  Adjust.
4253	(lookup_tag): Use binding_table_find_anon_type.  Tidy.
4254	(lookup_tag_reverse): Use binding_table_reverse_maybe_remap.
4255	(cxx_init_decl_processing): Build global_binding_level->type_decls.
4256	(store_parm_decls): Remove pointless code.
4257	* name-lookup.c (free_binding_entry): New variable.
4258	(ENTRY_INDEX): New macro.
4259	(struct binding_table_s): New datatype.
4260	(binding_entry_make): New function.
4261	(binding_entry_free): Likewise.
4262	(binding_table_construct): Likewise.
4263	(binding_table_free): Likewise.
4264	(binding_table_new): Likewise.
4265	(binding_table_expand): Likewise.
4266	(binding_table_insert): Likewise.
4267	(binding_table_find): Likewise.
4268	(binding_table_find_anon_type): Likewise.
4269	(binding_table_reverse_maybe_remap): Likewise.
4270	(binding_table_remove_anonymous_types): Likewise.
4271	(binding_table_foreach): Likewise.
4272	* name-lookup.h (binding_table): New type.
4273	(binding_entry): Likewise.
4274	(bt_foreach_proc): Likewise.
4275	(struct binding_entry_s): New datatype.
4276	(SCOPE_DEFAULT_HT_SIZE): New macro.
4277	(CLASS_SCOPE_HT_SIZE): Likewise.
4278	(NAMESPACE_ORDINARY_HT_SIZE): Likewise.
4279	(NAMESPACE_STD_HT_SIZE): Likewise.
4280	(GLOBAL_SCOPE_HT_SIZE): Likewise.
4281	(binding_table_new): Declare.
4282	(binding_table_free): Likewise.
4283	(binding_table_insert): Likewise.
4284	(binding_table_find_anon_type): Likewise.
4285	(binding_table_reverse_maybe_remap): Likewise.
4286	(binding_table_remove_anonymous_types): Likewise.
4287	(binding_table_foreach): Likewise.
4288	(binding_table_find): Likewise.
4289	(cxx_remember_type_decls): Likewise.
4290	* pt.c (bt_instantiate_type_proc): New function.
4291	(do_type_instantiation): Use it.
4292	* search.c (lookup_field_r): Use binding_table_find.
4293
42942003-05-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4295
4296	* semantics.c (perform_deferred_access_checks): Don't discard
4297	checked access.
4298
42992003-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4300
4301	* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
4302	libiberty VA_ macros, always use stdarg.
4303	* rtti.c (create_pseudo_type_info): Likewise.
4304	* tree.c (build_min_nt, build_min): Likewise.
4305
43062003-05-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4307
4308	* ptree.c (cxx_print_type, cxx_print_xnode): Use string
4309	concatentation on HOST_WIDE_INT_PRINT_* format specifier to
4310	collapse multiple function calls into one.
4311	* tree.c (debug_binfo): Likewise.
4312
43132003-05-15  Jason Merrill  <jason@redhat.com>
4314
4315	PR c++/5388
4316	* call.c (conditional_conversion): Don't consider implicit
4317	conversions if T2 is a base of T1.
4318	* cp-tree.h (DERIVED_FROM_P, UNIQUELY_DERIVED_FROM_P): Make boolean.
4319	(ACCESSIBLY_UNIQUELY_DERIVED_P, PUBLICLY_UNIQUELY_DERIVED_P): Likewise.
4320
4321	* parser.c (cp_parser_primary_expression): Convert a static data
4322	member from reference.
4323
43242003-05-15  Mark Mitchell  <mark@codesourcery.com>
4325
4326	* call.c (build_op_delete_call): Avoid creating unnecessary types.
4327	* class.c (instantiate_type): Remove tests for tf_no_attributes.
4328	* cp-tree.h (tsubst_flags_t): Remove tf_no_attributes.
4329	(COMPARE_NO_ATTRIBUTES): Remove.
4330	* typeck.c (comptypes): Do not check COMPARE_NO_ATTRIBUTES.
4331
4332	PR c++/8385
4333	* semantics.c (finish_typeof): Refine type-dependency check.
4334
43352003-05-13  Jason Merrill  <jason@redhat.com>
4336
4337	* typeck.c (build_modify_expr): Don't always stabilize the lhs and
4338	rhs.  Do stabilize the lhs of a MODIFY_EXPR used on the lhs.
4339
43402003-05-11  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4341
4342	* method.c (synthesize_method): Call push/pop_deferring_access_checks.
4343
43442003-05-11  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4345
4346	PR c++/10230, c++/10481
4347	* semantics.c (finish_non_static_data_member): Handle when the
4348	non-static member is not from a base of the current class type.
4349
43502003-05-11  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4351
4352	PR c++/10552
4353	* pt.c (tsubst_copy): Handle TEMPLATE_DECL that is a member class
4354	template and has dependent context.
4355
43562003-05-10  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4357
4358	* pt.c (instantiate_decl): Call push/pop_deferring_access_checks.
4359
43602003-05-10  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4361
4362	PR c++/9252
4363	* cp-tree.h (saved_scope): Remove check_access field.
4364	(tsubst_flags_t): Remove tf_parsing.
4365	* decl.c (maybe_push_to_top_level): Don't initialize
4366	scope_chain->check_access.
4367	(make_typename_type, make_unbound_class_template): Don't use
4368	tf_parsing.
4369	(register_dtor_fn): Use push/pop_deferring_access_checks
4370	instead of scope_chain->check_access.
4371	* method.c (use_thunk): Likewise.
4372	* parser.c (cp_parser_explicit_instantiation
4373	(cp_parser_constructor_declarator_p): Don't call
4374	push/pop_deferring_access_checks here.
4375	(cp_parser_template_argument, cp_parser_class_name): Don't use
4376	tf_parsing.
4377	(yyparse): Check flag_access_control.
4378	* pt.c (instantiate_class_template): Call
4379	push/pop_deferring_access_checks.
4380	* semantics.c (push_deferring_access_checks): Propagate
4381	dk_no_check.
4382	(perform_or_defer_access_check): Make sure basetype_path is
4383	a type before comparison.
4384	* call.c (build_op_delete_call, build_over_call): Use
4385	perform_or_defer_access_check.
4386	* class.c (alter_access): Likewise.
4387	* init.c (build_offset_ref): Likewise.
4388	* lex.c (do_identifier): Likewise.
4389	* method.c (hack_identifier): Likewise.
4390	* search.c (lookup_member): Likewise.
4391	* semantics.c (finish_non_static_data_member): Likewise.
4392	(simplify_aggr_init_exprs_r): Use push/pop_deferring_access_checks
4393	instead of flag_access_control.
4394
43952003-05-10  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4396
4397	PR c++/9554
4398	* parser.c (cp_parser_class_name): Remove check_access parameter.
4399	All caller adjusted.  Update declaration.
4400	(cp_parser_lookup_name): Likewise.
4401	* semantics.c (push_deferring_access_checks): Change parameter type
4402	to enum deferring_kind.  All caller adjusted.
4403	(resume_deferring_access_checks): Adjust to use new enum.
4404	(stop_deferring_access_checks): Likewise.
4405	(perform_or_defer_access_check): Likewise.
4406	* cp-tree.h (deferring_kind): New enum.
4407	(deferred_access): Adjust field type.
4408	(push_deferring_access_checks): Update declaration.
4409
44102003-05-09  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4411
4412	PR c++/10555, c++/10576
4413	* pt.c (lookup_template_class): Handle class template with
4414	multiple levels of parameters when one of the levels contain
4415	errors.
4416
44172003-05-08  Jason Merrill  <jason@redhat.com>
4418
4419	* init.c (build_new_1): Don't reuse a TARGET_EXPR in an
4420	expression.  Undo some of the recent reorg.
4421
44222003-05-07  Richard Henderson  <rth@redhat.com>
4423
4424	PR c++/10570
4425	* cfns.gperf: Comment out POSIX thread cancellation points,
4426	plus abort and raise.
4427	* cfns.h: Regenerate.
4428
44292003-05-07  Jason Merrill  <jason@redhat.com>
4430
4431	* call.c (build_conditional_expr): Don't assume that the folded
4432	expression has result_type.
4433
44342003-05-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4435
4436	* typeck.c (build_unary_op): Deal with const qualifier in
4437	invalid pointer-to-member earlier.
4438
44392003-05-05  Jason Merrill  <jason@redhat.com>
4440
4441	PR c++/9537
4442	* call.c (conditional_conversion): Build an RVALUE_CONV if
4443	we're just changing the cv-quals.
4444	(build_conditional_expr): Don't call convert to change
4445	cv-quals.
4446
44472003-05-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4448
4449	PR c++/10496
4450	* typeck.c (build_unary_op): Don't output const qualifier when
4451	output invalid pointer-to-member diagnostics.
4452
44532003-05-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4454
4455	* decl.c: Fix typos.
4456
44572003-05-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4458
4459	PR c++/4494
4460	* decl.c (start_function): Use same_type_p to check return type
4461	of main.
4462
44632003-05-03  Zack Weinberg  <zack@codesourcery.com>
4464
4465	PR c/10604
4466	* cp/typeck.c (build_x_compound_expr): No need to check
4467	extra_warnings as well as warn_unused_value.
4468
44692003-05-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4470
4471	PR c++/9364, c++/10553, c++/10586
4472	* decl.c (make_typename_type): Don't crash on illegal code.
4473
44742003-05-03  Nathan Sidwell  <nathan@codesourcery.com>
4475
4476	* class.c (finish_struct): Use location_t and input_location
4477	directly.
4478	* decl.c (make_label_decl): Likewise.
4479	(use_label): Likewise.
4480	* decl2.c (warn_if_unknown_interface): Likewise.
4481	(start_static_initialization_or_destruction): Likewise.
4482	(generate_ctor_or_dtor_function): Likewise.
4483	(finish_file): Likewise.
4484	* error.c (print_instantiation_full_context): Likewise.
4485	* init.c (create_temporary_var): Likewise.
4486	* method.c (synthesize_method): Likewise.
4487	* parser.c (cp_token): Likewise.
4488	(cp_lexer_set_source_position_from_token): Likewise.
4489	(cp_lexer_get_preprocessor_token): Likewise.
4490	(cp_parser_statement): Likewise.
4491	* pt.c (tsubst_friend_function): Likewise.
4492	(instantiate_class_template): Likewise.
4493	(tsubst_decl): Likewise.
4494	(tsubst): Likewise.
4495	(instantiate_decl): Likewise.
4496	* semantics.c (begin_class_definition): Likewise.
4497	(expand_body): Likewise.
4498
44992003-05-01  Nathan Sidwell  <nathan@codesourcery.com>
4500
4501	* class.c (finish_struct): Rename lineno to input_line.
4502	* decl.c (push_binding_level, pop_binding_level,
4503	suspend_binding_level, resume_binding_level, make_label_decl,
4504	use_label, start_function): Likewise.
4505	* decl2.c (warn_if_unknown_interface,
4506	start_static_initialization_or_destruction,
4507	generate_ctor_or_dtor_function, finish_file): Likewise.
4508	* error.c (cp_line_of, print_instantiation_full_context,
4509	print_instantiation_context): Likewise.
4510	* except.c (check_handlers_1, check_handlers): Likewise.
4511	* init.c (create_temporary_var): Likewise.
4512	* method.c (use_thunk, synthesize_method): Likewise.
4513	* parser.c (cp_lexer_set_source_position_from_token,
4514	cp_lexer_get_preprocessor_token): Likewise.
4515	* pt.c (push_tinst_level, pop_tinst_level,
4516	tsubst_friend_function, instantiate_class_template, tsubst_decl,
4517	tsubst, tsubst_expr, instantiate_decl): Likewise.
4518	* semantics.c (genrtl_try_block, finish_label_stmt,
4519	begin_class_definition, expand_body,
4520	genrtl_finish_function): Likewise.
4521	* tree.c (build_min_nt, build_min): Likewise.
4522
45232003-05-01  Mark Mitchell  <mark@codesourcery.com>
4524
4525	* decl2.c (comdat_linkage): Don't externalize explicit
4526	instantiations.
4527
45282003-05-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4529
4530	PR c++/10554
4531	* decl2.c (do_class_using_decl): Check if operand 0 of SCOPE_REF
4532	is not NULL.
4533
45342003-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4535
4536	* cp-tree.h (struct lang_id2): Remove.  Move fields from here...
4537	(struct lang_identifier): ... to here.
4538	(LANG_ID_FIELD): Remove.
4539	(SET_LANG_ID): Remove.
4540	(IDENTIFIER_LABEL_VALUE): Adjust for new lang_identifier.
4541	(SET_IDENTIFIER_LABEL_VALUE): Likewise.
4542	(IDENTIFIER_IMPLICIT_DECL): Likewise.
4543	(SET_IDENTIFIERL_IMPLICIT_DECL): Likewise.
4544	(IDENTIFIER_ERROR_LOCUS): Likewise.
4545	(SET_IDENTIFIER_ERROR_LOCUS): Likewise.
4546
45472003-05-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4548
4549	PR c++/8772
4550	* pt.c (convert_template_argument): Correct diagnostic.
4551
45522003-04-30  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4553
4554	PR c++/9432, c++/9528
4555	* decl2.c (validate_nonmember_using_decl): Handle SCOPE_REF.
4556
45572003-04-30  Garbiel Dos Reis  <gcc@integrable-solutions.net>
4558
4559	* decl.c (check_previous_goto_1): Adjust prototype.
4560	(check_previous_goto): Adjust use.
4561	(check_switch_goto): Likewise.
4562	(use_label): Adjust.
4563	(check_previous_goto_1): Don't use pedwarn_with_file_and_line.
4564	(struct named_label_use_list): Use location_t datatype.
4565
45662003-04-29  Mark Mitchell  <mark@codesourcery.com>
4567
4568	PR c++/10551
4569	* pt.c (mark_decl_instantiated): Defer all explicit instantiations
4570	that have not yet been written out.
4571
45722003-04-29  Mark Mitchell  <mark@codesourcery.com>
4573
4574	PR c++/10549
4575	* class.c (layout_class_type): Mark overlong bitfields as having
4576	the maximum size permitted by their type, after layout.
4577
4578	PR c++/10527
4579	* error.c (dump_expr): Correctly handling of NEW_EXPR.4
4580
45812003-04-29  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4582
4583	* call.c (build_operator_new_call): Fix typo.
4584	* lang-options.h: Likewise.
4585
45862003-04-29  Mark Mitchell  <mark@codesourcery.com>
4587
4588	PR c++/10515
4589	* cp-tree.h (lookup_field_1): Declare it.
4590	* search.c (lookup_field_1): Make it public.
4591	* decl.c (reshape_init): Handle designated initializers.
4592
4593	* decl.c (maybe_commonize_var): Further tweak support for systems
4594	without weak symbols.
4595
45962003-04-27  Mark Mitchell  <mark@codesourcery.com>
4597
4598	* decl.c (maybe_commonize_var): Fix thinko in last patch.
4599
46002003-04-27  Mark Mitchell  <mark@codesourcery.com>
4601
4602	PR c++/10506
4603	* method.c (use_thunk): Decrement immediate_size_expand.
4604
4605	PR c++/10503
4606	* cp-tree.h (DECL_VAR_MARKED_P): New macro.
4607	(DECL_MAYBE_TEMPLATE): Remove.
4608	* class.c (fixed_type_or_null): Avoid infinite recursion.
4609
4610	* decl.c (maybe_commonize_var): Make the code match the comments.
4611	* pt.c (instantiate_decl): Move call to import_export_decl.
4612
46132003-04-26  Mark Mitchell  <mark@codesourcery.com>
4614
4615	* decl2.c (finish_file): Fix merge botch.
4616
46172003-04-25  Mark Mitchell  <mark@codesourcery.com>
4618
4619	* decl2.c (finish_file): Don't call import_export_decl for
4620	functions that are not defined.
4621	(handle_class_head): Robustify.
4622	* pt.c (instantiate_decl): Do not call cp_finish_decl for
4623	variables that are not defined.
4624
46252003-04-24  Sylvain Pion  <Sylvain.Pion@mpi-sb.mpg.de>
4626
4627	* call.c (print_z_candidates): Fix off by one error.
4628
46292003-04-24  Nathan Sidwell  <nathan@codesourcery.com>
4630
4631	PR c++/10337
4632	* call.c (joust): Don't warn about conversion ops that are exact
4633	or cv-conversions. Rearrange to avoid multiple type comparisons.
4634
46352003-04-23  Mark Mitchell  <mark@codesourcery.com>
4636
4637	PR c++/10471
4638	* call.c (build_cxx_call): Robustify.
4639
46402003-04-23  Neil Booth  <neil@daikokuya.co.uk>
4641
4642	* Make-lang.in (lex.o): Remove mbchar.h.
4643	* lex.c (MULTIBYTE_CHARS): Lose.
4644	* parser.c (cp_lexer_get_preprocessor_token): CPP_OTHER handled
4645	in c-lex.c.
4646
46472003-04-23  Mark Mitchell  <mark@codesourcery.com>
4648
4649	PR c++/9847
4650	* cp-tree.h (duplicate_tag_error): Remove.
4651	* class.c (duplicate_tag_error): Remove.
4652	* semantics.c (begin_class_definition): Return immediately for a
4653	duplicate class definition.
4654
4655	PR c++/10451
4656	* decl.c (grokdeclarator): Correct logic for "mutable" errors.
4657
46582003-04-22  Mark Mitchell  <mark@codesourcery.com>
4659
4660	PR c++/10446
4661	* search.c (lookup_fnfields_1): Handle empty slots in the method
4662	vector.
4663
4664	PR c++/10428
4665	* decl.c (check_elaborated_type_specifier): New function, split
4666	out from ...
4667	(xref_tag): ... here.  Use the new function in more places.
4668
4669	* rtti.c (throw_bad_typeid): Use build_cxx_call.
4670
46712003-04-21  Mark Mitchell  <mark@codesourcery.com>
4672
4673	* call.c (build_over_call): Use build_cxx_call.
4674	(build_cxx_call): New method, split out of build_over_call.
4675	* cp-tree.h (language_function): Add can_throw.
4676	(build_cxx_call): Declare it.
4677	* decl.c (finish_function): If a function does not contain any
4678	calls to functions that can throw an exception, indicate that
4679	fact.
4680	* decl2.c (mark_used): Do not defer the instantiation of
4681	functions, if the current function does not throw.
4682	* optimize.c (maybe_clone_body): Copy TREE_NOTHROW to the clones.
4683	* pt.c (instantiate_decl): Make sure import_export_decl is called
4684	before emitting things.
4685	* rtti.c (throw_bad_cast): Use build_cxx_call.
4686	(build_dynamic_cast_1): Likewise.
4687	* typeck.c (build_function_call): Likewise.
4688
46892003-04-21  Nathan Sidwell  <nathan@codesourcery.com>
4690
4691	PR c++/9881
4692	* typeck.c (build_unary_op): Fold all COMPONENT_REF addr
4693	expressions. Reverts my 2002-08-08 patch.
4694
4695	* typeck.c (comp_ptr_ttypes_real): Swap final && operands for
4696	cheaper early exit.
4697
46982003-04-20  Nathan Sidwell  <nathan@codesourcery.com>
4699
4700	* cp/decl2.c (start_static_storage_duration_function): Take count
4701	arg, don't check if it wraps round.
4702	(generate_ctor_or_dtor_function): Add locus arg, use it.
4703	(generate_ctor_and_dtor_functions_for_priority): Data arg is a
4704	locus.
4705	(finish_file): Set line numbers to past EOF for synthesized
4706	functions.
4707
47082003-04-20  Nathan Sidwell  <nathan@codesourcery.com>
4709
4710	PR c++/10405
4711	* search.c (lookup_field_1): Final scan goes backwards for
4712	types, forwards for non-types.
4713
47142003-04-17  Roger Sayle  <roger@eyesopen.com>
4715
4716	PR c/10375
4717	* decl.c (duplicate_decls): Preserve "const", "noreturn" and
4718	"nothrow" function attributes.
4719
47202003-04-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4721
4722	PR c++/10347
4723	* pt.c (type_dependent_expression_p): Handle array new.
4724
47252003-04-15  Mark Mitchell  <mark@codesourcery.com>
4726
4727	PR c++/10381
4728	* parser.c (cp_parser_primary_expression): Reorganize logic for
4729	dealing with name lookup failures.
4730
47312003-04-15  Jason Merrill  <jason@redhat.com>
4732
4733	* decl2.c (mark_used): Don't instantiate anything if
4734	skip_evaluation.
4735
47362003-04-14  Ziemowit Laski  <zlaski@apple.com>
4737
4738	* tree.c (build_cplus_array_type_1): Do not call
4739	uses_template_parms() on a NULL index_type.
4740
47412003-04-13  Roger Sayle  <roger@eyesopen.com>
4742
4743	* decl.c (duplicate_decls): Preserve pure and malloc attributes.
4744
47452003-04-12  Mark Mitchell  <mark@codesourcery.com>
4746
4747	PR c++/10300
4748	* init.c (build_new_1): Reorganize.
4749
47502003-04-12  Zack Weinberg  <zack@codesourcery.com>
4751
4752	* class.c (initialize_array)
4753	* decl.c (reshape_init)
4754	* decl2.c (build_expr_from_tree)
4755	* init.c (build_zero_init)
4756	* pt.c (tsubst_copy, tsubst_copy_and_build)
4757	* rtti.c (tinfo_base_init, generic_initializer, ptr_initializer)
4758	(ptm_initializer, class_initializer, get_pseudo_ti_init)
4759	* semantics.c (finish_compound_literal)
4760	* typeck.c (build_ptrmemfunc1)
4761	* typeck2.c (store_init_value, process_init_constructor)
4762	(build_functional_cast): Use build_constructor.
4763
47642003-04-12  Zack Weinberg  <zack@codesourcery.com>
4765
4766	* call.c (print_z_candidates): Use gcc_gettext_width, not
4767	strlen, to determine how much padding to use.
4768
47692003-04-10  Zack Weinberg  <zack@codesourcery.com>
4770
4771	* decl.c: Update all calls to shadow_warning.
4772
47732003-04-10  Mark Mitchell  <mark@codesourcery.com>
4774
4775	* class.c (layout_class_type): Correct handling for overlong
4776	bit-fields whose width is the same as an integer type.
4777
47782003-04-06  Zack Weinberg   <zack@codesourcery.com>
4779
4780	* cp-tree.def: Make fourth element for all 'c' and 'x' nodes zero.
4781	* cp-lang.c (cp_tree_size): New function.
4782	(LANG_HOOKS_TREE_SIZE): Override.
4783
4784	* cp-tree.h (SOURCE_LOCUS, SRCLOC_FILE, SRCLOC_LINE, struct
4785	tree_srcloc, TS_CP_COMMON, TS_CP_SRCLOC): Kill.
4786	(union lang_tree_node): Remove common and srcloc members.
4787	(build_srcloc_here): Don't prototype.
4788	* decl.c (cp_tree_node_structure): Kill SRCLOC case.
4789	* pt.c (pending_templates): Correct comment.
4790	* tree.c (build_srcloc, build_srcloc_here): Kill.
4791
47922003-04-06  Zack Weinberg   <zack@codesourcery.com>
4793
4794	* call.c: Include intl.h.
4795	(print_z_candidate): Always use inform; get rid of errfn
4796	argument. Reorganize so that all the strings get picked up
4797	by xgettext.  Note obligation of caller to pass first argument
4798	through gettext.
4799	(print_z_candidates): Update to match.  Indent second and
4800	successive candidates by strlen() of translated message.
4801	(joust): Restructure ambiguous-conversion pedwarn so that
4802	translators see a complete sentence.  Update calls to
4803	print_z_candidate.
4804
4805	* Make-lang.in (cp/call.o): Update dependencies.
4806
48072003-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4808
4809	* decl.c (set_current_binding_level): Delete, revert last change.
4810	(current_binding_level): Modify to allow it as as lvalue.
4811
48122003-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4813
4814	* name-lookup.c (find_binding): Pass appropriate pointer type to
4815	POP_TIMEVAR_AND_RETURN.
4816
48172003-04-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4818
4819	* Make-lang.in (cp-warn): Add $(STRICT_WARN).
4820	* cp-tree.h: Don't insist on having GNUC.
4821
48222003-04-03  Jason Merrill  <jason@redhat.com>
4823
4824	* cvt.c (ocp_convert): Only abort if we try to convert an object
4825	of TREE_ADDRESSABLE type.
4826
4827	* class.c (build_vtable): Set DECL_ALIGN here.
4828	(get_vtable_decl): Not here.
4829	(layout_vtable_decl): Or here.
4830	(create_vtable_ptr): Or here.
4831	(layout_class_type): Or here.
4832	(check_bitfield_decl): Don't mess with field alignment.
4833
48342003-04-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4835
4836	* operators.def (DEF_SIMPLE_OPERATOR, DEF_ASSN_OPERATOR,
4837	DEF_ASSN_OPERATOR): Delete spurious semi-colon.
4838	* rtti.c (dfs_class_hint_mark): Likewise.
4839
4840	* decl.c (push_local_name, push_class_level_binding,
4841	maybe_inject_for_scope_var): Don't use POP_TIMEVAR_AND_RETURN in
4842	functions returning void.
4843	* decl2.c (add_using_namespace): Likewise.
4844
4845	* decl.c (print_binding_level, print_other_binding_stack,
4846	print_binding_stack): Cast argument of %p specifier to void*.
4847	* ptree.c (cxx_print_decl): Likewise.
4848
4849	* cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
4850	VAR_FUNCTION_OR_PARM_DECL_CHECK,
4851	VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
4852	BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK, LANG_TYPE_CLASS_CHECK,
4853	LANG_TYPE_PTRMEM_CHECK, LANG_DECL_U2_CHECK): Add __extension__.
4854
4855	* decl.c (set_current_binding_level): New macro.  Use throughout
4856	when setting the current binding level.
4857
4858	* cp-tree.h (cp_lvalue_kind, base_access): Delete trailing comma
4859	in enum.
4860	* method.c (mangling_flags): Likewise.
4861
4862	* cp-tree.h (lang_type_header): Add __extension__ and use
4863	CHAR_BITFIELD for members.
4864
48652003-04-02  Geoffrey Keating  <geoffk@apple.com>
4866
4867	PR other/9274
4868	* mangle.c: Include gt-cp-mangle.h.
4869	(subst_identifiers): Mark with GTY.
4870	* config-lang.in (gtfiles): Add cp/mangle.c.
4871	* Make-lang.in: (gt-cp-mangle.h): New rule.
4872	(cp/mangle.o): Depends on gt-cp-mangle.h.
4873
48742003-04-01  Andrew Pinski  <pinskia@physics.uc.edu>
4875
4876	* config-lang.in (gtfiles): Add \$(srcdir)/cp/name-lookup.c
4877	after \$(srcdir)/cp/name-lookup.h.
4878	* name-lookup.c: (cxx_binding_make): Use ggc_alloc_clearedinstead
4879	of ggc_alloc.  Include gt-cp-name-lookup.h at the end of the file.
4880	* Make-lang.in: (gt-cp-name-lookup.h): Is generated by gengtype.
4881	(cp/name-lookup.o): Depends on gt-cp-name-lookup.h.
4882
48832003-03-31  Jason Merrill  <jason@redhat.com>
4884
4885	PR java/10145
4886	* class.c (check_field_decl): Don't set DECL_ALIGN.
4887
48882003-03-30  Mark Mitchell  <mark@codesourcery.com>
4889
4890	PR c++/7647
4891	* decl.c (grokdeclarator): Tidy, slightly.
4892	* search.c (lookup_field_1): Add want_type parameter.
4893	(lookup_field_r): Adjust call to lookup_field_1.
4894
48952003-03-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4896
4897	* Make-lang.in (cp/name-lookup.o): Add more dependencies.
4898
48992003-03-30  Gabriel Dos Reis <gdr@integrable-solutions.net>
4900
4901	* cp-tree.h (binding_for_name: Move to name-lookup.h  Adjust
4902	prototype.
4903	(cxx_scope_find_binding_for_name): Likewise.
4904	* decl.c (find_binding: Move to name-lookup.c.
4905	(binding_for_name): Likewise.
4906	(cxx_scope_find_binding_for_name): Likewise.
4907	(BINDING_LEVEL):  Remove.
4908	(push_binding): Tidy.
4909	(push_class_binding): Likewise.
4910	(pop_binding): Likewise.
4911	(poplevel): Likewise.
4912	(poplevel_class): Likewise.
4913	(set_identifier_type_value_with_scope): Likewise.
4914	(push_overloaded_decl): Likewise.
4915	(lookup_tag): Likewise.
4916	(unqualified_namespace_lookup): Likewise.
4917	(lookup_name_current_level): Likewise.
4918	(maybe_inject_for_scope_var): Likewise.
4919	(namespace_binding): Move to name-lookup.c.
4920	(set_namespace_binding): Likewise.
4921	* decl2.c (lookup_using_namespace): Tidy.
4922	(qualified_lookup_using_namespace): Likewise.
4923	(do_toplevel_using_decl): Likewise.
4924	* name-lookup.c: Include "timevar.h"
4925	* name-lookup.h (cxx_scope):  Declare.
4926	(struct cxx_binding): Lose member "has_level".  Adjust "scope"
4927	member declaration.
4928	(BINDING_SCOPE): Adjust definition.
4929	(BINDING_HAS_LEVEL_P): Remove.
4930
49312003-03-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4932
4933	* name-lookup.c: New file.
4934	* name-lookup.h: Likewise..
4935	* decl.c (push_binding): Adjust use cxx_binding_make.
4936	(free_bindings): Move to name-lookup.c
4937	(pop_binding): Use cxx_binding_free.
4938	(binding_for_name): Tidy.
4939	* cp-tree.h: Include "name-lookup.h"
4940	(cxx_binding_make): Move to name-lookup.h
4941	(cxx_binding_clear): Likewise.
4942	(struct cxx_binding): Likewise.
4943	(LOCAL_BINDING_P): Likewise.
4944	(INHERITED_VALUE_BINDING_P): Likewise.
4945	(BINDING_SCOPE): Likewise.
4946	(BINDING_HAS_LEVEL_P): Likewise.
4947	(BINDING_VALUE): Likewise.
4948	(BINDING_TYPE): Likewise.
4949	* config-lang.in (gtfiles): Add cp/name-lookup.h
4950	* Make-lang.in (cp/name-lookup.o): New rule.
4951	(CXX_OBJS): Add cp/name-lookup.o
4952	(CXX_TREE_H): Add cp/name-lookup.h
4953
49542003-03-28  Jason Merrill  <jason@redhat.com>
4955
4956	PR c++/10245
4957	* cvt.c (force_rvalue): New fn.
4958	* call.c (build_conditional_expr): Use it.
4959	* cp-tree.h: Declare it.
4960
49612003-03-28  Mike Stump  <mrs@apple.com>
4962
4963	* error.c (dump_expr): Add 0x to printed hex numbers to make
4964	output match source code better.
4965
49662003-03-28  Mark Mitchell  <mark@codesourcery.com>
4967
4968	PR c++/10218
4969	* decl.c (grokfndecl): Return NULL_TREE for bogus out-of-class
4970	definitions.
4971
4972	* decl2.c (generate_ctor_or_dtor_function): Tolerate a
4973	non-existant ssdf_decls array.
4974	(finish_file): Call generator_ctor_or_dtor_function when there are
4975	static constructors or destructors and no other static
4976	initializations.
4977
49782003-03-28  Nathan Sidwell  <nathan@codesourcery.com>
4979
4980	PR c++/10047
4981	* decl2.c (finish_file): Don't warn about explicitly instantiated
4982	inline decls.
4983
49842003-03-27  Nathan Sidwell  <nathan@codesourcery.com>
4985
4986	PR c++/10224
4987	* pt.c (lookup_template_class): Only check instantiated args if
4988	they do not contain template parameters.
4989
49902003-03-27  Nathan Sidwell  <nathan@codesourcery.com>
4991
4992	PR c++/10158
4993	* parser.c (cp_parser_function_definition): Set
4994	DECL_INITIALIZED_IN_CLASS for members.
4995	* pt.c (instantiate_decl): Only reduce the template args for
4996	friends that are not defined in class.
4997
49982003-03-25  Jason Merrill  <jason@redhat.com>
4999
5000	* call.c (print_z_candidate): Change name of first arg to msgid.
5001	(joust): Add comment for translators.
5002
50032003-03-24  Nathan Sidwell  <nathan@codesourcery.com>
5004
5005	PR c++/9898, PR c++/383, DR 322
5006	* pt.c (maybe_adjust_types_for_deduction) <DEDUCE_CONV>: Look
5007	through reference types on both PARM and ARG.
5008
50092003-03-24  Nathan Sidwell  <nathan@codesourcery.com>
5010
5011	PR c++/10119
5012	* error.c (dump_expr) <BASELINK>: Use dump_expr.
5013	* pt.c (maybe_fold_nontype_args): New function.
5014	(tsubst_copy) <SCOPE_REF>: Subst any template_id args.
5015	<TEMPLATE_ID_EXPR>: Break out folding code, call it.
5016	(tsubst_copy_and_build) <TEMPLATE_ID_EXPR>: Call
5017	maybe_fold_nontype_args.
5018
50192003-03-24  Nathan Sidwell  <nathan@codesourcery.com>
5020
5021	PR c++/10026
5022	* decl2.c (arg_assoc_type) <ERROR_MARK>: Don't die.
5023
50242003-03-23  Mark Mitchell  <mark@codesourcery.com>
5025
5026	PR c++/7086
5027	* typeck.c (cxx_mark_addressable):  Adjust call to
5028	gen_mem_addressof or put_var_into_stack.
5029
50302003-03-22  Nathan Sidwell  <nathan@codesourcery.com>
5031
5032	PR c++/9978, c++/9708
5033	* cp-tree.h (instantiate_template): Add tsubst_flags parameter.
5034	* call.c (add_template_candidate_real): Adjust
5035	instantiate_template call.
5036	* class.c (resolve_address_of_overloaded_function): Likewise.
5037	* decl.c (build_enumerator): Set TREE_CONSTANT.
5038	* pt.c (check_instantiated_args): New.
5039	(push_inline_template_parms_recursive): Set TREE_CONSTANT,
5040	TREE_READONLY.
5041	(build_template_parm_index): Copy TREE_CONSTANT, TREE_READONLY.
5042	(reduce_template_parm_level): Likewise.
5043	(process_template_parm): Likewise.
5044	(check_explicit_specialization): Adjust instantiate_template call.
5045	(convert_template_argument): Don't check non-type argument here.
5046	(lookup_template_class): Check them here.
5047	(tsubst_friend_function): Adjust instantiate_template call.
5048	(instantiate_template): Add tsubst_flags parameter, use it. Check
5049	instantiated args.
5050
50512003-03-21  Zack Weinberg  <zack@codesourcery.com>
5052
5053	* decl.c: Update calls to shadow_warning.
5054
50552003-03-21  Nathan Sidwell  <nathan@codesourcery.com>
5056
5057	PR c++/9898
5058	* error.c (dump_decl) [CONST_DECL]: Print '<enumerator>'.
5059	(dump_expr) [CONSTRUCTOR]: Print default ctor as a function call.
5060
50612003-03-20  Mark Mitchell  <mark@codesourcery.com>
5062
5063	* cp/decl2.c (arg_assoc_class): Correct check for namespace-scope
5064	friends.
5065	* cp/pt.c (instantiate_class_template): Fix formatting.
5066
50672003-03-14  Matt Austern  <austern@apple.com>
5068
5069	* cp-tree.h (unemitted_tinfo_decls): Declaration of a new varray.
5070	(unemitted_tinfo_decl_p): Remove.
5071	(emit_tinfo_decl): Change declaration to remove unused parameter.
5072	* decl2.c (finish_file): Change tinfo emission to loop through
5073	unemitted_tinfo_decls array instead of looping through all decls.
5074	* rtti.c (unemitted_tinfo_decl_p): Declare as static, remove
5075	unused second parameter.
5076	(init_rtti_processing): initialize unemitted_tinfo_decls varray.
5077	(get_tinfo_decls): push new tinfo decl on unemitted_tinfo_decls.
5078	(emit_tinfo_decl): remove unused second parameter, add assertion
5079	that decl hasn't already been emitted.
5080
50812003-03-19  Nathanael Nerode  <neroden@gcc.gnu.org>
5082
5083	* dump.c (cp_dump_tree), cp-tree.h (cp_dump_tree): Change return
5084	type from 'int' to 'bool'. Replace 0 and 1 with true and false in
5085	return statements.
5086
50872003-03-19  Jason Merrill  <jason@redhat.com>
5088
5089	PR c++/8316, c++/9315, c++/10136
5090	* call.c (print_z_candidate): Split out from...
5091	(print_z_candidiates): ...here.
5092	(joust): Use it.
5093
50942003-03-17  Roger Sayle  <roger@eyesopen.com>
5095
5096	PR c++/10031
5097	* decl.c (duplicate_decls): Use the new type when prototyping
5098	anticipated decls, even when the types match.  This defines the
5099	exception list for the built-in function.
5100
51012003-03-17  Jason Merrill  <jason@redhat.com>
5102
5103	PR c++/10091
5104	* typeck.c (build_class_member_access_expr): Compare
5105	TYPE_MAIN_VARIANTs.
5106
51072003-03-17  Mark Mitchell  <mark@codesourcery.com>
5108
5109	PR c++/9639
5110	* parser.c (cp_parser_declarator_id): Clear parser->scope.
5111
51122003-03-16  Jason Merrill  <jason@redhat.com>
5113
5114	PR c++/9993
5115	* decl.c (finish_function): Only allow the NRVO to use variables
5116	declared at function scope.
5117
51182003-03-17  Andreas Jaeger  <aj@suse.de>
5119
5120	* Make-lang.in (cp/TAGS): Remove.
5121
51222003-03-16  Nathan Sidwell  <nathan@codesourcery.com>
5123
5124	PR c++/9629
5125	* cp-tree.h (struct language_function): Add in_base_initializer.
5126	(in_base_initializer): define it.
5127	(expand_member_init): Remove INIT param.
5128	* init.c (expand_member_init): Remove INIT param, return the member.
5129	(emit_mem_initializers): Set in_base_initializer.
5130	* class.c (build_base_path): Check in_base_initializer.
5131	* parser.c (cp_parser_mem_initializer): Set in_base_initializer.
5132	* pt.c (tsubst_initializer_list): Likewise.
5133
51342003-03-16   Gabriel Dos Reis <gdr@integrable-solutions.net>
5135
5136	* decl.c (binding_for_name): Fix initialization thinko.
5137
51382003-03-15  Gabriel Dos Reis <gdr@integrable-solutions.net>
5139
5140	Compile-time improvement: 2/n.
5141	* cp-tree.h (struct cxx_binding): New datatype;
5142	(struct lang_identifier): Use it.
5143	(LOCAL_BINDING_P): Adjust definition.
5144	(INHERITED_VALUE_BINDING_P): Likewise.
5145	(BINDING_SCOPE): Likewise.
5146	(BINDING_HAS_LEVEL_P): Likewise.
5147	(BINDING_VALUE): Likewise.
5148	(BINDING_TYPE): Likewise.
5149	(IDENTIFIER_VALUE): Likewise.
5150	(struct tree_binding): Remove.
5151	(TS_CP_BINDING): Likewise.
5152	((union lang_tree_node): Remove field "binding".
5153	(cxx_binding_clear): New macro.
5154	(binding_for_name): Adjust return type.
5155	(qualified_lookup_using_namespace): Adjust prototype.
5156	(lookup_using_namespace): Adjust prototype.
5157	(cxx_scope_find_binding_for_name): Declare.
5158	* cp-tree.def: Remove CPLUS_BINDING definition.
5159	* decl.c (push_binding): Adjust local variable type.
5160	(add_binding): Likewise.
5161	(push_class_binding): Likewise.
5162	(pop_binding): Likewise.
5163	(poplevel): Likewise.
5164	(poplevel_class): Likewise.
5165	(free_bindings):  Adjust type.
5166	(find_binding): Adjust return type, add a third parameter. Remove
5167	non-useful assertion now that we use static typing.
5168	(cxx_scope_find_binding_for_name): New function.
5169	(binding_for_name): Use it.  Adjust local variable type. Simplify.
5170	(namespace_binding):  Simplify.
5171	(set_namespace_binding): Likewise.
5172	(set_identifier_type_value_with_scope): Adjust local variable type.
5173	(lookup_tag): Don't type-abuse of local variable 'old'.
5174	(lookup_namespace_name): Likewise.  Allocate binding on stack.
5175	(select_decl): Adjust prototype.
5176	(unqualified_namespace_lookup):  Allocate binding on stack.
5177	Don't type-abuse of local variable 'val'.
5178	(lookup_name_real): Likewise.
5179	(maybe_inject_for_scope_var): Adjust local variable type.
5180	(cp_tree_node_structure): Remove CPLUS_BINDING case label.
5181	(namespace_binding): Adjust logic, simplify.
5182	(BINDING_LEVEL): Adjust definition.
5183	(push_class_level_binding): Adjust local variable type.
5184	(struct cxx_saved_binding): Adjust field 'binding' type.
5185	* decl2.c (ambiguous_decl): Adjust prototype.
5186	(lookup_using_namespace): Adjust local variable type.
5187	(qualified_lookup_using_namespace): Catch type error and correct
5188	ensueing logic error.
5189	(do_nonmember_using_decl): Adjust local variable type.  Allocate
5190	temporary cxx_binding on stack.
5191	(do_toplevel_using_decl): Adjust local variable type.
5192	* ptree.c (cxx_print_cxx_binding): New function.
5193	(cxx_print_identifier): Use it.
5194	(cxx_print_xnode): Delete CPLUS_BINDING case label.
5195
51962003-03-15  Roger Sayle  <roger@eyesopen.com>
5197
5198	* tree.c (count_functions): Fix whitespace.
5199
52002003-03-15  Neil Booth  <neil@daikokuya.co.uk>
5201
5202	* Make-lang.in: Update.
5203
52042003-03-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5205
5206	PR c++/6440
5207	* pt.c (maybe_process_partial_specialization): Handle
5208	member class template when enclosing class template is
5209	explicit specialized.
5210	(most_general_template): Stop looking when DECL is already
5211	specialized.
5212
52132003-03-13  Jason Merrill  <jason@redhat.com>
5214
5215	PR c++/9420
5216	* search.c (lookup_conversions): Call complete_type here.
5217	* call.c (implicit_conversion): Not here.
5218
52192003-03-13  Mark Mitchell  <mark@codesourcery.com>
5220
5221	* decl2.c (do_nonmember_using_decl): Correct handling of
5222	simultaneous type/non-type bindings.
5223
5224	* call.c (initialize_reference): Remove bogus assertion.
5225	* decl.c (build_ptrmemfunc_type): Revert change of 2003-03-09.
5226
52272003-03-12  Andrew Lewycky  <andrew@mxc.ca>
5228
5229	PR c++/7050
5230	* expr.c (cxx_expand_expr): Return const0_rtx for throw
5231	expressions.
5232
52332003-03-11  Mark Mitchell  <mark@codesourcery.com>
5234
5235	PR c++/9474
5236	* decl2.c (do_nonmember_using_decl): Do not call duplicate decls
5237	to merge old and new declarations.
5238
52392003-03-12  Alexandre Oliva  <aoliva@redhat.com>
5240
5241	* g++.1: Remove.
5242	* Make-lang.in (c++.generated-manpages): Build cp/g++.1.
5243	(cp/g++.1): Build it from scratch in the build tree.
5244	(c++.install-man): Depend on it.  Install it from the build tree.
5245	(c++.mostlyclean): Clean it.
5246
52472003-03-11  Mark Mitchell  <mark@codesourcery.com>
5248
5249	PR c++/9474
5250	* decl2.c (do_nonmember_using_decl): Do not call duplicate decls
5251	to merge old and new declarations.
5252
5253	PR c++/9924
5254	* decl2.c (do_nonmember_using_decl): Ignore anticipated builtins.
5255
52562003-03-11  Jason Merrill  <jason@redhat.com>
5257
5258	PR c++/9820
5259	* search.c (lookup_member): Fix handling of functions in a class
5260	being defined.
5261
52622003-03-11  Mark Mitchell  <mark@codesourcery.com>
5263
5264	PR c++/8700
5265	* call.c (convert_class_to_reference): Adjust usage of
5266	splice_viable.
5267	(any_viable): Remove.
5268	(splice_viable): Combine with any_viable.
5269	(print_z_candidates): Avoid printing duplicates.
5270	(build_user_type_conversion_1): Adjust usage of splice_viable.
5271	(build_new_function_call): Likewise.
5272	(build_operator_new_call): Likewise.
5273	(build_object_call): Likewise.
5274	(build_conditional_expr): Likewise.
5275	(build_new_op): Likewise.
5276	(build_new_method_call): Likewise.
5277	(joust): Remove spurious comment.
5278	* cp-tree.h (DECL_FRIENDLIST): Correct documentation.
5279	* decl2.c (arg_assoc_class): Simplify.
5280	* friend.c (add_friend): Likewise.
5281
52822003-03-11  Jason Merrill  <jason@redhat.com>
5283
5284	PR c++/8660
5285	* decl2.c (check_classfn): A member template only matches a
5286	member template.
5287
52882003-03-11  Neil Booth  <neil@daikokuya.co.uk>
5289
5290	* Make-lang.in (CXX_C_OBJS): Update.
5291	* lang-specs.h: Don't define __GNUG__ here.
5292
52932003-03-10  Mark Mitchell  <mark@codesourcery.com>
5294
5295	* call.c (perform_overload_resolution): New function.
5296	(build_new_function_call): Use it.
5297	(build_operator_new_call): Likewise.
5298	(add_candidates): Add explicit_targs and template_only parameters.
5299	(build_new_op): Adjust accordingly.
5300	* cp-tree.h (build_operator_new_call): New function.
5301	(build_function_call_real): Remove.
5302	(build_function_call_maybe): Likewise.
5303	* init.c (build_new_1): Use build_operator_new_call.
5304	* typeck.c (build_function_call_real): Rename to ...
5305	(build_function_call): ... this.
5306
53072003-03-10  Devang Patel  <dpatel@apple.com>
5308
5309	PR c++/9394
5310	* g++spec.c (lang_specific_driver): Use DEFAULT_WORD_SWTCH_TAKES_ARG.
5311
53122003-03-10  Jason Merrill  <jason@redhat.com>
5313
5314	PR c++/9798
5315	* decl.c (push_using_directive): Push before recursing.
5316
5317	PR c++/9868, c++/9524
5318	* call.c (resolve_scoped_fn_name): Handle the case of a function
5319	pointer member.
5320
5321	* decl2.c (build_offset_ref_call_from_tree): Only mess with 'this'
5322	argument in the pointer-to-member case.
5323
53242003-03-09  Mark Mitchell  <mark@codesourcery.com>
5325
5326	PR c++/9373
5327	* cp-lang.c (cxx_get_alias_set): Use alias set zero for
5328	pointers to member functions.
5329
5330	PR c++/8534
5331	* decl.c (build_ptrmemfunc_type): Do not allow default arguments
5332	in pointer-to-member-function types.
5333
53342003-03-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5335
5336	* expr.c (cplus_expand_constant): Use C90 prototype style.
5337	(cxx_expand_expr): Likewise.
5338
53392003-03-09  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5340
5341	PR c++/9970
5342	* decl.c (duplicate_decls): Only copy DECL_THUNKS for virtual
5343	functions.
5344
53452003-03-08  Geoffrey Keating  <geoffk@apple.com>
5346
5347	* lang-specs.h (c++-header): Change .pch to .gch.
5348
53492003-03-08  Neil Booth  <neil@daikokuya.co.uk>
5350
5351	* cp-tree.h (cxx_init): Update prototype.
5352	* lex.c (cxx_init): Similarly.
5353
53542003-03-08  Mark Mitchell  <mark@codesourcery.com>
5355
5356	PR c++/9823
5357	* cp-tree.h (begin_mem_initializers): Remove.
5358	* parser.c (cp_parser_mem_initializer_list): Inline it here.
5359	Do not call finish_mem_initializers if not in a constructor.
5360	(cp_parser_class_head): Fix typo in error message.
5361	* semantics.c (begin_mem_initializers): Remove.
5362	* testsuite/g++.dg/parser/constructor1.C: New test.
5363
5364	PR c++/9809
5365	* call.c (add_function_candidate): Skip builtin fuctions that have
5366	not yet been declared.
5367
5368	PR c++/9982
5369	* init.c (build_new_1): Correct logic for determining whether or
5370	not to use an array cookie.
5371
5372	PR c++/9524
5373	* parser.c (cp_parser_postfix_expression): Call
5374	finish_non_static_data_member, even when processing_template_decl.
5375
5376	PR c++/9912
5377	* cp-tree.h (is_ancestor): New function.
5378	(handle_class_head): Change prototype.
5379	* decl2.c (is_namespace_ancestor): Rename to ...
5380	(namespace_anecestor): ... this.
5381	(set_decl_namespace): Adjust accordingly.
5382	(handle_class_head): Remove unnecessary parameters.
5383	* parser.c (cp_parser_class_head): Check that
5384	nested-name-specifiers are used appropriately.
5385
53862003-03-07  Mark Mitchell  <mark@codesourcery.com>
5387
5388	* call.c (reference_binding): Remove REF_IS_VAR parameter.
5389	(implicit_conversion): Adjust call to reference_binding.
5390	(make_temporary_var_for_ref_to_type): Add TYPE parameter.
5391	(initialize_reference): Adjust handling for references bound to
5392	rvalues.
5393	* cp-tree.h (make_temporary_var_for_ref_to_temp): Change
5394	prototype.
5395	(real_non_cast_lvalue_p): New method.
5396	* cvt.c (build_up_reference): Adjust use of
5397	make_temporary_var_for_ref_to_temp.
5398	* tree.c (real_non_cast_lvalue_p): New method.
5399
54002003-03-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5401
5402	* except.c (init_exception_processing): Use C90 prototype style.
5403	(cp_protect_cleanup_actions): Likewise.
5404	(prepare_eh_type): Likewise.
5405	(build_eh_type_type): Likewise.
5406	(build_exc_ptr): Likewise.
5407	(do_begin_catch): Likewise.
5408	(dtor_nothrow): Likewise.
5409	(do_end_catch): Likewise.
5410	(push_eh_cleanup): Likewise.
5411	(decl_is_java_type): Likewise.
5412	(choose_personality_routine): Likewise.
5413	(initialize_handler_parm): Likewise.
5414	(expand_start_catch_block): Likewise.
5415	(expand_end_catch_block): Likewise.
5416	(begin_eh_spec_block): Likewise.
5417	(finish_eh_spec_block): Likewise.
5418	(do_allocate_exception): Likewise.
5419	(do_free_exception): Likewise.
5420	(wrap_cleanups_r): Likewise.
5421	(stabilize_throw_expr): Likewise.
5422	(build_throw): Likewise.
5423	(complete_ptr_ref_or_void_ptr_p): Likewise.
5424	(is_admissible_throw_operand): Likewise.
5425	(nothrow_libfn_p): Likewise.
5426	(can_convert_eh): Likewise.
5427	(check_handlers_1): Likewise.
5428	(check_handlers): Likewise.
5429
54302003-03-06  Mark Mitchell  <mark@codesourcery.com>
5431
5432	* call.c (merge_conversion_sequences): New function.
5433	(build_conv): Set ICS_USER_FLAG for USER_CONVs.
5434	(convert_class_to_reference): Correct handling of second
5435	standard conversion sequence in a user-defined conversion
5436	sequence.
5437	(build_user_type_conversion_1): Use merge_conversion_sequences.
5438	* cp-tree.def: Add comments for CONV nodes.
5439	* rtti.c (get_tinfo_decl): Use build_address/build_nop.
5440
54412003-03-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5442
5443	* error.c (init_error): Use C90 prototype style.
5444	(dump_scope): Likewise.
5445	(dump_qualifiers): Likewise.
5446	(dump_template_argument): Likewise.
5447	(dump_template_argument_list): Likewise.
5448	(dump_template_parameter): Likewise.
5449	(dump_template_bindings): Likewise.
5450	(dump_type): Likewise.
5451	(dump_typename): Likewise.
5452	(class_key_or_enum): Likewise.
5453	(dump_aggr_type): Likewise.
5454	(dump_type_prefix): Likewise.
5455	(dump_type_suffix): Likewise.
5456	(dump_global_iord): Likewise.
5457	(dump_simple_decl): Likewise.
5458	(dump_decl): Likewise.
5459	(dump_template_decl): Likewise.
5460	(dump_function_decl): Likewise.
5461	(dump_parameters): Likewise.
5462	(dump_exception_spec): Likewise.
5463	(dump_function_name): Likewise.
5464	(dump_template_parms): Likewise.
5465	(dump_char): Likewise.
5466	(dump_expr_list): Likewise.
5467	(dump_expr): Likewise.
5468	(dump_binary_op): Likewise.
5469	(dump_unary_op): Likewise.
5470	(type_as_string): Likewise.
5471	(expr_as_string): Likewise.
5472	(decl_as_string): Likewise.
5473	(context_as_string): Likewise.
5474	(lang_decl_name): Likewise.
5475	(cp_file_of): Likewise.
5476	(cp_line_of): Likewise.
5477	(decl_to_string): Likewise.
5478	(expr_to_string): Likewise.
5479	(fndecl_to_string): Likewise.
5480	(code_to_string): Likewise.
5481	(language_to_string): Likewise.
5482	(parm_to_string): Likewise.
5483	(op_to_string): Likewise.
5484	(type_to_string): Likewise.
5485	(assop_to_string): Likewise.
5486	(args_to_string): Likewise.
5487	(cv_to_string): Likewise.
5488	(cxx_print_error_function): Likewise.
5489	(cp_diagnostic_starter): Likewise.
5490	(cp_diagnostic_finalizer): Likewise.
5491	(cp_print_error_function): Likewise.
5492	(function_category): Likewise.
5493	(print_instantiation_full_context): Likewise.
5494	(print_instantiation_partial_context): Likewise.
5495	(maybe_print_instantiation_context): Likewise.
5496	(print_instantiation_context): Likewise.
5497	(cp_printer): Likewise.
5498	(print_integer): Likewise.
5499	(print_non_consecutive_character): Likewise.
5500	(locate_error): Likewise.
5501
55022003-03-06  Mark Mitchell  <mark@codesourcery.com>
5503
5504	PR c++/9965
5505	* call.c (reference_binding): Add ref_is_var parameter.
5506	(implicit_conversion): Adjust call to reference_binding.
5507	(initialize_reference): Likewise.
5508
5509	PR c++/9400
5510	* decl.c (pushdecl): Don't check for shadowing of DECL_ARTIFICIAL
5511	PARM_DECLs.
5512
5513	PR c++/9791
5514	* class.c (get_basefndecls): Use lookup_fnfields_1.
5515
55162003-03-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5517
5518	PR c++/9188
5519	* parser.c (cp_parser_type_parameter): Remove redundant `expect'
5520	in error message.
5521	(cp_parser_single_declaration): Likewise.
5522
55232003-03-05  Jason Merrill  <jason@redhat.com>
5524
5525	PR c++/9440
5526	* call.c (build_conditional_expr): Use convert rather than an
5527	explicit NOP_EXPR.
5528
55292003-03-02  Matt Austern  <austern@apple.com>
5530
5531	* decl.c (cp_binding_level): Add static_decls varray member.
5532	(add_decl_to_level): Add static/inline namespace scope
5533	declarations to static_decls array.
5534	(wrapup_global_for_namespace): Pass static_decls only, instead of
5535	all decls, to wrapup_global_declarations/check_global_declarations.
5536	(push_namespace): Initialize static_decls for ordinary namespaces.
5537	(cxx_init_decl_processing): Initialize static_decls for global
5538	namespace.
5539
55402003-03-05  Mark Mitchell  <mark@codesourcery.com>
5541
5542	* class.c (end_of_class): Correct thinko.
5543
55442003-03-04  Nathanael Nerode  <neroden@gcc.gnu.org>
5545
5546	* config-lang.in: Replace ${libstdcxx_version} by its value.
5547
55482003-03-04  Gabriel Dos Reis <gdr@integrable-solutions.net>
5549
5550	* cp-tree.h (cxx_saved_binding): Declare.
5551	(struct saved_scope): Adjust type of field 'old_binding'.
5552	* decl.c (cxx_saved_binding_make): New macro.
5553	(struct cxx_saved_binding): Define.
5554	(store_bindings): Adjust prototype.  Use cxx_saved_binding to save
5555	C++ bindings.
5556	(maybe_push_to_top_level): Adjust local variable type.
5557	(pop_from_top_level): Likewise.
5558
55592003-03-04  Tom Tromey  <tromey@redhat.com>
5560
5561	* Make-lang.in (c++.tags): New target.
5562
55632003-03-04  Neil Booth  <neil@daikokuya.co.uk>
5564
5565	* Make-lang.in: Update.
5566
55672003-03-03  Jason Merrill  <jason@redhat.com>
5568
5569	* decl.c (finish_enum): Do set the type in a template. Simplify.
5570	* pt.c (tsubst_enum, tsubst_copy): Revert last patch.
5571
55722003-03-03  Mark Mitchell  <mark@codesourcery.com>
5573
5574	PR c++/9878
5575	* call.c (convert_class_to_reference): Correct conversion
5576	sequences.
5577	(reference_binding): Add ref_bound_directly_to_rvalue_p parameter.
5578	(implicit_conversion): Adjust call to reference_binding.
5579	(add_candidate): Change type of candidates parameter.
5580	(add_function_candidate): Likewise.
5581	(add_conv_candidate): Likewise.
5582	(build_builtin_candidate): Likewise.
5583	(add_builtin_candidate): Likewise.
5584	(add_builtin_candidates): Likewise.
5585	(add_template_candidate_real): Likewise.
5586	(add_template_candidate): Likewise.
5587	(add_template_conv_candidate): Likewise.
5588	(build_user_type_conversion_1): Adjust accordingly.
5589	(build_object_call): Likewise.
5590	(build_conditional_expr): Likewise.
5591	(add_candidates): Likewise.
5592	(build_new_op): Likewise.
5593	(convert_like_real): Use USER_CONV_CAND.  Use build_nop.
5594	(build_new_method_call): Adjust calls to add_function_candidate.
5595	(make_temporary_var_for_ref_to_temp): New function.
5596	(initialize_reference): Add decl parameter.
5597	* class.c (build_rtti_vtbl_entries): Use build_address and
5598	build_nop.
5599	* cp-tree.h (initialize_reference): Change prototype.
5600	(make_temporary_var_for_ref_to_temp): New function.
5601	(build_type_conversion): Change prototype.
5602	(build_address): New function.
5603	(build_nop): Likewise.
5604	* cvt.c (cp_convert_to_pointer): Adjust call to
5605	build_type_conversion.  Avoid indicating redundant NOP_EXPRs.
5606	Use build_nop.
5607	(convert_to_pointer_force): Use build_nop.
5608	(build_up_reference): Use make_temporary_var_for_ref_to_temp.
5609	(convert_to_reference): Adjust call to build_type_conversion.
5610	(ocp_convert): Likewise.
5611	(build_type_conversion): Remove for_sure parameter.
5612	* decl.c (grok_reference_init): Use initialize_reference.
5613	* typeck.c (build_address): New function.
5614	(build_nop): Likewise.
5615	(build_unary_op): Use them.
5616	(build_ptrmemfunc): Tidy slightly.
5617	(convert_for_initialization): Adjust call to
5618	initialize_reference.
5619	* typeck2.c (store_init_value): Remove #if 0'd code.
5620
56212003-03-03  Jason Merrill  <jason@redhat.com>
5622
5623	* decl.c (start_function): Clear DECL_NUM_STMTS.
5624
5625	* class.c (get_vtable_decl): Use vtbl_type_node.
5626	(build_primary_vtable): Check for it.
5627
56282003-03-02  Aldy Hernandez  <aldyh@redhat.com>
5629
5630	* decl.c (check_initializer): Check for vector_opaque_p.
5631
56322003-03-02  Ashif Harji  <asharji@uwaterloo.ca>
5633
5634	* lang-specs.h (default_compilers): Add -no-integrated-cpp flag to
5635	  invoke an external cpp during compilation.
5636
56372003-03-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5638
5639	* decl.c (duplicate_decls): Convert use of warning_with_decl() to
5640	that of warning().
5641	(start_decl): Likewise.
5642	(start_function): Likewise.
5643
56442003-03-01  Neil Booth  <neil@daikokuya.co.uk>
5645
5646	* Make-lang.in (CXX_C_OBJS): Update.
5647
56482003-02-28  Mark Mitchell  <mark@codesourcery.com>
5649
5650	PR c++/9892
5651	* pt.c (instantiate_decl): Clear DECL_RTL for a VAR_DECL when
5652	instantiating it.
5653
56542003-02-28  Aldy Hernandez  <aldyh@redhat.com>
5655
5656	* parser.c (cp_parser_init_declarator): Revert opaque
5657	vector_opaque_p change.
5658	Do not include target.h.
5659
56602003-02-28  Mark Mitchell  <mark@codesourcery.com>
5661
5662	PR c++/9879
5663	* cp-tree.h (build_zero_init): Add parameter.
5664	* decl.c (cp_finish_decl): Adjust call.
5665	* init.c (build_zero_init): Add nelts parameter.  Adjust recursive
5666	calls.
5667	(build_default_init): Add nelts parameter.  Adjust calls to
5668	build_zero_init.
5669	(build_new_1): Adjust call to build_default_init.
5670	* typeck2.c (process_init_constructor): Adjust call to build_zero_init.
5671
56722003-02-26  Devang Patel  <dpatel@apple.com>
5673
5674	* decl.c (finish_enum): Merge two 'for' loops. Copy value node if
5675	required.  Postpone enum setting for template decls.
5676	(build_enumerator): Delay copying value node until finish_enum
5677	(). Remove #if 0'ed code.
5678	* pt.c (tsubst_enum): Set TREE_TYPE and copy value node.
5679	(tsubst_copy): Add check for enum type.
5680
56812003-02-25  Mark Mitchell  <mark@codesourcery.com>
5682
5683	PR c++/9683
5684	* decl2.c (prune_vars_needing_no_initialization): Do not throw
5685	away initializations for DECL_EXTERNAL VAR_DECLs.
5686	(finish_file): Adjust accordingly.
5687	* pt.c (instantiate_decl): Do not defer VAR_DECLs.
5688
56892003-02-24 Gabriel Dos Reis  <gdr@integrable-solutions.net>
5690
5691	* decl.c (add_binding): Time TV_NAME_LOOKUP.
5692	(push_class_binding): Likewise.
5693	(set_namespace_binding): Likewise.
5694
56952003-02-24  Mark Mitchell  <mark@codesourcery.com>
5696
5697	PR c++/9836
5698	* cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): Do not skip from
5699	specializations back to the main template.
5700	* parser.c (cp_parser_diagnose_invalid_type_name):Adjust use.
5701	* pt.c (resolve_typename_type): Likewise.
5702
57032003-02-24  Jeffrey D. Oldham  <oldham@codesourcery.com>
5704
5705	PR c++/9778
5706	* pt.c (tsubst_copy_and_build): For a templated function inside a
5707	scope, process template arguments.
5708
57092003-02-24  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5710
5711	PR c++/9602
5712	* typeck2.c (abstract_virtuals_error): Don't check when
5713	TYPE is still template parameter dependent.
5714
57152003-02-23  Mark Mitchell  <mark@codesourcery.com>
5716
5717	PR c++/5333
5718	* cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): New macro.
5719	* parser.c (cp_parser_diagnose_invalid_type_name): Use it.
5720	* pt.c (instantiate_class_template): Don't try to instantiate
5721	dependent types.
5722	(resolve_typename_type): Use CLASSTYPE_PRIMARY_TEMPLATE.
5723
57242003-02-21  Mark Mitchell  <mark@codesourcery.com>
5725
5726	PR c++/9749
5727	* decl.c (grokdeclarator): Do not allow parameters with variably
5728	modified types.
5729
57302003-02-21  Nathan Sidwell  <nathan@codesourcery.com>
5731
5732	* search.c (grow_bfs_bases): Remove. Fold into ...
5733	(bfs_walk): ... here, fix fencepost error. Fix merge lossage
5734	in previous patch.
5735
57362003-02-20  Mark Mitchell  <mark@codesourcery.com>
5737
5738	PR c++/9729
5739	* mangle.c (mangle_conv_op_name_for_type): Issue an error message
5740	when the G++ 3.2 ABI prevents correct compilation.
5741
57422003-02-20  Nathan Sidwell  <nathan@codesourcery.com>
5743
5744	Change base class access representation. Share virtual base
5745	binfos.
5746	* cp/call.c (build_special_member_call): Remove binfo_for_vbase
5747	call.
5748	* cp/class.c (build_base_path): Likewise.
5749	(build_primary_vtable): Adjust BINFO_NEW_VTABLE_MARKED use.
5750	(build_secondary_vtable): Remove FOR_TYPE arg. Adjust.
5751	(make_new_vtable): Adjust.
5752	(force_canonical_binfo_r): Delete.
5753	(force_canonical_binfo): Delete.
5754	(mark_primary_virtual_base): Delete.
5755	(dfs_unshared_virtual_bases): Delete.
5756	(mark_primary_bases): Adjust.
5757	(maybe_warn_about_overly_private_class): Adjust.
5758	(dfs_base_derived_from): Delete.
5759	(base_derived_from): Follow the inheritance chain.
5760	(struct find_final_overrider_data): Add vpath member.
5761	(dfs_find_final_overrider): Adjust.
5762	(dfs_find_final_overrider_q, dfs_find_final_overrider_post): New.
5763	(find_final_overrider): Adjust.
5764	(update_vtable_entry_for_fn): Adjust.
5765	(modify_all_vtables): Adjust.
5766	(walk_subobject_offsets): Adjust.
5767	(layout_nonempty_base_or_field): Adjust.
5768	(layout_empty_base): Remove last parameter. Adjust.
5769	(build_base_field): Adjust.
5770	(build_base_fields): Adjust.
5771	(propagate_binfo_offsets): Remove last parameter. Adjust.
5772	(dfs_set_offset_for_unshared_vbases): Delete.
5773	(layout_virtual_bases): Adjust.
5774	(finish_struct_1): Adjust.
5775	(init_class_processing): Don't init access nodes.
5776	(dfs_get_primary_binfo): Delete.
5777	(get_primary_binfo): Adjust.
5778	(dump_class_hierarchy_r): Remove most derived arg, add IGO
5779	parameter. Adjust.
5780	(dump_class_hierarchy): Adjust.
5781	(finish_vtbls): Adjust.
5782	(get_original_base): Delete.
5783	(build_vtt_inits): Adjust.
5784	(dfs_build_secondary_vptr_vtt_inits): Adjust.
5785	(dfs_ctor_vtable_bases_queue_p): Adjust.
5786	(build_ctor_vtbl_group): Adjust.
5787	(dfs_accumulate_vtbl_inits): Adjust.
5788	(build_vtbl_initializer): Adjust.
5789	(build_vbase_offset_vtbl_entries): Adjust.
5790	(add_vcall_offset_vtbl_entries_1): Adjust.
5791	* cp/cp-tree.h (CPTI_ACCESS_*): Remove.
5792	(access_*_node): Remove.
5793	(CANONICAL_BINFO): Delete.
5794	(BINFO_UNSHARED_MARKED): Remove.
5795	(BINFO_MARKED): Set LANG_FLAG_0 directly.
5796	(SET_BINFO_MARKED, CLEAR_BINFO_MARKED): Delete.
5797	(BINFO_VTABLE_PATH_MARKED): Set LANG_FLAG_3 directly.
5798	(SET_BINFO_VTABLE_PATH_MARKED, CLEAR_BINFO_VTABLE_PATH_MARKED):
5799	Delete.
5800	(BINFO_NEW_VTABLE_MARKED): Set LANG_FLAG_4 directly.
5801	(SET_BINFO_NEW_VTABLE_MARKED): Adjust.
5802	(SET_BINFO_PUSHDECLS_MARKED, CLEAR_BINFO_PUSHDECLS_MARKED):
5803	Delete.
5804	(BINFO_DEPENDENT_BASE_P): New.
5805	(dfs_walk, dfs_walk_real): Queue function takes derived binfo and
5806	index.
5807	(markedp, unmarkedp): Adjust.
5808	(dfs_unmarked_real_bases_queue_p, dfs_marked_real_bases_queue_p,
5809	dfs_skip_vbases, marked_vtable_pathp, unmarked_vtable_pathp,
5810	find_vbase_instance, binfo_for_vbase): Delete.
5811	(copied_binfo, original_binfo): Declare.
5812	(finish_base_specifier): Add virtual_p arg.
5813	(unshare_base_binfos): Delete.
5814	(copy_base_binfos): Declare.
5815	(reverse_path): Delete.
5816	* cp/decl.c (xref_basetypes): Access and virtuality passed
5817	differently. Don't copy direct base binfos here. Call
5818	copy_base_binfos.
5819	* cp/init.c (dfs_initialize_vtbl_ptrs): Adjust.
5820	(initialize_vtbl_ptrs): Adjust.
5821	(expand_member_init): Adjust.
5822	* cp/parser.c (cp_parser_base_specifier): Adjust.
5823	* cp/pt.c (instantiate_class_template): Adjust.
5824	(get_template_base_recursive): Adjust.
5825	* cp/rtti.c (get_pseudo_ti_init): Adjust.
5826	(get_pseudo_ti_desc): Adjust.
5827	* cp/tree.c (unshare_base_binfos): Rename to ...
5828	(copy_base_binfos): ... here, reimplement.
5829	(make_binfo): Set BINFO_DEPENDENT_BASE_P.
5830	(reverse_path): Remove.
5831	* cp/typeck.c (get_delta_difference): Adjust error messages.
5832	* cp/semantics.c (finish_base_specifier): Add virtual arg, adjust.
5833	* cp/search.c (lookup_base_r): Adjust.
5834	(dynamic_cast_base_recurse): Adjust.
5835	(canonical_binfo): Remove.
5836	(dfs_canonical_queue): Remove.
5837	(dfs_assert_unmarked_p): Remove.
5838	(assert_canonical_unmarked): Remove.
5839	(shared_marked_p, shared_unmarked_p): Remove.
5840	(BINFO_ACCESS, SET_BINFO_ACCESS): Use TREE_PUBLIC & TREE_PRIVATE.
5841	(dfs_access_in_type): Adjust.
5842	(access_in_type): Adjust.
5843	(dfs_accessible_queue_p): Adjust.
5844	(dfs_accessible_p): Adjust.
5845	(is_subobject_of_p_1, is_subobject_of_p): Remove.
5846	(struct lookup_field_info): Remove from_dep_base_p field.
5847	(lookup_field_queue_p): Adjust, test BINFO_DEPENDENT_BASE_P.
5848	(lookup_field_r): Remove dependent base code.
5849	(lookup_member): Likewise.
5850	(dfs_walk, dfs_walk_real): Add access arg to queue fn.
5851	(dfs_unmarked_real_bases_queue_p): Remove.
5852	(dfs_marked_real_bases_queue_p): Remove.
5853	(dfs_skip_vbases): Remove.
5854	(dfs_get_pure_virtuals): Adjust.
5855	(markedp, unmarkedp): Adjust.
5856	(marked_vtable_pathp, unmarked_vtable_pathp): Remove.
5857	(marked_pushdecls_p, unmarked_pushdecls_p): Adjust.
5858	(dfs_unmark): Adjust.
5859	(dfs_get_vbase_types):Remove.
5860	(dfs_build_inheritance_graph_order): Remove.
5861	(get_vbase_types): Remove
5862	(dfs_find_vbase_instance): Remove.
5863	(find_vbase_instance): Remove.
5864	(dfs_debug_unmarkedp): Adjust.
5865	(dependent_base_p): Remove.
5866	(dfs_push_type_decls): Adjust.
5867	(dfs_push_decls): Adjust.
5868	(dfs_no_overlap_yet): Adjust.
5869	(copied_binfo): New function.
5870	(original_binfo): New function.
5871	(binfo_for_vbase): Remove.
5872
58732003-02-18  Zack Weinberg  <zack@codesourcery.com>
5874
5875	* cp/search.c (grow_bfs_bases): New subroutine of bfs_walk.
5876	(bfs_walk): Rewritten using circular queue of BINFO_BASETYPES
5877	vectors, for speed.
5878
58792003-02-18  Mark Mitchell  <mark@codesourcery.com>
5880
5881	PR c++/9704
5882	* class.c (layout_class_type): In the 3.2 ABI, take into account
5883	trailing bit fields when computing CLASSTYPE_SIZE_UNIT.
5884
58852003-02-18  Matt Austern <austern@apple.com>
5886
5887	* cp/cp-lang.c: Change lang hooks so that final_write_globals does
5888	nothing for C++.
5889	* cp/decl.c (wrapup_globals_for_namespace): Remove special
5890	handling of global namespace.
5891
58922003-02-18  Geoffrey Keating  <geoffk@apple.com>
5893
5894	* cp-tree.h (rid_to_yy): Delete.
5895	(C_RID_YYCODE): Delete.
5896	(finish_file): Delete redundant declaration.
5897
58982003-02-18  Jason Merrill  <jason@redhat.com>
5899
5900	PR c++/9623
5901	* decl.c (reshape_init): Don't mess with initializer labels.
5902
5903	PR c++/9485
5904	* parser.c (cp_parser_postfix_expression): Set idk properly for
5905	object->scope::member.
5906
59072003-02-18  Ben Elliston  <bje@redhat.com>
5908
5909	PR other/7350
5910	* decl.c (duplicate_decls): Fix typo in comment.
5911
59122003-02-17  Michael Elizabeth Chastain <mec@shout.net>
5913
5914	PR debug/9717
5915	* class.c (build_base_field): Mark fields for base classes with
5916	DECL_IGNORED_P.
5917
59182003-02-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5919
5920	PR c++/9457
5921	* pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Substitute
5922	CONSTRUCTOR_ELTS only once.
5923
59242003-02-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5925
5926	PR c++/9459
5927	* error.c (dump_type_prefix): Handle TYPEOF_TYPE.
5928	(dump_type_suffix): Likewise.
5929
59302003-02-14  Nathan Sidwell  <nathan@codesourcery.com>
5931
5932	* search.c: ANSIfy function declarations and definitions.
5933	* cp-tree.h (lookup_field, lookup_member): Last parameter is a bool.
5934	* call.c (build_method_call, resolve_scoped_fn_name,
5935	build_java_interface_fn_ref): Adjust lookup_field, lookup_member
5936	calls.
5937	* class.c (handle_using_decl): Likewise.
5938	* decl.c (make_typename_type, make_unmound_class_template,
5939	start_decl, compute_array_index_type): Likewise.
5940	* decl2.c (build_expr_from_tree, build_call_from_tree): Likewise.
5941	* init.c (expand_member_init, build_member_call): Likewise.
5942	* pt.c (tsubst_copy, tsubst_copy_and_build, do_decl_instantiation,
5943	resolve_typename_type): Likewise.
5944	* typeck.c (lookup_destructor, finish_class_member_access_exprm
5945	build_prememfunc_access_expr): Likewise.
5946
59472003-02-13  Gabriel Dos Reis <gdr@integrable-solutions.net>
5948
5949	* decl2.c: Include "timevar.h".
5950	(namespace_ancestor): Time name lookup.
5951	(add_using_namespace): Likewise.
5952	(lookup_using_namespace): Likewise.
5953	(qualified_lookup_using_namespace): Likewise.
5954	(decl_namespace): Likewise.
5955	(lookup_arg_dependent): Likewise.
5956	* lex.c (do_identifier): Likewise.
5957	(do_scoped_id): Likewise.
5958	* pt.c (lookup_template_class): Likewise.
5959
59602003-02-14   Andrew Pinski <pinskia@physics.uc.edu>
5961
5962	* decl.c: (define_label): Fix warning for return 0 instead of NULL.
5963
59642003-02-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5965
5966	* decl.c: Include "timevar.h".
5967	(poplevel): Time name lookup.
5968	(find_binding): Likewise.
5969	(push_namespace): Likewise.
5970	(pop_nested_namespace): Likewise.
5971	(store_bindings): Likewise.
5972	(maybe_push_to_top_level): Likewise.
5973	(pop_from_top_level): Likewise.
5974	(push_local_name): Likewise.
5975	(pushtag): Likewise.
5976	(pushdecl): Likewise.
5977	(pushdecl_with_scope): Likewise.
5978	(pushdecl_namespace_level): Likewise.
5979	(pushdecl_top_level): Likewise.
5980	(pushdecl_class_level): Likewise.
5981	(push_class_level_binding): Likewise.
5982	(push_using_decl): Likewise.
5983	(push_using_directive): Likewise.
5984	(push_overloaded_decl): Likewise.
5985	(lookup_label): Likewise.
5986	(define_label): Likewise.
5987	(lookup_tag): Likewise.
5988	(lookup_tag_reverse): Likewise.
5989	(lookup_namespace_name): Likewise.
5990	(select_decl): Likewise.
5991	(unqualified_namespace_lookup): Likewise.
5992	(lookup_name_real): Likewise.
5993	(lookup_name_current_level): Likewise.
5994	(lookup_type_current_level): Likewise.
5995	(maybe_inject_for_scope_var): Likewise.
5996	(xref_tag): Likewise.
5997
5998	* Make-lang.in (cp/decl.o): Add dependency on timevar.h
5999
60002003-02-12  Phil Edwards  <pme@gcc.gnu.org>
6001
6002	* decl.c (build_enumerator):  Remove unneeded test.
6003
60042003-02-09  Dan Nicolaescu  <dann@ics.uci.edu>
6005
6006	* cp-tree.h (struct lang_type_header): Make all fields unsigned
6007	char.
6008
60092003-02-03  Mark Mitchell  <mark@codesourcery.com>
6010
6011	PR c++/7129
6012	* call.c (z_candidate): Add args.
6013	(convert_class_to_reference): Set it.
6014	(implicit_conversion): Tidy.
6015	(add_candidate): Add args parameter.
6016	(add_function_candidate): Adjust call to add_candidate.
6017	(add_conv_candidate): Likewise.
6018	(build_builtin_candidate): Likewise.
6019	(build_user_type_conversion_1): Eliminate wasteful tree_cons
6020	usage.
6021	(build_new_function_call): Likewise.
6022	(build_object_call): Likewise.
6023	(add_candidates): New function.
6024	(build_new_op): Use it.
6025	(covert_like_real): Adjust call to build_over_call.
6026	(build_over_call): Remove args parameter.
6027	* operators.def: Add <?= and >?=.
6028
60292003-02-01  Richard Sandiford  <rsandifo@redhat.com>
6030
6031	* typeck.c (build_indirect_ref): Don't check flag_volatile.
6032
60332003-01-31  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6034
6035	PR c++/8849
6036	* pt.c (resolve_overloaded_unification): Handle FUNCTION_DECL.
6037
60382003-01-31  Nathan Sidwell  <nathan@codesourcery.com>
6039
6040	* cp-tree.h (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX,
6041	BINFO_PRIMARY_BASE_OF): Use BINFO_ELTS.
6042	(BINFO_LANG_ELTS): New #define.
6043	* tree.c (make_binfo): Use BINFO_LANG_ELTS.
6044
60452003-01-30  Geoffrey Keating  <geoffk@apple.com>
6046
6047	* cp/Make-lang.in: Remove -Wno-error from cp/decl.o.
6048
60492003-01-30  Mark Mitchell  <mark@codesourcery.com>
6050
6051	* class.c (check_field_decls): Only check C_TYPE_FIELDS_READONLY
6052	for class types.
6053	* cp-tree.h (C_TYPE_FIELDS_READONLY): Use a lang-specific bit
6054	rather than TYPE_LANG_FLAG_0.
6055	(TYPE_BUILT_IN): Remove.
6056	(TYPE_DEPENDENT_P): New macro.
6057	(TYPE_DEPENDENT_P_VALID): Likewise.
6058	(lang_type_class): Add fields_readonly.
6059	* decl.c (record_builtin_type): Don't set TYPE_BUILT_IN.
6060	* pt.c (dependent_type_p_r): New function, split out from ...
6061	(dependent_type_p): ... here.  Memoize results.
6062	* search.c (dependent_base_p): Use dependent_type_p, not
6063	uses_template_parms.
6064	* typeck.c (build_modify_expr): Only check C_TYPE_FIELDS_READONLY
6065	for class types.
6066
60672003-01-29  Mark Mitchell  <mark@codesourcery.com>
6068
6069	* call.c (build_field_call): Use build_new_op, not build_opfncall.
6070	(prep_operand): New function.
6071	(build_new_op): Use it.  Remove dead code.
6072	* class.c (pushclass): Change "modify" parameter type from int to
6073	bool.
6074	(currently_open_class): Use same_type_p, not pointer equality.
6075	(push_nested_class): Adjust calls to pushclass, remove modify
6076	parameter.
6077	* cp-tree.h (INTEGRAL_OR_ENUMERATION_TYPE_P): New macro.
6078	(pushclass): Change prototype.
6079	(push_nested_class): Likewise.
6080	(grokoptypename): Remove.
6081	(build_opfncall): Remove.
6082	(value_dependent_expression_p): Declare.
6083	(resolve_typename_type): Likewise.
6084	(resolve_typename_type_in_current_instantiation): Likewise.
6085	(enter_scope_of): Remove.
6086	(tsubst): Remove.
6087	(tsubst_expr): Likewise.
6088	(tsubst_copy): Likewise.
6089	(tsubst_copy_and_build): Likewise.
6090	* decl.c (warn_about_implicit_typename_lookup): Remove.
6091	(finish_case_label): Return error_mark_node for erroneous labels.
6092	(start_decl): Adjust calls to push_nested_class.
6093	(grokfndecl): Call push_scope/pop_scope around call to
6094	duplicate_decls.
6095	(grokdeclarator): Do not call tsubst.
6096	(start_function): Adjust calls to push_nested_class.
6097	* decl2.c (grok_array_decl): Use build_new_op, not build_opfncall.
6098	(check_classfn): Use push_scope/pop_scope around type comparisions.
6099	(grokoptypename): Remove.
6100	(push_sscope): Adjust call to push_nested_class.
6101	* error.c (dump_type): Show cv-qualification of typename types.
6102	* init.c (build_member_call): Use build_new_op, not
6103	build_opfncall.
6104	* method.c (build_opfncall): Remove.
6105	* parser.c (cp_parser): Add allow_non_constant_expression_p and
6106	non_constant_expression_p.
6107	(cp_parser_constant_expression): Adjust prototype.
6108	(cp_parser_resolve_typename_type): Remove.
6109	(cp_parser_non_constant_expression): New function.
6110	(cp_parser_non_constant_id_expression): Likewise.
6111	(cp_parser_new): Set allow_non_constant_expression_p and
6112	non_constant_expression_p.
6113	(cp_parser_primary_expression): Reject `this' and `va_arg' in
6114	constant-expressions.  Note that dependent names aren't really
6115	constant.
6116	(cp_parser_postfix_expression): Reject conversions to non-integral
6117	types in constant-expressions.  Neither are increments or
6118	decrements.
6119	(cp_parser_unary_expression): Reject increments and decrements in
6120	constant-expressions.
6121	(cp_parser_direct_new_declarator): Adjust call to
6122	cp_parser_constant_expression.
6123	(cp_parser_cast_expression): Reject conversions to non-integral
6124	types in constant-expressions.
6125	(cp_parser_assignment_expression): Rejects assignments in
6126	constant-expressions.
6127	(cp_parser_expression): Reject commas in constant-expressions.
6128	(cp_parser_labeled_statement): Adjust call to
6129	cp_parser_constant_expression.
6130	(cp_parser_direct_declarator): Simplify array bounds, even in
6131	templates, when they are non-dependent.  Use
6132	resolve_typename_type, not cp_parser_resolve_typename_type.
6133	(cp_parser_class_head): Use resolve_typename_type, not
6134	cp_parser_resolve_typename_type.
6135	(cp_parser_member_declaration): Adjust call to
6136	cp_parser_constant_expression.
6137	(cp_parser_constant_initializer): Likewise.
6138	(cp_parser_constructor_declarator): Use resolve_typename_type, not
6139	cp_parser_resolve_typename_type.
6140	(cp_parser_late_parsing_default_args): Adjust call to
6141	push_nested_class.
6142	* pt.c (tsubst): Give it internal linkage.
6143	(tsubst_expr): Likewise.
6144	(tsubst_copy): Likewise.
6145	(tsubst_copy_and_build): Likewise.
6146	(push_access_scope_real): Likewise.
6147	(tsubst_friend_class): Likewise.
6148	(instantiate_class_template): Adjust call to pushclass.
6149	(value_dependent_expression_p): Give it external linkage.
6150	Robustify.
6151	(resolve_typename_type): New function.
6152	* semantics.c (finish_call_expr): Use build_new_op, not
6153	build_opfncall.
6154	(begin_constructor_declarator): Remove.
6155	(begin_class_definition): Adjust call to pushclass.
6156	(enter_scope_of): Remove.
6157	* typeck.c (comptypes): Resolve typename types as appropriate.
6158	(build_x_indirect_ref): Use build_new_op, not build_opfncall.
6159	(build_x_compound_expr): Likewise.
6160	(build_modify_expr): Likewise.
6161	(build_x_modify_expr): Likewise.
6162	* typeck2.c (build_x_arrow): Likewise.
6163
61642003-01-29  Fariborz Jahanian  <fjahanian@apple.com>
6165
6166	* pt.c (last_pending_template) Declare GTY().
6167
61682003-01-29  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6169
6170	PR c++/8591
6171	* parser.c (cp_parser_elaborated_type_specifier): Convert
6172	TEMPLATE_DECL to TYPE_DECL only when processing template friends.
6173	(cp_parser_maybe_treat_template_as_class): Remove redundant tests.
6174
61752003-01-28  Nathan Sidwell  <nathan@codesourcery.com>
6176
6177	PR c++/9437
6178	* pt.c (unify): Don't unify '*T' with 'U C::*'.
6179
6180	PR c++/3902
6181	* parser.c (cp_parser_decl_specifier_seq): Cannot have constructor
6182	inside a declarator.
6183
61842003-01-27  Nathan Sidwell  <nathan@codesourcery.com>
6185
6186	* class.c (update_vtable_entry_for_fn): Add index parameter.
6187	Generate vcall thunk for covariant overriding from a virtual
6188	primary base.
6189	(dfs_modify_vtables): Adjust.
6190
61912003-01-25  Nathan Sidwell  <nathan@codesourcery.com>
6192
6193	PR c++/9403
6194	* parser.c (cp_parser_class_or_namespace_name): Reject duplicate
6195	template keyword.
6196	(cp_parser_base_specifier): Look for and consume a
6197	TEMPLATE keyword. Replace switch with array index.
6198
6199	PR c++/795
6200	* semantics.c (finish_non_static_data_member): Remember the
6201	field's type even in a template.
6202
6203	PR c++/9415
6204	* pt.c (tsubst_copy_and_build, CALL_EXPR): BASELINK exprs are
6205	already scoped.
6206
6207	PR c++/8545
6208	* parser.c (cp_parser_cast_expression): Be more tentative.
6209
62102003-01-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6211
6212	* cp-tree.h (flagged_type_tree_s): Remove.
6213	(check_for_new_type): Likewise.
6214	* typeck2.c (check_for_new_type): Likewise.
6215
62162003-01-23  Nathanael Nerode  <neroden@gcc.gnu.org>
6217
6218	* dump.c: ANSIfy function declarations and definitions.
6219
6220	* cp-tree.h, decl.h: Get rid of PARAMS.  Again.
6221
62222003-01-22  Mark Mitchell  <mark@codesourcery.com>
6223
6224	PR c++/9354
6225	* init.c (build_new): Set the type of the new-expression, even
6226	when processing_templte_decl.
6227
6228	PR c++/9216
6229	* parser.c (cp_parser_primary_expression): Improve error message
6230	for templates used in an expression context.
6231
6232	PR c++/8696
6233	* parser.c (cp_parser_decl_specifier_seq): Commit to tentative
6234	parse when encountering "typedef".
6235
62362003-01-22  Nathanael Nerode  <neroden@gcc.gnu.org>
6237
6238	* class.c, parser.c: ANSIfy function definitions and declarations.
6239
62402003-01-22  Mark Mitchell  <mark@codesourcery.com>
6241
6242	PR c++/9328
6243	* error.c (dump_decl): For an OVERLOAD, just print the name of the
6244	function; it doesn't make sense to try to print its type.
6245	* semantics.c (finish_typeof): Issue errors about invalid uses.
6246
6247	PR c++/9298
6248	* parser.c (cp_parser_consume_semicolon_at_end_of_statement): New
6249	function.
6250	(cp_parser_expression_statement): Use it.
6251	(cp_parser_explicit_instantiation): Likewise.
6252	* pt.c (do_decl_instantiation): Improve error handling logic.
6253
62542003-01-22  Mark Mitchell  <mark@codesourcery.com>
6255
6256	PR c++/9384
6257	* parser.c (cp_parser_using_declaration): Issue error messages
6258	about name resolution failures here.
6259
6260	PR c++/9388
6261	* class.c (currently_open_derived_class): Use dependent_type_p.
6262	* cp-tree.h (dependent_type_p): New function.
6263	(dependent_template_arg_p): Likewise.
6264	(dependent_template_p): Likewise.
6265	(type_dependent_expression_p): Likewise.
6266	* parser.c (cp_parser_dependent_type_p): Remove.
6267	(cp_parser_value_dependent_type_p): Likewise.
6268	(cp_parser_type_dependent_expression_p): Likewise.
6269	(cp_parser_dependent_template_arg_p): Likewise.
6270	(cp_parser_dependent_template_id_p): Likewise.
6271	(cp_parser_dependent_template_p): Likewise.
6272	(cp_parser_diagnose_invalid_type_name): Replace
6273	cp_parser_dependent_type_p with dependent_type_p, etc.
6274	(cp_parser_primary_expresion): Likewise.
6275	(cp_parser_nested_name_specifier_opt): Likewise.
6276	(cp_parser_postfix_expression): Likewise.
6277	(cp_parser_unary_expression): Likewise.
6278	(cp_parser_template_name): Likewise.
6279	(cp_parser_class_name): Likewise.
6280	(cp_parser_lookup_name): Likewise.
6281	* pt.c (dependent_type_p): New function.
6282	(value_dependent_expression_p): Likewise.
6283	(type_dependent_expression_p): Likewise.
6284	(dependent_template_arg_p): Likewise.
6285	(dependent_template_id_p): Likewise.
6286	(dependent_template_p): Likewise.
6287
6288	PR c++/9285
6289	PR c++/9294
6290	* parser.c (cp_parser_simple_declaration): Return quickly when
6291	encountering errors.
6292
62932003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6294
6295	Make-lang.in (cp/decl.o-warn): Add -Wno-error.
6296
62972003-01-17  Jason Merrill  <jason@redhat.com>
6298
6299	PR c++/9167, c++/9358
6300	* decl.c (require_complete_types_for_parms): Also update DECL_ARG_TYPE.
6301
63022003-01-17  Jason Merrill  <jason@redhat.com>
6303
6304	PR c++/9342
6305	* call.c (build_conditional_expr): Always do lvalue-rvalue
6306	conversion.
6307
63082003-01-17  Mark Mitchell  <mark@codesourcery.com>
6309
6310	PR c++/9294
6311	* cp-tree.def (BASELINK): Make it class 'x', not class 'e'.
6312	* cp-tree.h (BASELINK_BINFO): Adjust.
6313	(BASELINK_FUNCTIONS): Likewise.
6314	(BASELINK_ACCESS_BINFO): Likewise.
6315	(tree_baselink): New structure.
6316	(cp_tree_node_structure_enum): Add TS_CP_BASELINK.
6317	(lang_tree_node): Add baselink.
6318	* decl.c (cp_tree_node_structure): Add BASELINK case.
6319	* search.c (build_baselink): Adjust.
6320	* tree.c (cp_walk_subtrees): Add BASELINK case.  Remove BASELINK_P
6321	test from TREE_LIST case.
6322
6323	PR c++/9272
6324	* parser.c (cp_parser_constructor_declarator_p): Do not assume
6325	that a constructor cannot be declared outside of its own class.
6326
6327	* parser.c (cp_parser_resolve_typename_type): If the scope cannot
6328	be resolved, neither can the qualified name.
6329
6330	* rtti.c (get_pseudo_ti_desc): Fix thinko.
6331
63322003-01-16  Jason Merrill  <jason@redhat.com>
6333
6334	PR c++/8564
6335	* init.c (build_vec_init): Re-add maxindex parm.
6336	(perform_member_init, build_aggr_init): Pass it.
6337	(build_new_1): Pass it. Use an incomplete array type for full_type.
6338	* typeck.c (build_modify_expr): Pass it.
6339	* cp-tree.h: Adjust.
6340
63412003-01-16  Jeffrey D. Oldham  <oldham@codesourcery.com>
6342
6343	* cp-tree.h (tsubst_copy_and_build): New declaration.
6344	* pt.c (tsubst_copy): Remove 'build_expr_from_tree' from comment.
6345	(tsubst_expr): Use 'tsubst_copy_and_build'.  Update initial comment.
6346	(tsubst_copy_and_build): New function.
6347
63482003-01-16  Mark Mitchell  <mark@codesourcery.com>
6349
6350	* cp-tree.h (lang_type_class): Remove is_partial_instantiation.
6351	(PARTIAL_INSTANTIATION_P): Remove.
6352	(IMPLICIT_TYPENAME_P): Likewise.
6353	(IMPLICIT_TYPENAME_TYPE_DECL_P): Likewise.
6354	(build_typename_type): Remove declaration.
6355	(parmlist_is_exprlist): Likewise.
6356	* decl.c (build_typename_type): Make it static, remove third
6357	parameter.
6358	(push_class_binding): Don't do implicit typename stuff.
6359	(make_typename_type): Likewise.
6360	(lookup_name_real): Likewise.
6361	(grokdeclarator): Don't try to convert declarations into
6362	initializations.  Don't do implicit typename stuff.
6363	(parmlist_is_exprlist): Remove.
6364	(xref_basetypes): Simplify.
6365	* decl2.c (grokfield): Don't try to convert declarations into
6366	initializations.
6367	(build_anon_union_vars): Do this while processing templates, too.
6368	(finish_anon_union): Likewise.
6369	* error.c (dump_type): Remove implicit typename handling.
6370	* parser.c (cp_parser_diagnose_invalid_type_name): New method.
6371	(cp_parser_primary_expression): Correct handling of names not
6372	found by unqualified name lookup in templates.
6373	(cp_parser_nested_name_specifier_opt): Avoid checking dependency
6374	of types when possible.
6375	(cp_parser_simple_declaration): Complain intelligently about some
6376	invalid declarations.
6377	(cp_parser_member_declaration): Likewise.
6378	(cp_parser_constructor_declarator_p): Don't check when we're in a
6379	function scope.
6380	* pt.c (instantiate_class_template): Remove
6381	PARTIAL_INSTANTIATION_P gunk.
6382	* search.c (lookup_field_r): Don't build implicit typenames.
6383	(marked_pushdecls_p): Don't enter dependent base types.
6384	(unmarked_pushdecls_p): Likewise.
6385	* semantics.c (begin_class_definition): Remove implicit typename
6386	stuff.
6387
63882003-01-16  Nathan Sidwell  <nathan@codesourcery.com>
6389
6390	PR c++/9212
6391	* parser.c (cp_parser_direct_declarator): If accepting either
6392	abstract or named, the name must be an unqualified-id.
6393
63942003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6395
6396	* class.c (layout_virtual_bases): Avoid signed/unsigned warning.
6397
63982003-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6399
6400	* decl2.c (check_classfn): Fix uninitialized warning.
6401	(build_anon_union_vars): Likewise.
6402	* pt.c (tsubst_copy): Likewise.
6403
64042003-01-14  Jeffrey D. Oldham  <oldham@codesourcery.com>
6405
6406	Further conform g++'s __vmi_class_type_info to the C++ ABI
6407	specification.
6408	* rtti.c (dfs_class_hint_mark): Do not set hints not specified by
6409	the specification.
6410	(class_hint_flags): Likewise.
6411
64122003-01-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6413
6414	* config-lang.in: Add semantics.c to gtfiles.
6415	* cp-tree.h (flagged_type_tree_s): Remove lookups field.
6416	(saved_scope): Likewise.
6417	(type_lookups): Remove.
6418	(deferred_access): New structure.
6419	(type_access_control): Remove.
6420	(save_type_access_control): Likewise.
6421	(reset_type_access_control): Likewise.
6422	(decl_type_access_control): Likewise.
6423	(push_deferring_access_checks): Declare.
6424	(resume_deferring_access_checks): Likewise.
6425	(stop_deferring_access_checks): Likewise.
6426	(pop_deferring_access_checks): Likewise.
6427	(get_deferred_access_checks): Likewise.
6428	(pop_to_parent_deferring_access_checks): Likewise.
6429	(perform_deferred_access_checks): Likewise.
6430	(perform_or_defer_access_check): Likewise.
6431	* decl.c (make_typename_type): Use perform_or_defer_access_check.
6432	(make_unbound_class_template): Likewise.
6433	(grokdeclarator): Don't call decl_type_access_control.
6434	* parser.c (cp_parser_context): Remove deferred_access_checks
6435	and deferring_access_checks_p fields.
6436	(cp_parser_context_new): Adjust.
6437	(cp_parser): Remove access_checks_lists.
6438	(cp_parser_defer_access_check): Remove.
6439	(cp_parser_start_deferring_access_checks): Remove.
6440	(cp_parser_stop_deferring_access_checks): Remove.
6441	(cp_parser_perform_deferred_access_checks): Remove.
6442	(cp_parser_nested_name_specifier_opt): Use new deferred access
6443	functions.
6444	(cp_parser_simple_declaration): Likewise.
6445	(cp_parser_template_id): Likewise.
6446	(cp_parser_function_definition): Likewise.
6447	(cp_parser_class_specifier): Likewise.
6448	(cp_parser_lookup_name): Likewise.
6449	(cp_parser_single_declaration): Likewise.
6450	(cp_parser_pre_parsed_nested_name_specifier): Likewise.
6451	(cp_parser_parse_tentatively): Likewise.
6452	(cp_parser_parse_definitely): Likewise.
6453	(yyparse): Likewise.
6454	(cp_parser_init_declarator): Remove access_checks parameter.
6455	Use new deferred access functions.
6456	(cp_parser_function_definition_from_specifiers_and_declarator):
6457	Likewise.
6458	(cp_parser_class_head): Remove deferring_access_checks_p and
6459	saved_access_checks parameters.  Use new deferred access functions.
6460	(cp_parser_member_specification_opt): Don't call
6461	reset_type_access_control.
6462	* search.c (type_access_control): Remove.
6463	* semantics.c: Include "gt-cp-semantics.h".
6464	(deferred_type_access_control): Remove.
6465	(deferred_access_stack): New variable.
6466	(deferred_access_free_list): Likewise.
6467	(push_deferring_access_checks): New function.
6468	(resume_deferring_access_checks): Likewise.
6469	(stop_deferring_access_checks): Likewise.
6470	(pop_deferring_access_checks): Likewise.
6471	(get_deferred_access_checks): Likewise.
6472	(pop_to_parent_deferring_access_checks): Likewise.
6473	(perform_deferred_access_checks): New function, adapted from
6474	cp_parser_perform_deferred_access_checks.
6475	(perform_or_defer_access_check): New function, adapted from
6476	cp_parser_defer_access_check.
6477	(current_type_lookups): Remove.
6478	(deferred_type_access_control): Likewise.
6479	(decl_type_access_control): Likewise.
6480	(save_type_access_control): Likewise.
6481	(reset_type_access_control): Likewise.
6482	(begin_function_definition): Adjust.
6483	(begin_class_definiton): Likewise.
6484
64852003-01-13  Jason Merrill  <jason@redhat.com>
6486
6487	PR c++/8748
6488	* class.c (build_base_path): Take the address before calling save_expr.
6489
6490	* call.c (build_user_type_conversion_1): Do set ICS_BAD_FLAG if
6491	all the ambiguous conversions are bad.
6492
6493	* class.c (maybe_warn_about_overly_private_class): Don't stop
6494	searching when we find a nonprivate method.
6495
6496	* typeck.c (build_class_member_access_expr): Use unary_complex_lvalue.
6497
64982003-01-12  Mark Mitchell  <mark@codesourcery.com>
6499
6500	* cp-tree.h (get_arglist_len_in_bytes): Remove.
6501
6502	PR c++/9264
6503	* parser.c (cp_parser_elaborated_type_specifier): Handle erroneous
6504	typeame types more robustly.
6505
65062003-01-11  Phil Edwards  <pme@gcc.gnu.org>
6507
6508	* parser.c:  Fix comment typos.
6509
65102003-01-10  Mark Mitchell  <mark@codesourcery.com>
6511
6512	PR c++/9099
6513	* parser.c (cp_parser_scope_through_which_access_occurs): Handle
6514	an object_type which is not a class type.
6515
65162003-01-10  Geoffrey Keating  <geoffk@apple.com>
6517
6518	* parser.c (cp_parser_late_parsing_for_member): Don't cast to void.
6519	(cp_parser_late_parsing_default_args): Likewise.
6520
65212003-01-10  Nathanael Nerode  <neroden@gcc.gnu.org>
6522
6523	* cfns.gperf: ANSIfy function declarations.
6524	* cfns.h: Regenerate.
6525	* cp-tree.h: ANSIfy function declarations.
6526
65272003-01-10  Mark Mitchell  <mark@codesourcery.com>
6528
6529	* cp-tree.h (reparse_absdcl_as_expr): Remove.
6530	(reparse_absdcl_as_casts): Likewise.
6531	(reparse_decl_as_expr): Likewise.
6532	(finish_decl_parsing): Likewise.
6533	* decl2.c (reparse_absdcl_as_expr): Remove.
6534	(reparse_absdcl_as_casts): Likewise.
6535	(repase_decl_as_expr): Likewise.
6536	(finish_decl_parsing): Likewise.
6537
6538	PR c++/9128
6539	PR c++/9153
6540	PR c++/9171
6541	* parser.c (cp_parser_pre_parsed_nested_name_specifier): New
6542	function.
6543	(cp_parser_nested_name_specifier_opt): Correct the
6544	check_dependency_p false.
6545	(cp_parser_postfix_expression): Fix formatting.
6546	(cp_parser_decl_specifier_seq): Avoid looking for constructor
6547	declarators when possible.
6548	(cp_parser_template_id): Avoid performing name-lookup when
6549	possible.
6550	(cp_parser_class_head): Do not count specializations when counting
6551	levels of templates.
6552	(cp_parser_constructor_declarator_p): Return immediately if
6553	there's no chance that the tokens form a constructor declarator.
6554	* rtti.c (throw_bad_typeid): Add comment.  Do not return an
6555	expression with reference type.
6556	(get_tinfo_decl_dynamic): Do not return an expression with
6557	reference type.
6558	(build_typeid): Add comment.  Do not return an expression with
6559	reference type.
6560	* typeck.c (build_class_member_access_expr): Improve handling of
6561	conditionals and comma-expressions as objects.
6562
65632003-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
6564
6565	* cfns.gperf: ANSIfy function declarations.
6566	* cfns.h: Regenerate.
6567	* cp-tree.h: ANSIfy function declarations.
6568	* parser.c: ANSIfy function declarations & definitions.
6569
6570	* decl.c (bad_specifiers): Fix parameter order error I introduced.
6571
65722003-01-09  Geoffrey Keating  <geoffk@apple.com>
6573
6574	Merge from pch-branch:
6575
6576	2003-01-09  Geoffrey Keating  <geoffk@apple.com>
6577
6578	Merge to tag pch-merge-20030102:
6579
6580	* semantics.c (finish_translation_unit): Don't call finish_file.
6581	* parser.c: Don't include ggc.h.
6582	(cp_lexer_new_main): Rename from cp_lexer_new, only create main lexer,
6583	read first token here.  Don't allow PCH files after the first
6584	token is read.
6585	(cp_lexer_new_from_tokens): Duplicate functionality from cp_lexer_new.
6586	(cp_lexer_get_preprocessor_token): Allow LEXER to be NULL.
6587	(cp_parser_new): Call cp_lexer_new_main before allocating GCed memory.
6588	(cp_parser_late_parsing_for_member): Don't duplicate call to
6589	cp_lexer_set_source_position_from_token.
6590	(cp_parser_late_parsing_default_args): Likewise.
6591	(yyparse): Call finish_file after clearing the_parser.
6592
6593	2002-12-11  Geoffrey Keating  <geoffk@apple.com>
6594
6595	* Make-lang.in: Remove $(GGC_H) from all dependencies.
6596	(CXX_TREE_H): Add $(GGC_H).
6597	* class.c: Don't include ggc.h.
6598	(field_decl_cmp): Make parameters be 'const void *' to match qsort.
6599	(method_name_cmp): Likewise.
6600	(resort_data): New variable.
6601	(resort_field_decl_cmp): New.
6602	(resort_method_name_cmp): New.
6603	(resort_sorted_fields): New.
6604	(resort_type_method_vec): New.
6605	(finish_struct_methods): Delete cast.
6606	(finish_struct_1): Delete cast.
6607	* cp-tree.h: Include ggc.h.
6608	(struct lang_type_class): Add reorder attribute to field `methods'.
6609	(union lang_decl_u3): Add reorder attribute to field `sorted_fields'.
6610	(resort_sorted_fields): New prototype.
6611	(resort_type_method_vec): New prototype.
6612	* call.c: Don't include ggc.h.
6613	* decl.c: Likewise.
6614	* decl2.c: Likewise.
6615	* init.c: Likewise.
6616	* lex.c: Likewise.
6617	* method.c: Likewise.
6618	* optimize.c: Likewise.
6619	* parse.y: Likewise.
6620	* pt.c: Likewise.
6621	* repo.c: Likewise.
6622	* search.c: Likewise.
6623	* semantics.c: Likewise.
6624	* spew.c: Likewise.
6625	* tree.c: Likewise.
6626
6627	* lang-specs.h: Remove comment.
6628
6629	2002-12-03  Geoffrey Keating  <geoffk@apple.com>
6630
6631	* cp-tree.h (struct operator_name_info_t): Mark for GTY machinery.
6632	(operator_name_info): Mark to be saved for PCH, specify size.
6633	(assignment_operator_name_info): Likewise.
6634
6635	2002-11-19  Geoffrey Keating  <geoffk@apple.com>
6636
6637	* decl.c (anon_cnt): Mark to be saved for PCH.
6638
6639	2002-10-25  Geoffrey Keating  <geoffk@apple.com>
6640
6641	* lex.c  (init_reswords): Delete now-untrue comment.
6642	Allocate ridpointers using GGC.
6643
6644	2002-10-04  Geoffrey Keating  <geoffk@apple.com>
6645
6646	* cp-tree.h (union lang_decl_u2): Add tags to all fields.
6647
6648	* g++spec.c (lang_specific_driver): Don't include standard
6649	libraries in `added'.
6650
6651	2002-08-27  Geoffrey Keating  <geoffk@redhat.com>
6652
6653	* decl2.c (finish_file): Call c_common_write_pch.
6654	* Make-lang.in (CXX_C_OBJS): Add c-pch.o.
6655
6656	2002-08-17  Geoffrey Keating  <geoffk@redhat.com>
6657
6658	* g++spec.c (lang_specific_driver): Treat .h files as C++ header
6659	files when using g++.
6660	* lang-specs.h: Handle compiling C++ header files.
6661
66622003-01-09  Jakub Jelinek  <jakub@redhat.com>
6663
6664	* decl.c (start_decl): Only check DECL_THREAD_LOCAL for VAR_DECLs.
6665
66662003-01-09  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6667
6668	* pt.c (push_access_scope_real): Call push_to_top_level for
6669	function in namespace scope.
6670	(pop_access_scope): Call pop_from_top_level for function in
6671	namespace scope.
6672
66732003-01-09  Jakub Jelinek  <jakub@redhat.com>
6674
6675	* decl.c (start_decl): Don't set DECL_COMMON for __thread variables.
6676
66772003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>
6678
6679	* Make-lang.in (c++.install-common, c++.install-man,
6680	c++.uninstall): Prepend $(DESTDIR) to destination paths in
6681	all (un)installation commands.
6682	(c++.install-common): Rewrite $(LN) commands to support
6683	DESTDIR with "ln" as well as with "ln -s".
6684
66852003-01-08  Jason Merrill  <jason@redhat.com>
6686
6687	* parser.c (cp_parser_primary_expression): See through explicitly
6688	scoped ALIAS_DECLs, too.
6689
66902003-01-08  Nathanael Nerode  <neroden@gcc.gnu.org>
6691
6692	* decl.c: Remove some #if 0 code.
6693
6694	* decl.c: ANSIfy function declarations.
6695
66962003-01-07  Mark Mitchell  <mark@codesourcery.com>
6697
6698	* parser.c (cp_parser_asm_definition): Correct handling of omitted
6699	operands.
6700
67012003-01-08  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6702
6703	PR c++/9030
6704	* decl.c (make_typename_type): Check access only when tf_error.
6705	(make_unbound_class_template): Likewise.
6706	* pt.c (saved_access_scope): New variable.
6707	(push_access_scope_real): New function.
6708	(push_access_scope): Likewise.
6709	(pop_access_scope): Likewise.
6710	(tsubst_default_argument): Use them.
6711	(instantiate_template): Likewise.
6712	(regenerate_decl_from_template): Likewise.
6713	(instantiate_decl): Likewise.
6714	(get_mostly_instantiated_function_type): Likewise.
6715
67162003-01-07  Nathanael Nerode <neroden@gcc.gnu.org>
6717
6718	* tree.c: Delete bogus #if 0 code.
6719
67202003-01-07  Andreas Schwab  <schwab@suse.de>
6721
6722	* class.c (layout_class_type): Don't use
6723	PCC_BITFIELD_TYPE_MATTERS if not defined.
6724
67252003-01-06  Mark Mitchell  <mark@codesourcery.com>
6726
6727	PR c++/9165
6728	* decl2.c (build_cleanup): Mark the object as used.
6729
6730	* pt.c (retrieve_local_specialization): Revert 2003-01-05 change.
6731	(hash_local_specialization): New function.
6732	(register_local_specialization): Revert 2003-01-05 change.
6733	(instantiate_decl): Use hash_local_specialization when creating
6734	the local_specializations table.
6735
6736	* decl2.c (mark_used): Do not synthesize thunks.
6737
6738	* class.c (layout_class_type): Correct handling of unnamed
6739	bitfields wider than their types.
6740
6741	PR c++/9189
6742	* parser.c (cp_parser): Remove default_arg_types.  Update
6743	documentation for unparsed_functions_queues.
6744	(cp_parser_late_parsing_default_args): Take a FUNCTION_DECL as the
6745	parameter.
6746	(cp_parser_new): Don't set parser->default_arg_types.
6747	(cp_parser_function_definition): Adjust usage of
6748	unparsed_funtions_queues.
6749	(cp_parser_class_specifier): Don't mess with
6750	parser->default_arg_types.  Handle default argument processing in
6751	a separate phase from function body processing.
6752	(cp_parser_template_declaration_after_export): Adjust usage of
6753	unparsed_functions_queues.
6754	(cp_parser_late_parsing_for_member): Do not handle default
6755	arguments.
6756
67572003-01-06  Nathan Sidwell  <nathan@codesourcery.com>
6758
6759	PR c++/9109
6760	* parser.c (cp_parser_declarator_kind): New enum.
6761	(cp_parser_declarator): Adjust.
6762	(cp_parser_direct_declarator): Adjust. Allow for either named or
6763	abstract declarator. Prefer abstract, if possible. Allow
6764	parenthesized function name.
6765	(cp_parser_condition): Adjust cp_parser_declarator call.
6766	(cp_parser_explicit_instantiation): Likewise.
6767	(cp_parser_init_declarator): Likewise.
6768	(cp_parser_type_id): Likewise.
6769	(cp_parser_function_definition): Likewise.
6770	(cp_parser_member_declaration): Likewise.
6771	(cp_parser_parameter_declaration): Use cp_parser_declarator to do
6772	the tentative parsing.
6773	(cp_parser_exception_declaration): Likewise.
6774
67752003-01-05  Mark Mitchell  <mark@codesourcery.com>
6776
6777	* parser.c (cp_parser_template_parameter): Adjust call to
6778	cp_parser_parameter_declaration.
6779	(cp_parser_parameter_declaration_list): Likewise.
6780	(cp_parser_parameter_declaration): Replace
6781	greater_than_is_operator_p with template_parm_p parameter.  Do not
6782	cache tokens for template default arguments.
6783
6784	* pt.c (retrieve_local_specialization): Use htab_find, not
6785	htab_find_with_hash.
6786	(register_local_specialization): Use htab_find_slot, not
6787	htab_find_slot_with_hash.
6788	(instantiate_decl): Pass a hash function to htab_create.
6789
67902003-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6791
6792	* parser.c (cp_parser_binary_expression,
6793	cp_parser_multiplicative_expression,
6794	cp_parser_additive_expression, cp_parser_shift_expression,
6795	cp_parser_relational_expression, cp_parser_equality_expression,
6796	cp_parser_and_expression, cp_parser_exclusive_or_expression,
6797	cp_parser_inclusive_or_expression,
6798	cp_parser_logical_and_expression, cp_parser_logical_or_expression,
6799	cp_parser_binary_expression): Const-ify.
6800
68012003-01-04  Mark Mitchell  <mark@codesourcery.com>
6802
6803	* method.c (use_thunk): Disable access control while building the
6804	body of the thunk.
6805
68062003-01-03  Nathanael Nerode  <neroden@gcc.gnu.org>
6807
6808	* cvt.c, decl.c, decl2.c: This is the C++ front end, not the C
6809	front end.
6810
68112003-01-03  Matt Austern  <austern@apple.com>
6812
6813	* cp-tree.h (struct lang_type_class): add field for key method
6814	(cp_global_trees): rename dynamic_classes to keyed_classes
6815	(key_method): add definition
6816	* class.c (finish_struct_1): compute class's key method, and add
6817	the class to keyed_classes list if there is no key method.
6818	* decl.c (finish_function): add class to keyed_classes list if we
6819	see a definition of the class's key method.
6820	* pt.c (instantiate_class_template): add template specialization
6821	of a dynamic class to keyed_classes list.
6822	* decl2.c (key_method): remove
6823	(finish_file): iterate only through keyed_classes list when
6824	deciding whether to emit vtables, remove class from its list after
6825	we do the emission.
6826
68272003-01-02  Jason Merrill  <jason@redhat.com>
6828
6829	* call.c (build_conditional_expr): Stabilize lvalues properly.
6830	* cvt.c (ocp_convert): Don't build NOP_EXPRs of class type.
6831	* tree.c (lvalue_p_1): Don't allow sloppy NOP_EXPRs as lvalues.
6832	Don't allow CALL_EXPR or VA_ARG_EXPR, either.
6833
6834	* call.c (convert_like_real): Call decl_constant_value for an
6835	IDENTITY_CONV even if there are no more conversions.
6836
6837	* cvt.c (build_up_reference): Don't push unnamed temps.
6838
6839	* decl2.c (do_namespace_alias): Namespace aliases are DECL_EXTERNAL.
6840
6841	* dump.c (cp_dump_tree): Don't try to dump class-specific fields
6842	for a backend struct.
6843
6844	* except.c (wrap_cleanups_r, build_throw): Make
6845	MUST_NOT_THROW_EXPRs void.
6846	* init.c (expand_default_init): Update to handle MUST_NOT_THROW_EXPR.
6847
6848	* init.c (build_vec_delete_1): Pre-evaluate the base address.
6849
6850	* init.c (get_temp_regvar): Simplify logic.
6851
6852	* tree.c (cp_copy_res_decl_for_inlining): Only do debug tweaks if
6853	our replacement is a decl.
6854
6855	* decl.c (cp_make_fname_decl): Push the decls inside the
6856	outermost scope.
6857
68582003-01-03  Nathan Sidwell  <nathan@codesourcery.com>
6859
6860	PR c++/45, c++/3784
6861	* tree.c (cp_tree_equal, TEMPLATE_PARM_INDEX): The types must be
6862	the same too.
6863
68642003-01-03  Graham Stott  <graham.stott@btinternet.com>
6865
6866	* parser.c (struct cp_parser): Add access_checks_lists field
6867	(cp_parser_simple_declaration): Use.
6868	(cp_parser_init_declarator): Likewise.
6869
68702003-01-02  Mark Mitchell  <mark@codesourcery.com>
6871
6872	* parser.c (cp_parser_declaration): Accept the __extension__
6873	keyword before the declaration.
6874
6875	PR c++/2843
6876	* parser.c (cp_parser_parameter_declaration): Allow attributes to
6877	appear after the declarator.
6878
6879	* call.c (build_new_method_call): Fix typo in message format
6880	string.
6881
68822003-01-02  Mark Mitchell  <mark@codesourcery.com>
6883
6884	* parser.c (cp_lexer_next_token_is): Declare it inline.
6885	(cp_lexer_set_source_position_from_token): Likewise.
6886	(cp_lexer_debugging_p): Likewise.
6887	(cp_parser_parsing_tentatively): Likewise.
6888	(cp_parser_nested_name_specifier_opt): Reduce the number of calls
6889	to the cp_lexer_peek_token.
6890
6891	* parser.c (cp_parser_sizeof_operand): Do not evaluate the
6892	expression.
6893
68942003-01-02  Steven Bosscher <s.bosscher@student.tudelft.nl>
6895
6896	* cp/except.c, cp/expr.c, cp/friend.c, cp/g++spec.c,
6897	cp/lang-options.h, cp/lang-specs.h, cp/lex.h, cp/ptree.c,
6898	cp/repo.c: Fix copyright years.
6899
69002003-01-01  Neil Booth  <neil@daikokuya.co.uk>
6901
6902	* lex.c: Remove superfluous include of cpplib.h.
6903	(CONSTRAINT): Define without conditions.
6904	(init_cp_pragma): Use c_register_pragma.
6905
6906