OSDN Git Service

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