]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/gcc/cp/ChangeLog
This commit was generated by cvs2svn to compensate for changes in r155518,
[FreeBSD/FreeBSD.git] / contrib / gcc / cp / ChangeLog
1 2005-05-19  Release Manager
2
3         * GCC 3.4.4 released.
4
5 2005-05-08  Nathan Sidwell  <nathan@codesourcery.com>
6
7         PR c++/21427
8         Backport 2005-03-01  Nathan Sidwell  <nathan@codesourcery.com>
9         * class.c (update_vtable_entry_for_fn): Don't crash on invalid
10         covariancy. 
11
12         * cp-tree.h (THUNK_TARGET): Expand comment.
13         * method.c (use_thunk): Make sure we also use the target, if that
14         is a thunk.
15
16         Backport 2005-02-11  Nathan Sidwell  <nathan@codesourcery.com>
17         * class.c (update_vtable_entry_for_fn): Walk the covariant's binfo
18         chain rather than using lookup_base.
19
20 2005-05-04  Mark Mitchell  <mark@codesourcery.com>
21
22         Backport:
23         2004-12-21  Mark Mitchell  <mark@codesourcery.com>
24         PR c++/19034
25         * tree.c (cp_tree_equal): Handle OVERLOAD.
26
27 2005-05-02  Mark Mitchell  <mark@codesourcery.com>
28
29         Revert:
30         2005-05-01  Mark Mitchell  <mark@codesourcery.com>
31         * typeck.c (unary_complex_lvalue): In a template, always refuse
32         simplifications.
33
34 2005-05-01  Mark Mitchell  <mark@codesourcery.com>
35
36         Backport:
37         2005-02-22  Mark Mitchell  <mark@codesourcery.com>
38         PR c++/19991
39         * init.c (decl_constant_value): Iterate if the value of a decl
40         is itself a constant.
41
42 2005-05-01  Mark Mitchell  <mark@codesourcery.com>
43
44         Backport:
45         2004-12-22  Mark Mitchell  <mark@codesourcery.com>
46         PR c++/18464
47         * call.c (build_this): In templates, do not bother with
48         build_unary_op.
49         * typeck.c (unary_complex_lvalue): In a template, always refuse
50         simplifications.
51
52 2005-04-25  Roger Sayle  <roger@eyesopen.com>
53             Mark Mitchell  <mark@codesourcery.com>
54
55         PR c++/20995
56         Partial backport from mainline.
57         2004-09-27  Mark Mitchell  <mark@codesourcery.com>
58         * tree.c (fold_if_not_in_template): New function.
59         * cp-tree.h (fold_if_not_in_template): Prototype here.
60         * call.c (build_conditional_expr): Use fold_if_not_in_template.
61         * typeck.c (build_binary_op): Likewise.
62
63 2005-04-16  Mark Mitchell  <mark@codesourcery.com>
64
65         PR c++/21025
66         * typeck.c (cxx_sizeof_or_alignof_type): Check whether the type to
67         which sizeof/alignof is dependent, rather than just whether we are
68         processing_template_decl.
69         
70 2005-04-06  Jason Merrill  <jason@redhat.com>
71
72         PR c++/19312
73         * tree.c (stabilize_init): Don't bother trying to stabilize
74         something with no side-effects.
75
76 2005-04-04  Mark Mitchell  <mark@codesourcery.com>
77
78         PR c++/20679
79         * parser.c (cp_parser_template_name): Fix thinko.
80
81 2005-04-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
82
83         PR c++/18644
84         * call.c (build_new_op): Remove check for -Wsynth.
85
86 2005-03-21  Paolo Carlini  <pcarlini@suse.de>
87
88         PR c++/20147
89         * semantics.c (finish_stmt_expr_expr): Return immediately
90         if error_operand_p (expr).
91
92 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
93
94         PR c++/20240
95         * decl.c (decls_match): Compare context of VAR_DECL.
96
97 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
98
99         PR c++/20333
100         * parser.c (cp_parser_postfix_expression) <case RID_TYPENAME>:
101         Check the return value of cp_parser_nested_name_specifier.
102
103 2005-03-08  Mark Mitchell  <mark@codesourcery.com>
104
105         PR c++/20142
106         * init.c (build_vec_init): When determining whether or not the
107         element type has an asignment operator, look through all array
108         dimensions. 
109
110 2005-03-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
111
112         PR c++/19311
113         * init.c (build_offset_ref): Don't build non-dependent SCOPE_REF.
114         * pt.c (build_non_dependent_expr): Don't build NON_DEPENDENT_EXPR
115         for OFFSET_TYPE.
116         * typeck.c (build_x_unary_op): Don't build non-dependent SCOPE_REF.
117         Also set PTRMEM_OK_P for NON_DEPENDENT_EXPR.
118         (build_unary_op): Handle building ADDR_EXPR of OFFSET_REF inside
119         template.
120
121 2005-03-02  Alexandre Oliva  <aoliva@redhat.com>
122
123         * name-lookup.c (push_overloaded_decl): Don't error if the new
124         decl matches the old one.
125         * decl.c (redeclaration_error_message): Likewise.
126
127 2005-02-24  Jakub Jelinek  <jakub@redhat.com>
128
129         PR c++/20175
130         * decl.c (reshape_init): Don't warn about missing braces if STRING_CST
131         initializes a char/wchar_t array.
132
133 2005-02-21  Alexandre Oliva  <aoliva@redhat.com>
134
135         PR c++/20028
136         * class.c (finish_struct): Initialize TYPE_SIZE_UNIT of a
137         template along with TYPE_SIZE.
138
139 2005-02-14  Mark Mitchell  <mark@codesourcery.com>
140
141         * decl.c (reshape_init): Use explicit quotes in error message
142         instead of %q.
143         
144 2005-02-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
145
146         PR c++/14479
147         PR c++/19487
148         * pt.c (maybe_check_template_type): Remove.
149         * cp-tree.h (maybe_check_template_type): Remove prototype.
150         * name-lookup.c (maybe_process_template_type_declaration): Don't
151         use maybe_check_template_type.
152
153 2005-02-10  Mark Mitchell  <mark@codesourcery.com>
154
155         PR c++/19755
156         * decl.c (reshape_init): Issue warnings about missing braces.
157
158 2005-02-09  Mark Mitchell  <mark@codesourcery.com>
159
160         * parser.c (cp_parser_unqualified_id): Initialize type_decl.
161
162         PR c++/19787
163         * call.c (initialize_reference): Robustify.
164
165         PR c++/19762
166         * parser.c (cp_parser_unqualified_id): Avoid creating destructor
167         names with invalid types.
168
169         PR c++/19739
170         * parser.c (cp_parser_attributes_list): Allow empty lists.
171
172 2005-02-08  Mark Mitchell  <mark@codesourcery.com>
173
174         PR c++/19733
175         * cvt.c (convert_to_void): Issue errors about pseudo-destructor
176         expressions.
177
178 2005-02-01  Alexandre Oliva  <aoliva@redhat.com>
179
180         PR c++/18757
181         PR c++/19366
182         PR c++/19499
183         * parser.c (cp_parser_template_id): Revert 2004-12-09's patch.
184         Issue an error when creating the template id.
185         * pt.c (fn_type_unification): Return early if the explicit
186         template arg list is an error_mark_node.
187
188 2005-01-27  J"orn Rennecke <joern.rennecke@st.com>
189
190         PR c++/18370
191         * parser.c (cp_parser_initializer_clause): Initialize *non_constant_p.
192
193 2005-01-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
194
195         PR c++/19375
196         * semantics.c (finish_id_expression): Disable access checking for
197         already lookuped FIELD_DECL.
198
199 2005-01-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
200
201         PR c++/19258
202         * parser.c (cp_parser_late_parsing_default_args): Handle friend
203         defined in class.
204         * pt.c (push_access_scope, pop_access_scope): Likewise.
205
206 2005-01-15  Jakub Jelinek  <jakub@redhat.com>
207
208         PR c++/19263
209         * typeck2.c (split_nonconstant_init_1) <case VECTOR_TYPE>: Put a copy
210         of CONSTRUCTOR's node into MODIFY_EXPR, as the original is modified.
211         Store code to *pcode.
212
213 2004-12-28  Jakub Jelinek  <jakub@redhat.com>
214
215         PR c++/18384, c++/18327
216         * decl.c (reshape_init_array): Use UHWI type for max_index_cst
217         and index.  Convert max_index to size_type_node if it isn't
218         host_integerp (, 1).
219
220 2004-12-23  Alexandre Oliva  <aoliva@redhat.com>
221
222         PR c++/18962
223         * pt.c (check_explicit_specialization): Use the argument list from
224         the definition in a template function specialization definition.
225
226 2004-12-23  Alexandre Oliva  <aoliva@redhat.com>
227
228         PR c++/18757
229         * parser.c (cp_parser_template_id): Don't create a CPP_TEMPLATE_ID
230         if parsing failed.
231
232 2004-12-17  Nathan Sidwell  <nathan@codesourcery.com>
233
234         PR c++/18975
235         * method.c (do_build_copy_constructor): Refactor. Don't const
236         qualify a mutable field.
237         (do_build_assign_ref): Likewise.
238
239 2004-12-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
240
241         PR c++/18731
242         * parser.c (cp_parser_class_head): Reject typedef-name in class head.
243
244 2004-12-09  Nathan Sidwell  <nathan@codesourcery.com>
245
246         PR c++/16681
247         * init.c (build_zero_init): Build a RANGE_EXPR for an array
248         initializer.
249
250 2004-12-08  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
251
252         PR c++/18100
253         * name-lookup.c (push_class_level_binding): Diagnose nested
254         class template with the same name as enclosing class.
255
256 2004-12-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
257
258         PR c++/17011, c++/17971
259         * pt.c (tsubst_copy) <FIELD_DECL case>: Check and diagnose
260         invalid field.
261         (tsubst_copy_and_build) <COMPONENT_REF case>: Check
262         error_mark_node after member substitution.
263         * semantics.c (finish_id_expression): Call
264         finish_non_static_data_member for dependent FIELD_DECL.
265
266 2004-12-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
267
268         PR c++/18123
269         * parser.c (cp_parser_type_specifier): Don't create new enum
270         type if it is not in the form 'enum [identifier] { [...] };'.
271         Catch template declaration of enum. 
272
273 2004-12-01  Nathan Sidwell  <nathan@codesourcery.com>
274
275         PR c++/17431
276         * call.c (standard_conversion): Add FLAGS parameter. Do not allow
277         derived to base conversion when checking constructor
278         accessibility.
279         (implicit_conversion): Pass FLAGS to standard_conversion.
280         (check_constructir_callable): Disallow conversion functions.
281
282 2004-11-12  Mark Mitchell  <mark@codesourcery.com>
283
284         PR c++/18389
285         * decl.c (start_decl): Make sure to set *pop_scope_p.  Return
286         error_mark_node to indicate errors.
287
288         PR c++/18436
289         * pt.c (tsubst_copy_and_build): Do not do Koenig lookup when an
290         unqualified name resolves to a member function.
291
292         PR c++/18407
293         * pt.c (tsubst_copy_and_build): Handle qualified names used from a
294         derived class correctly.
295
296 2004-11-04  Release Manager
297
298         * GCC 3.4.3 released.
299
300 2004-10-31  Mark Mitchell  <mark@codesourcery.com>
301
302         PR c++/15172
303         * typeck2.c (store_init_value): Use split_nonconstant_init even
304         for types that require construction.
305         
306 2004-10-28  Mark Mitchell  <mark@codesourcery.com>
307
308         PR c++/17132
309         * pt.c (instantiate_class_template): Increment
310         processing_template_decl when substituting into a member class
311         template.
312
313 2004-10-27  Mark Mitchell  <mark@codesourcery.com>
314
315         PR c++/18140
316         * parser.c (cp_parser_next_token_ends_template_argument_p): Do not
317         include ">>".
318
319 2004-10-27  Andrew Pinski  <pinskia@physics.uc.edu>
320
321         PR c++/13560
322         * error.c (cp_error_at): Output the context as it might be
323         different file as the other location.
324
325 2004-10-26  Mark Mitchell  <mark@codesourcery.com>
326
327         PR c++/18093
328         * search.c (current_scope): Return the innermost non-block scope,
329         not the innermost non-block, non-namespace scope.
330         (at_namespace_scope_p): Adjust accordingly.
331         (dfs_accessible_post): Do not pass namespaces to is_friend.
332         (dfs_walk_once_accessible_r): Likewise.
333         * decl.c (grokvardecl): Adjust call to current_scope.
334         (build_enumerator): Likewise.
335         * parser.c (cp_parser_using_declaration): Likewise.
336         (cp_parser_direct_declarator): Use at_namespace_scope_p instead of
337         current_scope.
338         (cp_parser_class_head): Adjust call to current_scope.
339         * name-lookup.c (do_namespace_alias): Set the DECL_CONTEXT for the
340         alias.
341
342         PR c++/18020
343         * pt.c (tusbst_copy_and_build): Resolve enumeration constants to
344         their underlying values.
345
346 2004-10-17  Andrew Pinski  <pinskia@physics.uc.edu>
347
348         PR c++/16301
349         * name-lookup.c (parse_using_directive): If we have a
350         error_mark_node, do not set the decl namespace associations
351         on it.
352
353 2004-10-14  Mark Mitchell  <mark@codesourcery.com>
354
355         PR c++/17976
356         * decl.c (cp_finish_decl): Do not call expand_static_init more
357         than once for a single variable.
358
359 2004-10-11  Mark Mitchell  <mark@codesourcery.com>
360
361         PR c++/15786
362         * parser.c (cp_parser_declarator): Add member_p parameter. 
363         (cp_parser_condition): Adjust calls to cp_parser_declarator.
364         (cp_parser_explicit_instantiation): Likewise.
365         (cp_parser_init_declarator): Likewise.
366         (cp_parser_direct_declarator): Add member_p parameter.  Do not
367         parse tentatively when parsing the parameters to a member.
368         (cp_parser_type_id): Adjust calls to cp_parser_declarator.
369         (cp_parser_parameter_declaration): Likewise.
370         (cp_parser_member_declaration): Likewise.
371         (cp_parser_exception_declaration): Likewise.
372
373 2004-10-11  Mark Mitchell  <mark@codesourcery.com>
374
375         * decl2.c (finish_anon_union): Robustify.
376
377 2004-10-10  Mark Mitchell  <mark@codesourcery.com>
378
379         PR c++/17393
380         * decl.c (grokdeclarator): Robustify error-recovery on invalid
381         declarations.
382
383 2004-10-09  Mark Mitchell  <mark@codesourcery.com>
384
385         PR c++/17821
386         * parser.c (cp_parser_postfix_dot_deref_expression): If the
387         pseduo-destructor-name production does not work, fall back to the
388         ordinary production.
389
390         PR c++/17826
391         * tree.c (cp_tree_equal): Handle a BASELINK.
392
393 2004-10-09  Mark Mitchell  <mark@codesourcery.com>
394
395         PR c++/17524
396         * cp-tree.h (check_var_type): New function.
397         * decl.c (check_var_type): New function, split out from ...
398         (grokdeclarator): ... here.
399         * pt.c (tsubst_decl): Use check_var_type.
400
401         PR c++/17685
402         * decl.c (grokdeclarator): Disallow declarations of operators as
403         non-functions.
404         
405 2004-10-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
406
407         PR c++/17868
408         * error.c (dump_expr): Add missing case for RDIV_EXPR.
409
410 2004-10-08  Nathan Sidwell  <nathan@codesourcery.com>
411
412         PR c++/17829
413         * parser.c (cp_parser_postfix_expression): Inhibit Koenig when
414         unqualified lookup finds a member function.
415
416 2004-09-28  Roger Sayle  <roger@eyesopen.com>
417
418         PR driver/17537
419         * g++spec.c (lang_specific_driver): Unrecognized libraries, other
420         than -lc and -lm, may require linking against libstc++.
421
422 2004-09-27  Mark Mitchell  <mark@codesourcery.com>
423
424         PR c++/17585
425         * cp-tree.h (shared_member_p): Declare.
426         * search.c (shared_member_p): Give it external linkage.
427         * semantics.c (finish_qualified_id_expr): Use it.
428         (finish_id_expression): Likewise.
429
430 2004-09-22  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
431
432         PR c++/14179
433         * parser.c (cp_parser_initializer): Speed up parsing of simple
434         literals as initializers.
435
436 2004-09-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
437
438         PR c++/14179
439         * decl.c (reshape_init): Extract array handling into...
440         (reshape_init_array): New function. Use integers instead of trees
441         for indices. Handle out-of-range designated initializers.
442
443 2004-09-16  Mark Mitchell  <mark@codesourcery.com>
444
445         PR c++/17501
446         * parser.c (cp_parser_nested_name_specifier): Do not resolve
447         typename types if the user explicitly said "typename".
448
449 2004-09-13  Mark Mitchell  <mark@codesourcery.com>
450
451         PR c++/16162
452         * parser.c (cp_parser_id_expression): Correct value for
453         is_declarator.
454         (cp_parser_nested_name_specifier_opt): Look through typenames as
455         necessary.
456         (cp_parser_template_name): Honor check_dependency_p.
457
458 2004-09-13  Mark Mitchell  <mark@codesourcery.com>
459
460         PR c++/17327
461         * pt.c (unify): Add ENUMERAL_TYPE case.  Replace sorry with
462         gcc_unreacable.
463
464 2004-09-06  Release Manager
465
466         * GCC 3.4.2 released.
467
468 2004-08-25  Roger Sayle  <roger@eyesopen.com>
469
470         PR middle-end/16693
471         PR tree-optimization/16372
472         * decl.c (finish_enum): Make the precision of the enumerated type
473         the same width as the underlying integer type.
474
475 2004-08-24  Jason Merrill  <jason@redhat.com>
476
477         PR c++/16851
478         * tree.c (stabilize_init): See through a COMPOUND_EXPR.
479
480         PR c++/15461
481         * semantics.c (nullify_returns_r): Replace a DECL_STMT
482         for the NRV with an INIT_EXPR.
483
484 2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
485
486         PR c++/16889
487         * (is_subobject_of_p): Resurrect & optimize.
488         (lookup_field_r): Use it.
489
490 2004-08-24  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
491
492         PR c++/16706
493         * search.c (friend_accessible_p): Increment processing_template_decl
494         when deal with TEMPLATE_DECL of SCOPE.
495
496 2004-08-23  Janis Johnson  <janis187@us.ibm.com>
497
498         Backports from mainline:
499
500         2004-02-27  Ziemowit Laski  <zlaski@apple.com>
501         2004-03-24  Ziemowit Laski  <zlaski@apple.com>
502
503         * Make-lang.in (cp/mangle.o): Depend on $(TARGET_H).
504         * mangle.c (write_type): Add call to 'mangle_fundamental_type'
505         target hook.
506         * tree.c (pod_type_p): Treat VECTOR_TYPEs as PODs.
507
508 2004-08-19  Mark Mitchell  <mark@codesourcery.com>
509
510         PR c++/15890
511         * pt.c (push_template_decl_real): Disallow template allocation
512         functions with fewer than two parameters.
513
514 2004-08-18  Mark Mitchell  <mark@codesourcery.com>
515
516         PR c++/17068
517         * pt.c (dependent_template_p): Treat IDENTIFIER_NODEs as
518         dependent.
519
520 2004-08-17  Mark Mitchell  <mark@codesourcery.com>
521
522         PR c++/16246
523         * pt.c (unify): Make sure that non-type arguments have the same
524         type as the corresponding parameter.
525
526 2004-08-12  Mark Mitchell  <mark@codesourcery.com>
527
528         PR c++/16273
529         * class.c (count_depth_data): New type.
530         (dfs_depth_post): New function.
531         (dfs_depth_q): Likewise.
532         (find_final_overrider_data_s): Change type of vpath.
533         Add vpath_list.
534         (dfs_find_final_overrider_1): New function.
535         (dfs_find_final_overrider): Use it.
536         (dfs_find_final_overrider_q): Adjust use of vpath.
537         (dfs_find_final_overrider_post): Likewise.
538         (find_final_overrider): Use dfs_depth.  Allocate and deallocate
539         vpath_list.
540
541 2004-08-12 Jan Beulich <jbeulich@novell.com>
542
543         * parser.c (cp_parser_asm_definition): Properly consume scope operator
544         tokens preceding the clobbers. Don't check for scope operator
545         following inputs. Simplify inputs handling to match that now used for
546         clobbers.
547
548 2004-08-11  Mark Mitchell  <mark@codesourcery.com>
549
550         PR c++/16698
551         * except.c (build_throw): Allocate cleanup_type and the function
552         for __cxa_throw separately.
553
554 2004-08-11  Mark Mitchell  <mark@codesourcery.com>
555
556         PR c++/16717
557         * semantics.c (expand_body): Do not update static_ctors and
558         static_dtors here.
559         (expand_or_defer_fn): Do it here, instead.
560
561         PR c++/16853
562         * call.c (standard_conversion): Do not accept conversions between
563         pointers to members if the class types are unrelated.
564
565         PR c++/16870
566         * pt.c (tsubst): Just return the unknown_type_node.
567
568         PR c++/16964
569         * parser.c (cp_parser_class_specifier): Robustify.
570
571         PR c++/16904
572         * pt.c (tsubst_copy_and_build): Complain about invalid
573         qualification.
574
575         PR c++/16929
576         * pt.c (tsubst_default_argument): Clear out current_class_ptr and
577         current_class_ref while tsubsting.
578         
579 2004-08-01  Mark Mitchell  <mark@codesourcery.com>
580
581         PR c++/16224
582         * name-lookup.c (decl_namespace): Remove.
583         (current_decl_namespace): Use decl_namespace_context instead of
584         decl_namespace.
585         (push_decl_namespace): Likewise.
586         (arg_assoc_class): Likewise.
587         (arg_assoc_type): Likewise.
588         * pt.c (check_specialization_namespace): New function.
589         (maybe_process_partial_specialization): Use it.
590         (register_specialization): Likewise.
591
592 2004-08-01  Mark Mitchell  <mark@codesourcery.com>
593
594         PR c++/16489
595         * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): New macro.
596         * call.c (null_ptr_cst_p): Handle variables with constant
597         initializers.
598         * pt.c (convert_nontype_argument): Use
599         DECL_INTEGRAL_CONSTANT_VAR_P.
600         * semantics.c (finish_id_expression): Likewise.
601
602         PR c++/16529
603         * decl.c (duplicate_decls): Reject duplicate namespace
604         declarations.
605
606         PR c++/16810
607         * typeck.c (build_ptrmemfunc): Loosen assertion.
608
609 2004-07-28  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
610
611         PR c++/13092
612         * init.c (build_offset_ref): Build SCOPE_REF with non-null
613         TREE_TYPE for non-dependent names.
614         * typeck.c (build_x_unary_op): Handle non-dependent SCOPE_REF.
615         * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
616         unknown_type_node as its TREE_TYPE.
617         * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
618         * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
619         (dump_expr) <SCOPE_REF case>: Likewise.
620
621 2004-07-21  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
622
623         PR c++/16175
624         * error.c (dump_type) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Output
625         cv qualifier.
626
627 2004-07-20  Mark Mitchell  <mark@codesourcery.com>
628
629         (cp_parser_simple_type_specifier): Fix typo.
630         
631         PR c++/16637
632         * parser.c (cp_parser_simple_type_specifier): Do not record usage
633         of globally-qualified names.
634
635 2004-07-12  Andrew Pinski  <apinski@apple.com>
636
637         PR c++/16475
638         Revert:
639         2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>
640                 PR c++/16276
641                 * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
642                 is not public.
643
644
645 2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>
646
647         PR c++/16276
648         * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
649         is not public.
650
651 2004-07-01  Release Manager
652
653         * GCC 3.4.1 released.
654
655 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
656
657         PR C++/16174
658         * call.c (build_temp): Declare.
659         (check_constructor_callable): New.
660         (reference_binding): Only set CHECK_COPY_CONSTRUCTOR if not for
661         CONSTRUCTOR_CALLABLE.
662         (convert_like_real, initialize_reference): Use
663         check_constructor_callable.
664         * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): New.
665         (LOOKUP_*): Renumber.
666
667 2004-06-25  Jan Hubicka  <jh@suse.cz>
668
669         PR C++/14865
670         * decl2.c (maybe_emit_vtables):  Always import_export_vtable for the
671         reachability analysis.
672
673 2004-06-22  Jan Hubicka  <jh@suse.cz>
674
675         PR C++/14950
676         * pt.c (instantiate_decl): Clean TI_PENDING_TEMPLATE_FLAG before
677         expanding the function.
678
679 2004-06-21  Nathan Sidwell  <nathan@codesourcery.com>
680
681         PR c++/3518
682         * pt.c (check_cv_quals_for_unify): Ignore bogus CV quals at outer
683         level.
684         
685         PR c++/14007
686         * pt.c (check_cv_quals_for_unify): Correct logic for disallowed
687         cv-qualifier unification.
688         * tree.c (cp_build_qualified_type_real): Renable DR295 logic.
689
690 2004-06-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
691
692         PR c++/15967
693         * search.c (build_new_1): Robustify.
694
695 2004-06-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
696
697         PR c++/15947
698         * parser.c (cp_parser_template_name): Ctors/dtors never need a
699         template keyword to disambiguate.
700
701 2004-06-14  Mark Mitchell  <mark@codesourcery.com>
702
703         PR c++/15096
704         * decl.c (grokdeclarator): Ignore pointer-to-members when
705         computing template depth.
706
707         PR c++/14930
708         * name-lookup.c (pushtag): Do not try to put class declarations in
709         explicit specialization scopes.
710
711 i2004-06-11  Mark Mitchell  <mark@codesourcery.com>
712
713         PR c++/15862
714         * name-lookup.c (unqualified_namespace_lookup): Do not ignore type
715         bindings for undeclared built-ins.
716
717 2004-06-10  Jason Merrill  <jason@redhat.com>
718
719         PR c++/15875
720         Revert:
721         2004-06-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
722         * init.c (build_offset_ref): Build SCOPE_REF with non-null
723         TREE_TYPE for non-dependent names.
724         * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
725         unknown_type_node as its TREE_TYPE.
726         * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
727         * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
728         (dump_expr) <SCOPE_REF case>: Likewise.
729
730 2004-06-10  Mark Mitchell  <mark@codesourcery.com>
731
732         PR c++/15227
733         * parser.c (cp_parser_direct_declarator): Robustify.
734
735         PR c++/15877
736         * pt.c (tsubst_copy): Use decl_constant_value on enumeration
737         constants in non-dependent contexts.
738
739         PR c++/14211
740         PR c++/15076
741         * typeck.c (build_static_cast): Wrap casts in NON_LVALUE_EXPR when
742         necessary.
743
744 2004-06-09  Mark Mitchell  <mark@codesourcery.com>
745
746         Revert:
747         PR c++/15815
748         2004-06-07  Mark Mitchell  <mark@codesourcery.com>
749         * lex.c (handle_pragma_interface): Deprecate.
750         (handle_pragma_implementation): Likewise.
751
752 2004-06-07  Dan Kegel  <dank@kegel.com>
753
754         PR c++/14808
755         * method.c (make_alias_for_thunk, use_thunk): Use TARGET_IS_PE_COFF
756         instead of __CYWGIN__ and __MINGW32__.
757
758 2004-06-07  Mark Mitchell  <mark@codesourcery.com>
759
760         PR c++/15815
761         * lex.c (handle_pragma_interface): Deprecate.
762         (handle_pragma_implementation): Likewise.
763
764         PR c++/15766
765         * parser.c (cp_parser_iteration_statement): Fix typo in error
766         message.
767
768         PR c++/14777
769         * pt.c (tsubst_default_argument): Do not defer access checks
770         while substituting into the default argument.
771
772         PR c++/15554
773         * pt.c (tsubst_copy): Do not try to substitute for an enumeration
774         constant in a non-dependent context. 
775         
776         PR c++/15057
777         * except.c (build_throw): Ensure that temp_expr has been
778         initialized.
779
780 2004-06-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
781
782         PR c++/15503
783         * parser.c (cp_parser_mem_initializer_id): Gracefully reject
784         'typename', and accept 'template'.
785
786 2004-06-01  Jason Merrill  <jason@redhat.com>
787
788         PR c++/15142
789         * call.c (call_builtin_trap): Remove type parm.
790         (convert_arg_to_ellipsis): Change a non-POD argument to integer type.
791         (build_x_va_arg): Dereference a null pointer for a non-POD argument.
792
793 2004-06-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
794
795         PR c++/13092
796         * init.c (build_offset_ref): Build SCOPE_REF with non-null
797         TREE_TYPE for non-dependent names.
798         * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
799         unknown_type_node as its TREE_TYPE.
800         * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
801         * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
802         (dump_expr) <SCOPE_REF case>: Likewise.
803
804 2004-06-01  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
805
806         PR c++/14932
807         * parser.c (cp_parser_postfix_expression): Allow subscript
808         operator in offsetof.
809
810 2004-05-31  Mark Mitchell  <mark@codesourcery.com>
811
812         PR c++/15701
813         * friend.c (add_friend): Do not try to perform access checks for
814         functions from dependent classes.
815
816         PR c++/15742
817         * call.c (build_over_call): Set
818         current_function_returns_abnormally even in template functions.
819
820         PR c++/15696
821         * cp-tree.h (invalid_nonstatic_memfn_p): New function.
822         * cvt.c (convert_to_void): Use it.
823         * typeck.c (invalid_nonstatic_memfn_p): New function.
824         (decay_conversion): Use it.
825
826         PR c++/15625
827         * pt.c (tsubst_decl): Set DECL_FRIEND_CONTEXT for instantiated
828         templates.
829
830         PR c++/15629
831         * name-lookup.c (arg_assoc_class): Do not find template
832         specializations.
833
834         PR c++/15209
835         * tree.c (lvalue_p_1): Only consider the right-hand side of "."
836         expressions when determining whether or not an express is packed.
837
838 2004-05-28  Mark Mitchell  <mark@codesourcery.com>
839
840         PR c++/15083
841         * decl2.c (delete_sanity): Set TREE_SIDE_EFFECTS on a DELETE_EXPR,
842         even in a templat.e
843         * init.c (build_new): Likewise.
844
845         PR c++/15640
846         * name-lookup.c (arg_assoc): Robustify.
847
848         PR c++/15471
849         * typeck.c (unary_complex_lvalue): Use context_for_name_lookup
850         when determining the scope to use for a pointer to member.
851         (lookup_anon_field): Give it external linkage.
852         * cp-tree.h (lookup_anon_field): Declare it.
853         * expr.c (cplus_expand_constant): Use it.
854
855         PR c++/14668
856         * parser.c (cp_parser_simple_type_specifier): Call
857         maybe_note_name_used_in_class.
858
859 2004-05-23  Mark Mitchell  <mark@codesourcery.com>
860
861         PR c++/15044
862         * parser.c (cp_parser_class_head): Robustify.
863
864         PR c++/15317
865         * parser.c (cp_parser_decl_specifier_seq): Correct error in
866         comment.
867         (cp_parser_constructor_declarator_p): Treat attributes
868         as decl-specifiers.
869
870         PR c++/15329
871         * typeck.c (build_unary_op): Do not attempt to resolve casts to
872         base classes in templates.
873
874         PR c++/15165
875         * pt.c (instantiate_template): Robustify.
876
877         PR c++/15025
878         * decl.c (xref_tag): Issue errors about redeclaring template
879         classes as non-template classes.
880
881         PR c++/14821
882         * name-lookup.c (supplement_binding): Allow redefinitions of
883         namespace aliases.
884
885         PR c++/14883
886         * parser.c (cp_parser_template_argument): Robustify.
887
888 2004-05-22  Mark Mitchell  <mark@codesourcery.com>
889
890         PR c++/15285
891         PR c++/15299
892         * pt.c (build_non_dependent_expr): Expand the set of tree nodes
893         recognized as overloaded functions.
894
895         PR c++/15507
896         * class.c (layout_nonempty_base_or_field): Do not try to avoid
897         layout conflicts for unions.
898
899         PR c++/15542
900         * typeck.c (build_x_unary_op): Instantiate template class
901         specializations before looking for "operator &".
902
903         PR c++/15427
904         * typeck.c (complete_type): Layout non-dependent array types, even
905         in templates.
906
907         PR c++/15287
908         * typeck.c (build_unary_op): Do not optimize "&x[y]" when in a
909         template.
910
911 2004-04-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
912
913         PR c++/15064
914         * parser.c (cp_parser_postfix_expression): typeid operator cannot be
915         used in integral constant expressions.
916
917 2004-04-18  Release Manager
918
919         * GCC 3.4.0 released.
920
921 2004-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
922
923         PR c++/14808
924         * method.c (make_alias_for_thunk): Just return function decl
925         for one_only functions if __CYGWIN__ or __MINGW32__
926         (use_thunk): Don't put function and thunk in same one_only
927         section if __CYGWIN__ or __MINGW32__.
928
929 2004-04-08  Jakub Jelinek  <jakub@redhat.com>
930
931         * decl2.c (mark_used): Don't segfault if cfun != NULL but
932         current_function_decl == NULL.
933
934 2004-04-01  Mark Mitchell  <mark@codesourcery.com>
935
936         PR c++/14803
937         * typeck.c (get_delta_difference): Call fold before returning the
938         value.
939
940 2004-04-01  Richard Henderson  <rth@redhat.com>
941
942         PR c++/14804
943         * decl.c (cp_finish_decl): Preserve TREE_READONLY more often.
944         * typeck2.c (split_nonconstant_init): Clear TREE_READONLY.
945
946 2004-04-01  Mark Mitchell  <mark@codesourcery.com>
947
948         PR c++/14810
949         * name-lookup.c (maybe_push_cleanup_level): Robustify.
950
951 2004-03-30  Mark Mitchell  <mark@codesourcery.com>
952
953         PR c++/14724
954         * decl.c (start_decl_1): Do not decide whether or not to create a
955         new cleanup level until after the type has been completed.
956
957         PR c++/14763
958         * pt.c (tsubst_default_argument): Clear current_function_decl.
959
960 2004-03-28  Jan Hubicka  <jh@suse.cz>
961
962         PR C++/14639
963         * method.c (use_think): Do not mark thunk as referenced.
964
965 2004-03-21  Mark Mitchell  <mark@codesourcery.com>
966
967         PR c++/14616
968         * decl.c (cp_finish_decl): Compute the size of arrays declared in
969         templates, if their type is non-dependent.
970
971 2004-03-19  Mark Mitchell  <mark@codesourcery.com>
972
973         * call.c (build_op_delete_call): Do not forget the placement
974         arguments when iterating through mutiple delete operators.
975
976         * cp-tree.h (svaed_scope): Remove last_parms.
977         (NEW_DELETE_OPNAME_P): New macro.
978         (last_function_parms): Remove.
979         (do_friend): Adjust prototype.
980         * decl.c (grokparms): Return the PARM_DECLs directly, rather than
981         using last_function_parms.
982         (grokfndecl): Take the PARM_DECLs as an argument, rather than
983         using last_function_parms.
984         (grokdeclarator): Adjust accordingly.  Do not form METHOD_TYPEs
985         for class-specific operator new and operator delete.
986         (grok_op_properties): Do not look for allocation functions with
987         METHOD_TYPEs.
988         (start_function): Use DECL_ARGUMENTS instead of
989         last_function_parms.
990         * decl.h (last_function_parms): Do not declare.
991         * decl2.c (grokclassfn): Do not use last_function_parms.
992         * friend.c (do_friend): Remove parmdecls parameter.
993         * name-lookup.c (push_to_top_level): Do not save last_function_parms.
994         (pop_from_top_level): Do not restore it.
995         * pt.c (check_explicit_specialization): Do not adjust
996         last_function_parms.
997
998         * name-lookup.c (do_local_using_decl): Create a local binding for
999         types brought in via using declarations.
1000
1001         * name-lookup.c (lookup_arg_dependent): Handle block-scope
1002         function declarations correctly.
1003
1004         * semantics.c (finish_id_expression): Correct handling of
1005         conversion operators to dependent types.
1006
1007         * typeck.c (lookup_destructor): Allow the use of destructors from
1008         base classes.
1009         
1010 2004-03-19  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1011
1012         PR c++/14545
1013         * parser.c (cp_parser_functional_cast): A cast to anything
1014         but integral or enumaration type is not an integral constant
1015         expression.
1016         * pt.c (value_dependent_expression_p): Handle cast expressions
1017         without operands (such as "int()").
1018
1019 2004-03-18  Mark Mitchell  <mark@codesourcery.com>
1020
1021         * semantics.c (finish_pseudo_destructor_expr): Allow differing
1022         cv-qualification between the type named by the
1023         pseudo-destructor-name and the object-type.
1024
1025         * search.c (accessible_base_p): Handle non-proper bases.
1026
1027         * name-lookup.c (do_nonmember_using_decl): If a using declaration
1028         refers to a single overloaded function, set the type of the
1029         function.
1030         * tree.c (lvalue_type): Simplify.
1031         * typeck.c (type_unknown_p): Do not assume all OVERLOADs have an
1032         unknown type.
1033         (build_unary_op): Handle OVERLOADs with known types.
1034
1035         * decl.c (duplicate_decls): Do not destroy DECL_ARGUMENTS for
1036         function templates.
1037
1038         * parser.c (cp_parser_postfix_expression): Handle the use of
1039         "typename" in non-dependent contexts.  Convert appropriately when
1040         when using a qualified name after "->" or ".".
1041
1042         * call.c (conditional_conversion): Honor the requirement that some
1043         conversions refer to the original object.
1044
1045         * call.c (build_conditional_expr): Do not call force_rvalue for
1046         operands of void_type when the conditional expression itself has
1047         void type.
1048         * name-lookup.c (pushdecl): Don't consider a declaration of a
1049         function named "main" to be an overload of a type named "main".
1050         * parser.c (cp_parser_template_name): Perform name lookup when the
1051         template name is proceeded by "template" if the qualifying scope
1052         is non-dependent.
1053         * typeck.c (composite_pointer_type_r): Correctly handle
1054         pointer-to-member types.
1055         (build_const_cast): Likewise.
1056
1057 2004-03-16  Mark Mitchell  <mark@codesourcery.com>
1058
1059         PR c++/14586
1060         * cp-tree.h (build_new_op): Change prototype.
1061         (build_x_binary_op): Likewise.
1062         * call.c (build_new_op): Add overloaded_p parameter.
1063         * decl2.c (grok_array_decl): Adjust call to build_new_op.
1064         * parser.c (cp_parser_binary_expression): Note that uses of
1065         overloaded operators prevents an expression from being considered
1066         an integral constant.
1067         * pt.c (tsubst_copy_and_build): Adjust calls to build_new_op and/or
1068         build_x_binary_op.
1069         * semantics.c (finish_call_expr): Likewise.
1070         * typeck.c (rationalize_conditional_expr): Likewise.
1071         (build_x_indirect_ref): Likewise.
1072         (build_x_binary_op): Likewise.
1073         (build_x_unary_op): Likewise.
1074         (build_x_compound_expr): Likewise.
1075         (build_modify_expr): Likewise.
1076         * typeck2.c (build_x_arrow): Likewise.
1077
1078 2004-03-13  Mark Mitchell  <mark@codesourcery.com>
1079
1080         PR c++/14550
1081         * parser.c (cp_parser_non_integral_constant_expression): Encode
1082         more of the idiom that surrounded calls to this function within
1083         the function itself
1084         (cp_parser_primary_expression): Adjust accordingly.
1085         (cp_parser_postfix_expression): Likewise.
1086         (cp_parser_unary_expression): Likewise.
1087         (cp_parser_cast_expression): Likewise.
1088         (cp_parser_assignment_expression): Likewise.
1089         (cp_parser_expression): Likewise.
1090         (cp_parser_new_expression): Note that new-expressions are not
1091         allowed in integral constant expressions.
1092         (cp_parser_delete_expression): Likewise.
1093
1094 2004-03-11  Mark Mitchell  <mark@codesourcery.com>
1095
1096         PR c++/14476
1097         * decl.c (xref_tag): Do not create dummy ENUMERAL_TYPEs.
1098
1099 2004-03-10  Mark Mitchell  <mark@codesourcery.com>
1100
1101         PR c++/14510
1102         * decl.c (xref_tag): Disregard non-type declarations when
1103         looking up a tagged type. 
1104
1105 2004-03-10  Jason Merrill  <jason@redhat.com>
1106
1107         PR c++/14452
1108         * tree.c (stabilize_init): Return whether or not it worked.
1109         * init.c (build_new_1): If not, use a sentry.
1110         * cp-tree.h: Adjust prototype.
1111
1112 2004-03-09  Nathan Sidwell  <nathan@garibaldi.home>
1113
1114         PR c++/14397
1115         * call.c (convert_like_real): Build a const qualified temporary,
1116         when testing ctor access.
1117
1118 2004-03-09  Mark Mitchell  <mark@codesourcery.com>
1119
1120         * call.c (initialize_reference): Fix typo.
1121
1122 2004-03-09  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1123
1124         PR c++/14409
1125         * pt.c (determine_specialization): For member templates, match also
1126         constness.
1127
1128         PR c++/14448
1129         * parser.c (cp_parser_initializer_clause): Fold initializer if it is
1130         non-dependent.
1131         * pt.c (tsubst_copy_and_build): Handle NOP_EXPRs.
1132
1133 2004-03-09  Mark Mitchell  <mark@codesourcery.com>
1134
1135         PR c++/14230
1136         * call.c (initialize_reference): Handle initializers that are
1137         class-member access expressions applies to rvalues.
1138
1139         PR c++/14432
1140         * name-lookup.c (supplement_binding): Ignore functions that are
1141         marked DECL_ANTICIPATED.
1142
1143 2004-03-08  Mark Mitchell  <mark@codesourcery.com>
1144
1145         PR c++/14401
1146         * class.c (check_field_decls): Complain about non-static data
1147         members of reference type in unions.  Propagate
1148         CLASSTYPE_REF_FIELDS_NEED_INIT and
1149         CLASSTYPE_READONLY_FIELDS_NEED_INIT from the types of non-static
1150         data members.
1151         * init.c (perform_member_init): Complain about mbmers with const
1152         type that are not explicitly initialized.
1153
1154 2004-03-08  Jason Merrill  <jason@redhat.com>
1155
1156         PR c++/13170
1157         * decl.c (xref_tag): Remove attribute handling.
1158         * cp-tree.h: Adjust prototype.
1159         * decl.c, parser.c, rtti.c: Adjust callers.
1160         * parser.c (cp_parser_class_head): Pass back attributes in the
1161         class head.
1162         (cp_parser_class_specifier): Adjust.
1163
1164 2004-03-08  Matt Austern  <austern@apple.com>
1165
1166         PR debug/14079
1167         * name-lookup.c (add_decl_to_level): Add extern variables, as well
1168         as static, to static_decls array.
1169         
1170 2004-03-01  Jason Merrill  <jason@redhat.com>
1171
1172         PR c++/13944
1173         * except.c (do_free_exception): Remove #if 0 wrapper.
1174         (build_throw): Use it if we elide a copy into the
1175         exception object.
1176
1177         * tree.c (stabilize_call): Fix thinko.
1178
1179         * init.c (build_new_1): Preevaluate initializer.  Simplify EH code.
1180         (build_init): Call a constructor rather than call build_aggr_init
1181         for classes.
1182         * except.c (stabilize_throw_expr): Remove.
1183         (build_throw): Use stabilize_init instead of stabilize_throw_expr.
1184         * tree.c (stabilize_call, stabilize_init): New fns.
1185         * call.c (build_over_call): A constructor no longer returns the
1186         address of the object.
1187
1188 2004-03-01  Mark Mitchell  <mark@codesourcery.com>
1189
1190         PR c++/14324
1191         * lex.c (retrofit_lang_decl): Treat entities with no linkage as
1192         having C++ linkage for name-mangling purposes.
1193
1194         PR c++/14260
1195         * parser.c (cp_parser_direct_declarator): Recognize constructor
1196         declarators that use a template-id to name the class being
1197         constructed.
1198
1199         PR c++/14337
1200         * pt.c (tsubst_qualified_id): Handle dependent qualifying scopes.
1201         (tsubst_expr): Do not call tsubst_copy, even when
1202         processing_template_decl.       
1203
1204 2004-03-01  Mark Mitchell  <mark@codesourcery.com>
1205
1206         PR c++/14369
1207         * pt.c (build_non_dependent_expr): Do not create a
1208         NON_DEPENDENT_EXPR for a THROW_EXPR.
1209
1210         PR c++/14360
1211         * parser.c (cp_parser_postfix_expression): Do not perform Koenig
1212         lookup if ordinary name-lookup finds a non-function.
1213         * pt.c (tsubst_copy_and_build): Likewise.
1214
1215         PR c++/14361
1216         * parser.c (cp_parser_late_parsing_default_args): Check that there
1217         are no extra tokens after the end of the default-argument
1218         expression.
1219
1220         PR c++/14359
1221         Backport 2004-02-12  Mark Mitchell  <mark@codesourcery.com>
1222         * decl.c (redeclaration_error_message): Correct handling of
1223         templates.
1224         * pt.c (tsubst_friend_declaration): Adjust code to determine
1225         whether or not a friend template is a definition.
1226         (tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs.
1227
1228 2004-03-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1229
1230         PR c++/14369
1231         * error.c (dump_expr): Handle THROW_EXPR.
1232
1233 2004-02-29  Mark Mitchell  <mark@codesourcery.com>
1234
1235         PR c++/14138
1236         * name-lookup.h (push_scope): Change prototype.
1237         * name-lookup.c (push_scope): Do not reenter the current class
1238         scope.
1239         * decl.c (grokfndecl): Check return code from push_scope before
1240         calling pop_scope.
1241         * decl2.c (check_classfn): Likewise.
1242         * parser.c (cp_parser_conversion_function_id): Likewise.
1243         (cp_parser_init_declarator): Likewise.
1244         (cp_parser_direct_declarator): Likewise.
1245         (cp_parser_class_specifier): Likewise.
1246         (cp_parser_class_head): Likewise.
1247         (cp_parser_lookup_name): Likewise.
1248         (cp_parser_constructor_declarator_p): Likewise.
1249         * pt.c (instantiate_class_template): Likewise.
1250         (resolve_typename_type): Likewise.
1251
1252 2004-02-27  Mark Mitchell  <mark@codesourcery.com>
1253
1254         PR debug/12103
1255         * class.c (update_vtable_entry_for_fn): Do not go through
1256         covariance machinery if the type returned by an overrider is the
1257         same as the original.
1258
1259 2004-02-27  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1260
1261         PR c++/14284
1262         * pt.c (dependent_type_p_r): A template template parameter is a
1263         dependent type.
1264
1265 2004-02-26  Mark Mitchell  <mark@codesourcery.com>
1266
1267         PR c++/14278
1268         * parser.c (cp_parser_parameter_declaration_list): Commit
1269         to fewer tentative parses.
1270
1271 2004-02-26  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1272
1273         PR c++/14246
1274         * mangle.c (write_template_arg_literal): Don't rely on identity for
1275         boolean constants.
1276
1277 2004-02-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1278
1279         PR c++/14250
1280         * cvt.c (build_expr_type_conversion): Type must be complete before
1281         looking up for conversions.
1282
1283 2004-02-20  Mark Mitchell  <mark@codesourcery.com>
1284
1285         PR c++/14199
1286         * pt.c (tsubst_copy): Call mark_used for a PARM_DECL.
1287
1288         PR c++/14173
1289         * semantics.c (begin_class_definition): Set TYPE_PACKED correctly
1290         for all type variants.
1291
1292 2004-02-19  Mark Mitchell  <mark@codesourcery.com>
1293
1294         PR c++/14186
1295         * name-lookup.c (push_class_level_binding): Do not complain about
1296         adding a binding for a member whose name is the same as the
1297         enclosing class if the member is located in a base class of the
1298         current class.
1299
1300 2004-02-19  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1301
1302         PR c++/14181
1303         * parser.c (cp_parser_new_expression): Parse an ill-formed 
1304         direct-new-declarator after a parenthesized type-id to emit good
1305         diagnostic.
1306
1307 2004-02-17  Mark Mitchell  <mark@codesourcery.com>
1308
1309         PR c++/11326
1310         * cp-tree.h (abi_version_at_least): Remove.
1311         * mangle.c: Include flags.h.
1312
1313 2004-02-15  Mark Mitchell  <mark@codesourcery.com>
1314
1315         PR c++/13971
1316         * call.c (build_conditional_expr): Handle conversions between
1317         class types which result in differently cv-qualified type
1318         variants.
1319
1320         PR c++/14086
1321         * class.c (delete_duplicate_fields_1): Remove.
1322         (delete_duplicate_fields): Likewise.
1323         (finish_struct_anon): Remove check for members with the same name
1324         as their enclosing class.
1325         (check_field_decls): Do not call duplicate_fields.
1326         * decl.c (grokdeclarator): Remove check for static data members
1327         with the same name as their enclosing class.
1328         * name-lookup.c (push_class_level_binding): Check for members with
1329         the same name as their enclosing class.
1330
1331 2004-02-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1332
1333         PR c++/14085
1334         * error.c (dump_decl): Handle TEMPLATE_TYPE_PARM.
1335
1336 2004-02-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1337
1338         PR c++/13635
1339         * pt.c (push_template_decl_real): Make sure DECL_TI_ARGS of DECL
1340         has full set of arguments.
1341
1342 2004-02-13  Mark Mitchell  <mark@codesourcery.com>
1343
1344         PR c++/14122
1345         * cp-tree.h (delete_sanity): Change prototype.
1346         * decl2.c (delete_sanity): Make doing_vec a bool, not an int.
1347         Remove dead code.  Adjust code to warn about deleting an array.
1348         * typekc.c (decay_conversion): Use build_address and build_nop.
1349
1350         PR c++/14108
1351         * search.c (accessible_p): Do not check access in thunks.
1352
1353 2004-02-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1354
1355         PR c++/13927
1356         * error.c (dump_decl) <ALIAS_DECL>: Dump as simple declarations.
1357
1358 2004-02-13  Mark Mitchell  <mark@codesourcery.com>
1359
1360         PR c++/14083
1361         * call.c (build_conditional_expr): Call force_rvalue on the
1362         non-void operand in the case that one result is a throw-expression
1363         and the other is not.
1364
1365 2004-02-13  Ian Lance Taylor  <ian@wasabisystems.com>
1366
1367         PR c++/9851
1368         * parser.c (cp_parser_pseudo_destructor_name): Check for errors on
1369         the type name and look ahead for ::~, and bail out early with a
1370         better error message if the parse is going to fail.
1371
1372 2004-02-10  Mark Mitchell  <mark@codesourcery.com>
1373
1374         * typeck.c (lookup_destructor): Fix typo in error message.
1375
1376 2004-02-07  Zack Weinberg  <zack@codesourcery.com>
1377
1378         Bug 13856
1379         * optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
1380         * decl.c (duplicate_decls, start_function): Likewise.
1381
1382 2004-02-07  Zack Weinberg  <zack@codesourcery.com>
1383
1384         * name-lookup.c (pushdecl): Issue shadow warnings directly.
1385         * parser.c (free_parser_stacks): Delete.
1386
1387 2004-02-07  Kazu Hirata  <kazu@cs.umass.edu>
1388
1389         * rtti.c, tree.c: Update copyright.
1390
1391 2003-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1392
1393         PR c++/14033
1394         * decl.c (require_complete_types_for_parms): Do not insert
1395         error_mark_node in the parameter list.
1396
1397 2003-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1398
1399         PR c++/14028
1400         * parser.c (cp_parser_enclosed_template_argument_list): Emit straight
1401         error when terminator can not be found.
1402
1403 2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>
1404
1405         Make-lang.in (po-generated):  Delete.
1406
1407 2004-02-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1408
1409         PR middle-end/13750
1410         Revert:
1411         2004-01-15  Geoffrey Keating  <geoffk@apple.com>
1412         PR pch/13361
1413         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
1414         (handle_pragma_implementation): Likewise.
1415
1416 2004-02-05  Mark Mitchell  <mark@codesourcery.com>
1417
1418         PR c++/13714
1419         * typeck.c (lookup_destructor): Tweak error message.
1420
1421 2004-02-05  Paul Brook  <paul@codesourcery.com>
1422
1423         Backport from mainline.
1424
1425         2003-11-05  Mark Mitchell  <mark@codesourcery.com>
1426
1427         * decl.c (cxx_push_function_context): Do not set
1428         current_function_is_thunk.
1429         * method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
1430         actual function.
1431
1432 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
1433
1434         PR c++/13932
1435         * call.c (convert_like_real): Use "converting" rather than
1436         "argument" as the descriptive keyword to
1437         dubious_conversion_warnings.
1438         * typeck.c (convert_for_assignment): Do not call
1439         dubious_conversion_warnings.
1440
1441 2004-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1442
1443         PR c++/13086
1444         * init.c (build_delete): Emit a more informative error message in
1445         case of an incomplete type, and on the correct source line.
1446
1447 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
1448
1449         PR c++/9941
1450         * rtti.c (tinfo_base_init): Use import_export_tinfo to decide the
1451         linkage for the typeinfo name string.
1452
1453         PR c++/13969
1454         * cp-tree.h (fold_non_dependent_expr): New function.
1455         * parser.c (cp_parser_fold_non_dependent_expr): Remove.
1456         (cp_parser_template_argument): Use fold_non_dependent_expr.
1457         (cp_parser_direct_declarator): Likewise.
1458         * pt.c (fold_non_dependent_expr): New function.
1459         (convert_nontype_argument): Use it.
1460         (tsubst_qualified_id): Simplify.
1461         (tsubst_copy_and_build): Likewise.
1462
1463 2003-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1464
1465         PR c++/13997
1466         * pt.c (more_specialized_class): Increase processing_template_decl
1467         while partial ordering.
1468
1469 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
1470
1471         PR c++/13950
1472         * parser.c (cp_parser_class_name): Robustify.
1473
1474         PR c++/13970
1475         * parser.c (cp_parser_cache_group): Do not consume the EOF token.
1476
1477 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
1478
1479         PR c++/13925
1480         * decl.c (start_function): Do not call pushdecl for any
1481         instantiation or specialization of a primary template.
1482
1483         PR c++/14002
1484         * semantics.c (finish_id_expression): Do not return an
1485         IDENTIFIER_NODE when lookup finds a PARM_DECL.
1486
1487         PR c++/13978
1488         * pt.c (build_non_dependent_expr): Do not build
1489         NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs.
1490
1491         PR c++/13968
1492         * semantics.c (finish_id_expression): Do not return an
1493         IDENTIFIER_NODE when lookup finds a VAR_DECL.
1494
1495         PR c++/13975
1496         * parser.c (cp_parser_simple_declaration): When skipping to the
1497         end of the statement swallow the terminating semicolon.
1498
1499 2004-02-02  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1500
1501         DR206
1502         PR c++/13813
1503         * decl.c (grokdeclarator): Check immediatly type completeness for
1504         non-dependent types.
1505
1506 2004-01-30  Mark Mitchell  <mark@codesourcery.com>
1507
1508         PR c++/13113
1509         * init.c (build_offset_ref): Improve error recovery for invalid
1510         uses of non-static member functions.
1511
1512         PR c++/13854
1513         * cp-tree.h (cp_build_type_attribute_variant): New function.
1514         * class.c (build_clone): Use cp_build_type_attribute_variant.
1515         * decl.c (duplicate_decls): Likewise.
1516         * pt.c (copy_default_args_to_explicit_spec): Likewise.
1517         (tsubst_function_type): Likewise.
1518         * tree.c (build_exception_variant): Check attributes before
1519         concluding that two types are the same.
1520         (cp_build_type-attribute_variant): New method.
1521         * typeck.c (merge_types): Use cp_build_type_attribute_variant.
1522
1523         PR c++/13907
1524         * call.c (convert_class_to_reference): Keep better track of
1525         pedantically invalid user-defined conversions.
1526
1527 2004-02-02  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1528
1529         PR c++/13957
1530         * pt.c (tsubst_qualified_id): Improved error message when a type
1531         is expected but not found.
1532
1533 2004-01-30  Michael Matz  <matz@suse.de>
1534
1535         * parser.c (cp_parser_labeled_statement): Accept case ranges.
1536
1537 2004-01-28  Jan Hubicka  <jh@suse.czi
1538
1539         * semantics.c (expand_body)  Do emit_associated_thunks before
1540         expansion.
1541
1542 2004-01-30  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1543
1544         PR c++/13683
1545         * call.c (convert_arg_to_ellipsis): Don't emit a warning if within
1546         a sizeof expression.block
1547
1548 2004-01-29  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1549
1550         * parser.c (cp_parser_template_id): Parse tentatively `[:' after a
1551         template name as it was `<::' (digraph typo).
1552         (cp_parser_nth_token_starts_template_argument_list_p): New function.
1553         (cp_parser_id_expression): Use it.
1554         (cp_parser_nested_name_specifier_opt): Likewise.
1555         (cp_parser_template_name): Likewise.
1556         (cp_parser_class_name): Likewise.
1557         (cp_lexer_get_preprocessor_token): Use c_lex_with_flags.
1558
1559 2004-01-29  Mark Mitchell  <mark@codesourcery.com>
1560
1561         PR c++/13883
1562         * mangle.c (write_encoding): Correct encoding of member template
1563         constructors.
1564
1565 2004-01-28  Mark Mitchell  <mark@codesourcery.com>
1566
1567         PR c++/13791
1568         * typeck.c (merge_types): Do not merge attributes into
1569         TYPENAME_TYPEs.
1570
1571 2004-01-28  Mark Mitchell  <mark@codesourcery.com>
1572
1573         PR c++/13736
1574         * parser.c (cp_parser_direct_declarator): Do not prevent
1575         backtracking inside a parenthesized declarator.
1576         (cp_parser_parameter_declaration): Fix typo in comment.
1577
1578 2004-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1579
1580         * cp-tree.h (language_function, lang_type_header): Use
1581         BOOL_BITFIELD.
1582         * name-lookup.h (cp_binding_level): Likewise.
1583
1584 2004-01-26  Mark Mitchell  <mark@codesourcery.com>
1585
1586         PR c++/13663
1587         * semantics.c (finish_for_expr): Check for unresolved overloaded
1588         functions.
1589
1590 2004-01-26  Mark Mitchell  <mark@codesourcery.com>
1591
1592         * class.c (add_method): Just check processing_template_decl to
1593         determine whether or not we are within a template.
1594         * decl2.c (maybe_retrofit_in_chrg): Likewise.
1595         * init.c (decl_constant_value): Check the type of the declaration,
1596         not TREE_READONLY.
1597         * name-lookup.c (maybe_push_to_top_level): Rename to ...
1598         (push_to_top_level): ... this.
1599         * name-lookup.h (maybe_push_to_top_level): Do not declare it.
1600         * pt.c (push_template_decl_real): Reorder condition for speed.
1601         (convert_template_argument): Use dependency-checking functions in
1602         place of uses_template_parms.
1603         (lookup_template_class): Avoid calling uses_template_parms more
1604         than once.
1605         (uses_template_parms): Reimplement, using dependency-checking
1606         functions.
1607         (instantiate_class_template): Use push_to_top_level, not
1608         maybe_push_to_top_level.
1609         (type_unification_real): Simplify.
1610         (type_dependent_expression_p): Handle OFFSET_REFs and
1611         TEMPLATE_DECLs.
1612         (any_dependent_template_arguments_p): Handle multiple levels of
1613         template argument.
1614         * semantics.c (expand_or_defer_fn): Do not check
1615         uses_template_parms for template instantiations.
1616         * typeck.c (comptypes): Avoid calling cp_type_quals.
1617
1618 2004-01-25  Mark Mitchell  <mark@codesourcery.com>
1619
1620         PR c++/13833
1621         * call.c (build_over_call): Do not convert arguments when
1622         processing a template.
1623         * pt.c (build_non_dependent_expr): Do not build a
1624         NON_DEPENDENT_EXPR for arithmetic constants.
1625
1626 2004-01-25  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1627
1628         PR c++/13810
1629         * parser.c (cp_parser_type_parameter): When cp_parser_id_expression
1630         returns a TYPE_DECL. no further lookup is required.
1631         * semantics.c (check_template_template_default_arg): A TYPE_DECL
1632         is invalid. Rework to give better diagnostics.
1633
1634 2004-01-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1635
1636         PR c++/13797
1637         * pt.c (instantiate_class_template): Add an error_mark_node
1638         check.
1639         (tsubst_decl) <TEMPLATE_DECL case>: Likewise.
1640
1641 2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>
1642
1643         * call.c: Update copyright.
1644         * class.c: Likewise.
1645         * decl2.c: Likewise.
1646         * except.c: Likewise.
1647         * expr.c: Likewise.
1648         * init.c: Likewise.
1649         * mangle.c: Likewise.
1650         * optimize.c: Likewise.
1651         * typeck.c: Likewise.
1652         * typeck2.c: Likewise.
1653
1654 2004-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
1655
1656         PR c++/13701
1657         * decl.c (finish_function): Move the call to
1658         finish_fname_decls below the call to
1659         finish_eh_spec_block.
1660
1661 2004-01-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
1662
1663         * parser.c (cp_parser_class_specifier): Prevent garbage collection.
1664
1665 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
1666
1667         * Make-lang.in: Replace $(docdir) with doc.
1668         (c++.info, c++.srcinfo): Dummy entry.
1669         (c++.man, c++.srcman): New rules.
1670         (c++.install-man): Revamp rule.
1671
1672 2004-01-19  Kelley Cook  <kcook@gcc.gnu.org>
1673
1674         * Make-lang.in (CXX_INSTALL_NAME, GXX_INSTALL_NAME,
1675         CXX_TARGET_INSTALL_NAME, GXX_TARGET_INSTALL_NAME): Define via a
1676         immediate $(shell) instead of deferred backquote.
1677
1678 2004-01-19  Mark Mitchell  <mark@codesourcery.com>
1679
1680         PR c++/13651
1681         * parser.c (cp_parser_postfix_expression): When encountering
1682         incomplete type on left-hand side of "->" or ".", treat the entire
1683         expression as erroneous.
1684
1685 2004-01-19  Mark Mitchell  <mark@codesourcery.com>
1686
1687         PR c++/13592
1688         * call.c (build_field_call): Remove.
1689         (n_build_method_call): Likewise.
1690         (build_method_call): Likewise.
1691         (build_new_method_call): Do not call build_field_call.
1692         * class.c (n_build_method_call): Remove.
1693         (print_class_statistics): Do not print it.
1694         * cp-tree.h (build_method_call): Remove declaration.
1695         (finish_object_call_expr): Likewise.
1696         (build_new_1): Do not use build_method_call.
1697         * parser.c (cp_parser_postfix_expression): Use finish_call_expr
1698         when the function appearing on the right-hand-side of "." or "->"
1699         is not actually a function.
1700         * pt.c (tsubst_copy_and_build): Likewise.
1701         * semantics.c (finish_object_call_expr): Remove.
1702
1703 2004-01-18  Mark Mitchell  <mark@codesourcery.com>
1704
1705         PR c++/13710
1706         * pt.c (tsubst): Use finish_typeof.
1707
1708 2004-01-18  Jason Merrill  <jason@redhat.com>
1709
1710         PR c++/11725
1711         * except.c (build_throw): In a template, set
1712         current_function_returns_abnormally.
1713
1714 2004-01-17  Fred Fish  <fnf@intrinsity.com>
1715
1716         PR c++/11895
1717         * decl.c (reshape_init): Handle VECTOR_TYPE like ARRAY_TYPE,
1718         except don't call array_type_nelts() with a VECTOR_TYPE.
1719
1720 2004-01-16  Jan Hubicka  <jh@suse.cz>
1721
1722         * mangle.c (write_mangled_name): Remove inline modifier.
1723
1724 2004-01-16  Mark Mitchell  <mark@codesourcery.com>
1725
1726         PR c++/13574
1727         * decl.c (compute_array_index_type): Fix grammar in comment.
1728         * init.c (build_zero_init): Handle zero-sized arrays correctly.
1729
1730         PR c++/13178
1731         * call.c (name_as_c_string): Print conversion operator names
1732         correctly.
1733
1734         PR c++/13478
1735         * call.c (initialize_reference): Pass -1 for inner parameter to
1736         convert_like_real.
1737
1738 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1739
1740         PR c++/13407
1741         * parser.c (cp_parser_base_specifier): Check for an invalid
1742         keyword `typename' and emit an user-friendly error message.
1743
1744 2004-01-15  Geoffrey Keating  <geoffk@apple.com>
1745
1746         PR pch/13361
1747         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
1748         (handle_pragma_implementation): Likewise.
1749
1750 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1751
1752         PR c++/9259
1753         * typeck.c (build_class_member_access_expr): Allow to access members
1754         of the currently open class.
1755         (finish_class_member_access_expr): Likewise.
1756
1757 2004-01-15  Alexandre Oliva  <aoliva@redhat.com>
1758
1759         PR c++/13659
1760         * name-lookup.c (validate_nonmember_using_decl): Take scope and
1761         name by value, instead of computing them.
1762         (do_local_using_decl, do_toplevel_using_decl): Add scope and name
1763         arguments.  Pass them to validate_nonmember_using_decl.
1764         * name-lookup.h (do_local_using_decl): Adjust.
1765         (do_toplevel_using_decl): Likewise.
1766         * parser.c (cp_parser_using_declaration): Likewise.
1767         * pt.c (tsubst_expr): Likewise.
1768
1769 2004-01-15  Alexandre Oliva  <aoliva@redhat.com>
1770
1771         PR c++/13594
1772         PR c++/13658
1773         * name-lookup.c (qualified_lookup_using_namespace): Search
1774         strongly-associated namespaces first, and only then try other
1775         namespaces.
1776
1777 2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>
1778
1779         * Make-lang.in (c++.srcextra): Dummy entry.
1780
1781 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1782
1783         PR c++/8856
1784         * parser.c (cp_parser_template_name): Don't try to parse a
1785         conversion-function-id, as it cannot be a template-name.
1786         (cp_parser_simple_type_specifier): Check for invalid template-ids
1787         even after a built-in type.
1788
1789 2004-01-14  Jan Hubicka  <jh@suse.cz>
1790
1791         PR c++/12850
1792         * pt.c (instantiate_decl):  Do not increase function_depth.
1793
1794 2004-01-14  Danny Smith  <dannysmith@users,sourceforge.net>
1795
1796         PR c++/9021
1797         PR c++/11005
1798         * parser.c (cp_parser_elaborated_type_specifier): Warn about
1799         attributes and discard.
1800         * decl.c (xref_tag): Don't overwite existing attributes with
1801         NULL_TREE.
1802
1803 2004-01-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1804
1805         PR c++/12335
1806         * parser.c (cp_parser_lookup_name): Return error_mark_node if there
1807         is no destructor while looking up a BIT_NOT_EXPR.
1808
1809 2004-01-13  Ian Lance Taylor  <ian@wasabisystems.com>
1810
1811         * cxxfilt.c: Remove unused file.
1812
1813 2004-01-14  Jan Hubicka  <jh@suse.cz>
1814
1815         Partial fix to PR c++/12850
1816         * decl2.c (mark_used): Do not proactively instantiate templates
1817         when compiling in unit-at-a-time or not optimizing.
1818         * optimize.c (maybe_clone_body): Do not increase function depth.
1819
1820 2004-01-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1821
1822         PR c++/13474
1823         * pt.c (tsubst) <INTEGER_TYPE>: Remove obsolete array index tweaking.
1824
1825 2003-01-12  Steven Bosscher  <stevenb@suse.de>
1826
1827         PR c++/13558
1828         * parser.c (cp_parser_member_declaration): Any non-type is also
1829         not a class or a function.
1830
1831 2004-01-12  Jason Merrill  <jason@redhat.com>
1832
1833         PR c++/12815
1834         * class.c (build_base_path): Do not mark vtable references as
1835         TREE_CONSTANT.
1836         (build_vtbl_ref_1): Likewise.
1837
1838 2004-01-12  Richard Henderson  <rth@redhat.com>
1839
1840         PR opt/10776
1841         * typeck2.c (split_nonconstant_init_1, split_nonconstant_init): New.
1842         (store_init_value): Use it.
1843         * decl.c (check_initializer): Expect full initialization code
1844         from store_init_value.
1845         * init.c (expand_aggr_init_1): Likewise.
1846         * decl2.c (maybe_emit_vtables): Abort if runtime init needed.
1847
1848 2004-01-12  Mark Mitchell  <mark@codesourcery.com>
1849
1850         * class.c (layout_class_type): For non-POD class types, also copy
1851         the DECL_SIZE and DECL_MODE of fields to the base class type.
1852
1853 2004-01-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1854
1855         PR c++/13289
1856         * pt.c (instantiate_decl): Set DECL_TEMPLATE_INSTANTIATED before
1857         calling regenerate_decl_from_template.
1858
1859 2004-01-12  Scott Brumbaugh  <scottb.lists@verizon.net>
1860
1861         PR c++/4100
1862         * parser.c (cp_parser_decl_specifier_seq): Add check for a friend
1863         decl-specifier occurring along with a class definition.
1864
1865 2004-01-12  Ian Lance Taylor  <ian@wasabisystems.com>
1866
1867         * parser.c (cp_parser_decl_specifier_seq): Add parenthetical
1868         clauses to comments describing declares_class_or_enum.
1869         (cp_parser_type_specifier): Set *declares_class_or_enum to 0, not
1870         false.
1871
1872 2004-01-12  Jan Hubicka  <jh@suse.cz>
1873
1874         * pt.c (for_each_template_parm): Do not check for duplicates.
1875         (for_each_template_parm): Use walk_tree duplicate checking code.
1876
1877 2004-01-11  Ian Lance Taylor  <ian@wasabisystems.com>
1878
1879         PR c++/3478
1880         * parser.c (cp_parser_decl_specifier_seq): If the first decl_spec
1881         is error_mark_node, don't add any more decl_specs.
1882         (cp_parser_init_declarator): After committing to a declaration, if
1883         the decl_specifiers start with error_mark_node, issue an error and
1884         change the type to "int".
1885
1886 2004-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
1887
1888         PR bootstrap/7817
1889         * Make-lang.in: Copy gcc.1 to g++.1 rather than using .so.
1890
1891 2004-01-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1892
1893         DR 337
1894         PR c++/9256
1895         * pt.c (tsubst): Substitution must fail if we are attempting to
1896         create an array with element type that is an abstract class type.
1897         * decl.c (cp_finish_decl): Strip pointers and array types recursively
1898         before calling abstract_virtuals_error.
1899
1900 2004-01-09  Alexandre Oliva  <aoliva@redhat.com>
1901
1902         * name-lookup.c (qualified_lookup_using_namespace): Consider
1903         strong using directives even if we've already found a binding.
1904
1905 2004-01-09  Mark Mitchell  <mark@codesourcery.com>
1906
1907         * cp-tree.h (cxx_expand_expr): Change prototype.
1908         * expr.c (cxx_expand_expr): Add alt_rtl parameter.
1909
1910 2004-01-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1911
1912         PR c++/12573
1913         * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
1914         looking into them recursively. They can be there because of the
1915         new __offsetof__ extension.
1916
1917 2004-01-07  Zack Weinberg  <zack@codesourcery.com>
1918
1919         * parser.c (cp_parser_save_member_function_body): Mark the
1920         definition static.
1921
1922 2004-01-05  Mark Mitchell  <mark@codesourcery.com>
1923
1924         PR c++/13057
1925         * class.c (build_clone): Copy type attributes from the original
1926         function to the clone.
1927
1928         PR c++/12815
1929         * class.c (build_vtbl_ref_1): Do not unconditionally mark vtable
1930         references as constant.
1931
1932         PR c++/12132
1933         * parser.c (cp_parser_explicit_instantiation): Improve error
1934         recovery.
1935         (cp_parser_require): Improve indication of the error location.
1936
1937         PR c++/13451
1938         * parser.c (cp_parser_class_head): Reorder logic to check for
1939         invalid qualification.
1940
1941 2004-01-04  Mark Mitchell  <mark@codesourcery.com>
1942
1943         PR c++/13157
1944         * name-lookup.c (lookup_using_namespace): Remove spacesp
1945         parameter.
1946         (unqualified_namespace_lookup): Likewise.
1947         (lookup_qualified_name): Adjust accordingly.
1948         (lookup_name_real): Likewise.
1949         (lookup_arg_dependent): Do not eliminate the namespace of the
1950         functions found by unqualified name lookup unless that is the
1951         current namespace.
1952
1953 2004-01-04  Andrew Pinski  <pinskia@physics.uc.edu>
1954
1955         * semantics.c (push_deferring_access_checks): Fix format.
1956         (resume_deferring_access_checks): Likewise.
1957         (stop_deferring_access_checks): Likewise.
1958         (pop_deferring_access_checks): Likewise.
1959         (get_deferred_access_checks): Likewise.
1960         (pop_to_parent_deferring_access_checks): Likewise.
1961         (perform_deferred_access_checks): Likewise.
1962         (perform_or_defer_access_check): Likewise.
1963
1964 2004-01-04  Richard Henderson  <rth@redhat.com>
1965
1966         * call.c (build_over_call): Don't create a save_expr of an
1967         aggregate, but rather its address.
1968
1969 2004-01-04  Mark Mitchell  <mark@codesourcery.com>
1970
1971         PR c++/13529
1972         * parser.c (cp_parser_postfix_expression): Allow "." to appear in
1973         an offsetof expression.
1974
1975         * parser.c (cp_parser_parameter_declaration): Fix comment.
1976
1977         PR c++/12226
1978         * call.c (CHECK_COPY_CONSTRUCTOR_P): New macro.
1979         (reference_binding): Set it when appropriate.
1980         (build_temp): New function, split out from ...
1981         (convert_like_real): ... here.  Honor CHECK_COPY_CONSTRUCTOR_P.
1982         (initialize_reference): Likewise.
1983
1984         PR c++/13536
1985         * parser.c (cp_parser): Add in_type_id_in_expr_p.
1986         (cp_parser_new): Initialize it.
1987         (cp_parser_postfix_expression): Set it.
1988         (cp_parser_sizeof_operand): Likewise.
1989         (cp_parser_parameteR_declaration): Do not commit early to tenative
1990         parsers when in_type_id_in_expr_p is set.
1991
1992 2004-01-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1993
1994         PR c++/13094
1995         * parser.c (cp_parser_template_argument): Don't call
1996         make_unbound_class_template directly.
1997         (cp_parser_lookup_name): Don't extract TEMPLATE_DECL from
1998         UNBOUND_CLASS_TEMPLATE tree node.
1999
2000 2004-01-02  Richard Sandiford  <rsandifo@redhat.com>
2001
2002         PR target/12729
2003         * method.c (use_thunk): Pass the CALL_EXPR through force_target_expr.
2004
2005 2004-01-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2006
2007         PR c++/13520
2008         * cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): New macro.
2009         (DECL_FUNCTION_TEMPLATE_P): Use it.
2010         (DECL_CLASS_TEMPLATE_P): Likewise.
2011         * parser.c (cp_parser_lookup_name): Add is_template parameter.
2012         (cp_parser_type_parameter): Adjust call to cp_parser_lookup_name.
2013         (cp_parser_template_name): Likewise.
2014         (cp_parser_elaborated_type_specifier): Likewise.
2015         (cp_parser_namespace_name): Likewise.
2016         (cp_parser_class_name): Likewise.
2017         (cp_parser_lookup_name_simple): Likewise.
2018
2019 See ChangeLog.3 for earlier changes.