OSDN Git Service

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