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