OSDN Git Service

bdef6b5734b92287e84ba8771a109f78e0669493
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2007-02-23  Richard Guenther  <rguenther@suse.de>
2
3         * class.c (note_name_declared_in_class): Make declaration
4         changes meaning a pedwarn.
5
6 2007-02-22  Michael Matz  <matz@suse.de>
7
8         PR c++/29433
9         * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
10         * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
11         dump_function_decl): Guard emitting outer scopes by new flag.
12         * cp-lang.c (cxx_dwarf_name): New function.
13         (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
14         * pt.c (classtype_mangled_name, mangle_class_name_for_template):
15         Remove functions.
16         (push_template_decl_real, lookup_template_class): Remove calls
17         to above functions.
18
19 2007-02-19  Mark Mitchell  <mark@codesourcery.com>
20
21         * call.c (build_new_method_call): Ensure that explicit calls of
22         destructors have type "void".
23
24 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25
26         * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
27         and -Walways-true with -Waddress.
28         * cvt.c (convert_to_void): Replace unconditional warning with
29         -Waddress.
30
31 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
32
33         * decl.c, tree.c: Fix comment typos.
34
35 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
36
37         PR C++/30158
38         * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the 
39         statement expression if we had an error mark node.
40                 
41 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
42             Brooks Moses  <brooks.moses@codesourcery.com>
43             Lee Millward  <lee.millward@codesourcery.com>
44
45         * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
46         Change class to tcc_vl_exp.
47
48         * call.c (build_call): Use build_call_list instead 
49         of build3. 
50         (build_over_call): Likewise.
51         (build_new_method_call): Use build_min_non_dep_call_list 
52         instead of build_min_non_dep.
53
54         * error.c (dump_call_expr_args): New function.
55         (dump_aggr_init_expr_args): New function.
56         (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
57         Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
58
59         * cvt.c (convert_to_void): Use build_call_array instead
60         of build3; use new AGGR_INIT_EXPR accessor macros.
61
62         * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
63         instead of TREE_CODE_LENGTH.
64
65         * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
66         AGGR_INIT_EXPR accessor macros.
67
68         * cp-gimplify.c (cp_gimplify_init_expr): Use 
69         AGGR_INIT_EXPR_SLOT to set the slot operand.
70
71         * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
72         (AGGR_INIT_EXPR_SLOT): New macro.
73         (AGGR_INIT_EXPR_ARG): New macro.
74         (aggr_init_expr_nargs): New macro.
75         (AGGR_INIT_EXPR_ARGP): New macro.
76         (aggr_init_expr_arg_iterator): New.
77         (init_aggr_init_expr_arg_iterator): New.
78         (next_aggr_init_expr_arg): New.
79         (first_aggr_init_expr_arg): New.
80         (more_aggr_init_expr_args_p): New.
81         (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
82         (stabilize_aggr_init): New declaration.
83         (build_min_non_dep_call_list): Likewise.
84
85         * tree.c (process_aggr_init_operands): New function.
86         (build_aggr_init_array) New function.
87         (build_cplus_new): Update to use new CALL_EXPR and
88         AGGR_INIT_EXPR accessor macros. Replace use of build3 with
89         build_aggr_init_array.
90         (build_min_non_dep_call_list) New function.
91         (build_min_nt): Assert input code parameter is not a variable
92         length expression class.
93         (build_min, build_min_non_dep): Likewise.
94         (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
95         to check for equality instead of recursing. Handle tcc_vl_exp
96         tree code classes.
97         (stabilize_call): Update to only handle CALL_EXPRs, not 
98         AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
99         (stabilize_aggr_init): New function.
100         (stabilize_init): Use it.
101
102         * cxx-pretty-print.c (pp_cxx_postfix_expression)
103         <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
104         AGGR_INIT_EXPR accessor macros and argument iterators.
105         
106         * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
107         build_vl_exp. Iterate through the operands, recursively 
108         processing each one.
109         (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
110         CALL_EXPR accessor macros.
111         (value_dependent_expression_p) <default>: Handle tcc_vl_exp
112         tree code classes. Use TREE_OPERAND_LENGTH instead of 
113         TREE_CODE_LENGTH.
114
115         * semantics.c (finish_call_expr): Use build_nt_call_list
116         instead of build_nt.
117         (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
118         accessor macros. Use build_call_array to construct the 
119         CALL_EXPR node instead of build3
120         
121         * decl2.c (build_offset_ref_call_from_tree): Use 
122         build_nt_call_list and build_min_non_dep_call_list instead
123         of build_min_nt and build_min_non_dep.
124
125         * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
126         Use build_nt_call_list instead of build_min_nt.
127
128 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
129
130         PR c++/28943
131         * call.c (build_conditional_expr): Improve error message.
132         
133 2007-02-13  Dirk Mueller  <dmueller@suse.de>
134
135         * friend.c (do_friend): Annotate warning about friend
136         declarations in templates with OPT_Wnon_template_friend.
137         Convert informal message from warning() to inform().
138
139 2007-02-12  Simon Martin  <simartin@users.sourceforge.net>
140             Mark Mitchell  <mark@codesourcery.com>
141
142         PR c++/14622
143         * pt.c (do_decl_instantiation): Detect type mismatches in explicit
144         instantiations for variables.
145
146 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
147
148         PR middle-end/7651
149         * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
150         Check warn_unused_value just once.
151
152 2007-02-11  Mark Mitchell  <mark@codesourcery.com>
153
154         PR c++/26988
155         * pt.c (determine_specialization): Use skip_artificial_parms_for.
156         (fn_type_unificiation): Likewise.
157         (get_bindings): Likewise.
158
159 o2007-02-06  Mark Mitchell  <mark@codesourcery.com>
160
161         PR target/29487
162         * decl.c (finish_function): Use DECL_REPLACEABLE.
163         * tree.c (cp_cannot_inline_tree_fn): Likewise.
164
165 2007-02-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
166
167         * parser.c (cp_parser_primary_expression): Reformat overly long lines.
168
169 2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>
170
171         * decl.c (grokvardecl): Don't error if !have_tls.
172         (grokdeclarator): Likewise.
173         * parser.c (cp_parser_omp_threadprivate): Likewise.
174
175 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
176
177         PR c++/30703
178         * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
179         parameters and result decls in omp clauses.
180         (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
181         by reference.
182
183 2007-02-05  Dirk Mueller  <dmueller@suse.de>
184
185         PR bootstrap/30510
186         * parser.c (cp_parser_class_specifier): Always initialize bases.
187
188 2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
189
190         * cp-tree.h (OMP_ATOMIC_CODE): Delete.
191         (OMP_ATOMIC_DEPENDENT_P): Rewrite.
192         * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
193         expressions.
194         * semantics.c (finish_omp_atomic): Store a whole expression node
195         in operand 1, and integer_zero_node in operand 0, for dependent
196         OMP_ATOMIC.  Rewrite to make flow easier to understand.
197
198 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
199
200         * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
201
202 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
203
204         * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
205         parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
206
207 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
208
209        * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
210        keyword warning to -Wc++0x-compat.
211         
212 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
213
214         * decl.c (grokdeclarator): Update documentation.
215
216 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
217
218         PR c++/30536
219         * decl.c (grokdeclarator): If __thread is used together with
220         a storage class other than extern and static, clear thread_p
221         after issuing diagnostics and fall through to checking the
222         storage class.
223
224 2007-01-30  Roger Sayle  <roger@eyesopen.com>
225
226         * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
227         calculating the size of an array (to avoid recursive errors).
228
229 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
230
231         PR c++/24745
232         * typeck.c (build_binary_op): Fix logic for warning. Move warning
233         to -Wpointer-arith.
234         * call.c (convert_like_real): Don't warn when converting to
235         boolean type.
236         
237 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
238
239         * decl.c (pop_label): Replace warning with call to
240         warn_for_unused_label.
241
242 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
243
244         PR C++/28988
245         * semantics.c (finish_pseudo_destructor_expr): Check the
246         destrutor name by calling check_dtor_name.
247
248 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
249
250         * lex.c (D_CPP0X): Rename.
251         (D_CXX0X): To this.
252         (reswords): D_CPP0X -> D_CXX0X.
253         (init_reswords): Ditto.
254         * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
255         of C++0x keywords as identifiers.
256
257 2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
258
259         PR c++/27492
260         * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
261         function decls.
262
263 2007-01-23  Ian Lance Taylor  <iant@google.com>
264
265         * typeck.c (convert_for_assignment): Only warn about a = b = c
266         when converting to bool.
267
268 2007-01-23  Roger Sayle  <roger@eyesopen.com>
269
270         * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
271         TREE_OVERFLOW.
272         * typeck.c (ignore_overflows): Remove the remaining uses of
273         TREE_CONSTANT_OVERFLOW.
274
275 2007-01-20  Jan Hubicka  <jh@suse.cz>
276
277         * decl2.c (start_objects, start_static_storage_duration_function):
278         Do not make the functions uninlinable.
279
280 2007-01-17  Ian Lance Taylor  <iant@google.com>
281
282         * class.c (add_method): Call VEC_reserve_exact rather than passing
283         a negative size to VEC_reserve.
284
285 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
286
287         PR c++/29573
288         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
289
290 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
291
292         PR c++/28999
293         * decl.c (make_typename_type): If the qualified name is not a
294         type, issue an error.
295         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
296         formatting.
297
298 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
299
300         * rtti.c: Include target.h.
301         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
302         don't emit typeinfo for fundamental types as weak.
303         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
304
305 2007-01-08  Richard Guenther  <rguenther@suse.de>
306
307         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
308
309 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
310
311         * call.c (standard_conversion): Pass flag to
312         vector_types_convertible_p to disallow emission of note.
313         * typeck.c (convert_for_assignment): Pass flag to
314         vector_types_convertible_p to allow emission of note.
315         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
316         to disallow emission of note.
317
318 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
319
320         PR c++/28986
321         * typeck.c (build_binary_op): Call overflow_warning if
322         TREE_OVERFLOW_P is true for the result and not for any of the
323         operands.
324         
325 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
326
327        PR c++/19439
328        * class.c (add_method): Don't wait until template
329        instantiation time to complain about duplicate methods.
330         
331 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
332
333         PR c/19978
334         * semantics.c (finish_unary_op_expr): Warn only if result
335         overflowed and operands did not.
336
337 2007-01-05  Ian Lance Taylor  <iant@google.com>
338
339         * typeck.c (build_binary_op): Warn about comparing a non-weak
340         address to NULL.
341
342 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
343
344         * pt.c (tsubst): Propagate the need for structural equality checks
345         when reducing the level of template parameters.
346
347 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
348
349         * pt.c: Fix a comment typo.
350
351 2006-01-02  Ian Lance Taylor  <iant@google.com>
352
353         * semantics.c (maybe_convert_cond): Optionally warn when using an
354         assignment as a condition.
355         * typeck.c (convert_for_assignment): Optionally warn about
356         assigning the result of an assignment to a bool.
357
358 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
359
360         * pt.c (canonical_template_parms): Correct typo in comment.
361         
362 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
363
364         * typeck.c (structural_comptypes): Renamed from "comptypes".
365         (comptypes): Use canonical type information to perform fast type
366         comparison. When VERIFY_CANONICAL_TYPES, verify that the
367         canonical type comparison returns the same results as we would see
368         from the current, structural check. Support COMPARE_STRUCTURAL
369         when we need structural checks.
370         * decl.c (typename_compare): Fix comment.
371         (build_typename_type): TYPENAME_TYPE nodes require structural
372         equality checks, because they resolve different based on the
373         current class type.
374         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
375         require structural equality checks (for now).
376         (build_ptrmemfunc_type): Build the canonical pointer to member
377         function type.
378         (compute_array_index_type): Whenever we build a new index type
379         to represent the size of an array in a template, we need to mark
380         this index type as requiring structural equality. This goes for
381         arrays with value-dependent sizes with the current ABI, or all
382         arrays with ABI-1.
383         * tree.c (cplus_array_hash): New.
384         (struct cplus_array_info): New.
385         (cplus_array_compare): New.
386         (cplus_array_htab): New.
387         (build_cplus_array_type_1): Use a hash table to cache the array
388         types we build. Build the canonical array type for each array
389         type.
390         (cp_build_qualified_type_real): When building a cv-qualified array
391         type, use the hash table of array types and build canonical array
392         types as necessary.
393         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
394         use structural equality (for now).
395         * cp-tree.h (COMPARE_STRUCTURAL): New.
396         * pt.c (canonical_template_parms): New.
397         (canonical_type_parameter): New.
398         (process_template_parm): Find the canonical type parameter.
399         (lookup_template_class): When we have named the primary template
400         type, set the canonical type for our template class to the primary
401         template type. If any of the template arguments need structural
402         equality checks, the template class needs structural equality
403         checks.
404         (tsubst): When reducing the level of a template template
405         parameter, we require structural equality tests for the resulting
406         parameter because its template parameters have not had their types
407         canonicalized. When reducing a template type parameter, find the
408         canonical reduced type parameter.
409         (any_template_arguments_need_structural_equality_p): New.
410
411 2006-12-31  Simon Martin  <simartin@users.sourceforge.net>
412
413         PR c++/29731
414         * parser.c (cp_parser_primary_expression): Return error_mark_node when
415         a statement-expression is found outside of a function body.
416
417 2006-12-28  Kazu Hirata  <kazu@codesourcery.com>
418
419         * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
420         Remove.
421
422         * decl2.c: Fix a comment typo.
423
424 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
425
426         PR C++/30225
427         * decl.c (cxx_builtin_function): Only copy the decl if adding
428         it to the std namespace.
429
430 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
431
432         PR C++/30168
433         * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
434
435 2006-12-22  Kazu Hirata  <kazu@codesourcery.com>
436
437         * decl.c: Fix a coment typo.
438
439 2006-12-18  Ian Lance Taylor  <iant@google.com>
440
441         * decl.c (start_preparsed_function): Add support for
442         -Wmissing-declarations.
443
444 2006-12-16  Simon Martin  <simartin@users.sourceforge.net>
445
446         PR c++/29475
447         * cp-tree.h (struct deferred_access_check): New structure to represent a
448         deferred access check. It replaces the previous representation as a tree.
449         (get_deferred_access_checks): Return a vector of struct
450         deferred_access_check instead of a tree list.
451         (perform_access_checks): Take a vector of struct deferred_access_check
452         instead of a tree list.
453         * semantics.c (struct deferred_access): Store the deferred access checks
454         as a vector of struct deferred_access_check instead of a tree list.
455         (push_deferring_access_checks): Handle the change in struct
456         deferred_access.
457         (get_deferred_access_checks): Likewise.
458         (pop_to_parent_deferring_access_checks): Likewise.
459         (perform_or_defer_access_check): Likewise.
460         (perform_access_checks): Take a vector of struct deferred_access_check
461         instead of a tree list.
462         * parser.c (struct tree_check): New structure to store various data
463         associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
464         (struct cp_token): Changed the value field to be a union with a pointer to
465         a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
466         tokens and a tree field for all other tokens.
467         (eof_token): Adjusted due to the change in struct cp_token.
468         (cp_lexer_get_preprocessor_token): Likewise.
469         (cp_lexer_purge_token): Likewise.
470         (cp_lexer_purge_tokens_after): Likewise.
471         (cp_lexer_print_token): Likewise.
472         (cp_parser_error): Likewise.
473         (cp_parser_identifier): Likewise.
474         (cp_parser_string_literal): Likewise.
475         (cp_parser_primary_expression): Likewise.
476         (cp_parser_unqualified_id): Likewise.
477         (cp_parser_parenthesized_expression_list): Likewise.
478         (cp_parser_storage_class_specifier_opt): Likewise.
479         (cp_parser_function_specifier_opt): Likewise.
480         (cp_parser_type_specifier): Likewise.
481         (cp_parser_simple_type_specifier): Likewise.
482         (cp_parser_initializer_list): Likewise.
483         (cp_parser_member_specification_opt): Likewise.
484         (cp_parser_attribute_list): Likewise.
485         (cp_parser_objc_expression): Likewise.
486         (cp_parser_objc_protocol_qualifiers): Likewise.
487         (cp_parser_objc_selector): Likewise.
488         (cp_parser_objc_declaration): Likewise.
489         (cp_parser_objc_statement): Likewise.
490         (cp_parser_omp_clause_name): Likewise.
491         (cp_parser_omp_clause_default): Likewise.
492         (cp_parser_omp_clause_schedule): Likewise.
493         (cp_parser_omp_parallel): Likewise.
494         (cp_parser_initial_pragma): Likewise.
495         (pragma_lex): Likewise.
496         (cp_parser_pre_parsed_nested_name_specifier): Likewise.
497         (cp_parser_nested_name_specifier_opt): Likewise.
498         Use cp_token::u::tree_check_value to save the token's value, the
499         associated deferred checks and its qualifying scope.
500         (cp_parser_template_id): Likewise.
501         (cp_parser_template_declaration_after_export): Adjusted the call to
502         get_deferred_access_checks.
503         (cp_parser_init_declarator): Take the access checks as a vector of struct
504         deferred_access_check instead of a tree list.
505         (cp_parser_single_declaration): Likewise.
506         (cp_parser_perform_template_parameter_access_checks): Likewise.
507         (cp_parser_simple_declaration): Adjusted the call to
508         cp_parser_init_declarator.
509         (cp_parser_explicit_specialization): Adjusted the call to
510         cp_parser_single_declaration.
511
512 2006-12-13  Ian Lance Taylor  <iant@google.com>
513
514         PR c++/19564
515         PR c++/19756
516         * parser.c (cp_parser_expression_stack_entry): Add field
517         lhs_type.
518         (cp_parser_binary_expression): Track tree code of left hand side
519         of expression.  Use it when calling build_x_binary_op.
520         (cp_parser_selection_statement): Add if_p parameter.  Change all
521         callers.  Warn about ambiguous else.
522         (cp_parser_statement): Add if_p parameter.  Change all callers.
523         (cp_parser_implicitly_scoped_statement): Likewise.
524         * typeck.c (build_x_binary_op): Add parameters arg1_code and
525         arg2_code.  Change all callers.  Call warn_about_parentheses.
526         * cp-tree.h (build_x_binary_op): Update declaration.
527
528 2006-12-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
529
530         * decl.c (build_enumerator): Update error message to match C
531         front-end.
532         
533 2006-12-11  Jan Hubicka  <jh@suse.cz>
534
535         * decl2.c (var_finalized_p): Update for renamed varpool functions.
536
537 2006-12-09  Zack Weinberg  <zackw@panix.com>
538
539         * parser.c (yydebug, enum pragma_omp_clause): Delete.
540
541 2006-12-07  Mark Mitchell  <mark@codesourcery.com>
542
543         PR c++/29732
544         * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
545         (explicit_class_specialization_p): Declare.
546         * pt.c (explicit_class_specialization_p): New function.
547         * parser.c (cp_parser_init_declarator): Check correct number of
548         template parameters for in-class function definitions.
549         (cp_parser_check_declrator_template_parameters): Stop looking for
550         template classes when we find an explicit specialization.
551
552 2006-12-07  Lee Millward  <lee.millward@codesourcery.com>
553
554         PR c++/29980
555         * cp_parser_elaborated_type_specifier: Check
556         the return value of check_elaborated_type_specifier.
557
558 2006-12-06  Mark Mitchell  <mark@codesourcery.com>
559
560         PR c++/29730
561         * parser.c (cp_parser_init_declarator): Reject initialization of
562         functions.
563
564 2006-12-05  Mark Mitchell  <mark@codesourcery.com>
565
566         PR c++/29729
567         * decl2.c (check_member_template): Move check for member
568         templates in local classes to ...
569         * parser.c (cp_parser_template_declaration_after_export):
570         ... here.
571
572         PR c++/29728
573         * decl.c (check_array_designated_initializer): New function.
574         (maybe_deduce_size_from_array_init): Use it.
575         (reshape_init_array): Likewise.
576
577 2006-12-05  Aldy Hernandez  <aldyh@redhat.com>
578
579         Merge from gimple-tuples-branch.
580
581         2006-10-05  Aldy Hernandez  <aldyh@redhat.com>
582
583         * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
584         (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
585         (cxx_omp_clause_copy_ctor): Same.
586         (cxx_omp_clause_assign_op): Same.
587
588         2006-09-28  Aldy Hernandez  <aldyh@redhat.com>
589
590         * cp-tree.h (union lang_tree_node): Gimple statements do not
591         have a TREE_CHAIN.
592         (TREE_INDIRECT_USING): Look in base.
593
594 2006-12-04  Jan Hubicka  <jh@suse.cz>
595
596         * cp-objcp-common.c (cp_expr_size): Return NULL in the case
597         size is undefined.
598
599 2006-12-04  Mark Mitchell  <mark@codesourcery.com>
600
601         PR c++/29733
602         * pt.c (tsubst_decl): Disallow variables of function type.
603
604         PR c++/29632
605         * call.c (add_builtin_candidate): Do not permit NULL pointer
606         constants to be compared with template parameters.
607
608 2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>
609
610         * pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
611         Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
612
613 2006-12-03  Richard Henderson  <rth@redhat.com>
614             Andrew Pinski  <pinskia@gmail.com>
615
616         PR C++/14329
617         * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
618
619 2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
620
621         PR C++/30033
622         * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
623
624 2006-12-02  Kazu Hirata  <kazu@codesourcery.com>
625
626         * name-lookup.c: Follow spelling conventions.
627
628 2006-12-01  Geoffrey Keating  <geoffk@apple.com>
629
630         * decl.c (poplevel): Check DECL_INITIAL invariant.
631         (duplicate_decls): Preserve DECL_INITIAL when eliminating
632         a new definition in favour of an old declaration.
633         (start_preparsed_function): Define and document value of
634         DECL_INITIAL before and after routine.
635         (finish_function): Check DECL_INITIAL invariant.
636         * parser.c
637         (cp_parser_function_definition_from_specifiers_and_declarator):
638         Skip duplicate function definitions.
639
640 2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
641
642         PR c++/30022
643         * typeck.c (type_after_usual_arithmetic_conversions):
644         Fix assertion for vector types.
645         (build_binary_op): Use temporary for inner type of vector types.
646
647 2006-12-01  Ryan Mansfield  <rmansfield@qnx.com>
648
649         PR c++/29066
650         * typeck.c (build_binary_op):  Fix pointer to member function
651         comparison for ptrmemfunc_vbit_in_delta targets.
652
653 2006-12-01  Dirk Mueller  <dmueller@suse.de>
654
655         PR c++/18313
656         * decl.c (grokdeclarator): Warn for type qualifiers on return
657         type for non-dependent types.
658         * pt.c (tsubst_function_type): Warn for type qualifiers on
659         return type for dependent types.
660
661 2006-11-30  Geoffrey Keating  <geoffk@apple.com>
662
663         * rtti.c (get_tinfo_decl): Handle return value from
664         pushdecl_top_level_and_finish.
665
666 2006-11-29  Lee Millward  <lee.millward@codesourcery.com>
667
668         PR c++/29022
669         * parser.c (cp_parser_class_head): Move processing
670         of any base classes to...
671         (cp_parser_class_specifier) ...here. Take an extra
672         tree* parameter for any base classes. Only process
673         them if the opening brace was found.
674
675 2006-11-28  Jakub Jelinek  <jakub@redhat.com>
676
677         PR c++/29735
678         * decl.c (grokfndecl): Check main's type after applying
679         attributes, not before.
680
681 2006-11-27  Mark Mitchell  <mark@codesourcery.com>
682
683         * class.c (build_vcall_offset_vtbl_entries): Do not add vcall
684         entries for a primary construction virtual table.
685
686 2006-11-26  Mark Mitchell  <mark@codesourcery.com>
687
688         PR c++/29886
689         * parser.c (cp_parser): Add in_function_body.
690         (cp_parser_new): Initialize it.
691         (cp_parser_primary_expression): Use parser->in_function_body
692         instead of at_function_scope_p.
693         (cp_parser_asm_definition): Likewise.
694         (cp_parser_direct_declarator): Likewise.
695         (cp_parser_class_specifier): Clear parser->in_function_body.
696         (cp_parser_constructor_declarator_p): Use parser->in_function_body
697         instead of at_function_scope_p.
698         (cp_parser_function_body_after_declarator): Set
699         parser->in_function_body.
700
701 2006-11-21      Douglas Gregor <doug.gregor@gmail.com>
702
703         * cp-tree.def (STATIC_ASSERT): New.
704         * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
705         * error.c (dump_decl): Handle STATIC_ASSERT.
706         * cp-tree.h (STATIC_ASSERT_CONDITION): New.
707         (STATIC_ASSERT_MESSAGE): New.
708         (STATIC_ASSERT_SOURCE_LOCATION): New.
709         (struct tree_static_assert): New.
710         (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
711         (union lang_tree_node): Add static_assertion.
712         (finish_static_assert): Declare.
713         * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
714         (pp_cxx_declaration): Handle STATIC_ASSERT.
715         * pt.c (instantiate_class_template): Handle
716         STATIC_ASSERT members.
717         (tsubst_expr): Handle STATIC_ASSERT statements.
718         * semantics.c (finish_static_assert): New.
719         * lex.c (D_CPP0X): New.
720         (reswords): Add static_assert keyword.
721         (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
722         * parser.c (cp_parser_block_declaration): Parse static
723         assertions.
724         (cp_parser_static_assert): New.
725         (cp_parser_member_declaration): Parse static assertions.
726
727 2006-11-21  Jakub Jelinek  <jakub@redhat.com>
728
729         PR c++/29570
730         * decl.c (cp_finish_decl): Check for value dependent brace enclosed
731         scalar initializer.
732
733         PR c++/29734
734         * cp-tree.h (WANT_VECTOR): Define.
735         (WANT_ARITH): Add WANT_VECTOR.
736         * cvt.c (build_expr_type_conversion): Handle vector types.
737         * typeck.c (build_unary_op): Add WANT_VECTOR to
738         build_expr_type_conversion flags.
739
740 2006-11-20  Simon Martin  <simartin@users.sourceforge.net>
741
742         PR c++/29475
743         * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
744         extra argument that represents the declaration to use to print
745         potential error messages.
746         * init.c (build_offset_ref): Adjusted the call to
747         perform_or_defer_access_check.
748         * class.c (alter_access, resolve_address_of_overloaded_function):
749         Likewise.
750         * decl.c (make_typename_type, make_unbound_class_template): Likewise.
751         * search.c (lookup_member): Likewise.
752         * friend.c (add_friend): Likewise.
753         * parser.c (cp_parser_template_id,
754         cp_parser_pre_parsed_nested_name_specifier): Likewise.
755         * semantics.c (finish_non_static_data_member,
756         check_accessibility_of_qualified_id, finish_id_expression): Likewise.
757         (pop_to_parent_deferring_access_checks, perform_access_checks,
758         perform_or_defer_access_check): Adjusted the call to enforce_access.
759         * call.c (enforce_access): Use the new extra argument to build the
760         error message.
761         (build_op_delete_call): Adjusted the call to
762         perform_or_defer_access_check.
763         (build_over_call): Likewise.
764
765 2006-11-16  Dirk Mueller  <dmueller@suse.de>
766
767         * name-lookup.c (begin_scope): Use GGC_CNEW instead of
768         GGC_NEW and memset.
769
770 2006-11-13  Roger Sayle  <roger@eyesopen.com>
771
772         * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
773         base type info initializer has the correct type.
774
775 2006-11-13  Mark Mitchell  <mark@codesourcery.com>
776
777         PR c++/29518
778         * pt.c (coerce_template_parms): Do not skip_evaluation while
779         substituting template arguments.
780
781 2006-11-11  Richard Guenther  <rguenther@suse.de>
782
783         * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
784         FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
785
786 2006-11-03  Roger Sayle  <roger@eyesopen.com>
787
788         * call.c (build_op_delete_call): Test user-visible type against
789         size_type_node, instead of against the internal type, sizetype.
790         * class.c (type_requires_array_cookie): Likewise.
791         * mangle.c (write_builtin_type) <INTEGER_TYPE>: Remove special
792         handling of TYPE_IS_SIZETYPE.
793         * typeck.c (type_after_usual_arithmetic_conversions): Remove
794         special case handling of TYPE_IS_SIZETYPE.
795         (comptypes): Likewise.
796
797 2006-11-01  Danny Smith  <dannysmith@users.sourceforge.net>
798
799         * decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
800         if targetm.cxx.use_atexit_for cxa_atexit.
801         (start_cleanup_fn): Likewise.
802         (register_dtor_fn): Likewise.
803
804 2006-09-25  Geoffrey Keating  <geoffk@apple.com>
805
806         * decl2.c (cp_write_global_declarations): Rename from
807         cp_finish_file.
808         * cp-lang.c (finish_file): Don't call cp_finish_file.
809         * cp-tree.h (cp_write_global_declarations): Rename from
810         cp_finish_file.
811         * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
812         cp_write_global_declarations.
813
814 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
815
816         * name-lookup.c (get_anonymous_namespace_name): New.
817         (push_namespace_with_attribs): Use get_anonymous_namespace_name.
818         * decl2.c (start_objects): Update for rename of
819         get_file_function_name_long.
820
821 2006-10-30  Dirk Mueller  <dmueller@suse.de>
822
823         PR c++/28704
824         * decl.c (grokdeclarator): Duplicate diagnostic message
825         for easier translation.
826         * decl.c (grokdeclarator): Fix line-wrapping.
827
828 2006-10-30  Dirk Mueller  <dmueller@suse.de>
829
830         PR c++/6321
831         * decl.c (grokfndecl): Use check_main_parameter_types.
832
833 2006-10-30  Dirk Mueller  <dmueller@suse.de>
834
835         PR c++/28669
836         * decl.c (grokfndecl): Duplicate warning message for
837         easier translation.
838
839 2006-10-30  Dirk Mueller  <dmueller@suse.de>
840
841         * typeck.c (build_unary_op): Fix indenting. Use G_().
842
843 2006-10-29  Dirk Mueller  <dmueller@suse.de>
844
845         PR c++/29089
846         * typeck.c (build_unary_op): Duplicate warning message
847         for easier translation.
848
849 2006-10-29  Dirk Mueller  <dmueller@suse.de>
850
851         PR c++/16307
852         * typeck.c (build_array_ref): Warn for char subscriptions
853         on pointers.
854
855 2006-10-29  Kazu Hirata  <kazu@codesourcery.com>
856
857         * decl.c: Fix a comment typo.
858
859 2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
860
861         PR C++/29295
862         * typeck.c (build_unary_op): Use same_type_p when comparing to
863         boolean type.
864
865 2006-10-29  Dirk Mueller  <dmueller@suse.de>
866
867         PR c++/29033
868         * typeck.c (build_binary_op): Duplicate warning message
869         for better translation.
870
871 2006-10-23  Rafael Avila de Espindola  <rafael.espindola@gmail.com>
872
873         * decl.c (builtin_function_1): Move common code to
874         add_builtin_function.
875         (builtin_function): Rename to cxx_builtin_function.
876         Change the signature.
877         * call.c: Include langhooks.h.
878         (build_java_interface_fn_ref):  Replace calls to
879         builtin_function with add_builtin_function.
880         * Make-lang.in (cp/call.o): Depend on langhooks.h.
881         * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
882         cxx_builtin_function.
883         * cp-tree.h (builtin_function): Rename to cxx_builtin_function.
884         Change the signature.
885
886 2006-10-22  Nathan Sidwell  <nathan@codesourcery.com>
887
888         PR c++/20647
889         * rtti.c (tinfo_base_init): The type info string is always global.
890
891 2006-10-20  Lee Millward  <lee.millward@codesourcery.com>
892             Mark Mitchell <mark@codesourcery.com>
893
894         PR c++/28053
895         * decl2.c (grokbitfield): Detect invalid non-integral
896         types earlier when possible.
897
898 2006-10-18  Mark Shinwell  <shinwell@codesourcery.com>
899
900         PR c++/26884
901         * typeck2.c (digest_init): Raise error upon attempts to
902         initialize arrays with variables.
903
904 2006-10-17  Lee Millward  <lee.millward@codesourcery.com>
905
906         PR c++/27952
907         * cp-tree.h (xref_basetypes): Return bool instead of void.
908         * decl.c (xref_basetypes): Adjust definition. Return false
909         if the class bases are invalid.
910         * parser.c (cp_parser_class_head): Check the return value
911         from xref_basetypes.
912
913 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
914
915         PR c++/28261
916         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
917         comment.
918
919         PR c++/28261
920         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
921         function.
922         (cp_parser_constructor_declarator_p): Use it.
923         (cp_parser_check_type_definition): Return a value indicating
924         whether or not the definition is valid.
925         (cp_parser_enum_specifier): Skip invalid enum definitions.
926
927 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
928
929         PR c++/29039
930         * typeck2.c (build_functional_cast): Don't zero-initialize
931         non-PODs; instead, call their constructors.
932         * method.c (synthesize_method): Always build mem-initializers, if
933         we're synthesizing the default constructor.
934
935 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
936
937         PR c++/27270
938         * decl.c (reshape_init_class): Move check for designated
939         to ...
940         * parser.c (cp_parser_initializer_list): ... here.
941         * pt.c (tsubst_copy_and_build): Use finish_compound_literal.
942
943 2006-10-16  Mark Mitchell  <mark@codesourcery.com>
944
945         PR c++/27270
946         * typeck2.c (process_init_constructor_array): Reword comment.
947         * pt.c (tsubst_copy_and_built): Call reshape_init before calling
948         digest_init.
949
950         PR c++/29408
951         * parser.c (cp_parser_using_declaration): Stop parsing when
952         something goes wrong with an access declaration.
953
954         PR c++/29435
955         * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
956         types when their sizes are required.  Refine test for VLAs.
957
958         PR c++/28211
959         * parser.c (cp_parser_template_argument): Don't consider "&var" a
960         possible constant-expression.
961         * pt.c (convert_nontype_argument): Refine handling of arguments of
962         pointer type.
963
964 2006-10-13  Mark Mitchell  <mark@codesourcery.com>
965
966         PR c++/28506
967         * parser.c (function_declarator_p): New function.
968         (cp_parser_init_declarator): Use it.
969         (cp_parser_member_declaration): Likewise.
970
971 2006-10-12  Mark Mitchell  <mark@codesourcery.com>
972
973         PR c++/29318
974         * rtti.c (get_tinfo_decl): Refuse to create type info objects for
975         variably modified types.
976
977 2006-10-12 Lee Millward <lee.millward@codesourcery.com>
978
979        PR c++/27961
980        * decl.c (start_decl): Return error_mark_node if a
981        function is initialized like a variable.
982        (check_var_type): If a variable of field is declared void,
983        set the type to error_mark_node.
984        (grokdeclarator): Check the return type of check_var_type.
985        * class.c (finish_struct_1): Robustify.
986
987 2006-10-11  Mark Mitchell  <mark@codesourcery.com>
988
989         PR c++/29175
990         * decl.c (check_initializer): Issue errors about trying to
991         initialize arrays whose elements have variable size.
992
993 2006-10-11  Lee Millward  <lee.millward@codesourcery.com>
994
995         PR c++/29024
996         * cp-tree (struct cp_decl_specifier_seq): Rename to
997         conflicting_specifiers_p
998         * parser.c (cp_parser_set_storage_class): Set
999         conflicting_specifiers_p for the input decl specifier
1000         if a typedef specifier is present. Rename uses of
1001         multiple_specifiers_p to conflicting_specifiers_p.
1002         (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
1003         class specifier has already been set for this declaration,
1004         set conflicting_specifiers_p to true on the decl_specs.
1005         * decl.c (grokdeclarator): Rename uses of
1006         multiple_specifiers_p to conflicting_specifiers_p.
1007
1008 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
1009
1010         * Make-lang.in: Added "c++.pdf" target support.
1011
1012 2006-10-10  Richard Guenther  <rguenther@suse.de>
1013
1014         PR rtl-optimization/29323
1015         * decl.c (finish_function): Set TREE_NOTHROW only for
1016         functions that bind local.
1017
1018 2006-10-09  Richard Henderson  <rth@redhat.com>
1019
1020         Revert emutls patch.
1021
1022 2006-10-04  Richard Henderson  <rth@redhat.com>
1023             Jakub Jelinek  <jakub@redhat.com>
1024
1025         * decl.c (grokvardecl): Don't error if !have_tls.
1026         (grokdeclarator): Likewise.
1027         * parser.c (cp_parser_omp_threadprivate): Likewise.
1028
1029 2006-10-03  Mark Mitchell  <mark@codesourcery.com>
1030
1031         PR c++/29020
1032         * friend.c (do_friend): Improve comments; add assertion.
1033         * parser.c (cp_parser_nested_name_specifier_opt): Resolve
1034         typenames for qualified names used in declarations, even when
1035         caching qualified name lookup.
1036
1037         PR c++/29138
1038         * decl2.c (grokfield): Don't handle access declarations here.
1039         * parser.c (cp_parser_using_declaration): Handle access
1040         declarations too.
1041         (cp_parser_block_declaration): Adjust calls to
1042         cp_parser_using_declaration.
1043         (cp_parser_member_declaration): Likewise.  Use
1044         cp_parser_using_declaration to look for access_declarations.
1045
1046 2006-10-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1047
1048         PR c++/29291
1049         * init.c (build_new): Check for invalid init.
1050
1051 2006-10-02  Mark Mitchell  <mark@codesourcery.com>
1052
1053         PR c++/29226
1054         * typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
1055         not try to actually evaluate sizeof for a VLA type.
1056
1057 2006-10-01  Mark Mitchell  <mark@codesourcery.com>
1058
1059         PR c++/29105
1060         * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
1061         * semantics.c (baselink_for_fns): Build a baselink, even when
1062         processing a template.
1063
1064         PR c++/29080
1065         * parser.c (cp_parser_postfix_dot_deref_expression): Use
1066         BASELINK_ACCESS_BINFO as the qualifying scope when calling
1067         adjust_result_of_qualified_name_lookup.
1068
1069 2006-09-25  Lee Millward  <lee.millward@codesourcery.com>
1070
1071         PR c++/27329
1072         PR c++/26938
1073         * cp-tree.h (redeclare_class_template): Adjust declaration
1074         to return bool instead of void.
1075         * pt.c (redeclare_class_template): Update definition.
1076         Return false on error.
1077         * decl.c (xref_tag): Return error_mark_node if
1078         redeclare_class_template returned false.
1079
1080         PR c++/27667
1081         * cp-tree.h (begin_specialization): Return bool
1082         instead of void.
1083         * pt.c (check_specialization_scope): Likwise.
1084         Adjust comment. Return false if a specialization
1085         isn't permitted in the current scope.
1086         (begin_specialization): Use the return value of
1087         check_specialization_scope.
1088         * parser.c (cp_parser_explicit_specialization): If
1089         begin_specialization returned false, skip the rest
1090         of the specialization.
1091
1092 2006-09-21  Mark Mitchell  <mark@codesourcery.com>
1093
1094         PR c++/29016
1095         * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
1096         BASELINK.
1097
1098 2006-09-21  Lee Millward  <lee.millward@codesourcery.com>
1099
1100         PR c++/28861
1101         * decl.c (shadow_tag): Return error_mark_node
1102         if maybe_process_partial_specialization failed.
1103
1104         PR c++/28303
1105         * decl.c (grokdeclarator): Return error_mark_node on
1106         declaration with two or more data types.
1107
1108 2006-09-20  Danny Smith  <dannysmith@users.sourceforge.net>
1109
1110         PR target/27650
1111         * class.c (check_for_override): Remove dllimport from virtual
1112         methods.
1113
1114 2006-09-18  Steven Bosscher  <steven@gcc.gnu.org>
1115
1116         PR c++/29087
1117         * parser.c (cp_parser_labeled_statement): Return nothing.  Do
1118         not take in_statement_expr and in_compound as arguments.  Rename
1119         to cp_parser_label_for_labeled_statement.  Parse only the label,
1120         not the statement.
1121         (cp_parser_statement): Parse the statement of a labeled-statement
1122         from here, using tail recursion.
1123
1124 2006-09-14  Andrew Pinski  <pinskia@physics.uc.edu>
1125
1126         PR C++/29002
1127         * init.c (build_zero_init): If we have an error mark node for
1128         the array size, return.
1129
1130 2006-09-10  Mark Mitchell  <mark@codesourcery.com>
1131
1132         PR c++/28991
1133         * cp-objcp-common.c (cxx_staticp): New function.
1134         * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
1135         * cp-tree.h (cxx_staticp): New function.
1136
1137 2006-09-09  Jason Merrill  <jason@redhat.com>
1138
1139         PR c++/28996
1140         * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
1141
1142 2006-09-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1143
1144         PR c++/28858
1145         * parser.c (cp_parser_skip_until_found): Rename to
1146         cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
1147         parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
1148         Reorganize.  Adjust comment.
1149         (cp_parser_template_declaration_after_export): Adjust call.
1150         (cp_parser_enclosed_template_argument_list): Likewise.
1151
1152 2006-09-07  Andrew Pinski  <pinskia@physics.uc.edu>
1153
1154         PR C++/28906
1155         * init.c (build_new_1): Build a distinct type copy
1156         for the array type that was returned from
1157         build_cplus_array_type.
1158
1159 2006-09-07  Jason Merrill  <jason@redhat.com>
1160
1161         PR c++/27371
1162         * cvt.c (convert_to_void): Enable previous change.
1163
1164         PR c++/26957
1165         * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
1166         parms.
1167
1168 2006-09-07  Simon Martin  <simartin@users.sourceforge.net>
1169
1170         PR c++/28284
1171         * pt.c (fold_non_dependent_expr): Make sure expr is not
1172         dereferenced if it is NULL.
1173
1174 2006-09-06  Zak Kipling  <zak@transversal.com>
1175
1176         PR c++/26195
1177         * decl.c (make_rtl_for_nonlocal_decl),
1178         (start_preparsed_function): Don't use lbasename on
1179         input_filename when calling get_fileinfo.
1180         * semantics.c (begin_class_definition): Likewise.
1181         * lex.c (cxx_make_type): Likewise.
1182         (handle_pragma_interface): Call get_fileinfo on input_filename,
1183         not on the parameter to the directive.
1184
1185 2006-09-06  Mark Mitchell  <mark@codesourcery.com>
1186
1187         PR c++/28903
1188         * pt.c (tsubst): Use fold_non_dependent_expr to fold array
1189         dimensions.
1190
1191         PR c++/28886
1192         * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
1193         dimensions.
1194
1195 2006-09-06  Jason Merrill  <jason@redhat.com>
1196
1197         PR c++/27371
1198         * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
1199         * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
1200         * tree.c (build_cplus_new): Set it.
1201
1202         PR c++/26696
1203         * cvt.c (convert_to_void): Replace a subexpression with no side
1204         effects with void_zero_node.
1205         * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
1206         (get_first_fn): Ditto.
1207         * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
1208
1209 2006-09-05  Jason Merrill  <jason@redhat.com>
1210
1211         PR c++/26571
1212         * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
1213         where the name is a type used incorrectly.
1214
1215         PR c++/26671
1216         * typeck.c (maybe_warn_about_returning_address_of_local): Look
1217         through COMPONENT_REF and ARRAY_REF.
1218
1219         PR c++/26102
1220         * name-lookup.c (do_class_using_decl): Try to find the base even
1221         if bases_dependent_p.
1222         * pt.c (type_dependent_expression_p): A USING_DECL is dependent.
1223
1224         PR c++/19809
1225         * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
1226
1227 2006-09-04  Nathan Sidwell  <nathan@codesourcery.com>
1228
1229         PR 23287 Revert my 2006-09-01 patch.
1230         * parser.c: Reverted.
1231         * pt.c: Reverted.
1232
1233 2006-09-02  Lee Millward  <lee.millward@codesourcery.com>
1234
1235         PR c++/27670
1236         PR c++/27493
1237         PR c++/27494
1238         PR c++/27397
1239         * parser.c (cp_parser_template_parameter_list): Add
1240         invalid template parameters to the parameter list as
1241         error_mark_node.
1242
1243 2006-09-02  Jakub Jelinek  <jakub@redhat.com>
1244
1245         PR c++/28878
1246         * except.c (build_throw): Only set current_function_returns_abnormally
1247         if cfun is not NULL.
1248
1249         PR c++/26917
1250         * repo.c (repo_file): Remove.
1251         (open_repo_file, reopen_repo_file_for_write): Return fopened
1252         FILE * instead of setting global repo_file variable.
1253         (init_repo): Adjust caller.
1254         (finish_repo): Likewise.  Return instead of goto out before
1255         reopen_repo_file_for_write has been called.
1256
1257 2006-09-01  Nathan Sidwell  <nathan@codesourcery.com>
1258
1259         PR c++/28705
1260         * semantics.c (finish_call_expr): Add assert.
1261         * name-lookup.c (lookup_arg_dependent): Check we found an overload
1262         or an object.
1263
1264         PR c++/23287
1265         * parser.c (cp_parser_id_expression): Add member_p
1266         argument. Update all callers.
1267         (cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
1268         the object's scope, if valid.
1269         (cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
1270         callers.
1271         (cp_parser_postfix_dot_deref_expression): Set object_scope.
1272         * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
1273
1274 2006-08-30  Jason Merrill  <jason@redhat.com>
1275
1276         PR c++/26670
1277         * class.c (check_field_decls): Don't unset TYPE_PACKED until all
1278         the fields have been processed.
1279
1280 2006-08-29  Andrew Pinski  <pinskia@physics.uc.edu>
1281
1282         PR C++/28349
1283         * call.c (build_x_va_arg): Remove the reference type
1284         from the type before creating the pointer type.
1285
1286 2006-08-29  J"orn Rennecke  <joern.rennecke@st.com>
1287
1288         PR c++/28139
1289         * except.c (expand_start_catch_block): Use correct types for bitwise
1290         copy.
1291
1292 2006-08-28  Jason Merrill  <jason@redhat.com>
1293
1294         PR c++/26670
1295         * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
1296         fields can't be packed.
1297
1298         PR c++/26577
1299         * cvt.c (convert_to_void): Don't automatically load from volatiles
1300         of TREE_ADDRESSABLE type.
1301
1302 2006-08-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1303
1304         PR c++/28860
1305         * cp-tree.h (maybe_process_partial_specialization): Return
1306         tree instead of void.
1307         * parser.c (cp_parser_class_head): Use return value of
1308         maybe_process_partial_specialization.
1309         * pt.c (maybe_process_partial_specialization): Return error_mark_node
1310         for broken specializations, TYPE otherwise.  Check for template
1311         template parameters.
1312
1313 2006-08-27  Mark Mitchell  <mark@codesourcery.com>
1314
1315         PR c++/28058
1316         * pt.c (register_specialization): Return error_mark_node for
1317         specialization-after-instantiation.
1318         * decl2.c (mark_used): Mark the main function used when one of its
1319         clones is used.
1320
1321 2006-08-27  Lee Millward  <lee.millward@codesourcery.com>
1322
1323         PR c++/26573
1324         * class.c (check_field_decls): Don't issue error about
1325         local classes containing static data members.
1326
1327 2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>
1328
1329         PR c++/24009
1330         * parser.c (struct cp_token): Add input_file_stack_index.
1331         (eof_token): Update.
1332         (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
1333         (cp_lexer_set_source_position_from_token): Restore input file
1334         stack.
1335
1336 2006-08-26  Lee Millward  <lee.millward@codesourcery.com>
1337
1338         PR c++/28736
1339         PR c++/28737
1340         PR c++/28738
1341         * pt.c (process_template_parm): Store invalid template
1342         parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
1343         (push_inline_template_parms_recursive): Check for template
1344         parameters having a TREE_VALUE of error_mark_node rather than
1345         check the parameter itself.
1346         (mangle_class_name_for_template): Likewise.
1347         (comp_template_parms): When comparing the individual template
1348         parameters, return 1 if either is error_mark_node.
1349         (current_template_args): Robustify.
1350         (redeclare_class_template): Likewise.
1351
1352 2006-08-26  Mark Mitchell  <mark@codesourcery.com>
1353
1354         PR c++/28588
1355         * class.c (resolve_address_of_overloaded_function): Add
1356         access_path parameter.  Perform access checks.
1357         (instantiate_type): Adjust call to
1358         resolve_address_of_overloaded_function.  Remove unnecessary code.
1359         * tree.c (is_overloaded_fn): Document.  Return 2 when there are
1360         acutally multiple functions.
1361         (really_overloaded_fn): Use is_overloaded_fn.
1362         * mangle.c (write_expression): Handle BASELINKs.
1363         * cp-tree.h (really_overloaded_fn): Return bool.
1364         (baselink_for_fns): Declare.
1365         * search.c (lookup_member): Check access for single static
1366         functions here.
1367         * pt.c (convert_nontype_argument_function): Handle BASELINKs.
1368         (tsubst_copy_and_build): Generate BASELINKs for template-ids.
1369         * semantics.c (finish_call_expr): Use baselink_for_fns.
1370         (baselink_for_fns): New function.
1371         (finish_id_expression): Use it.
1372         * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
1373
1374         PR c++/28595
1375         * pt.c (tsubst): Issue errors about attempts to create VLAs at
1376         template-instantiation time.
1377
1378 2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1379
1380         PR c++/28853
1381         * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
1382         template parameters.  Improve error message for template type
1383         parameters.
1384
1385         PR c++/28852
1386         * cp-tree.h (grok_op_properties): Return bool instead of void.
1387         * decl.c (grokfndecl): Discard invalid operator declarations.
1388         (copy_fn_p): Revert change for PR 27547.
1389         (grok_op_properties): Return error status (true on success).
1390         * pt.c (tsubst_decl): Discard invalid operator declarations.
1391
1392 2006-08-25  Mark Mitchell  <mark@codesourcery.com>
1393
1394         PR c++/28056
1395         * decl.c (grokdeclarator): Disallow declarations with qualified
1396         names in local scopes.
1397
1398 2006-08-25  Nathan Sidwell  <nathan@codesourcery.com>
1399
1400         PR c++/27787
1401         * decl.c (make_typename_type): Only try and resolve it when
1402         context is not dependent.  Refactor.
1403         * decl2.c (check_classfn): Push to class scope before looking for
1404         the function.
1405
1406 2006-08-24  Danny Smith   <dannysmith@users.sourceforge.net>
1407
1408         PR driver/28528
1409         * g++spec.c (lang_specific_driver): Always check if we need to
1410         swallow a space-separated  arg to '-x'.
1411         * lang-specs.h: Don't create ouput files for '-xc++-header'
1412         if -fsyntax-only.
1413
1414 2006-08-23  Jason Merrill  <jason@redhat.com>
1415
1416         PR c++/27714
1417         * pt.c (push_template_decl_real): A friend template with class
1418         scope isn't primary.
1419
1420 2006-08-23  Benjamin Smedberg <benjamin@smedbergs.us>
1421
1422         PR c++/28687
1423         * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
1424         Move -fno-rtti check to be more specific.
1425
1426 2006-08-22  Jason Merrill  <jason@redhat.com>
1427
1428         PR c++/23372
1429         * call.c (build_over_call): Don't make a copy here if build_call
1430         will make one too.
1431
1432 2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>
1433
1434         PR C++/28450
1435         * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
1436         COMPLEX_TYPEs.
1437
1438 2006-08-22  Simon Martin  <simartin@users.sourceforge.net>
1439
1440         PR c++/28420
1441         * parser.c (cp_parser_postfix_expression): Make sure that the
1442         saved value for parser->type_definition_forbidden_message is
1443         restored before returning to avoid an invalid free().
1444
1445 2006-08-22  Jason Merrill  <jason@redhat.com>
1446
1447         PR c++/28659
1448         * typeck.c (merge_types): If either of the types have the right
1449         attributes, return that one.
1450
1451         * tree.c (cp_build_type_attribute_variant): Make sure we aren't
1452         doing this to class types.
1453         * typeck.c (original_type): Deal with type quals properly.
1454
1455 2006-08-21  Jason Merrill  <jason@redhat.com>
1456
1457         PR c++/27115
1458         * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
1459         just leave the expression as it is.
1460         (finish_stmt_expr): If the statement-expression has class type,
1461         wrap it in a TARGET_EXPR.
1462         * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
1463         CLEANUP_POINT_EXPR.
1464         * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
1465
1466 2006-08-21  Lee Millward  <lee.millward@codesourcery.com>
1467
1468         PR c++/26269
1469         * decl.c (duplicate_decls): Return early if either
1470         newdecl or olddecl is error_mark_node.
1471
1472          PR c++/28505
1473         * decl.c (grokdeclarator): Return early after
1474         issuing diagnostic about an incomplete type.
1475
1476         PR c++/28741
1477         * tree.c (decl_anon_ns_mem_p): Robustify.
1478         * decl2.c (determine_visibility): Likewise.
1479
1480 2006-08-20  Mark Mitchell  <mark@codesourcery.com>
1481
1482         PR c++/28341
1483         * tree.c (cast_valid_in_integral_constant_expression_p): New
1484         function.
1485         * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
1486         * pt.c (tsubst_expr): Add integral_constant_expression_p
1487         parameter.
1488         (fold_non_dependent_expr): Adjust callers of
1489         tsubst_{expr,copy_and_build}.
1490         (tsubst_friend_function): Likewise.
1491         (tsubst_template_arg): Likewise.
1492         (tsubst_default_argument): Likewise.
1493         (tsubst_decl): Likewise.
1494         (tsubst): Likewise.
1495         (tsubst_omp_clasuses): Likewise.
1496         (regenerate_decl_fromp_template): Likewise.
1497         (instantiate_decl): Likewise.
1498         (tsubst_initializer_list): Likewise.
1499         (tsubst_enum): Likewise.
1500         (tsubst_expr): Use RECUR throughout.
1501         (tsubst_copy_and_build): Change definition of RECUR.  Do not allow
1502         invalid casts in integral constant expressions.
1503         * parser.c (cp_parser_postfix_expression): Use
1504         cast_valid_in_integral_constant_expression_p.
1505         (cp_parser_cast_expression): Likewise.
1506         (cp_parser_functional_cast): Likewise.
1507
1508         PR c++/28346
1509         * pt.c (tsubst_qualified_id): Do not strip references from
1510         OFFSET_REFs.
1511
1512 2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1513
1514         PR c++/28606
1515         * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
1516         Fix formatting.
1517         (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
1518         for valid type-names.
1519         (cp_parser_unqualified_id): Fix error handling for destructors.
1520
1521         PR c++/28710
1522         * decl.c (xref_tag): Improve error message.  Return early on error.
1523
1524         PR c++/28711
1525         * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.
1526
1527 2006-08-17  Paolo Bonzini  <bonzini@gnu.org>
1528
1529         PR c++/28573
1530         * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
1531
1532 2006-08-16  Andrew Pinski  <pinskia@physics.uc.edu>
1533
1534         PR c++/28302
1535         * typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
1536         perform_integral_promotions for non integral type.
1537
1538 2006-08-16  Jason Merrill  <jason@redhat.com>
1539
1540         PR c++/28385
1541         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
1542         if arg is a function.
1543
1544 2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1545
1546         PR c++/28593
1547         * init.c (build_new): Return early on invalid placement.
1548
1549 2006-08-15  Lee Millward  <lee.millward@codesourcery.com>
1550
1551         PR c++/28594
1552         * pt.c (process_template_parm): Robustify.
1553
1554 2006-08-14  Steve Ellcey  <sje@cup.hp.com>
1555
1556         PR c++/28288
1557         PR c++/14556
1558         * operators.def: Remove <?, ?>, <?=, and >?= operators.
1559         * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
1560         (cp_parser_warn_min_max): Remove.
1561
1562 2006-08-11  Jason Merrill  <jason@redhat.com>
1563
1564         PR c++/28559
1565         * parser.c (cp_parser_elaborated_type_specifier): Also ignore
1566         attributes applied to a TYPENAME_TYPE.
1567
1568 2006-08-09  Lee Millward  <lee.millward@codesourcery.com>
1569
1570         PR c++/28637
1571         * pt.c (coerce_template_parms): Copy across the
1572         invalid template arguments to the new template inner arguments.
1573         (retrieve_specialization): Robustify.
1574
1575         PR c++/28638
1576         * pt.c (coerce_template_template_parms): Robustify.
1577
1578         PR c++/28639
1579         * error.c (dump_template_parms): Robustify.
1580
1581         PR c++/28640
1582         * pt.c (redeclare_class_template): Robustify.
1583
1584         PR c++/28641
1585         * pt.c (type_unification_real): Robustify.
1586
1587 2006-08-03  Lee Millward  <lee.millward@codesourcery.com>
1588
1589         PR c++/28347
1590         * decl.c (start_decl): Return error_mark_node if a
1591         diagnostic was issed for an invalid typedef initialization.
1592
1593 2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1594
1595         PR c++/27508
1596         * parser.c (cp_parser_unqualified_id): Check for invalid scopes
1597         when parsing destructor names.
1598
1599         PR c++/28274
1600         * decl.c (duplicate_decls): Call check_default_args here.
1601         (start_preparsed_function): Do not call check_default_args.
1602         * name-lookup.c (pushdecl_maybe_friend): Only call
1603         check_default_args if duplicate_decls got bypassed.
1604
1605 2006-08-02  Richard Guenther  <rguenther@suse.de>
1606
1607         PR c++/28479
1608         Revert
1609         2006-07-05  Richard Guenther  <rguenther@suse.de>
1610         Andrew Pinski  <pinskia@gcc.gnu.org>
1611
1612         PR c++/27084
1613         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1614         top level qualifiers for pointer type comparisons.
1615
1616 2006-08-02  Mark Mitchell  <mark@codesourcery.com>
1617
1618         PR c++/28557
1619         * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
1620
1621 2006-07-31  Mark Mitchell  <mark@codesourcery.com>
1622
1623         PR c++/28523
1624         * tree.c (stabilize_expr): Tweak documentation.  Add assertion.
1625         (stabilize_call): Tweak documentation.
1626         (stabilize_init): Only call stabilize_call for calls.
1627
1628 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
1629
1630         PR c++/28432
1631         * decl2.c (check_classfn): Remove early return.
1632         * search.c (lookup_member): Return NULL with bad type.
1633
1634 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
1635
1636         PR c++/28256
1637         * decl.c (check_initializer): Check for 1 initializer on scalar types.
1638
1639 2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
1640
1641         PR debug/23336
1642         * pt.c (tsubst_copy_and_build): Mark used enum types.
1643         * semantics.c (finish_id_expression): Likewise.
1644
1645 2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1646
1647         PR c++/6634
1648         * decl.c (grokdeclarator): Check whether "long" or "short" was
1649         specified for non-integral types.
1650
1651 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1652
1653         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
1654
1655 2006-07-28  Lee Millward  <lee.millward@codesourcery.com>
1656
1657         PR c++/27668
1658         PR c++/27962
1659         * pt.c (process_template_parm) Store invalid template
1660         parameters as error_mark_node in the paramater list.
1661         (push_inline_template_parms_recursive): Handle invalid
1662         template parameters.
1663         (comp_template_parms): Likewise.
1664         (check_default_tmpl_arg): Likewise.
1665         (coerce_template_template_parms): Likewise.
1666         (mangle_class_name_for_template): Likewise.
1667         (tsubst_template_parms): Likewise.
1668         * error.c (dump_template_argument_list): Likewise.
1669
1670 2006-07-28  Kazu Hirata  <kazu@codesourcery.com>
1671
1672         * cp-tree.h: Fix a comment typo.
1673
1674 2006-07-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1675
1676         PR c++/27572
1677         * decl.c (grokdeclarator): Return error_mark_node after invalid
1678         typedef.
1679
1680 2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>
1681
1682         PR c++/28460
1683         * decl.c (grokvardecl): Use FROB_CONTEXT.
1684         * pt.c (register_specialization): Likewise.
1685
1686 2006-07-23  Mark Mitchell  <mark@codesourcery.com>
1687
1688         PR c++/28025
1689         * cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
1690         * name-lookup.c (unqualified_namespace_lookup): There is no way to
1691         have a hidden name in non-namespace scopes.
1692         * pt.c (tsubst_friend_class): Look for hidden names.
1693         * decl.c (lookup_and_check_tag): Fix typo in comment.
1694
1695         * semantics.c (finish_compound_literal): Fix typo in comment.
1696
1697 2006-07-21  Jason Merrill  <jason@redhat.com>
1698
1699         * decl2.c (determine_visibility): Don't propagate visibility from
1700         type to decl.
1701         (constrain_class_visibility): Don't warn in system headers.
1702         Don't warn about pointer fields.
1703
1704 2006-07-20  Mike Stump  <mrs@apple.com>
1705
1706         * decl2.c (determine_visibility_from_class): Don't use hidden
1707         visibility for explicit instantiations.
1708
1709 2006-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1710
1711         PR c++/28250
1712         * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
1713         valid decls.  Cleanup.
1714
1715         PR c++/28363
1716         * semantics.c (check_template_template_default_arg): Simplify
1717         error handling.
1718
1719 2006-07-20  Jason Merrill  <jason@redhat.com>
1720
1721         PR c++/28407
1722         * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
1723         const variables with implicit internal linkage.
1724         * tree.c (decl_linkage): Only return lk_external if it's set.
1725
1726         PR c++/28409
1727         * decl2.c (constrain_visibility): Ignore the anonymous namespace
1728         for extern "C" decls.
1729         (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
1730
1731         * decl2.c (constrain_visibility): Remove specified and reason
1732         parameters.  Don't touch decls that already have explicit visibility.
1733         (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
1734         template.
1735         (determine_visibility_from_class): Reverse sense of
1736         DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
1737         (constrain_class_visibility): Only complain about member visibility
1738         if the member type is another class.  Don't change visibility of the
1739         current class.
1740
1741 2006-07-19  Mark Mitchell  <mark@codesourcery.com>
1742
1743         PR c++/28338
1744         * decl.c (layout_var_decl): Don't call push_local_name here.
1745         (initialize_artificial_var): Assert artificiality.
1746         (cp_finish_decl): Call push_local_name here.
1747
1748 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
1749
1750         PR c++/28337
1751         * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
1752         templates.
1753
1754 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
1755
1756         PR c++/28048
1757         * semantics.c (check_accessibility_of_qualified_id): Robustify.
1758
1759         PR c++/28235
1760         * pt.c (tsubst_decl): Handling substitutions into a static data
1761         member from within the scope of the tempalte itself.
1762
1763 2006-07-18  Lee Millward  <lee.millward@gmail.com>
1764
1765         PR c++/28258
1766         * method.c (locate_copy): Check for non_reference
1767         returning error_mark_node.
1768
1769         PR c++/28260
1770         * decl.c (duplicate_decls): Return error_mark_node
1771         on ambiguous declaration.
1772
1773 2006-07-18  Steve Ellcey  <sje@cup.hp.com>
1774
1775         PR c++/27495
1776         * search.c (adjust_result_of_qualified_name_lookup): Change
1777         assert to part of if statement.
1778
1779 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
1780
1781         PR c++/28291
1782         * decl.c (reshape_init_class): Return error_mark_node on error.
1783
1784 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
1785
1786         PR c++/28304
1787         * decl2.c (check_classfn): Return NULL_TREE on error.
1788
1789 2006-07-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1790
1791         PR c++/28250
1792         * name-lookup.c (pushdecl_maybe_friend): Return early on
1793         error_mark_node.
1794         * except.c (expand_start_catch_block): Use error_mark_node instead
1795         of NULL_TREE for invalid decls.
1796         * parser.c (cp_parser_exception_declaration): Return error_mark_node
1797         on invalid catch parameter. Simplify.
1798
1799 2006-07-16  Jakub Jelinek  <jakub@redhat.com>
1800
1801         PR c++/28370
1802         * decl2.c (note_vague_linkage_var): Removed.
1803         (finish_static_data_member_decl): Add decl to pending_statics vector
1804         directly.  Do it even for non-public decls.
1805
1806 2006-07-15  Lee Millward  <lee.millward@gmail.com>
1807
1808         PR c++/28292
1809         * decl2.c (acceptable_java_type): Robustify. Use
1810         proper Boolean return type instead of return 1.
1811         (check_java_method): Don't issue error about
1812         type not being an acceptable Java parameter if
1813         it's error_mark_node.
1814
1815         PR c++/28269
1816         * parser.c (cp_parser_elaborated_type_specifier):
1817         Return early if an invalid type was detected.
1818
1819 2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1820
1821         PR c++/28249
1822         * parser.c (cp_parser_check_decl_spec): New function.
1823         (cp_parser_decl_specifier_seq): Factor out check for repeated
1824         decl-specifiers into cp_parser_check_decl_spec. Use it.
1825         (cp_parser_type_specifier_seq): Use it.
1826
1827         PR c++/28294
1828         * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
1829         only.
1830
1831         PR c++/28387
1832         * decl2.c (cplus_decl_attributes): Check for invalid decls.
1833
1834 2006-07-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1835
1836         PR c++/28343
1837         * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
1838         * decl2.c (grokfield): Likewise.
1839
1840 2006-07-12  Geoffrey Keating  <geoffk@apple.com>
1841
1842         * decl2.c (determine_visibility): Don't change visibility of
1843         function locals because of -fvisibility-inlines-hidden.
1844
1845 2006-07-12  Jason Merrill  <jason@redhat.com>
1846
1847         PR c++/28217
1848         * semantics.c (note_decl_for_pch): Don't premangle templates.
1849
1850 2006-07-12  Martin Michlmayr  <tbm@cyrius.com>
1851
1852         * typeck.c (string_conv_p): Remove spurious quotation mark in
1853         warning.
1854
1855 2006-07-07  Lee Millward  <lee.millward@gmail.com>
1856             Andrew Pinski  <pinskia@gmail.com>
1857
1858         PR c++/27820
1859         * decl.c (define_label): Return error_mark_node on error.
1860         * semantics.c (finish_label_stmt): Don't call
1861         add_stmt for invalid labels.
1862
1863 2006-07-06  Jason Merrill  <jason@redhat.com>
1864
1865         PR c++/28279
1866         * decl2.c (finish_static_data_member_decl): Don't assert
1867         TREE_PUBLIC.
1868
1869 2006-07-05  Jason Merrill  <jason@redhat.com>
1870
1871         PR c++/13983
1872         PR c++/17519
1873         * class.c (check_field_decls): Check TYPE_PACKED after
1874         stripping array types.
1875         (finish_struct_bits): Don't copy TYPE_SIZE here.
1876
1877         PR c++/18681
1878         * friend.c (is_friend): Fix DR 45 implementation.
1879
1880 2006-07-05  Richard Guenther  <rguenther@suse.de>
1881         Andrew Pinski  <pinskia@gcc.gnu.org>
1882
1883         PR c++/27084
1884         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1885         top level qualifiers for pointer type comparisons.
1886
1887 2006-07-01  Jason Merrill  <jason@redhat.com>
1888
1889         PR c++/28215
1890         * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
1891         DECL_TEMPLATE_INFO.
1892
1893 2006-06-30  Jason Merrill  <jason@redhat.com>
1894
1895         PR c++/26577
1896         * call.c (build_new_method_call): Force evaluation of the
1897         instance pointer, not the object.
1898
1899 2006-06-30  Kazu Hirata  <kazu@codesourcery.com>
1900
1901         * decl2.c: Fix a comment typo.
1902
1903 2006-06-30  Jason Merrill  <jason@redhat.com>
1904
1905         PR c++/18698
1906         * decl2.c (grokfield): Only try to treat the decl as an access
1907         declaration if the scope is a class.
1908
1909 2006-06-29  Jason Merrill  <jason@redhat.com>
1910
1911         PR c++/26905
1912         PR c++/26612
1913         PR c++/27000
1914         PR c++/26984
1915         PR c++/19134
1916         * decl2.c (determine_visibility): Overhaul.
1917         (determine_visibility_from_class): Likewise.
1918         (min_vis_r, type_visibility, constrain_visibility): New fns.
1919         (constrain_visibility_for_template): Likewise.
1920         (constrain_class_visibility): Likewise.
1921         * decl.c (cp_finish_decl): Call determine_visibility for function
1922         decls, too.
1923         * name-lookup.c (pushtag): Call determine_visibility.
1924         * decl.c (duplicate_decls): Don't copy visibility from template to
1925         specialization.
1926         * pt.c (check_explicit_specialization): Likewise.
1927         (lookup_template_class, tsubst_decl): Call determine_visibility.
1928         * class.c (finish_struct_1): Call constrain_class_visibility.
1929
1930         PR c++/26905
1931         PR c++/21675
1932         PR c++/17470
1933         * parser.c (cp_parser_explicit_instantiation): Pass the attributes
1934         to grokdeclarator.
1935         (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
1936         (cp_parser_enum_specifier): Likewise.
1937         (cp_parser_elaborated_type_specifier): Apply attributes if this
1938         declares only the class.
1939         (cp_parser_class_specifier): Apply leading attributes immediately.
1940         * semantics.c (begin_class_definition): Add attributes parameter,
1941         apply them to the type.
1942
1943         PR c++/21581
1944         PR c++/25915
1945         * tree.c (decl_anon_ns_mem_p): New function.
1946         * cp-tree.h: Declare it.
1947         * decl2.c (determine_visibility): Make anonymous namespace
1948         members static.
1949         (min_vis_r, constrain_visibility): Likewise.
1950         * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
1951         pseudo-types.
1952         * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
1953         global_namespace.
1954         * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
1955         on anonymous namespaces.
1956
1957 2006-06-28  Jason Merrill  <jason@redhat.com>
1958
1959         PR c++/27424
1960         * pt.c (convert_template_argument): Pass all template arguments
1961         on to coerce_template_template_parms.
1962
1963 2006-06-25  Lee Millward  <lee.millward@gmail.com>
1964             Mark Mitchell <mark@codesuorcery.com>
1965
1966         PR c++/28054
1967         * decl2.c (grokbitfied): Remove check for grokdeclarator
1968         returning NULL_TREE, instead check for error_mark_node
1969         to indicate failure.
1970         * decl.c (grokdeclarator): Adjust block comment.
1971
1972 2006-06-25  Lee Millward  <lee.millward@gmail.com>
1973
1974         PR c++/28051
1975         * mangle.c (mangle_conv_op_name_for_type): Check for
1976         invalid types.
1977         * name-lookup.c (push_class_level_binding): Robustify.
1978         (do_class_using_decl): Return early if name is error_mark_node.
1979
1980 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
1981
1982         PR c++/28114
1983         * name-lookup.c (pushtag): Return if we have error_mark_node.
1984
1985 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
1986
1987         PR c++/27019
1988         * typeck2.c (process_init_constructor_array): Set ce->value on errors.
1989
1990 2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1991
1992         PR c++/28112
1993         * parser.c (cp_parser_attribute_list): Skip attributes with invalid
1994         arguments.  Fix comment.
1995
1996         PR c++/11468
1997         * init.c (build_new_1): Handle error_mark_nodes returned by
1998         build_java_class_ref.
1999         (build_java_class_ref): Do not abort compilation, but return
2000         error_mark_node.  Improve error message.  Fix indentation.
2001
2002 2006-06-23  Danny Smith   <dannysmith@users.sourceforge.net>
2003
2004         PR target/27789
2005         * decl.c (start_decl): Check that dllimports are not initialized.
2006
2007 2006-06-22  Lee Millward  <lee.millward@gmail.com>
2008
2009         PR c++/27805
2010         * typeck2.c (build_m_component_ref): Use error_operand_p.
2011
2012         PR c++/27821
2013         * decl.c (grokdeclarator): Return error_mark_node on
2014         invalid uses of the scope resolution operator.
2015
2016 2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2017
2018         PR c++/28111
2019         * pt.c (determine_specialization): Check for invalid decls.
2020
2021         PR c++/28110
2022         * pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
2023         parameters.
2024
2025         PR c++/28109
2026         * rtti.c (get_tinfo_decl_dynamic): Robustify.
2027
2028 2006-06-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2029
2030         PR c++/28052
2031         * init.c (push_base_cleanups): Skip members with invalid types.
2032         * typeck.c (build_class_member_access_expr): Robustify.
2033
2034 2006-06-19  Mark Mitchell  <mark@codesourcery.com>
2035
2036         * pt.c (instantiate_template): Fix typo in comment.
2037
2038 2006-06-19  Richard Guenther  <rguenther@suse.de>
2039
2040         * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
2041         power-of-two token vector size.
2042
2043 2006-06-16  Mark Mitchell  <mark@codesourcery.com>
2044
2045         PR c++/28016
2046         * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
2047         members.
2048
2049         PR c++/27979
2050         * call.c (standard_conversion): Strip cv-qualifiers from bitfield
2051         types.
2052
2053         PR c++/27884
2054         * decl.c (have_extern_spec): Remove.
2055         (start_decl): Do not check have_extern_spec.
2056         (start_function): Likewise.
2057         * cp-tree.h (have_extern_spec): Remove.
2058         * parser.c (cp_parser_linkage_specification): Don't set
2059         have_extern_spec.
2060         (cp_parser_init_declarator): Likewise.
2061         (cp_parser_parameter_declaration): Do not treat parameters as
2062         within the scope of an unbraced linkage specification.
2063
2064 2006-06-15  Mark Mitchell  <mark@codesourcery.com>
2065
2066         PR c++/27689
2067         * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
2068         macro.
2069         * pt.c (unify): Use it.
2070
2071         PR c++/27666
2072         * call.c (build_conditional_expr): Robustify.
2073
2074         PR c++/27640
2075         * pt.c (instantiate_template): Set processing_template_decl to
2076         zero while performing substitutions.
2077
2078 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
2079
2080         PR c++/27665
2081         * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
2082         identify destructors.
2083         (cp_parser_nested_name_specifier_opt): Remove invalid
2084         optimization.
2085         (cp_parser_template_id): Refine heuristic for determining whether
2086         we are entering a scope.
2087
2088         PR c++/27648
2089         * parser.c (cp_parser_declarator): Robustify.
2090
2091         PR c++/26559
2092         * pt.c (tsubst_expr): Use finish_omp_atomic.
2093         (value_dependent_expression_p): All CALL_EXPRs are dependent.
2094         * semantics.c (finish_omp_atomic): Rework to use standard
2095         paradigms for handling non-dependent expressions.
2096
2097 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2098
2099         * typeck.c (build_modify_expr): Tidy diagnostic message.
2100
2101 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
2102
2103         PR c++/28018
2104         * typeck.c (build_modify_expr): Disallow array assignment.
2105
2106 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2107
2108         * cp-tree.def: Fix typo.
2109
2110 2006-06-13  Mark Mitchell  <mark@codesourcery.com>
2111
2112         PR c++/27227
2113         * decl.c (decls_match): Allow an extern "C" variable declarations
2114         from different namespaces to match.
2115         (duplicate_decls): Disallow redeclaring a variable with a
2116         different linkage specification.
2117
2118 2006-06-13  Jakub Jelinek  <jakub@redhat.com>
2119
2120         PR middle-end/27793
2121         * cp-tree.h (cxx_int_tree_map): New struct.
2122         (struct language_function): Add extern_decl_map field.
2123         * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
2124         to cp_function_chain->extern_decl_map hash table instead of
2125         copying over DECL_UID.
2126         * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
2127         functions.
2128         (cp_genericize_r): Remap DECL_EXTERN local decls using
2129         cp_function_chain->extern_decl_map hash table.
2130         * decl.c (finish_function): Clear extern_decl_map.
2131
2132 2006-06-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2133
2134         PR c++/27601
2135         * semantics.c (finish_offsetof): Handle pseudo-destructors.
2136
2137         PR c++/27933
2138         * name-lookup.c (lookup_qualified_name): Always return error_mark_node
2139         if lookup fails.
2140
2141         PR c++/27951
2142         * decl2.c (finish_anon_union): Return early if build_anon_union_vars
2143         fails.
2144
2145 2006-06-12  Roger Sayle  <roger@eyesopen.com>
2146
2147         PR c++/21210
2148         * typeck2.c (build_functional_cast): Use cp_convert to construct
2149         non-aggregate initializers instead of the user-level build_c_cast.
2150
2151 2006-06-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2152
2153         PR c++/27601
2154         * cp-tree.h (finish_offsetof): Add prototype.
2155         * semantics.c (finish_offsetof): New function.
2156         * parser.c (cp_parser_builtin_offsetof): Call it instead of
2157         fold_offsetof.
2158         * pt.c (tsubst_copy_and_build): Likewise.
2159
2160 2006-06-06  Mark Mitchell  <mark@codesourcery.com>
2161
2162         PR c++/27177
2163         * call.c (standard_conversion): Require that the derived type be
2164         complete when performing a derived-to-base conversion.
2165
2166 2006-06-04  Mark Mitchell  <mark@codesourcery.com>
2167
2168         PR c++/27819
2169         * decl.c (cp_finish_decl): Process initializers for static data
2170         members with non-dependent initializers, even in templates.
2171
2172         PR c++/27722
2173         * decl.c (maybe_deduce_size_from_array_init): If the declaration
2174         is erroneous, give it an erroneous type.
2175         (layout_var_decl): If the type is erroneous, give up.
2176         (check_initializer): Likewise.
2177
2178         PR c++/27807
2179         * cp-tree.h (TYPE_OBJ_P): New macro.
2180         (TYPE_PTROB_P): Use it.
2181         (TYPE_REF_OBJ_P): Likewise.
2182         * semantics.c (finish_compound_literal): Do not permit compound
2183         literals of non-object types.
2184
2185         PR c++/27806
2186         * typeck.c (original_type): Robustify.
2187
2188 2006-06-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2189
2190         PR c++/27804
2191         * init.c (constant_value_1): Return decl instead of error_mark_node
2192         for invalid initializers.
2193
2194 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
2195
2196         PR c++/27592
2197         * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
2198         on operand of the COND_EXPR for the null pointer check.
2199
2200 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
2201
2202         PR c++/26740
2203         * typeck.c (build_unary_op): Mark the function as being used.
2204
2205 2006-06-01  Alexandre Oliva  <aoliva@redhat.com>
2206
2207         PR c++/26660
2208         * parser.c (cp_parser_initial_pragma): Read one more token for
2209         caller after reading PCH file in.
2210
2211 2006-05-31  Mark Mitchell  <mark@codesourcery.com>
2212
2213         PR c++/27801
2214         * call.c (perform_implicit_conversion): Do not actually perform
2215         conversions in templates.
2216
2217         PR c++/26496
2218         * call.c (resolve_args): Check for invalid uses of bound
2219         non-static member functions.
2220         * init.c (build_offset_ref): Return error_mark_node for errors.
2221
2222         PR c++/27385
2223         * decl.c (reshape_init): Robustify.
2224         (reshape_init_array_1): Likewise.
2225
2226 2006-05-30  Mark Mitchell  <mark@codesourcery.com>
2227
2228         PR c++/27808
2229         * parser.c (cp_parser_decl_specifier_seq): Issue errors about
2230         "friend" specifiers that do not appear in class scopes.
2231
2232         PR c++/27803
2233         * class.c (check_bitfield_decl): Ensure that all bitfields have
2234         integral type.
2235
2236 2006-05-29  Kazu Hirata  <kazu@codesourcery.com>
2237
2238         * pt.c (convert_nontype_argument): Fix a typo in an error
2239         message.
2240
2241 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
2242
2243         * decl.c, decl2.c, parser.c: Fix comment typos.  Follow
2244         spelling conventions.
2245
2246 2006-05-24  Mark Mitchell  <mark@codesourcery.com>
2247
2248         PR c++/20103
2249         * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
2250         error_mark_node to indicate an initialization is OK.
2251         (start_decl): Likewise.  Adjust call to start_decl_1.
2252         (start_decl_1): Add initialized parameter.  Simplify.
2253         * except.c (initialize_handler_parm): Adjust call to
2254         setart_decl_1.
2255         (expand_start_catch_block): Let cp_finish_decl initialize catch
2256         parameters.
2257         * cp-tree.h (start_decl_1): Adjust prototype.
2258         * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
2259         (instantiate_decl): Let cp_finish_decl handle initialization.
2260         * semantics.c (finish_compound_literal): Create a temporary
2261         variable for the literal.
2262         * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
2263         cases.
2264         * decl2.c (finish_static_data_member_decl): Don't set
2265         DECL_INITIAL.
2266         (grokfield): Do not try to initialize functions.
2267
2268 2006-05-23  Mark Mitchell  <mark@codesourcery.com>
2269
2270         PR c++/20173
2271         * pt.c (determine_specialization): Disallow partial
2272         specializations of templates.
2273
2274 2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2275
2276         PR c++/27716
2277         * typeck.c (build_modify_expr): Test arguments for error_operand_p.
2278
2279         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
2280
2281 2006-05-21  Mark Mitchell  <mark@codesourcery.com>
2282
2283         PR c++/27210
2284         * cp-tree.h (cp_save_expr): New function.
2285         * init.c (build_new): Correct logic for zero-element array
2286         warning.  Use cp_save_expr.
2287         * tree.c (cp_save_expr): New function.
2288
2289 2006-05-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2290
2291         PR c++/27398
2292         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
2293         or void_type_node.
2294
2295 2006-05-19  Mike Stump  <mrs@apple.com>
2296
2297         * typeck.c (default_conversion): Remove static.
2298
2299 2006-05-19  Mark Mitchell  <mark@codesourcery.com>
2300
2301         PR c++/26433
2302         * cp-tree.h (begin_function_try_block): Change prototype.
2303         (finish_function_handler_sequence): Likewise.
2304         * parser.c (cp_parser_function_try_block): Adjust calls.
2305         * pt.c (tsubst_expr): Adjust calls.
2306         * semantics.c (begin_function_try_block): Create an artificial
2307         outer scope.
2308         (finish_function_handler_sequence): Close it.
2309
2310 2006-05-18  Mark Mitchell  <mark@codesourcery.com>
2311
2312         PR c++/27471
2313         PR c++/27506
2314         * typeck.c (decay_conversion): Convert bitfields to their declared
2315         types here.  Improve documentation.  Avoid use of cp_convert.
2316         (default_conversion): Make it static.  Perform integral promotions
2317         before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
2318         conversions.
2319         * init.c (build_init): Remove.
2320         (expand_default_init): Do not call rvalue.
2321         * call.c (null_ptr_cst_p): Robustify.
2322         (build_conditional_expr): Tidy.
2323         * except.c (build_throw): Do not perform lvalue-to-rvalue
2324         conversion on operand before initializing temporary.
2325         * tree.c (convert.h): Include it.
2326         (convert_bitfield_to_declared_type): Use convert_to_integer, not
2327         cp_convert.
2328         (rvalue): Don't convert bitfields to their declared type here.
2329         * cp-tree.h (build_init): Remove.
2330         (default_conversion): Likewise.
2331         * typeck2.c (build_m_component_ref): Do not perform
2332         lvalue-to-rvalue, function-to-pointer, or array-to-pointer
2333         conversions here.  Correct error message.
2334
2335 2006-05-17  Mark Mitchell  <mark@codesourcery.com>
2336
2337         PR c++/26122
2338         * decl2.c (check_member_template): Remove checks for virtual
2339         functions.
2340         * parser.c (cp_parser_function_specifier_opt): Complain about
2341         virtual templates.
2342         (cp_parser_pure_specifier): Likewise.
2343
2344         PR c++/26068
2345         * parser.c (cp_parser_set_storage_class): Check for
2346         invalid uses of storage classes on unbraced linkage
2347         specifications.
2348         (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
2349         to cp_parser_set_storage_class.
2350
2351 2006-05-17  Jakub Jelinek  <jakub@redhat.com>
2352
2353         PR c++/27491
2354         * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
2355         on CONSTRUCTORs.
2356
2357         PR middle-end/27415
2358         * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
2359         on combined parallel workshare constructs.
2360         * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
2361
2362 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
2363
2364         PR driver/26885
2365         * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
2366
2367 2006-05-15  Mark Mitchell  <mark@codesourcery.com>
2368
2369         PR c++/27339
2370         * cp-tree.h (perform_access_checks): New function.
2371         * semantics.c (perform_access_checks): New function.
2372         (perform_deferred_access_checks): Use it.
2373         * parser.c (cp_parser_simple_declaration): Adjust call to
2374         cp_parser_init_declarator.
2375         (cp_parser_type_parameter): Do not defer checks in default
2376         arguments.
2377         (cp_parser_explicit_specialization): Adjust call to
2378         cp_parser_single_declaration.
2379         (cp_parser_init_declarator): Perform template-parameter access
2380         checks.
2381         (cp_parser_parameter_declaration): Do not defer checks for
2382         template parameter default arguments.
2383         (cp_parser_template_declaration_after_export): Gather access
2384         checks for template parameters, and pass them to
2385         cp_parser_single_declaration.
2386         (cp_parser_template_parameter_access_checks): New function.
2387         (cp_parser_single_declaration): Add checks parameter.
2388
2389         PR c++/27505
2390         * call.c (convert_like_real): Convert bitfields to their declared
2391         types when forming an rvalue.
2392         * tree.c (convert_bitfield_to_declared_type): New function.
2393         (rvalue): Use it.
2394         * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
2395
2396 2006-05-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2397
2398         PR c++/27582
2399         * pt.c (any_dependent_template_arguments_p): Return early on invalid
2400         argument list.
2401
2402         PR c++/27581
2403         * search.c (adjust_result_of_qualified_name_lookup): Skip on
2404         invalid context_class.
2405
2406         PR c++/27315
2407         * pt.c (do_decl_instantiation): Return early on invalid decl.
2408
2409         PR c++/27559
2410         * pt.c (push_template_decl_real): Return error_mark_node instead
2411         of broken decl.
2412
2413         PR c++/27496
2414         * pt.c (tsubst_friend_class): Return early on invalid friend
2415         declarations.
2416
2417 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2418
2419         * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
2420         (cp/decl2.o): Likewise.
2421         (cp/typeck.o): Likewise.
2422         (cp/cvt.o): Likewise.
2423         (cp/parser.o): Likewise.
2424         (cp/call.o): Replace target.h with $(TARGET_H).
2425
2426 2006-05-14  Alexandre Oliva  <aoliva@redhat.com>
2427
2428         * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
2429         COMPONENT_REF alone.
2430
2431 2006-05-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2432
2433         PR c++/27547
2434         * decl.c (copy_fn_p): Return early on non-member functions.
2435
2436 2006-05-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2437
2438         PR c++/27447
2439         * decl2.c (build_memfn_type): Skip invalid functions and class types.
2440
2441 2006-05-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2442
2443         PR c++/27427
2444         * pt.c (convert_nontype_argument): Return early on invalid arguments.
2445
2446         * pt.c (process_template_parm): Remove superfluous temporary.
2447
2448         PR c++/27430
2449         * pt.c (process_template_parm): Handle erroneous non-type parameters.
2450
2451         PR c++/27423
2452         * typeck.c (convert_for_initialization): Skip erroneous types.
2453
2454         PR c++/27422
2455         * typeck.c (convert_arguments): Return early on args with
2456         invalid types.
2457
2458 2006-05-03  Aldy Hernandez  <aldyh@redhat.com>
2459
2460         PR/21391
2461         * typeck.c (build_static_cast_1): Save casted types in used types
2462         hash table.
2463         (build_reinterpret_cast_1): Same.
2464         * rtti.c (build_dynamic_cast_1): Same.
2465
2466 2006-05-04  Jakub Jelinek  <jakub@redhat.com>
2467
2468         PR c++/27359
2469         * parser.c (cp_parser_omp_for_loop): Only call
2470         cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
2471         called.
2472
2473 2006-05-02  Mark Mitchell  <mark@codesourcery.com>
2474
2475         PR c++/27102
2476         * decl.c (grokdeclarator): Robustify checks for defining members
2477         of incomplete types.
2478
2479         PR c++/27309
2480         * class.c (add_method): Call grok_special_member_properties.
2481         * decl.c (grokdeclarator): Don't call it here.
2482         (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
2483         assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
2484         constructor.
2485         (start_method): Don't call grok_special_member_properties.
2486         * method.c (implicitly_declare_fn): Likewise.
2487         * pt.c (instantiate_class_template): Likewise.
2488         * decl2.c (grokfield): Likewise.
2489
2490 2006-05-02  Jakub Jelinek  <jakub@redhat.com>
2491
2492         PR middle-end/27337
2493         * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
2494         * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
2495         * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
2496
2497 2006-04-30  Mark Mitchell  <mark@codesourcery.com>
2498
2499         PR c++/27094
2500         * pt.c (tsubst_default_argument): Increment function_depth around
2501         call to tsubst_expr.
2502         * parser.c (cp_parser_parameter_declaration): Likewise.
2503         * decl2.c (mark_used): Tidy.
2504
2505 2006-04-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2506
2507         PR c++/27278
2508         * decl.c (grok_op_properties): Skip operators with invalid args
2509         when checking for class-type or enum-type args.
2510
2511 2006-04-29  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2512
2513         PR c++/27279
2514         * decl.c (copy_fn_p): Skip functions with invalid first arg.
2515
2516 2006-04-27  Mark Mitchell  <mark@codesourcery.com>
2517
2518         PR c++/27292
2519         * tree.c (rvalue): Convert bitfields to their declared types.
2520
2521         PR c++/27102
2522         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
2523         TYPENAME_TYPE.
2524
2525 2006-04-24  Mark Mitchell  <mark@codesourcery.com>
2526
2527         PR c++/27292
2528         * typeck.c (decay_conversion): Don't adjust bitfield types.
2529         (perform_integral_promotions): Treat bitfield enums as enums, not
2530         as short integer types.
2531         * tree.c (rvalue): Convert bitfields to their correct types.
2532
2533 2006-04-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2534
2535         PR c++/19963
2536         * class.c (layout_class_type): Skip fields with invalid types.
2537
2538 2006-04-23  Mark Mitchell  <mark@codesourcery.com>
2539
2540         PR c++/26912
2541         * cp-tree.h (build_this_parm): Declare.
2542         (grok_method_quals): Remove.
2543         (build_memfn_type): Declare.
2544         (build_artificial_parm): Declare.
2545         (do_friend): Remove quals parameter.
2546         * decl.c (build_this_parm): New function.
2547         (grokfndecl): Use it.  Do not pass quals to grokclassfn.
2548         (grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
2549         unnecessary TYPE_DECLs.  Correct qualification of member function
2550         types.  Tidy.
2551         * method.c (implicitly_declare_fn): Use build_this_parm.
2552         * friend.c (do_friend): Remove quals parameter.
2553         * decl2.c (grok_method_quals): Remove.
2554         (build_memfn_type): New function.
2555         (build_artificial_parm): Give it external linkage.
2556         (grokclassfn): Remove quals parameter.  Do not build "this"
2557         PARM_DECL here.
2558
2559         PR c++/26534
2560         * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
2561         * typeck.c (is_bitfield_expr_with_lowered_type): New function.
2562         (decay_conversion): Convert bitfield expressions to the correct
2563         type.
2564         (build_modify_expr): Remove spurious conversions.
2565         * class.c (layout_class_type): Modify the type of bitfields to
2566         indicate a limited range.
2567         * call.c (standard_conversion): Adjust the type of bitfield
2568         expressions used in an rvalue context.
2569         (build_conditional_expr): Likewise.
2570
2571 2006-04-22  Kazu Hirata  <kazu@codesourcery.com>
2572
2573         * decl.c: Fix comment typos.
2574
2575 2006-04-21  Eric Christopher  <echristo@apple.com>
2576
2577         * decl.c: Fix typo in function name.
2578
2579 2006-04-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2580
2581         PR c++/26558
2582         * parser.c (cp_parser_class_name): Check for invalid typenames.
2583         Rearrange code.
2584
2585         PR c++/26739
2586         * pt.c (tsubst_friend_function): Return early if
2587         pushdecl_namespace_level fails.
2588
2589         PR c++/26036
2590         * typeck.c (convert_arguments): Return error_mark_node instead of
2591         error_mark_list.
2592         * cp-tree.h (error_mark_list): Remove declaration.
2593         * decl.c (error_mark_list): Remove definition.
2594         (cxx_init_decl_processing): Do not initialize error_mark_list.
2595
2596         PR c++/10385
2597         * rtti.c (build_dynamic_cast_1): Check for invalid conversions
2598         before calling convert_to_reference.
2599         * cvt.c (convert_to_reference): Assert that reftype is a
2600         REFERENCE_TYPE.
2601
2602 2006-04-19  Mark Mitchell  <mark@codesourcery.com>
2603
2604         PR c++/27102
2605         * class.c (currently_open_class): Tidy.
2606         * decl.c (grokdeclarator): If we encounter an erroneous
2607         declarator, assume that we have already issued an error message
2608         and return.  Return error_mark_node instead of NULL_TREE in more
2609         places.  Issue errors about function definitions that do not have
2610         a function declarator.  Check for complete types for all function
2611         definitions.
2612         * cp-tree.h (cp_error_declarator): Remove.
2613         (currently_open_class): Change return type.
2614         * parser.c (cp_parser_id_expression): Add optional_p parameter.
2615         (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
2616         (cp_parser_id_expression): Likewise.
2617         (cp_parser_unqualified_id): If the name is optional, return
2618         NULL_TREE.
2619         (cp_parser_postfix_dot_deref_expression): Adjust calls.
2620         (cp_parser_type_parameter): Likewise.
2621         (cp_parser_unqualified_id): Likewise.
2622         (cp_parser_direct_declarator): Likewise.
2623         (cp_parser_declarator_id): Add optional_p parameter.
2624         (cp_parser_function_definition_from_specifiers_and_declarator):
2625         Assume that start_function indicates failure only if it has issued
2626         an error.
2627         (cp_parser_omp_var_list_no_open): Adjust calls.
2628
2629 2006-04-17  Janis Johnson  <janis187@us.ibm.com>
2630
2631         PR c++/26114, c++/26115
2632         * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
2633         * class.c (check_field_decls): Ditto.
2634
2635 2006-04-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2636
2637         * init.c (build_offset_ref): Remove superfluous temporary.
2638
2639 2006-04-16  Mark Mitchell  <mark@codesourcery.com>
2640
2641         PR c++/26365
2642         * typeck.c (finish_class_member_access_expr): Robustify
2643
2644 2006-04-15  Kazu Hirata  <kazu@codesourcery.com>
2645
2646         * Make-lang.in (cp/pt.o): Depend on vecprim.h.
2647         * pt.c: Include vecprim.h.
2648         (inline_parm_levels): Change the type to VEC(int,heap) *.
2649         (inline_parm_levels_used): Remove.
2650         (maybe_begin_member_template_processing,
2651         maybe_end_member_template_processing): Use VEC instead of
2652         VARRAY.
2653
2654         * cp/call.c: Fix comment typos.
2655
2656 2006-04-12  Mark Mitchell  <mark@codesourcery.com>
2657
2658         * parser.c (cp_parser_init_declarator): Initialize local variables
2659         aggressively.
2660
2661 2006-04-12  Roger Sayle  <roger@eyesopen.com>
2662
2663         * parser.c (cp_parser_init_declarator): Initialise
2664         is_parenthesized_init to false to avoid compiler warning.
2665
2666 2006-04-11  Mark Mitchell  <mark@codesourcery.com>
2667
2668         * cp-tree.h (build_operator_new_call): Adjust prototype.
2669         (build_new_method_call): Likewise.
2670         (build_op_delete_call): Likewise.
2671         * init.c (build_raw_new_expr): New function.
2672         (build_new_1): Pass information as parameters, rather than
2673         bundling it into a NEW_EXPR.
2674         (build_new): Adjust accordingly.
2675         (build_vec_delete_1): Adjust for changes to build_op_delete_call.
2676         (build_delete): Likewise.
2677         * decl.c (finish_destructor_body): Likewise.
2678         * call.c (build_operator_new_call): Return the allocation function
2679         used.
2680         (build_op_delete_call): Take allocation function as parameter.
2681         (build_special_member_call): Adjust call to build_new_method_call.
2682         (build_new_method_call): Return function called.
2683         * pt.c (tsubst_copy_and_build): Adjust call to
2684         build_new_method_call.
2685         * semantics.c (finish_call_expr): Likewise.
2686         * parser.c (cp_parser_postfix_expression): Likewise.
2687         * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
2688         "incomplete", not "undefined", types.
2689
2690         PR c++/26295
2691         * decl.c (grokdeclarator): Remove namespace-handling code for
2692         pointers-to-members.
2693         * parser.c (cp_parser_ptr_operator): Check for qualified names
2694         using namespaces.
2695
2696         PR c++/26122
2697         * parser.c (cp_parser_init_declarator): Adjust logic for deciding
2698         whether or not to look for a pure-specifier.
2699         (cp_parser_member_declaration): Likewise.
2700
2701 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
2702
2703         * decl2.c, pt.c, semantics.c: Fix comment typos.
2704
2705 2006-04-06  Roger Sayle  <roger@eyesopen.com>
2706
2707         * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
2708
2709 2006-04-05  Jason Merrill  <jason@redhat.com>
2710
2711         * name-lookup.c (push_namespace_with_attribs): Temporarily disable
2712         default hidden visibility for anonymous namespace.
2713
2714 2006-03-29  Roger Sayle  <roger@eyesopen.com>
2715
2716         PR c++/22494
2717         * init.c (build_vec_delete_1): Convert BASE pointer's type to
2718         the base pointer type to avoid a type mismatch in the EQ_EXPR.
2719
2720 2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>
2721
2722         * search.c (maybe_suppress_debug_info): If
2723         flag_emit_class_debug_always then don't suppress.
2724
2725 2006-03-22  Jason Merrill  <jason@redhat.com>
2726
2727         * name-lookup.c (push_namespace_with_attribs): Only apply hidden
2728         visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
2729
2730 2006-03-21  Jakub Jelinek  <jakub@redhat.com>
2731
2732         PR c++/26691
2733         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
2734
2735 2006-03-21  Jason Merrill  <jason@redhat.com>
2736
2737         PR c++/21581
2738         * parser.c (cp_parser_declaration): Support attributes on
2739         anonymous namespaces.
2740         * name-lookup.c (push_namespace_with_attribs): Anonymous
2741         namespaces default to hidden visibility.
2742
2743 2006-03-20  Jason Merrill  <jason@redhat.com>
2744
2745         PR c++/21764, c++/19238
2746         * decl.c (cp_finish_decl): Call determine_visibility later.
2747         (start_preparsed_function): Likewise.
2748         * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
2749         (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
2750         * name-lookup.h (struct cp_binding_level): Add has_visibility
2751         bitfield.
2752         * name-lookup.c: Include c-pragma.h.
2753         (push_namespace_with_attribs): Split out from push_namespace.
2754         Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
2755         (leave_scope): Pop visibility if appropriate.
2756         * decl2.c (determine_visibility_from_class): Split out from...
2757         (determine_visibility): ...here.  Handle function scope and
2758         nested classes.
2759         (import_export_decl): Move visibility handling to
2760         determine_visibility_from_class.
2761         * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
2762         attributes on namespace declarations.
2763
2764 2006-03-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2765
2766         PR c++/6634
2767         * decl.c (grokdeclarator): Do not accept long long double.
2768         Reorganize checks for invalid (combinations of) type modifiers.
2769         Quote modifiers in messages.
2770
2771 2006-03-09  Jason Merrill  <jason@redhat.com>
2772
2773         PR c++/16387, c++/16389
2774         * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
2775         (cxx_sizeof_or_alignof_expr): Split out from here.
2776
2777 2006-03-09  Diego Novillo  <dnovillo@redhat.com>
2778
2779         Merge from gomp-20050608-branch
2780
2781         2006-02-02  Diego Novillo  <dnovillo@redhat.com>
2782
2783                 * decl.c (pop_labels_1): Use appropriate pointer casting.
2784                 (poplevel_named_label_1): Likewise.
2785                 (named_label_entry_hash): Likewise.
2786                 (named_label_entry_eq): Likewise.
2787                 (check_goto): Likewise.
2788                 (define_label): Likewise.
2789
2790         2006-01-26  Diego Novillo  <dnovillo@redhat.com>
2791
2792                 * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
2793                 of TREE_BLOCK.
2794                 * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
2795                 instead of TREE_CODE/TREE_OPERAND.
2796                 * semantics.c: Likewise.
2797                 * parser.c: Likewise.
2798
2799         2005-11-10  Diego Novillo  <dnovillo@redhat.com>
2800
2801                 * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
2802                 target does not support TLS.
2803
2804         2005-11-09  Jakub Jelinek  <jakub@redhat.com>
2805
2806                 * decl.c (redeclaration_error_message): Don't error about
2807                 DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
2808                 (olddecl).
2809
2810         2005-11-08  Jakub Jelinek  <jakub@redhat.com>
2811
2812                 PR c++/24735
2813                 * semantics.c (finish_omp_barrier, finish_omp_flush): New
2814                   functions.
2815                 * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
2816                 (cp_parser_omp_flush): Call finish_omp_flush.
2817                 * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
2818                   prototypes.
2819
2820                 PR c++/24734
2821                 * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
2822
2823         2005-11-03  Jakub Jelinek  <jakub@redhat.com>
2824
2825                 * semantics.c (finish_omp_threadprivate): Error on class-scope
2826                 variables.
2827
2828         2005-11-02  Jakub Jelinek  <jakub@redhat.com>
2829
2830                 * parser.c (cp_parser_omp_all_clauses): If some clause
2831                 type is not allowed, don't remove just one of the
2832                 clauses, but all clauses added in that loop round.
2833
2834                 * semantics.c (finish_omp_clauses): Fix function
2835                 comment. Don't handle non-const or mutable specially,
2836                 as const and not mutable is predetermined shared and
2837                 that leads to double error. Don't ICE if copyin var is
2838                 PARM_DECL.
2839
2840                 PR c++/24613
2841                 * parser.c (cp_parser_pragma): Diagnose
2842                 PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
2843                 construct.
2844
2845                 * semantics.c (finish_omp_threadprivate): Error if V
2846                   is automatic variable or has incomplete type.
2847
2848         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
2849
2850                 * parser.c (cp_parser_omp_all_clauses): Use
2851                 OMP_CLAUSE_CHAIN instead of TREE_CHAIN.
2852
2853         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
2854
2855                 * parser.c (cp_parser_omp_all_clauses): When emitting an
2856                 error message, remove the invalid clause from the list.
2857
2858         2005-10-31  Diego Novillo  <dnovillo@redhat.com>
2859
2860                 * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
2861                 combined parallel+workshare directives.
2862
2863         2005-10-31  Richard Henderson  <rth@redhat.com>
2864
2865                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
2866                 Use cxx_omp_clause_dtor.
2867                 * cp-tree.h (CP_OMP_CLAUSE_INFO): New.
2868                 (cxx_omp_clause_dtor): New.
2869                 * cp-gimplify.c (cxx_omp_clause_apply_fn): New.
2870                 (cxx_omp_clause_default_ctor): Use it.
2871                 (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
2872                 Likewise.
2873                 (cxx_omp_clause_dtor): New.
2874                 * semantics.c (finish_omp_clauses): Rewrite cdtor
2875                 checking to fill in CP_OMP_CLAUSE_INFO.  Don't
2876                 specialcase LASTPRIVATE for removal.
2877                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
2878                 cxx_omp_clause_assign_op): Move to cp-gimplify.c.
2879
2880         2005-10-28  Jakub Jelinek  <jakub@redhat.com>
2881
2882                 * semantics.c (finish_omp_threadprivate): If
2883                   DECL_RTL_SET_P, call make_decl_rtl again so that
2884                   encode_section_info can update SYMBOL_REF's flags.
2885
2886         2005-10-26  Jakub Jelinek  <jakub@redhat.com>
2887
2888                 * semantics.c (finish_omp_for): Don't segfault if COND
2889                 or INCR is NULL.  If not calling c_finish_omp_for
2890                 right away and one of COND and INCR is NULL, issue
2891                 error and don't expand anything.
2892
2893                 PR c++/24512
2894                 * cp-tree.h (finish_omp_for): Add PRE_BODY argument.
2895                 * semantics.c (finish_omp_for): Likewise.  Set
2896                 OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
2897                 into the current statement list if not processing
2898                 template decl or pass it to c_finish_omp_for.
2899
2900                 * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
2901                 into PRE_BODY statement list.  Pass it to finish_omp_for.
2902                 * pt.c (tsubst_expr) <case OMP_FOR>: tsubst_expr also
2903                 OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
2904                 finish_omp_for.  Put all the statements into sk_omp
2905                 scope.
2906
2907         2005-10-25  Jakub Jelinek  <jakub@redhat.com>
2908
2909                 PR c++/24516
2910                 * parser.c (struct cp_parser): Rename in_iteration_statement
2911                 field to in_statement.
2912                 (IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
2913                 (IN_OMP_BLOCK, IN_OMP_FOR): Change values.
2914                 (cp_parser_new, cp_parser_begin_omp_structured_block,
2915                 cp_parser_end_omp_structured_block,
2916                 cp_parser_omp_for_loop): Adjust for
2917                 in_iteration_statement renaming.
2918                 (cp_parser_selection_statement): Save
2919                 parser->in_iteration, or it temporarily with
2920                 IN_SWITCH_STMT for the
2921                 cp_parser_implicitly_scoped_statement call.
2922                 (cp_parser_iteration_statement): Adjust for
2923                 in_iteration_statement renaming.  Use
2924                 IN_ITERATION_STMT rather than true.
2925                 (cp_parser_jump_statement): Adjust for
2926                 in_iteration_statement renaming and new values.  Don't
2927                 error on break in a switch statement within OMP_FOR or
2928                 OpenMP structured block.
2929
2930                 PR c++/24513
2931                 * parser.c (cp_parser_cache_group): Don't stop if next
2932                 token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
2933                 well.  If current token is CPP_PRAGMA, consume
2934                 everything until CPP_PRAGMA_EOL inclusive.
2935
2936         2005-10-24  Jakub Jelinek  <jakub@redhat.com>
2937
2938                 PR c++/24502
2939                 * semantics.c (finish_omp_for): Handle MODOP_EXPR in
2940                 addition to MODIFY_EXPR.
2941
2942         2005-10-23  Richard Henderson  <rth@redhat.com>
2943
2944                 * cp-gimplify.c (struct cp_gimplify_ctx): Remove.
2945                 (bc_label): New.
2946                 (begin_bc_block, finish_bc_block): Use it.
2947                 (push_context, pop_context): Remove.
2948                 (cp_genericize): Don't use them.  Assert bc_label is null.
2949                 * semantics.c (finish_omp_clauses): Create a fake data
2950                 element of TYPE for probing ctors.
2951
2952         2005-10-23  Richard Henderson  <rth@redhat.com>
2953
2954                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
2955                 (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
2956                 (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
2957                 (LANG_HOOKS_OMP_CLAUSE_DTOR): New.
2958                 * semantics.c (finish_omp_clauses): Look through
2959                 arrays when looking up special member calls.  Also
2960                 remove FIRSTPRIVATE when LASTPRIVATE fails.
2961                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
2962                 (cxx_omp_clause_assign_op): New.
2963                 * cp-tree.h: Declare them.
2964
2965         2005-10-21  Richard Henderson  <rth@redhat.com>
2966
2967                 * decl.c (check_previous_goto_1): Return false if error.
2968                 (check_switch_goto): Likewise.
2969                 (finish_case_label): Don't emit the case label on error.
2970                 * parser.c (struct cp_parser): Revert
2971                 in_switch_statement_p changes.
2972                 (cp_parser_labeled_statement,
2973                 cp_parser_selection_statement): Likewise.
2974                 (cp_parser_begin_omp_structured_block): Don't save...
2975                 (cp_parser_end_omp_structured_block): or restore
2976                 in_switch_statement_p.
2977
2978         2005-10-21  Richard Henderson  <rth@redhat.com>
2979
2980                 * semantics.c (finish_omp_threadprivate): Set
2981                 decl_flags.u2sel when necessary.
2982
2983         2005-10-21  Richard Henderson  <rth@redhat.com>
2984
2985                 * decl.c (poplevel_named_label_1): Restore creation of the
2986                 bad_decls list.
2987                 (decl_jump_unsafe): Check for error_mark_node types.
2988                 (check_goto): Don't check cdtor_label.  Don't use identify_goto.
2989                 * semantics.c (finish_return_stmt): Do check_omp_return before
2990                 converting to cdtor_label goto.
2991
2992         2005-10-21  Richard Henderson  <rth@redhat.com>
2993
2994                 PR c++/24451
2995                 * decl.c (check_omp_return): Return false on error.
2996                 * cp-tree.h (check_omp_return): Update decl.
2997                 * semantics.c (finish_return_stmt): Avoid adding
2998                 return on error.
2999
3000         2005-10-21  Richard Henderson  <rth@redhat.com>
3001
3002                 * cp-tree.h (struct language_function): Remove
3003                 x_named_label_uses.
3004                 Change x_named_labels to a hashtable.
3005                 (check_omp_return): Declare.
3006                 * decl.c (struct named_label_use_entry): Rename from
3007                 named_label_use_list.  Remove label_decl.
3008                 (struct named_label_entry): Rename from
3009                 named_label_list.  Remove old_value and next.  Change
3010                 in_try_scope and in_catch_scope to bool. Add
3011                 in_omp_scope.
3012                 (pop_labels_1): New.
3013                 (pop_labels): Use it.
3014                 (pop_local_label, poplevel_named_label_1): New.
3015                 (poplevel): Use them.
3016                 (named_label_entry_hash, named_label_entry_eq): New.
3017                 (make_label_decl): Create named_labels.  Move label
3018                 creation bits from lookup_label.
3019                 (declare_local_label): Tidy.
3020                 (identify_goto): Split out from ...
3021                 (check_previous_goto_1): Add exited_omp argument.
3022                 Handle omp scopes.
3023
3024                 (use_label): Merge into...
3025                 (check_goto): ... here.  Handle omp scopes.
3026                 (check_omp_return): New.
3027                 (check_previous_gotos): Merge into...
3028                 (define_label): ... here.
3029                 (save_function_data): Remove x_named_label_uses reference.
3030                 (finish_function): Likewise.
3031                 * name-lookup.h (sk_omp): New.
3032                 * name-lookup.c (begin_scope): Handle it.
3033                 * parser.c (cp_parser_omp_for): Don't create extra
3034                 compound stmt.
3035
3036                 (cp_parser_omp_sections): Likewise.
3037                 * semantics.c (finish_return_stmt): Call check_omp_return.
3038                 (begin_omp_structured_block): Use sk_omp.
3039                 (finish_omp_structured_block): Use do_poplevel.  Don't build a
3040                 MUST_NOT_THROW expression here.
3041                 (begin_omp_parallel, finish_omp_parallel): Don't create extra
3042                 compound statements.
3043
3044         2005-10-21  Diego Novillo  <dnovillo@redhat.com>
3045
3046                 PR 24455
3047                 * cp/cp-tree.h (struct lang_decl_flags): Add field
3048                 threadprivate_p.
3049                 (CP_DECL_IS_THREADPRIVATE): Define.
3050                 * cp/semantics.c (finish_omp_threadprivate): Set.  Do
3051                 not error out if CP_DECL_IS_THREADPRIVATE is set
3052                 already.
3053                 * cp/decl.c (duplicate_decls): Merge
3054                 CP_DECL_THREADPRIVATE_P.
3055
3056         2005-10-20  Richard Henderson  <rth@redhat.com>
3057
3058                 * cp-gimplify.c (cp_gimplify_omp_for): New.
3059                 (cp_gimplify_expr): Call it.
3060                 * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
3061                 * parser.c (struct cp_parser): Rename
3062                 in_iteration_statement_p to in_iteration_statement and
3063                 change to unsigned char.  Similarly with
3064                 in_switch_statement.  Update all users.
3065                 (IN_OMP_BLOCK, IN_OMP_FOR): New.
3066                 (cp_parser_labeled_statement): Diagnose case labels
3067                 binding closer to an openmp block nested than the
3068                 switch.
3069                 (cp_parser_jump_statement): Diagnose break and
3070                 continue labels binding closer to an openmp block than
3071                 an iteration or switch.
3072                 (cp_parser_omp_for_loop): Mark in_iteration_statement
3073                 for an omp for.
3074                 (cp_parser_begin_omp_structured_block): New.
3075                 (cp_parser_end_omp_structured_block): New.
3076                 (cp_parser_omp_structured_block): Use them.
3077                 (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
3078                 (cp_parser_omp_parallel): Likewise.
3079
3080         2005-10-20  Richard Henderson  <rth@redhat.com>
3081
3082                 * semantics.c (begin_omp_structured_block): New.
3083                 (finish_omp_structured_block): New.
3084                 (begin_omp_parallel, finish_omp_parallel): Use them.
3085                 * parser.c (cp_parser_omp_structured_block): Likewise.
3086                 (cp_parser_omp_for): Likewise.
3087                 (cp_parser_omp_sections_scope): Likewise.
3088                 * cp-tree.h: Declare them.
3089
3090         2005-10-20  Richard Henderson  <rth@redhat.com>
3091
3092                 * parser.c (cp_parser_omp_master): Return the statement.
3093                 (cp_parser_omp_ordered): Likewise.
3094                 (cp_parser_omp_construct): Set the locus for them.
3095
3096         2005-10-19  Richard Henderson  <rth@redhat.com>
3097
3098                 * semantics.c (finish_omp_atomic): Revert to
3099                 uses_template_parms.
3100
3101         2005-10-19  Richard Henderson  <rth@redhat.com>
3102
3103                 * semantics.c (finish_omp_clauses): Avoid
3104                 DECL_THREAD_LOCAL_P on a PARM_DECL.  Remove some
3105                 stub asserts guaranteed to fail.
3106
3107         2005-10-19  Richard Henderson  <rth@redhat.com>
3108
3109                 * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
3110                 (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
3111                 * parser.c (cp_parser_omp_clause_copyin): Remove.
3112                 (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
3113                 Call finish_omp_clauses.
3114                 (cp_parser_omp_clause_if): Don't do error checking here.
3115                 (cp_parser_omp_clause_num_threads): Likewise.
3116                 (cp_parser_omp_clause_schedule): Likewise.
3117                 (cp_parser_omp_atomic): Use finish_omp_atomic.
3118                 (cp_parser_omp_for_loop): Don't discard DECL_EXPR.
3119                 Don't decompose assignment statment here.  Use
3120                 finish_omp_for.
3121
3122                 * pt.c (tsubst_omp_clauses): New.
3123                 (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
3124                 OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
3125                 * semantics.c (finish_omp_clauses): New.
3126                 (begin_omp_parallel, finish_omp_parallel): Know Less about the
3127                 internals of the stmt_list stack.
3128                 (finish_omp_for, finish_omp_atomic): New.
3129
3130         2005-10-18  Jakub Jelinek  <jakub@redhat.com>
3131
3132                 * semantics.c (cxx_omp_predetermined_sharing): New function.
3133                 * cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
3134                 * cp-objcp-common.h
3135                 (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
3136
3137         2005-10-18  Richard Henderson  <rth@redhat.com>
3138
3139                 * parser.c (cp_parser_omp_single): Use make_node and accessors
3140                 instead of build.
3141
3142         2005-10-17  Richard Henderson  <rth@redhat.com>
3143
3144                 * parser.c (cp_parser_omp_for_loop): Handle declarations.
3145
3146         2005-10-12  Richard Henderson  <rth@redhat.com>
3147
3148                 * Make-lang.in (CXX_C_OBJS): Add c-omp.o.
3149                 * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
3150                 (finish_omp_threadprivate): Declare.
3151                 * parser.c (struct cp_lexer): Add in_pragma.
3152                 (cp_lexer_consume_token): Don't consume a PRAGMA_EOL
3153                 when in_pragma.
3154                 (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
3155                 (cp_parser_skip_to_end_of_statement): Likewise.
3156                 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
3157                 (cp_parser_skip_to_closing_brace): Likewise.
3158                 (cp_parser_skip_to_pragma_eol): Reset in_pragma.
3159                 (cp_parser_require_pragma_eol): New.
3160                 (cp_parser_statement): Add in_compound argument;
3161                 update all callers.
3162                 Restart if a non-statement pragma seen outside a
3163                 compound.
3164                 (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
3165                 (cp_parser_declaration_seq_opt): Likewise.
3166                 (cp_parser_member_specification_opt): Likewise.
3167                 (cp_parser_function_definition_after_decl): Likewise.
3168                 (cp_parser_skip_until_found): Likewise.
3169                 (cp_parser_cache_group): Likewise.
3170                 (enum pragma_omp_clause, cp_parser_omp_clause_name,
3171                 check_no_duplicate_clause,
3172                 cp_parser_omp_var_list_no_open,
3173                 cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
3174                 cp_parser_omp_clause_default, cp_parser_omp_clause_if,
3175                 cp_parser_omp_clause_nowait,
3176                 cp_parser_omp_clause_num_threads,
3177                 cp_parser_omp_clause_ordered,
3178                 cp_parser_omp_clause_reduction,
3179                 cp_parser_omp_clause_schedule,
3180                 cp_parser_omp_all_clauses,
3181                 cp_parser_omp_structured_block, cp_parser_omp_atomic,
3182                 cp_parser_omp_barrier, cp_parser_omp_critical,
3183                 cp_parser_omp_flush, cp_parser_omp_for_loop,
3184                 cp_parser_omp_for, cp_parser_omp_master,
3185                 cp_parser_omp_ordered, cp_parser_omp_sections_scope,
3186                 cp_parser_omp_sections, cp_parser_omp_parallel,
3187                 cp_parser_omp_single, cp_parser_omp_threadprivate,
3188                 cp_parser_omp_construct): New.
3189                 (cp_parser_pragma): Handle OpenMP pragmas.
3190                 * semantics.c (finish_omp_threadprivate): New.
3191                 (begin_omp_parallel, finish_omp_parallel): New.
3192
3193         2005-10-11  Richard Henderson  <rth@redhat.com>
3194
3195                 * parser.c (struct cp_token): Add pragma_kind.
3196                 (eof_token): Initialize it.
3197                 (cp_lexer_handle_pragma): Remove.
3198                 (cp_parser_initial_pragma): New.
3199                 (cp_lexer_new_main): Use it.
3200                 (cp_lexer_get_preprocessor_token): Initialize pragma_kind.
3201                 (cp_lexer_print_token): Don't handle CPP_PRAGMA.
3202                 (cp_parser_skip_to_pragma_eol): New.
3203                 (cp_parser_error): Use it.
3204                 (pragma_lex): New.
3205
3206         2005-10-09  Richard Henderson  <rth@redhat.com>
3207
3208                 * lex.c (parse_strconst_pragma): Update for c_lex name change.
3209                 (handle_pragma_java_exceptions): Likewise.
3210                 * parser.c (cp_lexer_new_main): Likewise.
3211
3212         2005-10-06  Richard Henderson  <rth@redhat.com>
3213
3214                 * parser.c (cp_lexer_new_main): Comment out defer_pragmas.
3215                 (cp_lexer_handle_pragma): Comment out
3216                 cpp_handle_deferred_pragma.
3217
3218         2005-10-01  Richard Henderson  <rth@redhat.com>
3219
3220                 * name-lookup.c (lookup_name): Remove prefer_type argument.
3221                 (lookup_name_prefer_type): New function.
3222                 * name-lookup.h (lookup_name_prefer_type): Declare it.
3223                 * decl.c (lookup_and_check_tag): Use it.
3224                 * pt.c (tsubst_friend_class): Likewise. Update for
3225                 lookup_name change.
3226                 (lookup_template_class, tsubst_copy_and_build): Likewise.
3227
3228 2006-03-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3229
3230         PR c++/15759
3231         * tree.c (bot_manip): Don't call mark_used.
3232
3233 2006-03-02  Mike Stump  <mrs@apple.com>
3234
3235         * decl2.c (import_export_decl): Remove redundant call to
3236         targetm.cxx.key_method_may_be_inline ().
3237
3238 2006-03-02  Richard Sandiford  <richard@codesourcery.com>
3239
3240         * decl.c (start_decl): Use have_global_bss_p when deciding
3241         whether to make the decl common.
3242
3243 2006-03-01  Mike Stump  <mrs@apple.com>
3244
3245         PR darwin/25908
3246         * decl2.c (import_export_decl): Fix ABI breakage on darwin.
3247
3248 2006-02-24  Geoffrey Keating  <geoffk@apple.com>
3249
3250         * except.c (expand_start_catch_block): Handle
3251         flag_use_cxa_get_exception_ptr.
3252
3253 2006-02-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3254
3255         PR c++/26291
3256         * decl.c (grok_op_properties): Check for ellipsis in arguments of
3257         operators.
3258
3259 2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
3260
3261         * Make-lang.in (C++): Remove.
3262         (.PHONY): Remove C++.
3263
3264 2006-02-18  Mark Mitchell  <mark@codesourcery.com>
3265
3266         PR c++/26266
3267         * cp-tree.h (cp_finish_decl): Adjust declaration.
3268         (grokbitfield): Likewise.
3269         (finish_static_data_member_decl): Likewise.
3270         * init.c (constant_value_1): Ensure processing_template_decl when
3271         folding non-dependent initializers for static data members of
3272         dependent types.  Return error_mark_node for erroneous
3273         initailizers.
3274         * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
3275         * decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl.
3276         (cp_finish_decl): Add init_const_expr_p parameter.  Set
3277         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
3278         (finish_decl): Adjust call to cp_finish_decl.
3279         (compute_array_index_type): Robustify.
3280         (start_method): Use finish_decl, not cp_finish_decl.
3281         * rtti.c (emit_tinfo_decl): Likewise.
3282         * except.c (initialize_handler_parm): Adjust call to
3283         cp_finish_decl.
3284         (expand_start_catch_block): Likewise.
3285         * cvt.c (build_up_reference): Adjust call to cp_finish_decl.
3286         * pt.c (instantiate_class_template): Adjust call to
3287         finish_static_data_member_decl.
3288         (tsubst_expr): Use finish_decl, not cp_finish_decl.
3289         (instantiate_decl): Adjust call to cp_finish_decl.
3290         * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
3291         cp_finish_decl.
3292         * decl2.c (finish_static_data_member_decl): Add init_const_expr_p
3293         parameter.
3294         (grokfield): Likewise.
3295         * parser.c (cp_parser_condition): Check for constant initializers.
3296         (cp_parser_init_declarator): Adjust calls to grokfield and
3297         cp_finish_decl.  Don't set
3298         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
3299         (cp_parser_member_declaration): Likewise.
3300         (cp_parser_objc_class_ivars): Likewise.
3301
3302 2006-02-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3303
3304         * call.c (standard_conversion): Return NULL instead of 0.
3305         (build_user_type_conversion_1): Likewise.
3306         (tourney): Likewise.
3307         * decl.c (redeclaration_error_message): Likewise.
3308         * error.c (language_to_string): Likewise.
3309
3310 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3311
3312         * cp-tree.h (warn_hidden): Remove prototype.
3313         * class.c (warn_hidden): Make static.
3314
3315         * cp-tree.h (build_type_conversion): Remove prototype.
3316         * cvt.c (build_type_conversion): Add prototype, make static.
3317
3318         * cp-tree.h (push_tinst_level): Remove prototype.
3319         (pop_tinst_level): Likewise.
3320         * pt.c (push_tinst_level): Add prototype, make static.
3321         (pop_tinst_level): Likewise.
3322
3323 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3324
3325         * decl.c (grokdeclarator): Return NULL_TREE instead of 0.
3326         * typeck.c (unary_complex_lvalue): Likewise.
3327
3328 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3329
3330         * lex.c (parse_strconst_pragma): Return error_mark_node instead of
3331         "(tree)-1" to indicate failure.  Simplify.
3332         (handle_pragma_interface): Test for error_mark_node instead of
3333         "(tree)-1".
3334         (handle_pragma_implementation): Likewise.
3335
3336 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3337
3338         PR c++/26151
3339         * parser.c (cp_parser_decl_specifier_seq): Check for duplicate
3340         decl-specifiers.  Remove extra check for duplicate 'friend'.
3341         * decl.c (grokdeclarator): Remove check for duplicate
3342         decl-specifiers.  Set longlong together with long_p.
3343
3344 2006-02-12  Jason Merrill  <jason@redhat.com>
3345
3346         PR c++/24996
3347         * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
3348         TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.
3349
3350 2006-02-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3351
3352         * class.c (debug_class): Remove extern.
3353         (debug_thunks): Likewise.
3354
3355 2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3356
3357         * typeck.c (string_conv_p): Don't test for flag_const_strings.
3358
3359 2006-02-08  Jason Merrill  <jason@redhat.com>
3360
3361         PR c++/25979
3362         * cp-gimplify.c (cp_gimplify_expr): Don't call
3363         cp_gimplify_init_expr for MODIFY_EXPRs.
3364         * typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.
3365
3366 2006-02-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3367
3368         PR c++/26071
3369         * decl.c (grokdeclarator): Set dname also for destructor.
3370
3371         PR c++/26070
3372         * decl.c (grokdeclarator): Clear storage_class together with staticp.
3373
3374 2006-02-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3375
3376         * cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
3377         (cp_build_qualified_type): Propogate renaming.
3378         * call.c (convert_like_real): Likewise.
3379         * cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
3380         * decl.c (make_typename_type, grokdeclarator): Likewise.
3381         * pt.c (tsubst_friend_function, instantiate_class_template,
3382         tsubst_default_argument, instantiate_decl,
3383         tsubst_initializer_list, tsubst_enum): Likewise.
3384         * semantics.c (finish_template_type): Likewise.
3385         * typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.
3386
3387 2006-02-07  Dirk Mueller  <dmueller@suse.com>
3388
3389         * typeck.c (build_binary_op): Annotate div-by-zero
3390         warnings to make -Wno-div-by-zero have an effect.
3391
3392 2006-02-07  Mark Mitchell  <mark@codesourcery.com>
3393
3394         PR c++/9737
3395         * pt.c (coerce_template_template_parms): Do not templates with
3396         excess default arguments to match template template parameters
3397         with fewer parameters.
3398         (coerce_template_parms): Add use_default_args parameter; use
3399         default arguments only when true.
3400         (lookup_template_class): Adjust call to coerce_template_parms.
3401         (fn_type_unification): Likewise.
3402         (unify): Likewise.
3403         (get_bindings): Likewise.
3404         (dependent_type_p): Add assertions.
3405
3406 2006-02-06  Roger Sayle  <roger@eyesopen.com>
3407
3408         * decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
3409         * rtti.c (typeinfo_in_lib_p): Likewise.
3410         * cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
3411         * name-lookup.c (arg_assoc_type): Likewise.
3412
3413 2006-02-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3414
3415         * cp-tree.h (tf_warn_or_error): New substituion flag.
3416         (cp_build_qualified_type): Use it.
3417         * call.c (convert_like_real): Likewise.
3418         * cvt.c (cp_convert_to_pointer): Likewise.
3419         (convert_to_reference): Likewise.
3420         * decl.c (make_typename_type): Likewise.
3421         (grokdeclarator): Likewise.
3422         * pt.c (tsubst_friend_function): Likewise.
3423         (tsubst_friend_class): Likewise.
3424         (instantiate_class_template): Likewise.
3425         (tsubst_default_argument): Likewise.
3426         (instantiate_decl): Likewise.
3427         (tsubst_initializer_list): Likewise.
3428         (tsubst_enum): Likewise.
3429         * semantics.c (finish_template_type): Likewise.
3430         * typeck.c (build_ptrmemfunc): Likewise.
3431         (convert_for_assignment): Likewise.
3432
3433 2006-02-03  Lee Millward  <lee.millward@gmail.com>
3434
3435         * typeck.c (string_conv_p): Pass appropiate
3436         OPT_Wxxxx values when calling warning().
3437         (build_array_ref, cxx_mark_addressable): Likewise.
3438         (check_return_expr): Likewise.
3439
3440         * init.c (perform_member_init): Likewise.
3441         (sort_mem_initializers, emit_mem_initializers): Likewise.
3442
3443         * class.c (check_field_decls): Likewise.
3444         (warn_about_ambiguous_bases): Likewise.
3445
3446         * decl.c (pop_label, poplevel): Likewise.
3447         (duplicate_decls, grok_op_properties): Likewise.
3448         (start_preparsed_function, finish_function): Likewise.
3449
3450         * name-lookup.c (pushdecl_maybe_friend): Likewise.
3451         (pushdecl_maybe_friend): Likewise.
3452
3453         * parser.c (cp_parser_warn_min_max): Likewise.
3454         (cp_parser_cast_expression): Likewise.
3455
3456         * method.c (lazily_declare_fn): Likewise.
3457         * cvt.c (convert_to_void): Likewise.
3458         * mangle.c (finish_mangling): Likewise.
3459         * cp-gimplify.c (gimplify_expr_stmt): Likewise.
3460
3461 2006-02-03  Mark Mitchell  <mark@codesourcery.com>
3462
3463         * name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
3464         not IDENTIFIER_OPNAME_P.
3465
3466 2006-01-31  Mark Mitchell  <mark@codesourcery.com>
3467
3468         PR c++/25342
3469         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
3470         documentation.
3471         * pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
3472         not TREE_VALUE.
3473         (instantiate_class_template): Simplify.
3474         (verify_class_unification): Remove.
3475         (unify): Document parameters.  Use INNERMOST_TEMPLATE_ARGS to
3476         permit multiple levels of template arguments.
3477         (more_specialized_class): Simplify.
3478         (get_class_bindings): Pass full arguments to unify.  Fold
3479         verify_class_unification into this function.  Return full
3480         arguments.
3481         (most_specialized_class): Adjust for changes to
3482         get_class_bindings.  Issue errors here for ambiguity.  Return the
3483         fully deduced arguments for the most specialized class, in
3484         addition to the partial specialization.
3485
3486 2006-01-31  Ben Elliston  <bje@au.ibm.com>
3487
3488         * mangle.c: Comment fix.
3489
3490 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3491
3492         * Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
3493         * repo.c (extract_string, afgets): Use cast when converting from
3494         void *.
3495
3496 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3497
3498         * call.c (alloc_conversion): Use cast when converting from void *.
3499         (alloc_conversions): Likewise.
3500         (add_candidate): Likewise.
3501         (print_z_candidates): Likewise.
3502         (add_warning): Likewise.
3503         * pt.c (retrieve_local_specialization): Likewise.
3504         (process_partial_specialization): Likewise.
3505         (mangle_class_name_for_template): Likewise.
3506         (tsubst_template_args): Likewise.
3507         * typeck2.c (pat_calc_hash): Likewise.
3508         (pat_compare): Likewise.
3509         (abstract_virtuals_error): Likewise.
3510         * class.c (method_name_cmp): Likewise.
3511         (resort_method_name_cmp): Likewise.
3512         (get_vfield_name): Likewise.
3513         * decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
3514         * lex.c (init_reswords): Likewise.
3515         * rtti.c (create_pseudo_type_info): Likewise.
3516         * search.c (dfs_lookup_base): Likewise.
3517         (dfs_dcast_hint_pre): Likewise.
3518         (dfs_dcast_hint_post): Likewise.
3519         * tree.c (hash_tree_cons): Likewise.
3520         * repo.c (extract_string): Likewise.
3521         (afgets): Likewise.
3522         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
3523         * g++spec.c (lang_specific_driver): Likewise.
3524
3525 2006-01-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3526
3527         * call.c (joust): Pass option code to warning.  Use inform for
3528         explanation.
3529         * class.c (check_bases): Likewise.
3530         (maybe_warn_about_overly_private_class): Likewise.
3531         (check_field_decls): Likewise.
3532         (layout_empty_base): Likewise.
3533         (layout_virtual_bases): Likewise.
3534         (layout_class_type): Likewise.
3535
3536 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
3537
3538         PR c++/25999
3539         * decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
3540         here, not ...
3541         (start_function): ... here.
3542
3543 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
3544
3545         PR c++/25855
3546         * class.c (resolve_address_of_overloaded_function): Adjust use of
3547         return value from most_specialized_instantiation.
3548         * pt.c (determine_specialization): Avoid multiple calls to
3549         get_bindings.
3550         (most_specialized_instantiation): When a tie occurs, set the
3551         current presumed champion to the next template.  Return the
3552         TREE_LIST node containing the template, rather than the template
3553         itself.
3554         (most_specialized): Remove.
3555         * name-lookup.c (push_overloaded_decl): When duplicate_decls
3556         indicates a failed redeclaration, report that to callers.
3557
3558 2006-01-26  Jason Merrill  <jason@redhat.com>
3559
3560         PR c++/16021
3561         * name-lookup.c (parse_using_directive): Require strong using to
3562         name a nested namespace.
3563
3564 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3565
3566         Revert:
3567         * cp-tree.h (do_poplevel): Remove prototype.
3568         * semantics.c (do_poplevel): Add prototype.  Make static.
3569
3570         Revert:
3571         * cp-tree.h (default_conversion): Remove prototype.
3572         * typeck.c (default_conversion): Make static.
3573
3574 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3575
3576         * cp-tree.h (get_primary_binfo): Remove prototype.
3577         (push_using_decl): Likewise.
3578         (current_template_args): Likewise.
3579         (more_specialized_class): Likewise.
3580         (mark_class_instantiated): Likewise.
3581         (default_conversion): Likewise.
3582         (pfn_from_ptrmemfunc): Likewise.
3583         * class.c (get_primary_binfo): Add prototype, make static, simplify.
3584         * name-lookup.c (push_using_decl): Make static.
3585         * pt.c (current_template_args): Likewise.
3586         (more_specialized_class): Likewise.
3587         (mark_class_instantiated): Likewise.
3588         * typeck.c (default_conversion): Make static.
3589         (pfn_from_ptrmemfunc): Add prototype, make static.
3590
3591 2006-01-24  Dirk Mueller  <dmueller@suse.de>
3592
3593         * typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().
3594
3595 2006-01-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3596
3597         PR c++/25552
3598         * parser.c (cp_parser_unqualified_id): Check that destructor name
3599         and scope match.
3600         * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
3601         Adjust comment.  Return early if possible.
3602         Use same_type_p to compare types.
3603         * typeck.c (lookup_destructor): Adjust call to check_dtor_name.
3604
3605 2006-01-24  Mark Mitchell  <mark@codesourcery.com>
3606
3607         * semantics.c: Remove outdated comment.
3608
3609 2006-01-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3610
3611         * cp-tree.h (do_poplevel): Remove prototype.
3612         * semantics.c (do_poplevel): Add prototype.  Make static.
3613
3614         * cp-tree.h (original_type): Remove prototype.
3615         * typeck.c (original_type): Make static.
3616
3617         * cp-tree.h (declare_global_var): Remove prototype.
3618         * decl.c (declare_global_var): Make static.
3619
3620         * cp-tree.h (implicitly_declare_fn): Remove prototype.
3621         * method.c (implicitly_declare_fn): Make static.
3622
3623         * cp-tree.h (fold_decl_constant_value): Remove prototype.
3624         * pt.c (fold_decl_constant_value): Make static.
3625
3626         * cp-tree.h (build_x_delete): Remove prototype.
3627         * init.c (build_vec_delete_1): Call build_op_delete_call directly
3628         and not via build_x_delete.
3629         (build_x_delete): Remove.
3630
3631         * cp-tree.h (get_vtt_name): Remove prototype.
3632         * class.c (get_vtt_name): Remove.
3633         (build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.
3634
3635 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3636
3637         * rtti.c (build_dynamic_cast): Fix comment.
3638
3639 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3640
3641         PR c++/10891
3642         * rtti.c (build_dynamic_cast): Reject dynamic_cast use if
3643         -fno-rtti.
3644
3645 2006-01-21  Mark Mitchell  <mark@codesourcery.com>
3646
3647         PR c++/25895
3648         * class.c (build_base_path): Generate a NOP_EXPR instead of a
3649         COMPONENT_REF if the base and derived classes are at the same
3650         address.
3651
3652         PR c++/25856
3653         * decl.c (begin_destructor_body): Robustify.
3654
3655         PR c++/25858
3656         * parser.c (cp_parser_direct_declarator): Robustify.
3657
3658 2006-01-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3659
3660         * parser.c (cp_lexer_next_token_is_keyword): Simplify.
3661
3662         * parser.c (clear_decl_specs): Remove prototype.
3663
3664         * parser.c (cp_parser_expression_fn): Remove.
3665
3666         * call.c (add_builtin_candidates): Remove superfluous return.
3667         * name-lookup.c (do_toplevel_using_decl): Likewise.
3668         * parser.c (cp_parser_type_specifier_seq): Likewise.
3669         (cp_parser_save_default_args): Likewise.
3670
3671 2006-01-20  Dirk Mueller  <dmueller@suse.com>
3672
3673         PR c++/5520
3674         * semantics.c (finish_if_stmt): Call empty_body_warning.
3675         * parser.c (cp_parser_implicitly_scoped_statement):
3676         Mark empty statement with an empty stmt.
3677
3678 2006-01-19  Mark Mitchell  <mark@codesourcery.com>
3679
3680         PR c++/22136
3681         * name-lookup.c (do_class_using_decl): Don't try to look up base
3682         classes in templates with dependent base types.
3683
3684 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3685
3686         PR c++/25854
3687         * pt.c (maybe_process_partial_specialization): Return early on
3688         error_mark_node.
3689
3690 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3691
3692         PR c++/16829
3693         * decl.c (start_preparsed_function): Check default arguments
3694         unconditionally.
3695         * name-lookup.c (pushdecl_maybe_friend): Check default arguments
3696         of all functions and function templates.
3697         * parser.c (cp_parser_late_parsing_default_args): Check default
3698         arguments.
3699         * decl2.c (check_default_args): Set missing default arguments to
3700         error_mark_node.
3701
3702 2006-01-18  Mark Mitchell  <mark@codesourcery.com>
3703
3704         PR c++/25836
3705         * cp-tree.h (push_class_stack): New function.
3706         (pop_class_stack): Likewise.
3707         * class.c (class_stack_node): Add hidden field.
3708         (pushclass): Clear it.
3709         (push_class_stack): New function.
3710         (pop_class_stack): Likewise.
3711         (currently_open_class): Ignore hidden classes.
3712         (currently_open_derived_class): Likewise.
3713         * name-lookup.c (push_to_top_level): Call push_class_stack.
3714         (pop_from_top_level): Call pop_class_stack.
3715
3716 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
3717
3718         * tree.c (find_tree_t, find_tree): Remove.
3719         * cp-tree.h: Remove the prototype for find_tree.
3720
3721 2006-01-18  Jakub Jelinek  <jakub@redhat.com>
3722
3723         * search.c (lookup_conversions_r): Fix a pasto.
3724
3725 2006-01-17  Eric Christopher  <echristo@apple.com>
3726
3727         * call.c (convert_like_real): When issuing conversion
3728         warnings, depend on OPT_Wconversion.
3729         * cvt.c (build_expr_type_conversion): Ditto.
3730
3731 2006-01-17  Kazu Hirata  <kazu@codesourcery.com>
3732
3733         * name-lookup.c (lookup_namespace_name): Remove.
3734         * name-lookup.h: Remove the prototype for
3735         lookup_namespace_name.
3736
3737 2006-01-17  Jakub Jelinek  <jakub@redhat.com>
3738
3739         PR c/25682
3740         * decl.c (compute_array_index_type): After issuing not an integral
3741         constant-expression error, set size to 1 to avoid ICEs later on.
3742
3743 2006-01-16  Ian Lance Taylor  <ian@airs.com>
3744
3745         * parser.c: Include "cgraph.h".
3746         (cp_parser_asm_definition): Call cgraph_add_asm_node rather than
3747         assemble_asm.
3748
3749 2006-01-16  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3750
3751         * g++spec.c (lang_specific_spec_functions): Remove.
3752
3753 2006-01-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3754
3755         * decl.c (check_initializer): Fix thinko.
3756
3757 2006-01-14  Mark Mitchell  <mark@codesourcery.com>
3758
3759         PR c++/25663
3760         * parser.c (cp_parser_direct_declarator): Use cp_parser_error
3761         instead of error.
3762
3763 2006-01-13  Jason Merrill  <jason@redhat.com>
3764
3765         * pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.
3766
3767         * name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
3768         * pt.c (check_explicit_specialization): Likewise.
3769
3770 2006-01-12  Jason Merrill  <jason@redhat.com>
3771
3772         PR libstdc++/24660
3773         * pt.c (check_explicit_specialization): Handle namespace
3774         association.
3775         * name-lookup.c (set_decl_namespace): Likewise.
3776
3777 2006-01-12  Nathan Sidwell  <nathan@codesourcery.com>
3778
3779         PR c++/24824
3780         * class.c (handle_using_decl): Pass correct scope to
3781         cp_emit_debug_info_for_using.
3782
3783 2006-01-11  Nathan Sidwell  <nathan@codesourcery.com>
3784
3785         PR c++/25386
3786         * tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
3787         packedness.
3788
3789 2006-01-06  Gabriel Dos Reis  <gdr@integrablesolutions.net>
3790
3791         * parser.c (cp_parser_primary_expression): Document the grammar
3792         for the built-in offsetof, a GNU extension.
3793
3794 2006-01-04  Zdenek Dvorak <dvorakz@suse.cz>
3795
3796         PR c++/25632
3797         * init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
3798         in condition.
3799
3800 2006-01-04  Chris Lattner  <sabre@gnu.org>
3801
3802         * typeck2.c: update copyright to 2006
3803         (split_nonconstant_init_1):  Set TREE_CONSTANT to true.
3804
3805 2006-01-04  Mark Mitchell  <mark@codesourcery.com>
3806
3807         PR c++/24782
3808         * parser.c (cp_parser_nested_name_specifier_opt): Preserve access
3809         checks, even when parsing tentatively.
3810
3811 2006-01-04  Richard Henderson  <rth@redhat.com>
3812
3813         Merge from gomp branch.
3814         * lex.c (handle_pragma_java_exceptions): Fix whitespace.
3815         * parser.c (struct cp_token): Add pragma_kind.
3816         (eof_token): Update to match.
3817         (struct cp_lexer): Add in_pragma; rearrange next for better packing.
3818         (cp_parser_initial_pragma): New.
3819         (cp_lexer_new_main): Use it.  Don't bother clearing
3820         c_lex_return_raw_strings.
3821         (cp_lexer_get_preprocessor_token): Always initialize keyword
3822         and pragma_kind fields.  Handle CPP_PRAGMA.
3823         (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
3824         in_pragma is set.
3825         (cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
3826         (cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string.
3827         (cp_parser_skip_to_pragma_eol): New.
3828         (cp_parser_error): Use it.
3829         (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
3830         rearrange with switch statement.
3831         (cp_parser_skip_to_end_of_statement): Likewise.
3832         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
3833         (cp_parser_skip_to_closing_brace): Likewise.
3834         (cp_parser_skip_until_found): Likewise.
3835         (cp_parser_statement): Add in_compound argument; update callers.
3836         Use it to decide how to handle pragma parsing.
3837         (cp_parser_labeled_statement): Add in_compound argument; pass
3838         it on to cp_parser_statement.
3839         (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
3840         (cp_parser_declaration_seq_opt): Likewise.
3841         (cp_parser_parameter_declaration): Likewise.
3842         (cp_parser_member_specification_opt): Likewise.
3843         (cp_parser_function_definition_after_decl): Likewise.
3844         (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
3845         (cp_parser_pragma): New.
3846         (pragma_lex): New.
3847
3848 2006-01-04  Dirk Mueller <dmueller@suse.com>
3849
3850         * decl.c (finish_constructor_body): create simple
3851         compound stmt instead of a if(1) { } construct.
3852
3853 2006-01-03  Mark Mitchell  <mark@codesourcery.com>
3854
3855         PR c++/25492
3856         * name-lookup.c (push_class_level_binding): When a derived class
3857         provides a type binding, eliminate any type binding from a base
3858         class.
3859
3860         PR c++/25625
3861         * repo.c (repo_emit_p): Always instantiate static data members
3862         initialized by constant expressions, so that there values are
3863         available.
3864
3865 2006-01-02  Mark Mitchell  <mark@codesourcery.com>
3866
3867         PR c++/25635
3868         * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
3869         conversion operator.
3870         * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
3871
3872         PR c++/25638
3873         * class.c (add_method): Never associate more than one destructor
3874         with a single class.
3875
3876         PR c++/25637
3877         * cp-tree.h (do_friend): Adjust prototype.
3878         * decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
3879         (grokdeclarator): Likewise.  Refine check for invalid
3880         declarations/definitions of member functions outside of their own
3881         class.
3882         * friend.c (do_friend): Make funcdef_flag a bool, not an int.
3883
3884         PR c++/25633
3885         * parser.c (cp_parser_mem_initializer_list): Check result of
3886         cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
3887         (cp_parser_mem_initializer): Return error_mark_node for failure.
3888
3889         PR c++/25634
3890         * parser.c (cp_parser_template_parameter_list): Call
3891         begin_template_parm_list and end_template_parm_list here.
3892         (cp_parser_type_parameter): Not here.
3893         (cp_parser_template_declaration_after_export): Or here.
3894         (cp_parser_elaborated_type_specifier): Call
3895         cp_parser_check_template_parameters.
3896
3897         * tree.c (build_target_expr_with_type): Use force_target_expr.
3898
3899         * decl2.c (mark_used): Fix typo in comment.
3900
3901 2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3902
3903         * parser.c (cp_parser_using_declaration): Skip name-lookup on
3904         invalid scope.
3905
3906 2005-12-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3907
3908         * cxx-pretty-print.c (pp_cxx_constant): New.  Print
3909         string-literal in parens if input program says so.
3910         (pp_cxx_primary_expression): Hand off constant printing to
3911         pp_cxx_constant.
3912         (pp_cxx_pretty_printer_init): Set pp->c_base.constant.
3913         (pp_cxx_expression): Use pp_cxx_constant for literals.
3914         * error.c (dump_expr): Use pp_constant for literals.
3915
3916 2005-12-29  Nathan Sidwell  <nathan@codesourcery.com>
3917
3918         * method.c (make_thunk): Don't set comdat_linkage here.
3919         (use_thunk): Make thunk one only here, if thunk target is
3920         DECL_ONE_ONLY.
3921
3922 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
3923
3924         PR c++/25439
3925         * decl.c (grokdeclarator): Remove dead code.
3926         * ptree.c (cxx_print_xnode): Handle BASELINK.
3927         * parser.c (make_id_declarator): Add sfk parameter.
3928         (cp_parser_direct_declarator): Do not pass TYPE_DECLs to
3929         make_id_declarator.
3930         (cp_parser_declarator_id): Simplify BASELINKs here.
3931         (cp_parser_member_declaration): Adjust calls to
3932         make_id_declarator.
3933
3934 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
3935
3936         PR c++/23171, c++/23172, c++/25417.
3937         * typeck.c (build_unary_op): Create temporary variables for
3938         compound literals whose addresses are taken.
3939         * init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P.
3940         * decl.c (reshape_init_vector): Likewise.
3941         (reshape_init): Give it external linkage.
3942         (check_initializer): Use COMPOUND_LITERAL_P.
3943         (initialize_artificial_var): Allow the initializer to be a
3944         CONSTRUCTOR.
3945         * call.c (make_temporary_var_for_ref_to_temp): Use
3946         create_temporary_var.
3947         * cp-tree.h (COMPOUND_LITERAL_P): New macro.
3948         (rehape_init): Declare.
3949         * typeck2.c (digest_init): Use COMPOUND_LITERAL_P.
3950         * semantics.c (finish_compound_literal): Use reshape_init.
3951
3952 2005-12-23  Mark Mitchell  <mark@codesourcery.com>
3953
3954         PR c++/24671
3955         * pt.c (instantiate_template): Handle SFINAE.
3956
3957 2005-12-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3958
3959         * decl.c (grokdeclarator): Improve diagnostic for friend
3960         declarations of class members.
3961
3962 2005-12-22  Mark Mitchell  <mark@codesourcery.com>
3963
3964         PR c++/25369
3965         * tree.c (really_overloaded_fn): Tweak comment.
3966         * pt.c (tsubst_call_declarator_parms): Remove.
3967         (tsubst_copy): Call mark_used on the member referenced by an
3968         OFFSET_REF.
3969         * semantics.c (finish_qualified_id_expr): Simplify.
3970         * decl2.c (mark_used): Accept BASELINKs.
3971
3972         PR c++/25364
3973         * typeck.c (build_unary_op): Pass DECLs not names to
3974         build_offset_refs.
3975         * init.c (build_offset_ref): Do not do name lookup.  Do not call
3976         mark_used.
3977         * call.c (build_call): Simplify and tidy.
3978         * semantics.c (finish_qualified_id_expr): Call mark_used.
3979
3980 2005-12-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3981
3982         PR c++/23333
3983         * parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to
3984         identify a single '0'.
3985
3986 2005-12-20  Mark Mitchell  <mark@codesourcery.com>
3987
3988         PR c++/21228
3989         * decl.c (use_eh_spec_block): New function.
3990         (store_parm_decls): Use it.
3991         (finish_function): Likewise.
3992
3993 2005-12-19  Mark Mitchell  <mark@codesourcery.com>
3994
3995         PR c++/24278
3996         * init.c (expand_member_init): Print messages about baseclasses
3997         using %T rather than %D.
3998
3999         PR c++/24915
4000         * class.c (add_method): Do not treat templates as identical unless
4001         their return types are the same.
4002
4003 2005-12-12  Mark Mitchell  <mark@codesourcery.com>
4004
4005         PR c++/25300
4006         * tree.c (build_qualified_name): Return error_mark_node for
4007         erroneous input.
4008
4009 2005-12-10  Mark Mitchell  <mark@codesourcery.com>
4010
4011         PR c++/25337
4012         * pt.c (tsubst_copy_and_build): Permit dependent types for the
4013         object in a class member access expression.
4014
4015 2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>
4016
4017         PR java/9861
4018         * mangle.c (write_bare_function_type): Mangle return type for
4019         methods of Java classes
4020
4021 2005-12-08  Th�dore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
4022
4023         * call.c (build_conditional_expr): Print types in error messages.
4024
4025 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4026
4027         * expr.c (cxx_expand_expr): Call gcc_unreachable instead of abort.
4028
4029 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4030
4031         * cp-gimplify.c (gimplify_cp_loop): Use fold_build3.
4032
4033 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
4034
4035         * Make-lang.in (c++.all.build, c++.install-normal): Remove.
4036
4037 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
4038
4039         * Make-lang.in: Remove all dependencies on s-gtype.
4040
4041 2005-12-06  Aldy Hernandez  <aldyh@redhat.com>
4042
4043         PR C++/24138
4044         * decl.c (reshape_init_array_1): Handle max_index of -1.
4045
4046 2005-12-06  Roger Sayle  <roger@eyesopen.com>
4047
4048         * typeck.c (build_binary_op): Issue warning if either operand of a
4049         comparison operator is a string literal, except for testing equality
4050         or inequality against NULL.
4051
4052 2005-12-06  Roger Sayle  <roger@eyesopen.com>
4053
4054         PR c++/25263
4055         * decl.c (compute_array_index_type): Check that itype is an
4056         INTEGER_CST node before testing/clearing TREE_OVERFLOW.
4057
4058 2005-12-05  Daniel Berlin  <dberlin@dberlin.org>
4059
4060         * ptree.c (cxx_print_decl): Update to check for decl_common
4061         structure.
4062
4063 2005-12-02  Mark Mitchell  <mark@codesourcery.com>
4064
4065         PR c++/24173
4066         * decl.c (duplicate_decls): Don't rely on DECL_TEMPLATE_INFO after
4067         clobbering newdecl.
4068
4069 2005-12-02  Richard Guenther  <rguenther@suse.de>
4070
4071         * semantics.c (simplify_aggr_init_expr): Use buildN instead
4072         of build.
4073
4074 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4075
4076         * parser.c (cp_lexer_new_main): Usr GGC_RESIZEVEC instead of
4077         ggc_realloc.
4078         (cp_parser_template_argument_list): Use XRESIZEVEC instead of
4079         xrealloc.
4080         * class.c (pushclass): Likewise.
4081
4082 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4083
4084         * decl2.c (get_priority_info): Use XNEW, not xmalloc.
4085         * decl.c (push_switch): Likewise.
4086         * lex.c (handle_pragma_implementation): Likewise.
4087         * cp-objcp-common.c (decl_shadowed_for_var_insert): Use GGC_NEW,
4088         not ggc_alloc.
4089         (cxx_initialize_diagnostics): Use XNEW, not xmalloc.
4090         * class.c (init_class_processing): Use XNEWVEC, not xmalloc.
4091         * g++spec.c (lang_specific_driver): Likewise.
4092         * mangle.c (save_partially_mangled_name): Likewise.
4093         * parser.c (cp_lexer_new_main): Use GGC_NEWVEC, not ggc_alloc.
4094         (cp_parser_template_argument_list): Use XNEWVEC, nto xmalloc.
4095         (cp_parser_sizeof_operand): Likewise.
4096         * repo.c (open_repo_file, open_repo_file): Likewise.
4097
4098 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4099
4100         * parser.c (cp_parser_make_typename_type): Call make_typename_type
4101         with tf_none instead of magic value 0.
4102         (cp_parser_explicit_instantiation): Call do_type_instantiation
4103         with tf_error instead of magic value 1.
4104         (cp_parser_elaborated_type_specifier): Call make_typename_type
4105         with tf_error instead of magic value 1.
4106         (cp_parser_class_name): Likewise.
4107         (cp_parser_lookup_name): Likewise.
4108
4109 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4110
4111         * parser.c (cp_parser_declaration): Set token2.type to CPP_EOF,
4112         not RID_MAX.
4113
4114 2005-11-30  Jason Merrill  <jason@redhat.com>
4115
4116         PR c++/21123
4117         * cp-gimplify.c (cp_genericize_r): Don't dereference invisible reference
4118         parms in a thunk.
4119
4120 2005-11-30  Ben Elliston  <bje@au.ibm.com>
4121
4122         * typeck.c (build_x_unary_op): Correct spelling in error message.
4123
4124 2005-11-28  Nathan Sidwell  <nathan@codesourcery.com>
4125
4126         PR c++/21166
4127         * class.c (check_field_decls): Only set DECL_PACKED on a field
4128         when its natural alignment is > BITS_PER_UNIT.
4129
4130 2005-11-27  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4131
4132         PR c++/24979
4133         * cp-tree.h (DECL_MAIN_P): Remove duplicate definition.
4134
4135 2005-11-26  Richard Henderson  <rth@redhat.com>
4136
4137         * lex.c: Update for pragma_lex rename.
4138         * parser.c: Likewise.
4139
4140 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4141
4142         PR c++/9278
4143         * decl.c (grokparms): Do not allow typedef-names in a '(void)'
4144         parmlist.
4145
4146 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4147
4148         * typeck2.c (process_init_constructor_union): Remove check for
4149         unnamed union members.
4150
4151 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4152
4153         * name-lookup.c (lookup_name_real): Merge two if's.
4154
4155 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4156
4157         * pt.c (instantiate_class_template): Clean-up.
4158
4159 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4160
4161         * pt.c (template_class_depth_real): Remove. Move functionality to ...
4162         (template_class_depth): ... here, replacing count_specializations
4163         with 0.  Adjust comment.
4164
4165 2005-11-24  Richard Guenther  <rguenther@suse.de>
4166         Dirk Mueller <dmueller@suse.de>
4167
4168         PR c++/14024
4169         * typeck.c (build_reinterpret_cast_1): Use
4170         strict_aliasing_warning.
4171
4172 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4173
4174         PR c++/24235
4175         * pt.c (check_instantiated_args): Reword diagnostic message about
4176         template argument involving local types.
4177
4178 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4179
4180         PR c++/21667
4181         * typeck.c (build_array_ref): Avoid code duplicate.  Use common
4182         C/C++ diagnostic function warn_array_subscript_with_type_char.
4183
4184 2005-11-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4185
4186         PR c++/22238
4187         * error.c (resolve_virtual_fun_from_obj_type_ref): New.
4188         (dump_expr): Use it in <case CALL_EXPR>.
4189
4190 2005-11-21  Richard Henderson  <rth@redhat.com>
4191
4192         * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch.
4193
4194         * name-lookup.c (lookup_name): Remove prefer_type argument.
4195         (lookup_name_prefer_type): New.
4196         * decl.c (lookup_and_check_tag): Use them.
4197         * pt.c (tsubst_friend_class): Likewise.
4198         (lookup_template_class): Likewise.
4199         (tsubst_copy_and_build): Likewise.
4200         * name-lookup.h (lookup_name_prefer_type): New.
4201         (lookup_name): Remove declaration.
4202
4203 2005-11-18  Mark Mitchell  <mark@codesourcery.com>
4204
4205         PR c++/8355
4206         * decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling
4207         set_decl_namespace.
4208         * name-lookup.c (set_decl_namespace):
4209
4210 2005-11-18  Mike Stump  <mrs@apple.com>
4211
4212         * cp-objcp-common.h (LANG_HOOKS_LOOKUP_NAME): Add.
4213         * name-lookup.c (lookup_name_two): Remove.
4214         (lookup_name_one): Add.
4215         * name-lookup.h (lookup_name_two): Remove.
4216         (lookup_name_one): Add.
4217
4218 2005-11-15  Jason Merrill  <jason@redhat.com>
4219
4220         PR c++/24580
4221         * method.c (locate_copy): Also use skip_artificial_parms here.
4222         (synthesize_exception_spec): Use CLASS_TYPE_P rather than checking
4223         for RECORD_TYPE.
4224         (locate_ctor): Abort if we fail to find a default constructor.
4225
4226 2005-11-15  Mike Stump  <mrs@apple.com>
4227
4228         * name-lookup.c (lookup_name_two): Add.
4229         * name-lookup.h: Likewise.
4230
4231 2005-11-15  Mark Mitchell  <mark@codesourcery.com>
4232
4233         PR c++/24667
4234         * typeck.c (check_for_casting_away_constness): Use the diag_fn.
4235         (build_const_cast_1): Call it, for C-style casts.
4236
4237 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
4238
4239         PR c++/24687
4240         * pt.c (check_explicit_specialization): Don't check for C linkage.
4241         (push_template_decl_real): Likewise.
4242         * parser.c (cp_parser_explicit_specialization): Check here.
4243         (cp_parser_template_declaration_after_export): And here.
4244
4245         * parser.c (cp_lexer_get_preprocessor_token): Initialize keyword
4246         field.
4247
4248 2005-11-14  Jason Merrill  <jason@redhat.com>
4249
4250         PR c++/24580
4251         * method.c (locate_ctor): Skip all artificial parms, not just
4252         'this'.
4253
4254 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
4255
4256         * parser.c (eof_token): Add initializer for ambiguous_p.
4257
4258 2005-11-13  Mark Mitchell  <mark@codesourcery.com>
4259
4260         PR c++/24817
4261         * decl.c (check_redeclaration_exception_specification): New
4262         function.
4263         (duplicate_decls): Use it.
4264         * error.c (fndecl_to_string): Print the template parameter list.
4265
4266         PR c++/20293
4267         * cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes
4268         for namespaces.
4269         (pp_cxx_original_namespace_definition): Likewise.
4270         * name-lookup.c (ambiguous_decl): Don't issue error messages;
4271         instead return lists of ambiguous candidates.
4272         (select_decl): Handle ambiguous namespace lookups.
4273         * parser.c (cp_token): Add ambiguous_p.
4274         (cp_lexer_get_preprocessor_token): Set it.
4275         (cp_parser_diagnose_invalid_type_name): Avoid duplicate messages
4276         when a qualified name uses an invalid scope.
4277         (cp_parser_primary_expression): Print ambiguous candidates.
4278         (cp_parser_type_parameter): Adjust comment to reflect new
4279         parameter name for cp_parser_lookup_name.
4280         (cp_parser_template_argument): Likewise.
4281         (cp_parser_elaborated_type_specifier): Likewise.
4282         (cp_parser_namespace_name): Likewise.
4283         (cp_parser_class_name): Print ambiguous candidates.
4284         (cp_parser_lookup_name): Rename ambiguous_p parameter to
4285         ambiguous_decls.  Use it to return a list of ambiguous candiates
4286         when a lookup is ambiguous.
4287         (cp_parser_lookup_name_simple): Adjust comment to reflect new
4288         parameter name for cp_parser_lookup_name.
4289
4290 2005-11-12  Jakub Jelinek  <jakub@redhat.com>
4291
4292         PR c++/24780
4293         * typeck.c (complete_type): Set TYPE_NEEDS_CONSTRUCTING
4294         and TYPE_HAS_NONTRIVIAL_DESTRUCTOR flags for all variants
4295         of array type.
4296
4297         PR c++/24761
4298         * pt.c (tsubst_copy_asm_operands): New function.
4299         (tsubst_expr) <case ASM_EXPR>: Use it.
4300
4301 2005-11-08  Jakub Jelinek  <jakub@redhat.com>
4302
4303         PR c++/19450
4304         * decl.c (redeclaration_error_message): Issue diagnostics about
4305         olddecl and newdecl disagreement on __thread property.
4306         (grokdeclarator): Set DECL_TLS_MODEL on class static variables.
4307
4308 2005-11-08  Jason Merrill  <jason@redhat.com>
4309
4310         PR c++/21123
4311         * method.c (use_thunk): Use build_cplus_new instead of
4312         force_target_expr.
4313
4314 2005-11-06  Jason Merrill  <jason@redhat.com>
4315             James A. Morrison <phython@gcc.gnu.org>
4316
4317         PR c++/17256
4318         * decl2.c (cp_finish_file): Fix conditions for undefined warning.
4319         Set TREE_NO_WARNING instead of TREE_PUBLIC.
4320         * pt.c (instantiate_pending_templates): Set DECL_INITIAL to avoid
4321         a warning on a function we didn't instantiate because of excessive
4322         recursion.
4323
4324 2005-11-06  Mark Mitchell  <mark@codesourcery.com>
4325
4326         * class.c (record_subobject_offsets): Don't record offsets past
4327         biggest empty class for non-empty base classes.
4328         (layout_class_type): Use TYPE_SIZE_UNIT, not TYPE_SIZE, when
4329         keeping track of the size of emptyclasses.
4330
4331         PR c++/21308
4332         * class.c (sizeof_biggest_empty_class): New variable.
4333         (record_subobject_offsets): Don't record offsets past biggest
4334         empty class for data members.  Replace vbases_p parameter with
4335         is_data_member parameter.
4336         (build_base_field): Adjust call.
4337         (layout_class_type): Likewise.  Maintain
4338         sizeof_biggest_empty_class.
4339
4340 2005-11-05  Kazu Hirata  <kazu@codesourcery.com>
4341
4342         * decl2.c, init.c, typeck.c: Fix comment typos.
4343
4344 2005-11-04  Richard Guenther  <rguenther@suse.de>
4345
4346         PR c++/22487
4347         * init.c (build_vec_init): Build comparison of matching
4348         types.
4349
4350 2005-11-03  Josh Conner  <jconner@apple.com>
4351
4352         PR c++/19989
4353         pt.c (tsubst): Accept zero-length array if tf_error is set
4354         in complain flags.  Change error message for negative-
4355         length array.
4356
4357 2005-11-04  Joseph S. Myers  <joseph@codesourcery.com>
4358
4359         * cp-tree.h (cp_cpp_error), error.c (cp_cpp_error): Take va_list*
4360         parameter.
4361
4362 2005-11-03  Joseph S. Myers  <joseph@codesourcery.com>
4363
4364         PR c++/17964
4365         * error.c (cp_cpp_error): New function.
4366         * cp-tree.h (cp_cpp_error): Declare.
4367         * parser.c (cp_lexer_new_main): Set CPP option client_diagnostic
4368         and error callback after lexing.
4369
4370 2005-11-03  Mark Mitchell  <mark@codesourcery.com>
4371
4372         PR c++/21627
4373         * pt.c (register_specialization): Update inline flags on clones.y
4374
4375 2005-11-03  Andrew Pinski  <pinskia@physics.uc.edu>
4376
4377         PR c++/24582
4378         * decl.c (declare_local_label): Return 0 for variables
4379         with error_mark_node as their types.
4380
4381 2005-11-02  Mark Mitchell  <mark@codesourcery.com>
4382
4383         PR c++/22434
4384         * call.c (build_conditional_expr): Do bad conversions, if there's
4385         no other choice.
4386
4387         PR c++/24560
4388         * parser.c (cp_parser_postfix_dot_deref_expression): Improve error
4389         message for use of overloaded functions on LHS of "." operator.
4390
4391         PR c++/19253
4392         * parser.c (cp_parser_postfix_expression): Use
4393         cp_parser_elaborated_type_specifier to handle typename-types in
4394         functional casts.
4395         (cp_parser_enclosed_argument_list): Skip ahead to the end of the
4396         template argument list if the closing ">" is not found.
4397
4398         PR c++/24569
4399         * pt.c (instantiate_decl): Use cp_finish_decl, not
4400         finish_static_data_member_decl.
4401
4402 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
4403
4404         * decl.c (grokfndecl): Remove the setting
4405         of the return type of the function type
4406         of main after erroring about must returning
4407         int.
4408
4409 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
4410
4411         PR C++/23229
4412         * decl.c (grokfndecl): Create a new function type
4413         after erroring out about main not returning int.
4414
4415 2005-10-28  Josh Conner  <jconner@apple.com>
4416
4417         PR c++/22153
4418         * parser.c (cp_parser_member_declaration): Detect and handle
4419         a template specialization.
4420
4421 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
4422
4423         PR C++/23426
4424         * decl.c (start_decl): Check that the decl is an
4425         error_mark_node before getting the type.
4426         Remove the check for the decl's type being an
4427         error_mark_node.
4428
4429 2005-10-21  Mark Mitchell  <mark@codesourcery.com>
4430
4431         PR c++/24260
4432         * parser.c (cp_parser_init_declarator): Pass attributes to
4433         grokfield.
4434
4435 2005-10-20  Mark Mitchell  <mark@codesourcery.com>
4436
4437         PR c++/22618
4438         * search.c (accessible_p): Check access in the outermost set of
4439         template parameters.
4440
4441 2005-10-20  Richard Guenther  <rguenther@suse.de>
4442
4443         * decl.c (grokdeclarator): Fix ambiguous pedwarn message.
4444
4445 2005-10-18  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4446
4447         PR c++/22293
4448         * decl.c (grokdeclarator): Reject unqualified destructors in
4449         friend declarations.
4450
4451 2005-10-18  Mark Mitchell  <mark@codesourcery.com>
4452
4453         PR c++/23293
4454         * pt.c (convert_template_argument): Use canonical type variants in
4455         template specializations.
4456
4457 2005-10-18  Nathan Sidwell  <nathan@codesourcery.com>
4458
4459         PR c++/21383
4460         * name-lookup.c (arg_assoc): Template args can be null in a
4461         template-id-expr.
4462
4463         PR c++/22604
4464         * class.c (update_vtable_entry_for_fn): Don't process invalid
4465         covariant overriders.
4466
4467         PR c++/23118
4468         * cp-tree.h (add_method): Add return value.
4469         * class.c (add_method): Return success indicator.
4470         * semantics.c (finish_member_declaration): Don't add an invalid
4471         method to the method list.
4472
4473 2005-10-17  Mark Mitchell  <mark@codesourcery.com>
4474
4475         PR c++/21908
4476         * call.c (build_new_method_call): Do not show VTT parameters to
4477         the user.
4478
4479 2005-10-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4480
4481         PR c++/23440
4482         * parser.c (cp_parser_statement): If the parser reached CPP_EOF,
4483         only complain about missing statement.
4484
4485 2005-10-17  Nathan Sidwell  <nathan@codesourcery.com>
4486
4487         PR c++/24386
4488         * cp-tree.h (BASELINK_QUALIFIED_P): New.
4489         * pt.c (tsubst_copy_and_build): <CALL_EXPR case>: Use it.
4490         * typeck.c (finish_class_member_access_expr): Set it.
4491
4492         PR c++/21353
4493         * decl.c (check_default_argument): Don't check
4494         processing_template_decl or uses_template_parms here.
4495         (grokparms): Only call check_default_argument when not processing
4496         a template decl.
4497         * parser.c (cp_parser_late_parsing_default_arg): Call
4498         check_default_argument when not processing a template decl.
4499
4500 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
4501
4502         PR c++/24389
4503         * decl2.c (mark_used): Use uses_template_parms instead of
4504         dependent_type_p.
4505         * init.c (constant_value_1): Handle uninstantiated templates
4506         specially.
4507         * pt.c (instantiate_decl): Add sanity check.
4508
4509 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
4510
4511         PR c++/22173
4512         * typeck.c (check_template_keyword): Fix thinko.
4513
4514 2005-10-16  Andrew Pinski  <pinskia@physics.uc.edu>
4515
4516         PR c++/23959
4517         * decl.c (pop_switch): Only call c_do_switch_warnings
4518         when not processing templates.
4519
4520 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
4521
4522         PR c++/22173
4523         * cp-tree.h (QUALIFIED_NAME_IS_TEMPLATE): New macro.
4524         (check_template_keyword): New function.
4525         (finish_id_expression): Change prototoype.
4526         (finish_qualified_id_expr): Change prototype.
4527         (build_qualified_name): New function.
4528         (finish_class_member_access_expr): Change prototype.
4529         * init.c (build_offset_ref): Use build_qualified_name.
4530         * mangle.c (write_expression): Likewise.
4531         * parser.c (cp_parser_primary_expression): Remove qualifying_class
4532         parameter.  Add address_p and template_arg_p.  Use
4533         build_qualified_name.
4534         (cp_parser_id_expression): Default *template_p to
4535         template_keyword_p.  Check for invalid uses of the template
4536         keyword.
4537         (cp_parser_postfix_expression): Eliminate special handling for
4538         qualified names.  Adjust call to cp_parser_primary_expression.
4539         (cp_parser_postfix_dot_deref_expression): Adjust call to
4540         cp_parser_id_expression and finish_class_member_access_expr.
4541         (cp_parser_template_argument_list): Add comment.
4542         (cp_parser_template_argument): Adjust use of
4543         cp_parser_primary_expression.  Remove call to
4544         finish_qualified_id_expr.
4545         (cp_parser_lookup_name): Use build_qualified_name.
4546         * pt.c (tsubst): Use build_qualified_name.
4547         (tsubst_qualified_id): Likewise.  Adjust call to
4548         finish_qualified_id_expr.
4549         (tsubst_copy): Use build_qualified_name.
4550         (tsubst_copy_and_build): Adjusts call to finish_id_expression and
4551         finish_class_member_access_expr.
4552         * semantics.c (finish_non_static_data_member): Use
4553         build_qualified_name.
4554         (finish_qualified_id_expr): Add template_p and template_arg_p
4555         parameters.
4556         (finish_id_expression): Remove qualifiying_class parameter.  Add
4557         template_p, done, address_p, and template_arg_p.  Use
4558         build_qualified_name.  Adjust calls to
4559         finish_class_member_acess_expr.
4560         * tree.c (build_qualified_name): New function.
4561         * typeck.c (check_template_keyword): New function.
4562         (finish_class_member_access_expr): Add template_p argument.  Check
4563         for invalid uses of the template keyword.
4564
4565 2005-10-15  Mark Mitchell  <mark@codesourcery.com>
4566
4567         PR c++/21347
4568         * class.c (maybe_warn_about_overly_private_class): Lazy
4569         constructors are public.
4570
4571 2005-10-14  Mark Mitchell  <mark@codesourcery.com>
4572
4573         PR c++/19565
4574         * call.c (convert_like_real): Rely on convert_and_check to issue
4575         warnings about overflow and conversion to unsigned.
4576         * decl.c (finish_enum): Use the location of the enumerators, not
4577         the closing brace of the enumeration, when reporting warnings
4578         about conversions.
4579         (build_enumerator): Use error_mark_node for erroneous values.
4580         * typeck2.c (digest_init): Remove reference to "signature pointer"
4581         from comment.
4582
4583 2005-10-14  Nathan Sidwell  <nathan@codesourcery.com>
4584
4585         PR c++/17796
4586         * optimize.c (update_cloned_parm): Add FIRST parameter. Use it.
4587         (maybe_clone_body): Track the first clone.
4588
4589 2005-10-13  Nathan Sidwell  <nathan@codesourcery.com>
4590
4591         PR c++/23984
4592         * class.c (build_base_path): The vtable is always the first thing
4593         in the vtt.
4594
4595 2005-10-13  Mark Mitchell  <mark@codesourcery.com>
4596
4597         PR c++/20721
4598         * cp-tree.h (DECL_NONTRIVIALLY_INITIALIZED_P): New macro.
4599         * decl.c (duplicate_decls): Merge it into new declarations.
4600         (decl_jump_unsafe): Use it, rather than DECL_INITIAL.
4601         (cp_finish_decl): Set it, when appropriate.
4602
4603         PR c++/22180
4604         * call.c (build_new_method_call): Correct pretty-printing of
4605         destructor names.
4606         * pt.c (tsubst_qualified_id): Recognize invalid uses of "~T" as an
4607         identifier.
4608
4609         PR c++/23694
4610         * decl.c (start_method): Return error_mark_node for errors.
4611
4612         PR c++/23307
4613         * pt.c (push_template_decl_real): Complain about attempts to
4614         declare template variables.
4615
4616         PR c++/22352
4617         * pt.c (tsubst_template_parms): Set processing_template_decl while
4618         processing the parameters.
4619         (tsubst_decl): Set processing_template_decl when substituting into
4620         a TEMPLATE_DECL.
4621
4622         PR c++/22405
4623         * pt.c (most_specialized_instantiation): Robustify.
4624
4625         PR c++/22464
4626         * semantics.c (finish_id_expression): Issue errors about uses of
4627         local variables in containing functions even in templates.
4628
4629 2005-10-12  Danny Smith  <dannysmith@users.sourceforge.net>
4630
4631         PR target/21801
4632         PR target/23589
4633         * class.c (finish_struct_1): Call
4634         targetm.cxx.adjust_class_at_definition.
4635
4636
4637 2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
4638
4639         PR c++/21592
4640         * pt.c (build_non_dependent_expr): Don't wrap a COMPONENT_REF
4641         with already looked up member functions.  Assert we're not
4642         returning a NON_DEPENDENT_EXPR with unknown type.
4643         * typeck.c (finish_class_member_access_expr):  We can get
4644         non-template-id-expr baselinks.  If the lookup finds a baselink,
4645         remember it even inside templates.
4646
4647         PR c++/23797
4648         * parser.c (cp_parser_functional_cast): Cope when TYPE is not a
4649         TYPE_DECL.  Use dependent_type_p to check type.
4650         * pt.c (uses_template_parms_p): Use dependent_type_p for a
4651         TYPE_DECL.
4652         (type_dependent_expression_p): Assert we've not been given a
4653         TYPE_DECL.
4654
4655         PR c++/21117
4656         * decl.c (check_function_type): Correctly overwrite incomplete
4657         return type with void type.
4658         * typeck.c (check_return_expr): If the function's return type is
4659         void, don't try and convert a return expr.
4660
4661 2005-10-12  David Edelsohn  <edelsohn@gnu.org>
4662
4663         PR c++/23730
4664         * call.c (build_object_call): If BINFO is NULL, bypass
4665         lookup_fnfields and set fns to NULL_TREE.
4666
4667 2005-10-12  Paolo Bonzini  <bonzini@gnu.org>
4668
4669         PR c++/24052
4670         * error.c (dump_expr): Pass LABEL_DECL to dump_decl.  Print
4671         an ADDR_EXPR of a LABEL_DECL as &&.
4672
4673 2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
4674
4675         PR c++/19964
4676         * class.c (walk_subobject_offsets): Don't walk error_mark_node.
4677
4678 2005-10-11  Ian Lance Taylor  <ian@airs.com>
4679
4680         PR c++/8057
4681         * cvt.c (convert_to_void): Don't warn about unused values when
4682         processing a template declaration.
4683
4684 2005-10-11  Mark Mitchell  <mark@codesourcery.com>
4685
4686         PR c++/21089
4687         * call.c (convert_like_real): Use decl_constant_value, not
4688         integral_constant_value.
4689         * init.c (constant_value_1): New function.
4690         (integral_constant_value): Use it.
4691         (decl_constant_value): Likewise.
4692         * typeck.c (decay_conversion): Use decl_constant_value, not
4693         integral_constant_value.
4694
4695         PR c++/21369
4696         * parser.c (cp_parser_elaborated_type_specifier): Don't treat
4697         class types as templates if the type is not appearing as part of a
4698         type definition or declaration.
4699
4700 2005-10-10  Mark Mitchell  <mark@codesourcery.com>
4701
4702         PR c++/24277
4703         * pt.c (instantiate_decl): Call finish_static_data_member_decl for
4704         static data members.
4705
4706 2005-10-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4707             Mark Mitchell  <mark@codesourcery.com>
4708
4709         PR c++/23437
4710         * parser.c (cp_parser_template_argument_list): Do not treat
4711         contents of argument list as part of a constant expression.
4712
4713 2005-10-10  Mark Mitchell  <mark@codesourcery.com>
4714
4715         PR c++/24139
4716         * decl.c (grokdeclarator): Do not require template parameter lists
4717         for explicitly specialized class.
4718         * error.c (dump_aggr_type): Do not dump template arguments for
4719         non-primary specializations.
4720         (dump_function_name): Likewise.
4721
4722         PR c++/24275
4723         * pt.c (instantiate_decl): Instantiate the initializer of
4724         a static data member in the namespace containing the class
4725         containing the static data member.
4726
4727 2005-10-08  James A. Morrison  <phython@gcc.gnu.org>
4728
4729         PR c++/22172
4730         * parser.c (cp_parser_postfix_expression) <RID_TYPENAME>: Treat nontype
4731         scopes as nondependent.
4732
4733 2005-10-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4734
4735         * call.c (resolve_args): Remove redundant test.
4736
4737 2005-10-05  Paolo Bonzini  <bonzini@gnu.org>
4738
4739         PR tree-optimization/21419
4740         PR tree-optimization/24146
4741         PR tree-optimization/24151
4742
4743         * semantics.c (finish_asm_stmt): Call readonly_error if outputs are
4744         read-only.  Set ASM_VOLATILE_P for asms without outputs.
4745
4746 2005-10-05  Nathan Sidwell  <nathan@codesourcery.com>
4747
4748         PR c++/23513
4749         * call.c (joust): Adjust length count to more_specialized_fn.
4750         * pt.c (more_specialized_fn): Cope with non-static member vs
4751         non-member.
4752
4753 2005-10-04  Andrew Pinski  <pinskia@physics.uc.edu>
4754
4755         PR middle-end/23125
4756         * decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name
4757         instead of change_decl_assembler_name.
4758
4759 2005-10-03  Alexandre Oliva  <aoliva@redhat.com>
4760
4761         * error.c (dump_type) <UNKNOWN_TYPE>: Print reworded message.
4762
4763 2005-10-03  Mark Mitchell  <mark@codesourcery.com>
4764
4765         PR c++/17775
4766         * repo.c: Include flags.h.
4767         (finish_repo): Add -frandom-seed to the arguments.
4768
4769 2005-10-02  Mark Mitchell  <mark@codesourcery.com>
4770
4771         PR c++/22621
4772         * parser.c (cp_parser_template_argument): Don't turn "T::f" into
4773         "(*this).T::f".
4774         * pt.c (convert_nontype_argument): Remove ??? comment.
4775
4776         PR c++/23840
4777         * tree.c (lvalue_p_1): A VA_ARG_EXPR with class type is an lvalue,
4778         when class rvalues are lvalues.
4779
4780 2005-09-28  Mark Mitchell  <mark@codesourcery.com>
4781
4782         PR c++/16782
4783         * decl.c (grokdeclarator): Always pedwarn about overqualified
4784         member names.
4785
4786 2005-09-27  Mark Mitchell  <mark@codesourcery.com>
4787
4788         PR c++/22147
4789         * name-lookup.c (maybe_process_template_type_declaration): Don't
4790         treat forward declarations of classes as templates just because
4791         we're processing_template_decl.
4792         * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INFO for friend
4793         functions.
4794
4795 2005-09-26  Jason Merrill  <jason@redhat.com>
4796
4797         PR c++/13764
4798         * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): New macro.
4799         * name-lookup.c (pushdecl_maybe_friend): Check it.
4800         * decl.c (begin_function_body): Do nothing if it's false.
4801         (finish_function_body): Ditto.
4802         (outer_curly_brace_block): New fn.
4803         (finish_function): Use it.
4804
4805 2005-09-26  Richard Guenther  <rguenther@suse.de>
4806
4807         PR middle-end/15855
4808         * decl2.c (do_static_destruction): Remove.
4809         (finish_static_initialization_or_destruction): Likewise.
4810         (DECL_EFFECTIVE_INIT_PRIORITY): New macro.
4811         (NEEDS_GUARD_P): Likewise.
4812         (do_static_initialization): Rename to
4813         do_static_initialization_or_destruction.  Process all
4814         initializers/destructors and handle common conditionalizing.
4815         (start_static_initialization_or_destruction): Rename to
4816         one_static_initialization_or_destruction.  Handle only
4817         decl-specific conditionalizing.
4818         (cp_finish_file): Call do_static_initialization_or_destruction.
4819
4820 2005-09-22  Jakub Jelinek  <jakub@redhat.com>
4821
4822         PR c++/21983
4823         * class.c (find_final_overrider): Move diagnostic about no unique final
4824         overrider to...
4825         (update_vtable_entry_for_fn): ... here.
4826
4827 2005-09-21  Mark Mitchell  <mark@codesourcery.com>
4828
4829         PR c++/23993
4830         * init.c (integral_constant_value): Use DECL_INTEGRAL_CONSTANT_VAR_P.
4831
4832 2005-09-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4833
4834         PR c++/23965
4835         * call.c (resolve_args): Return error_mark_node on arguments
4836         whose TREE_TYPE is error_mark_node.
4837
4838 2005-09-20  Jakub Jelinek  <jakub@redhat.com>
4839
4840         PR c++/23947
4841         * rtti.c (get_pseudo_ti_init): Recompute ti pointer after
4842         get_tinfo_ptr calls.
4843
4844 2005-09-16  Mark Mitchell  <mark@codesourcery.com>
4845
4846         PR c++/23914
4847         * parser.c (cp_parser_enclosed_template_argument_list): Make sure
4848         skip_evaluation is false when processing template arguments.
4849
4850         PR c++/21514
4851         * pt.c (check_instantiated_args): Treat uses of anonymous types as
4852         causing type-deduction failure.
4853
4854 2005-09-15  Jason Merrill  <jason@redhat.com>
4855
4856         PR c++/23357
4857         * cp-tree.def (SIZEOF_EXPR, ALIGNOF_EXPR): Change code class to
4858         tcc_expression.
4859
4860 2005-09-15  Mark Mitchell  <mark@codesourcery.com>
4861
4862         PR c++/23896
4863         * pt.c (tsubst_aggr_type): Make sure skip_evaluation is false when
4864         processing template arguments.
4865
4866         * pt.c (check_explicit_instantiation_namespace): Fix typo.
4867
4868         PR c++/13140
4869         * decl.c (check_class_member_definition_namespace): New function.
4870         (grokfndecl): Use it.
4871         (grokvardecl): Likewise.
4872         (grokdecl): Improve documentation.
4873         * pt.c (check_explicit_instantiation_namespace): New function.
4874         (register_specialization): Call check_specialization_namespace
4875         when replacing an implicitly instantiated function.
4876         (check_explicit_specialization): Ensure that DECL_CONTEXT is set
4877         correctly for namespace-scope specializations.
4878         (do_decl_instantiation): Use
4879         check_explicit_instantiation_namespace.
4880         (do_type_instantiation): Likewise.
4881
4882 2005-09-15  Nathan Sidwell  <nathan@codesourcery.com>
4883
4884         PR c++/23725
4885         * error.c (dump_decl): <USING_DECL case> Use USING_DECL_SCOPE.
4886
4887 2005-09-13  Bastian Blank <waldi@debian.org>
4888
4889         PR c++/16171
4890         * mangle.c (find_substitution): Do not use special substitutions
4891         for identifiers not in std::.
4892
4893 2005-09-13  Mark Mitchell  <mark@codesourcery.com>
4894
4895         PR c++/23839
4896         * typeck.c (cxx_mark_addressable): Only check DECL_HARD_REGISTER
4897         for VAR_DECLs.
4898
4899 2005-09-13  Mark Mitchell  <mark@codesourcery.com>
4900
4901         PR c++/23842
4902         * pt.c (tsubst_default_argument): Do treat default argument
4903         expressions as occurring in the context of the function called.
4904
4905 2005-09-12  Mark Mitchell  <mark@codesourcery.com>
4906
4907         PR c++/23841
4908         * parser.c (cp_parser_primary_expression): Recognize the closing
4909         ">" of a template-argument-list after a floating-point literal as
4910         the end of a cast expression.
4911
4912 2005-09-12  Mark Mitchell  <mark@codesourcery.com>
4913
4914         PR c++/23789
4915         * cvt.c (perform_qualification_conversions): Don't create
4916         unnecessary NOP_EXPRs.
4917         * pt.c (tsubst_template_arg): Use fold_non_dependent_expr.
4918
4919 2005-09-12  Ian Lance Taylor  <ian@airs.com>
4920
4921         PR g++/7874
4922         * cp-tree.h (struct lang_decl_flags): Add hidden_friend_p
4923         bitfield.  Make dummy bitfield one bit smaller.
4924         (DECL_HIDDEN_FRIEND_P): Define.
4925         (pushdecl_maybe_friend): Declare.
4926         (pushdecl_top_level_maybe_friend): Declare.
4927         * decl.c (duplicate_decls): Add newdecl_is_friend parameter.
4928         Change prototype and all callers.  Add assertion that a
4929         DECL_ARTIFICIAL FUNCTION_DECL is not DECL_HIDDEN_FRIEND_P.  Set
4930         DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P in duplicated decl if
4931         appropriate.
4932         * name-lookup.c (supplement_binding): Don't ignore a
4933         DECL_HIDDEN_FRIEND_P.
4934         (pushdecl_maybe_friend): Break out contents of pushdecl.  Add
4935         is_friend parameter.  Set DECL_ANTICIPATED and
4936         DECL_HIDDEN_FRIEND_P for a friend function.
4937         (pushdecl): Just call pushdecl_maybe_friend.
4938         (pushdecl_with_scope): Add is_friend parameter.  Change prototype
4939         and all callers.
4940         (pushdecl_namespace_level): Likewise.
4941         (push_overloaded_decl): Likewise.  Check DECL_HIDDEN_FRIEND_P as
4942         well as DECL_ANTICIPATED when checking for a builtin.
4943         (do_nonmember_using_decl): Check DECL_HIDDEN_FRIEND_P as well as
4944         DECL_ANTICIPATED when checking for a builtin.
4945         (do_nonmember_using_decl): Likewise.
4946         (pushdecl_top_level_1): Add is_friend parameter.  Change all
4947         callers.
4948         (pushdecl_top_level_maybe_friend): New function.
4949         (remove_hidden_names): New function.
4950         (struct arg_lookup): Add args field.
4951         (friend_of_associated_class_p): New static function.
4952         (arg_assoc_namespace): Ignore hidden functions which are not
4953         friends of an associated class of some argument.
4954         (lookup_arg_dependent): Remove hidden functions from list passed
4955         in.  Initialize k.args.
4956         * name-lookup.h (remove_hidden_names): Declare.
4957         * friend.c (do_friend): Call pushdecl_maybe_friend instead of
4958         pushdecl.
4959         * call.c (add_function_candidate): Change DECL_ANTICIPATED test to
4960         an assertion, with a check for DECL_HIDDEN_FRIEND_P.
4961         (build_new_function_call): Add koenig_p parameter.  Change
4962         prototype and callers.
4963         * pt.c (register_specialization): Add is_friend parameter.  Change
4964         all callers.
4965         (push_template_decl_real): Change is_friend parameter to bool.
4966         Change prototype and all callers.
4967         (tsubst_friend_class): Call pushdecl_top_level_maybe_friend
4968         instead of pushdecl_top_level.
4969
4970 2005-09-11  Richard Henderson  <rth@redhat.com>
4971
4972         * decl2.c (build_anon_union_vars): Copy attributes from the base addr.
4973         * pt.c (tsubst_decl): Substitute in DECL_VALUE_EXPR.
4974
4975 2005-09-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4976
4977         * parser.c (cp_parser_translation_unit): Simplify.  The while-block
4978         was actually executed at most once.
4979
4980 2005-09-09  Richard Henderson  <rth@redhat.com>
4981
4982         PR debug/20998
4983         * cp-tree.def (ALIAS_DECL): Remove.
4984         * cp-lang.c (cp_init_ts): Remove support for it.
4985         * error.c (dump_decl): Likewise.
4986         * name-lookup.c (pushdecl): Likewise.
4987         * semantics.c (finish_id_expression): Likewise.
4988         * decl2.c (build_anon_union_vars): Use a VAR_DECL with
4989         DECL_VALUE_EXPR instead.
4990
4991 2005-09-09  Mark Mitchell  <mark@codesourcery.com>
4992
4993         PR c++/22252
4994         * decl.c (start_preparsed_function): Do not pay attention to
4995         #pragma interface for implicitly-defined methods.
4996         * decl2.c (cp_finish_file): Do not complain about uses of inline
4997         functions that have bodies, even if we decided not to emit the
4998         body in this translation unit.
4999         * semantics.c (note_decl_for_pch): Do not mess with linkage.
5000         (expand_or_defer_fn): Make inline, non-template functions COMDAT
5001         at this point.
5002
5003 2005-09-08  Richard Henderson  <rth@redhat.com>
5004
5005         PR debug/23190
5006         * decl.c (wrapup_globals_for_namespace): Call
5007         emit_debug_global_declarations.
5008         * decl2.c (cp_finish_file): Likewise.
5009
5010 2005-09-08  Mark Mitchell  <mark@codesourcery.com>
5011
5012         PR c++/23691
5013         * decl2.c (mark_used): Instantiate static data members initialized
5014         by constants, even in a template.
5015
5016 2005-09-08  Andrew Pinski  <pinskia@physics.uc.edu>
5017
5018         PR obj-c++/16816
5019         * parser.c (cp_parser_objc_selector_expression): Treat CPP_SCOPE as
5020         two CPP_COLON.
5021
5022 2005-09-07  Richard Guenther  <rguenther@suse.de>
5023
5024         * cp-gimplify.c (cp_gimplify_expr): Create empty CONSTRUCTOR
5025         for EMPTY_CLASS_EXPR.
5026
5027 2005-09-06  Jakub Jelinek  <jakub@redhat.com>
5028
5029         PR c/23075
5030         * typeck.c (check_return_expr): Add no_warning argument.  Set
5031         *no_warning to true if "return-statement with no value, in function
5032         returning" warning has been issued.
5033         * cp-tree.h (check_return_expr): Adjust prototype.
5034         * semantics.c (finish_return_stmt): Set TREE_NO_WARNING if
5035         check_return_expr set *no_warning to true.
5036
5037 2005-09-06  Mark Mitchell  <mark@codesourcery.com>
5038
5039         * cp-tree.h (rvalue): New function.
5040         * call.c (build_conditional_expr): Use it.
5041         * init.c (build_new_1): Likewise.
5042         * rtti.c (build_dynamic_cast_1): Likewise.
5043         * tree.c (rvalue): New function.
5044         * typeck.c (build_unary_op): Use it.
5045         (build_static_cast_1): Likewise.
5046
5047         PR c++/9782
5048         * init.c (build_new_1): Make sure the entire array type is
5049         complete, not just its element types.
5050
5051 2005-09-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5052
5053         * decl.c (check_elaborated_type_specifier): Remove redundant check.
5054
5055 2005-09-06  Jakub Jelinek  <jakub@redhat.com>
5056
5057         PR c++/23056
5058         * typeck.c (ignore_overflows): New helper function.
5059         (build_static_cast_1): Use it.
5060
5061 2005-09-06  Kazu Hirata  <kazu@codesourcery.com>
5062
5063         * cp-tree.h, decl.c, decl2.c, semantics.c: Fix comment typos.
5064         Follow spelling conventions.
5065
5066 2005-09-05  Mark Mitchell  <mark@codesourcery.com>
5067
5068         PR c++/23667
5069         * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INSTANTIATED when
5070         copying a VAR_DECL.
5071
5072 2005-09-05  Mark Mitchell  <mark@codesourcery.com>
5073
5074         PR c++/21440
5075         * semantics.c (finish_stmt_expr_expr): Add an explicit
5076         initialization to the last statement in the statement-expression.
5077         * (finish_stmt_expr): Adjust accordingly.
5078
5079 2005-09-03  Mark Mitchell  <mark@codesourcery.com>
5080
5081         PR c++/23699
5082         * decl2.c (mark_used): Always instantiate static data members
5083         initialized by constant expressions.
5084         * pt.c (instantiate_decl): Instantiate the initializers for static
5085         data members initialized by constant expressions.
5086
5087         PR c++/21687
5088         * semantics.c (expand_or_defer_fn): Do not call ggc_collect when
5089         finishing processing for a template function in a local class.
5090         Revert:
5091         2005-09-02  Mark Mitchell  <mark@codesourcery.com>
5092         * parser.c (cp_parser_class_specifier): Push/pop GC contexts
5093         around functions in local classes.
5094
5095 2005-09-02  Mark Mitchell  <mark@codesourcery.com>
5096
5097         PR c++/21687
5098         * parser.c (cp_parser_class_specifier): Push/pop GC contexts
5099         around functions in local classes.
5100
5101 2005-08-31  Andrew Pinski  <pinskia@physics.uc.edu>
5102
5103         PR obj-c++/23640
5104         * decl2.c (cp_finish_file): If this is obj-c++ and we need a static
5105         init, call generate_ctor_or_dtor_function.
5106
5107 2005-08-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5108
5109         PR c++/13377
5110         * parser.c (cp_parser_lookup_name): Pass LOOKUP_COMPLAIN to
5111         lookup_name_real on final parse.
5112
5113 2005-08-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5114
5115         PR c++/23639
5116         * semantics.c (qualified_name_lookup_error): Do not complain again
5117         on invalid scope.
5118
5119 2005-08-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5120
5121         PR c++/23586
5122         * parser.c (cp_parser_namespace_name): Move diagnostic for
5123         invalid namespace-name to here from ...
5124         * name-lookup.c (do_namespace_alias): ... here and ...
5125         (do_using_directive): ... here.  Remove dead code.
5126
5127 2005-08-28  Mark Mitchell  <mark@codesourcery.com>
5128
5129         PR c++/23099
5130         * cp-tree.h (saved_scope): Add skip_evaluation.
5131         * decl.c (start_decl): Use DECL_INITIALIZED_IN_CLASS_P, not
5132         DECL_INITIAL, to determine whether or not a static data member was
5133         initialized in the class-specifier.
5134         (cp_finish_decl): Add comment.
5135         * init.c (integral_constant_value): Subtitute into the
5136         initializers for static data members in templates.
5137         * name-lookup.c (push_to_top_level): Save skip_evaluation.
5138         (pop_from_top_level): Restore it.
5139         * pt.c (instantiate_class_template): Do not substitute into the
5140         intializers of static data members when instantiating a class.
5141         (regenerate_decl_from_template): Simplify.
5142         (instantiate_decl): Tidy.  Substitute into the initializer for a
5143         static data member even when the definition of the data member is
5144         not available.
5145
5146 2005-08-26  Mark Mitchell  <mark@codesourcery.com>
5147
5148         PR c++/19004
5149         * pt.c (uses_template_parms): Handle IDENTIFIER_NODE.
5150         (type_dependent_expression_p): Allow BASELINKs whose associated
5151         functions are simply a FUNCTION_DECL.
5152
5153         PR c++/23491
5154         * cp-tree.h (build_vec_init): Adjust prototype.
5155         * init.c (perform_member_init): Adjust call to build_vec_init.
5156         (build_aggr_init): Likewise.
5157         (build_new_1): Do not call build_default_init for array types.
5158         (build_vec_init): Add explicit_default_init_p parameter.  Perform
5159         default initialization of vector elements when set.
5160         * typeck.c (build_modify_expr): Adjust call to build_vec_init.
5161
5162 2005-08-25  Nathan Sidwell  <nathan@codesourcery.com>
5163
5164         PR c++/20817
5165         * typeck.c (build_x_unary_op): Make sure OFFSET_REF is not for a
5166         ->*.
5167
5168 2005-08-24  Nathan Sidwell  <nathan@codesourcery.com>
5169
5170         PR c++/22454
5171         * parser.c (cp_lexer_peek_nth_token): Relax assert.
5172
5173 2005-08-23  Nathan Sidwell  <nathan@codesourcery.com>
5174
5175         PR c++/23044
5176         * pt.c (tsubst_qualified_id): A SCOPE_REF can still remain.
5177
5178 2005-08-22  James E Wilson  <wilson@specifix.com>
5179
5180         PR tree-optimization/23426
5181         * decl.c (grokdeclarator): Use TYPE_SIZE_UNIT not TYPE_SIZE for
5182         array size check.
5183
5184 2005-08-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5185
5186         PR c++/22233
5187         * pt.c (push_template_decl_real): Return error_mark_node if the
5188         number of template parameters does not match previous definition.
5189
5190 2005-08-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5191
5192         PR c++/23089
5193         * decl.c (require_complete_types_for_parms): Mark incomplete types
5194         as invalid.
5195
5196 2005-08-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5197
5198         * parser.c (cp_parser_nth_token_starts_template_argument_list_p):
5199         Fix typo in leading comment.
5200
5201 2005-08-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5202
5203         * name-lookup.c, ptree.c: Delete HOST_PTR_PRINTF.
5204
5205 2005-08-15 Fariborz Jahanian <fjahanian@apple.com>
5206
5207         * cp-tree.h (can_convert_arg, fn_type_unification): New argument.
5208         * call.c (add_template_candidate_real): Pass down 'flags' to
5209         fn_type_unification.
5210         (can_convert_arg): New 'flags' argument. Pass it to call to
5211         implicit_conversion instead of LOOKUP_NORMAL.
5212         (can_convert): Add LOOKUP_NORMAL to call to can_convert_arg.
5213         * class.c (resolve_address_of_overloaded_function): Ditto.
5214         (resolve_address_of_overloaded_function): Ditto.
5215         * decl.c (reshape_init, check_default_argument): Ditto.
5216         * typeck.c (build_ptrmemfunc): Ditto.
5217         * pt.c (type_unification_real): Add 'flags' argument.
5218         (fn_type_unification): Pass 'flags' to type_unification_real.
5219         (type_unification_real): Pass new 'flags' argument to call to
5220         can_convert_arg.
5221
5222 2005-08-12  Giovanni Bajo  <giovannibajo@libero.it>
5223             Nathan Sidwell  <nathan@codesourcery.com>
5224
5225         PR c++/21799
5226         PR c++/8271
5227         * pt.c (unify) <METHOD_TYPE>: Check this-pointer cv-qualifiers
5228         explicitly.
5229
5230 2005-08-12  Nathan Sidwell  <nathan@codesourcery.com>
5231
5232         PR c++/21799
5233         Revert my 2005-07-08 patch
5234         * pt.c (type_unification_real): Remove is_method_argument and
5235         assoicated checks.
5236         (fn_type_unification, unify): Adjust type_unification_real calls.
5237
5238 2005-08-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5239
5240         PR c++/23266
5241         * decl2.c (grokfield): Check that method is not static before
5242         marking it as pure.
5243
5244 2005-08-11  Nathan Sidwell  <nathan@codesourcery.com>
5245
5246         PR c++/23219
5247         * name-lookup.c (pushtag): Process the template type before
5248         altering the identifier lookup fields.  Remove unreachable code
5249         creating an empty stub decl.
5250
5251 2005-08-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5252
5253         PR c++/20646
5254         * decl.c (grokdeclarator): Reset storage_class after error.
5255
5256 2005-08-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5257
5258         PR c++/22508
5259         * init.c (build_new_1): Check for empty candidate list.
5260
5261 2005-08-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5262
5263         PR c++/23191
5264         * pt.c (tsubst) <case METHOD_TYPE>: Check for error_mark_node
5265         before calling build_exception_variant.
5266
5267 2005-08-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5268
5269         PR c++/19498
5270         * pt.c (tsubst_decl) <case TEMPLATE_DECL>: Return ERROR_MARK_NODE
5271         if substitution of template args did not succeed.
5272
5273 2005-08-06  Michael Matz  <matz@suse.de>
5274
5275         * method.c (use_thunk): Call init_insn_lengths.
5276
5277 2005-08-05  James A. Morrison  <phython@gcc.gnu.org>
5278
5279         PR c++/22514
5280         * name-lookup.c (cp_emit_debug_info_for_using): Do nothing if
5281         sorrycount or errorcount are nonzero.
5282
5283 2005-08-05  Mark Mitchell  <mark@codesourcery.com>
5284
5285         * name-lookup.c (pushtag): Remove accidental commit from:
5286         2004-12-21  Mark Mitchell  <mark@codesourcery.com>
5287         PR c++/19063
5288         * decl.c (grokdeclarator): Return error_mark_node, not
5289         void_type_node, to indicate errors.
5290         * parser.c (cp_parser_template_parameter_list): Robustify.
5291         (cp_parser_template_parameter): Likewise.
5292
5293 2005-08-01  Kazu Hirata  <kazu@codesourcery.com>
5294
5295         * class.c, decl.c, name-lookup.c, pt.c, typeck.c, typeck2.c:
5296         Fix comment typos.
5297
5298 2005-07-29  Kazu Hirata  <kazu@codesourcery.com>
5299
5300         * method.c: Fix a comment typo.
5301
5302 2005-07-28  Mark Mitchell  <mark@codesourcery.com>
5303
5304         PR c++/22545
5305         * call.c (add_builtin_candidate): Adjust for changes in
5306         representation of pointer-to-member types.
5307
5308 2005-07-28  Mike Stump  <mrs@apple.com>
5309
5310         * pt.c (check_explicit_specialization): Add visibility logic.
5311         (lookup_template_class): Likewise.
5312         (instantiate_class_template): Likewise.
5313
5314 2005-07-27  Devang Patel  <dpatel@apple.com>
5315
5316         * name-lookup.c (pushtag): Do no set DECL_IGNORED_P bit.
5317
5318 2005-07-25  Ian Lance Taylor  <ian@airs.com>
5319
5320         * ptree.c (cxx_print_identifier): Print a leading space if the
5321         indent level is 0.
5322
5323 2005-07-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5324
5325         * call.c (convert_for_arg_passing): Check function pointers when
5326         -Wmissing-format-attribute is activated.
5327         * typeck.c (convert_for_assignment): Likewise.
5328
5329 2005-07-22  Manfred Hollstein  <mh@suse.com>
5330
5331         * parser.c (cp_parser_declaration): Fix unitialised warnings.
5332
5333 2005-07-21  Andrew Pinski  <pinskia@physics.uc.edu>
5334
5335         * class.c (build_base_path): Fix typo.
5336
5337 2005-07-21  Andrew Pinski  <pinskia@physics.uc.edu>
5338
5339         PR C++/22358
5340         * class.c (build_base_path): Convert BINFO_OFFSET to the correct type.
5341
5342 2005-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5343
5344         * call.c: Fix comment typo(s).
5345         * cxx-pretty-print.h: Likewise.
5346         * name-lookup.c: Likewise.
5347         * parser.c: Likewise.
5348
5349 2005-07-20  Douglas Gregor <doug.gregor@gmail.com>
5350
5351         PR c++/2922
5352         * semantics.c (perform_koenig_lookup): For dependent calls, just
5353         return the set of functions we've found so far. Later, it will be
5354         augmented by those found through argument-dependent lookup.
5355         * name-lookup.c (lookup_arg_dependent): Implement DR 164 by removing
5356         the optimization that skips namespaces where the functions were
5357         originally found.
5358
5359 2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>
5360
5361         Make CONSTRUCTOR use VEC to store initializers.
5362         * call.c (convert_default_arg): Update call to digest_init.
5363         * class.c (dump_class_hierarchy, dump_array): Update to cope with
5364         VEC in CONSTRUCTOR_ELTS.
5365         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Likewise.
5366         (finish_compound_literal, digest_init): Update declaration.
5367         * decl.c (struct reshape_iter): New data type.
5368         (reshape_init_array): Rename to...
5369         (reshape_init_array_1): Update to cope with VEC in CONSTRUCTOR_ELTS.
5370         (reshape_init): Rewrite from scratch. Split parts into...
5371         (reshape_init_array, reshape_init_vector, reshape_init_class,
5372         reshape_init_r): New functions.
5373         (check_initializer): Update call to reshape_init. Remove obsolete
5374         code.
5375         (initialize_artificial_var, cp_complete_array_type): Update to cope
5376         with VEC in CONSTRUCTOR_ELTS.
5377         * decl2.c (grokfield): Update calls to digest_init.
5378         (mark_vtable_entries): Update to cope with VEC in CONSTRUCTOR_ELTS.
5379         * error.c (dump_expr_init_vec): New function.
5380         (dump_expr): Use dump_expr_init_vec.
5381         * init.c (build_zero_init, build_vec_init): Update to cope with VEC
5382         in CONSTRUCTOR_ELTS.
5383         (expand_default_init): Update call to digest_init.
5384         * parser.c  (cp_parser_postfix_expression): Use a VEC for the
5385         initializers.
5386         (cp_parser_initializer_list): Build a VEC of initializers.
5387         * pt.c (tsubst_copy, tsubst_copy_and_build): Update to cope with VEC
5388         in CONSTRUCTOR_ELTS.
5389         * rtti.c (tinfo_base_init, generic_initializer, ptr_initializer,
5390         ptm_initializer, class_initializer, get_pseudo_ti_init): Use
5391         build_constructor_from_list instead of build_constructor.
5392         * semantics.c (finish_compound_literal): Update call to digest_init.
5393         * tree.c (stabilize_init): Update to cope with VEC in
5394         CONSTRUCTOR_ELTS.
5395         * typeck.c (build_ptrmemfunc1): Likewise.
5396         * typeck2.c: (cxx_incomplete_type_error, split_nonconstant_init_1):
5397         Likewise.
5398         (store_init_value): Use build_constructor_from_list and update call
5399         to digest_init.
5400         (digest_init): Rewrite.
5401         (process_init_constructor): Rewrite from scratch. Split into...
5402         (process_init_constructor_array, picflag_from_initializer,
5403         process_init_constructor_record, process_init_constructor_union):
5404         New functions.
5405         (PICFLAG_ERRONEOUS, PICFLAG_NOT_ALL_CONSTANT, PICFLAG_NOT_ALL_SIMPLE):
5406         New macros.
5407         (build_functional_cast): Use build_constructor_from_list instead of
5408         build_constructor.
5409
5410 2005-07-18  Mark Mitchell  <mark@codesourcery.com>
5411
5412         PR c++/22263
5413         * cp-tree.h (instantiate_decl): Change prototype.
5414         * decl2.c (mark_used): Adjust accordingly.
5415         * pt.c (do_decl_instantiation): Likewise.
5416         (instantiate_class_member): Likewise.
5417         (instantiate_decl): Rename undefined_ok as expl_inst_class_mem_p.
5418         Clear DECL_INTERFACE_KNOWN for an explicitly instantiated template
5419         that has no definition available.
5420         (instantiate_pending_templates): Adjust call to instantiate_decl.
5421
5422 2005-07-17  Mark Mitchell  <mark@codesourcery.com>
5423
5424         PR c++/22139
5425         * cp-tree.h (DECL_TEMPLATE_INFO): Improve documentation.
5426         * decl.c (duplicate_decls): Re-register template specializations
5427         for functions that have DECL_TEMLPLATE_INFO, even if they do not
5428         have DECL_TEMPLATE_INSTANTIATION set.
5429
5430 2005-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5431
5432         * call.c (diagnostic_fn_t): New.
5433         (build_temp, convert_like_real): Use diagnostic_fn_t.
5434
5435 2005-07-15  Mark Mitchell  <mark@codesourcery.com>
5436
5437         PR c++/22204
5438         * repo.c (repo_emit_p): Robustify.
5439
5440 2005-07-14  Daniel Berlin  <dberlin@dberlin.org>
5441
5442         Fix PR c++/22452
5443         * tree.c (decl_linkage): Don't check DECL_COMDAT on CONST_DECL.
5444
5445 2005-07-15  Mark Mitchell  <mark@codesourcery.com>
5446
5447         PR c++/22132
5448         * call.c (implicit_conversion): Add c_cast_p parameter.
5449         (standard_conversion): Likewise.  Allow conversions between
5450         differently-qualified pointer types when performing a C-style
5451         cast.
5452         (add_function_candidate): Adjust callee.
5453         (build_builtin_candidate): Likewise.
5454         (build_user_type_conversion_1): Likewise.
5455         (conditional_conversion): Likewise.
5456         (can_convert_arg): Likewise.
5457         (can_convert_arg_bad): Likewise.
5458         (perform_implicit_conversion): Likewise.
5459         * cp-tree.h (comp_ptr_ttypes_const): Declare.
5460         * typeck.c (comp_ptr_ttypes_const): Give it external linkage.
5461         Return bool.
5462
5463 2005-07-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5464             Nathan Sidwell  <nathan@codesourcery.com>
5465
5466         PR c++/20172
5467         * pt.c (tsubst_template_parms): Check for invalid non-type
5468         parameters.
5469
5470 2005-07-09  Andrew Pinski  <pinskia@physics.uc.edu>
5471
5472         * cp-lang.c (shadowed_var_for_decl, decl_shadowed_for_var_lookup,
5473         decl_shadowed_for_var_insert): Move over to cp-objcp-common.c.
5474         (cp_init_ts): Call init_shadowed_var_for_decl.
5475         Remove include of gt-cp-cp-lang.h.
5476         * cp-objcp-common.c (shadowed_var_for_decl,
5477         decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Moved from
5478         cp-lang.c.
5479         (init_shadowed_var_for_decl): New function to initialize
5480         shadowed_var_for_decl.
5481         Include gt-cp-cp-objcp-common.h.
5482         * Make-lang.in (gt-cp-lang.h): Remove.
5483         (gt-cp-cp-objcp-common.h): Add.
5484         (cp/cp-lang.o): Remove dependancy on gt-cp-lang.h.
5485         (cp/cp-objcp-common.o): Add dependancy on gt-cp-cp-objcp-common.h.
5486         * config-lang.in (gtfiles): Remove cp-lang.c and Add cp-objcp-common.c.
5487         * cp-tree (init_shadowed_var_for_decl): Add prototype.
5488
5489 2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
5490
5491         * Make-lang.in: Add gt-cp-lang.h.
5492         (cp-lang.o): Ditto.
5493         * class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on
5494         the field.
5495         * config-lang.in: Add cp-lang.c to gtfiles.
5496         * cp-lang.c: Include hashtab.h.
5497         (cp_init_ts): New function.
5498         (LANG_HOOK_INIT_TS): Use macro.
5499         (decl_shadowed_for_var_lookup): New function.
5500         (decl_shadowed_for_var_insert): Ditto.
5501         * cp-tree.h (THUNK_FUNCTION_CHECK): Use decl_common.
5502         (NON_THUNK_FUNCTION_CHECK): Ditto.
5503         (DECL_NAMESPACE_ASSOCIATIONS): Use decl_non_common.
5504         (DECL_INIT_PRIORITY): Ditto.
5505         (DECL_HAS_SHADOWED_FOR_VAR_P): Ditto.
5506         (DECL_SHADOWED_FOR_VAR): Use hashtable.
5507         (SET_DECL_SHADOWED_FOR_VAR): Ditto.
5508         * decl.c (duplicate_decls): Update for new/updated structures.
5509         (poplevel): Use SET_DECL_SHADOWED_FOR_VAR.
5510         * decl2.c (start_static_initialization_or_destruction): Deal with
5511         priority.
5512         * pt.c (tsubst_decl): Check TS_DECL_WRTL before doing
5513         SET_DECL_RTL.
5514         * tree.c (handle_init_priority_attribute): Handle priority.
5515
5516 2005-07-08  Nathan Sidwell  <nathan@codesourcery.com>
5517
5518         PR c++/21799
5519         * pt.c (type_unification_real): Add is_method argument.  Use it
5520         for this pointer unification.
5521         (fn_type_unification): Adjust type_unification_real call.
5522         (unify): Likewise.
5523
5524 2005-07-07  Nathan Sidwell  <nathan@codesourcery.com>
5525
5526         * pt.c (type_unification_real): Remove allow_incomplete argument.
5527         Remove unreachable code.
5528         (fn_type_unification): Adjust call to type_unification_real.
5529         (unify): Likewise.
5530
5531 2005-07-05  Paolo Bonzini  <bonzini@gnu.org>
5532
5533         * Makefile.in (class.o, decl2.o): Adjust dependencies.
5534         * class.c: Include tree-dump.h.
5535         * decl2.c: Include tree-dump.h.
5536
5537 2005-07-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5538
5539         * dump.c: Use dump_string_field.
5540
5541 2005-07-03  Joseph S. Myers  <joseph@codesourcery.com>
5542
5543         * cp-tree.h (GCC_DIAG_STYLE): #undef before defining.  Change
5544         minimum GCC version for format checking to 4.1.
5545
5546 2005-07-02  Kazu Hirata  <kazu@codesourcery.com>
5547
5548         * Make-lang.in (cc1plus-checksum.c): Use
5549         build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
5550
5551 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
5552
5553         * name-lookup.c, parser.c: Use %q, %< and %> to quote in
5554         diagnostics.
5555
5556 2005-07-02  Zack Weinberg  <zack@codesourcery.com>
5557             Joseph S. Myers  <joseph@codesourcery.com>
5558
5559         * error.c (location_of): Add comment.
5560         (locate_error, cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
5561         * cp-tree.h (cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
5562         * call.c, class.c, decl.c, decl2.c, friend.c, init.c,
5563         name-lookup.c, parser.c, pt.c, search.c, semantics.c, typeck.c,
5564         typeck2.c: Use '+' flag instead of %J, cp_error_at, cp_warning_at
5565         or cp_pedwarn_at.  Mark up some diagnostic strings with N_.
5566
5567 2005-06-30  Daniel Berlin  <dberlin@dberlin.org>
5568
5569         * decl.c (require_complete_types_for_parms): Call relayout_decl
5570         instead of layout_decl.
5571
5572 2005-06-30  Zack Weinberg  <zack@codesourcery.com>
5573             Jakub Jelinek  <jakub@redhat.com>
5574
5575         * cp-lang.c: No need to include cxx-pretty-print.h.
5576         * error.c (cp_printer): Update signature.  No need to process
5577         flags.
5578         (print_instantiation_partial_context): Output last newline
5579         with pp_base_newline.
5580         * Make-lang.in: Update dependencies.
5581
5582 2005-06-30  Steven Bosscher  <stevenb@suse.de>
5583
5584         * decl.c (start_decl): Replace DECL_THREAD_LOCAL with
5585         DECL_THREAD_LOCAL_P.
5586         (cp_finish_decl): Likewise.
5587         (grokvardecl): Set the default DECL_TLS_MODEL here.
5588
5589 2005-06-28  Joseph S. Myers  <joseph@codesourcery.com>
5590
5591         * cvt.c (ocp_convert): Use invalid_conversion hook.
5592         * typeck.c (build_binary_op): Use invalid_binary_op hook.
5593         (build_unary_op): Use invalid_unary_op hook.
5594
5595 2005-06-28  Paul Brook  <paul@codesourcery.com>
5596
5597         * Make-lang.in (cp/except.o): Depend on $(TARGET_H)
5598         * except.c: Include target.h.
5599         (init_exception_processing): Initialize unwind_resume_libfunc.
5600         * doc/tm.texi: Document TARGET_ASM_TTYPE
5601
5602 2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5603
5604         * call.c (build_over_call): Pass in named argument list to
5605         `check_function_arguments'.
5606         * typeck.c (build_function_call): Likewise.
5607
5608 2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5609
5610         * cp-tree.h (lang_check_failed): Add noreturn attribute.
5611
5612 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
5613
5614         * all files: Update FSF address in copyright headers.
5615
5616 2005-06-23  Jason Merrill  <jason@redhat.com>
5617
5618         PR c++/19317
5619         * semantics.c (simplify_aggr_init_expr): Use
5620         CALL_EXPR_RETURN_SLOT_OPT, not CALL_EXPR_HAS_RETURN_SLOT_ADDR.
5621
5622 2005-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5623
5624         * pt.c (register_specialization): Remove superfluous assertion.
5625
5626 2005-06-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5627
5628         * call.c (convert_like_real): Add format attribute.
5629         * typeck.c (check_for_casting_away_constness,
5630         build_static_cast_1): Likewise.
5631         * typeck2.c (readonly_error, cxx_incomplete_type_diagnostic):
5632         Likewise.
5633
5634 2005-06-17  Geoffrey Keating  <geoffk@apple.com>
5635
5636         PR c++/17413
5637         * pt.c (type_unification_real): Apply template type deduction even
5638         to procedure parameters that are not dependent on a template
5639         parameter.
5640
5641 2005-06-16  Nathan Sidwell  <nathan@codesourcery.com>
5642
5643         * rtti.c (get_tinfo_decl): Avoid caching tinfo_descs when it might
5644         change.
5645         (create_pseudo_type_info): First parameter is an int.
5646
5647 2005-06-15  Nathan Sidwell  <nathan@codesourcery.com>
5648
5649         PR c++/20678
5650         * error.c (dump_expr) <COMPONENT_REF case>: Check DECL_NAME is not
5651         null.
5652
5653         * Make-lang.in: Reformat some long lines.
5654         (gt-cp-rtti.h): New target.
5655         (cp/rtti.o): Add dependency.
5656         * config-lang.in (gtfiles): Add cp/rtti.c.
5657         * cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
5658         CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
5659         CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
5660         CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
5661         CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
5662         (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
5663         ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
5664         class_desc_type_node, si_class_desc_type_node,
5665         vmi_class_desc_type_node, ptm_desc_type_node,
5666         base_desc_type_node): Remove.
5667         * decl.c: Adjust documentation of global trees.
5668         * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
5669         TINFO_REAL_NAME): Remove.
5670         (struct tinfo_s): New.
5671         (enum tinfo_kind): New.
5672         (tinfo_descs): New.
5673         (get_tinfo_decl): Adjust use of tinfo descriptor.
5674         (tinfo_base_init, generic_initializer, ptr_initializer,
5675         ptm_initializer, class_initializer): Likewise.
5676         (get_pseudo_ti_init): Take descriptor index. Adjust.
5677         (create_pseudo_type_info): Likewise.
5678         (get_pseudo_ti_desc): Return descriptor index. Adjust.
5679         (create_tinfo_types): Adjust use of create_pseudo_type_info.
5680         (emit_tinfo_decl): Adjust use of tinfo descriptor.
5681
5682 2005-06-14  Roger Sayle  <roger@eyesopen.com>
5683
5684         * decl.c (grokdeclarator): Only check TREE_OVERFLOW on INTEGER_CST.
5685
5686 2005-06-13  Geoffrey Keating  <geoffk@apple.com>
5687
5688         * Make-lang.in (c++.install-man): Doesn't really depend on installdirs.
5689         (rule for installing g++.1 manpage): Does depend on installdirs.
5690
5691 2005-06-13  Nathan Sidwell  <nathan@codesourcery.com>
5692
5693         PR c++/20789
5694         * decl.c (cp_finish_decl): Clear runtime runtime initialization if
5695         in-class decl's initializer is bad.
5696
5697         PR c++/21929
5698         * parser.c (struct cp_parser): Document that scope could be
5699         error_mark.
5700         (cp_parser_diagnose_invalid_type_name): Cope with error_mark for
5701         scope.
5702         (cp_parser_nested_name_specifier): Return NULL_TREE on error.
5703         (cp_parser_postfix_expression): Deal with null or error_mark
5704         scope.
5705         (cp_parser_elaborated_type_specifier): Adjust
5706         cp_parser_nested_name_specifier call.
5707
5708         * parser (cp_parser_skip_to_end_of_block_or_statement): Cleanup.
5709
5710 2005-06-12  Roger Sayle  <roger@eyesopen.com>
5711
5712         PR c++/21930
5713         * error.c (dump_expr): UNARY_PLUS_EXPR need not handle void types.
5714         Treat CONVERT_EXPR identically to NOP_EXPR.
5715
5716 2005-06-10  Aldy Hernandez  <aldyh@redhat.com>
5717
5718         PR c++/10611
5719         * cvt.c (build_expr_type_conversion): Same.
5720         * typeck.c (build_binary_op): Handle vectors.
5721         (common_type): Same.
5722         (type_after_usual_arithmetic_conversions): Same.
5723
5724 2005-06-08  Nathan Sidwell  <nathan@codesourcery.com>
5725
5726         PR c++/19497
5727         * cp-tree.def (USING_DECL): Update documentation.
5728         * cp-tree.h (DECL_DEPENDENT_P): New.
5729         (USING_DECL_DECLS, USING_DECL_SCOPE): New.
5730         * class.c (handle_using_decl): Move most of the processing to ...
5731         * name-lookup.c (do_class_using_decl): ... here.  Make stricter.
5732         (push_using_decl): Use USING_DECL_SCOPE.
5733         (cp_emit_debug_info_for_using): Make extern.
5734         * cxx-pretty-print.c (pp_cxx_statement) <USING_DECL case>: Adjust.
5735         * name-lookup.h (cp_emit_debug_info_for_using): Declare.
5736         * pt.c (tsubst_decl) <USING_DECL case>: Use do_class_using_decl
5737         when tsubsting.
5738         (tsubst_expr): Use USING_DECL_SCOPE.
5739         * search.c (lookup_field_1): Use DECL_DEPENDENT_P.
5740         * semantics.c (finish_member_declaration): Likewise.
5741
5742 2005-06-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5743
5744         PR c++/19894
5745         * pt.c (tsubst): Reject pointer-to-member of type void.
5746
5747         PR c++/20563
5748         * parser.c (cp_parser_label_declaration): Deal with invalid/missing
5749         identifiers.
5750
5751 2005-06-07  Nathan Sidwell  <nathan@codesourcery.com>
5752
5753         * cp-tree.def (DEFAULT_ARG): Adjust documentation.
5754         * cp-tree.h (DEFARG_INSTANTIATIONS): New.
5755         (struct tree_default_arg): Add instantiations member.
5756         * parser.c (cp_parser_late_parsing_default_args): Adjust to use a
5757         VEC.
5758         * pt.c (tsubst_arg_types): Likewise.
5759
5760         * parser.c (cp_parser_late_parsing_default_args): Fix overeager
5761         assert in previous patch.
5762
5763 2005-06-06  Jakub Jelinek  <jakub@redhat.com>
5764
5765         * error.c (locate_error): Use gmsgid instead of msgid for argument
5766         name.
5767         (cp_error_at, cp_warning_at, cp_pedwarn_at): Likewise.
5768
5769 2005-06-06  Nathan Sidwell  <nathan@codesourcery.com>
5770
5771         PR 21903
5772         * cp-tree.def (DEFAULT_ARG): Document TREE_CHAIN use.
5773         * parser.c (cp_parser_late_parsing_default_args): Propagate parsed
5774         argument to any early instantiations.
5775         * pt.c (tsubst_arg_types): Chain early instantiation of default arg.
5776
5777         PR c++/20637
5778         * cp-tree.h (add_method): Add using_decl parameter.
5779         * class.c (add_method): Add using_decl parameter.  Adjust error
5780         messages.
5781         (handle_using_decl): Pass the using decl to add_method.
5782         (clone_function_decl): Adjust add_member calls.
5783         * decl2.c (check_classfn): Likewise.
5784         * method.c (lazily_declare_fn): Likewise.
5785         * semantics.c (finish_member_declaration): Likewise.
5786
5787         * method.c (synthesize_method): Use inform, not warning.
5788
5789 2005-06-06  Hans-Peter Nilsson  <hp@axis.se>
5790
5791         * config-lang.in (target_libs): Remove target-gperf.
5792
5793 2005-06-05  Mark Mitchell  <mark@codesourcery.com>
5794
5795         PR c++/21619
5796         * cp-tree.h (DECL_IS_BUILTIN_CONSTANT_P): New macro.
5797         * parser.c (cp_parser_postfix_expression): Allow non-constant
5798         expressions as arguments to __builtin_constant_p.
5799         * tree.c (builtin_valid_in_constant_expr_p): Use
5800         DECL_IS_BUILTIN_CONSTANT_P.
5801
5802 2005-06-03  Mark Mitchell  <mark@codesourcery.com>
5803
5804         PR c++/21853
5805         * typeck.c (casts_away_constness_r): Do not drop cv-qualifiers on
5806         the pointed-to type for a pointer-to-member.
5807
5808         PR c++/21336
5809         * cp-tree.h (grok_op_properties): Remove friendp parameter.
5810         * decl.c (grokfndecl): Adjust call.
5811         (grok_op_properties): Determine the class of which the function is
5812         a member by looking at its DECL_CONTEXT, not current_class_type.
5813         * pt.c (tsubst_decl): Adjust call to grok_op_properties.
5814
5815 2005-06-02  Nathan Sidwell  <nathan@codesourcery.com>
5816
5817         * method.c (synthesize_method): Add addtional arg to warning call.
5818
5819         PR c++/21280
5820         * Make-lang.in (method.o): Add diagnostic.h
5821         * decl.c (start_preparsed_function): Use decl's location for file
5822         info.
5823         * decl2.c (cp_finish_file): Set input_location before synthesizing
5824         a function.
5825         (mark_used): When deferring a synthesized function, save current
5826         location.  Do not set function's location when actually
5827         synthesizing it.
5828         * method.c: #include diagnostic.h.
5829         (synthesize_method): Set the functions source location.  Show
5830         needed location if errors are emitted.
5831
5832         * decl.c (start_decl): Simplify specialization handling. Remove
5833         unneeded CLASSTYPE_TEMPLATE_INSTANTIATION check.
5834         * mangle.c (discriminator_for_local_entity): Use VEC_index.
5835
5836         PR c++/20350
5837         * decl.c (duplicate_decls): Copy all of DECL_USE_TEMPLATE.
5838
5839         PR c++/21151
5840         * name-lookup.c (pushtag): Push local class even in a template.
5841
5842 2005-05-31  Nathan Sidwell  <nathan@codesourcery.com>
5843
5844         PR c++/21165
5845         * init.c (integral_constant_value): Check the type of the
5846         initializer, not the decl.
5847
5848 2005-05-30  Mark Mitchell  <mark@codesourcery.com>
5849
5850         PR c++/21784
5851         * name-lookup.c (do_nonmember_using_decl): Ignore builtin
5852         functions, even when the used name is not a function.
5853
5854 2005-05-30  Kazu Hirata  <kazu@cs.umass.edu>
5855
5856         * operators.def, optimize.c: Update copyright.
5857
5858 2005-05-28  Mark Mitchell  <mark@codesourcery.com>
5859
5860         PR c++/21210
5861         * call.c (standard_conversion): Permit conversions to complex
5862         types if conversion to the corresponding scalar type would be
5863         permitted.
5864
5865         PR c++/21340
5866         * method.c (implicitly_declare_fn): Clear processing_template_decl
5867         when generating implicit declaration.
5868
5869 2005-05-27  Mark Mitchell  <mark@codesourcery.com>
5870
5871         PR c++/21614
5872         * typeck.c (get_member_function_from_ptrfunc): Do not attempt
5873         conversions to base classes of incomplete types.
5874
5875 2005-05-27  Ian Lance Taylor  <ian@airs.com>
5876
5877         * semantics.c (add_stmt): Add C++ frontend specific version.
5878         * cp-tree.h (STMT_IS_FULL_EXPR_P): Define.
5879         (stmts_are_full_exprs_p): Declare.
5880
5881 2005-05-27  Roger Sayle  <roger@eyesopen.com>
5882             Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5883
5884         * cp-tree.def (UNARY_PLUS_EXPR): New C++ unary tree code.
5885         * parser.c (cp_parser_unary_expression): Use UNARY_PLUS_EXPR instead
5886         of CONVERT_EXPR.
5887         (cp_parser_unary_expression): Likewise.
5888         * typeck.c (build_unary_op): Likewise.
5889         * call.c (add_builtin_candidate, build_new_op): Likewise.
5890         * error.c (dump_expr): Likewise.
5891         * pt.c (tsubst_copy, tsubst_copy_and_build): Likewise.
5892         * decl.c (ambi_op_p, grok_op_properties): Likewise.
5893         * dump.c (dump_op): Likewise.
5894         * lex.c (init_operators): Likewise.
5895         * operators.def ("+"): Likewise.
5896         * cp-gimplify.c (cp_gimplify_expr): Handle UNARY_PLUS_EXPR like a
5897         conversion, if the result and argument types differ.
5898         * tree.c (fold_if_not_in_template): Fold UNARY_PLUS_EXPR much
5899         like a NOP_EXPR when !processing_template_decl.
5900
5901         * cxx-pretty-print.c (pp_cxx_cast_expression): Prototype.
5902         (pp_cxx_unary_expression): Handle new UNARY_PLUS_EXPR tree code.
5903
5904 2005-05-27  Nathan Sidwell  <nathan@codesourcery.com>
5905
5906         PR c++/21455
5907         * typeck.c (get_delta_difference): Cope with incomplete but equal
5908         classes.  Reorder if.
5909
5910         PR c++/21681
5911         * parser.c (cp_parser_late_parsing_for_member): Disable access
5912         checking for template functions.
5913
5914 2005-05-26  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5915
5916         PR c++/21768
5917         * pt.c (redeclare_class_template): Change error message according
5918         to coding conventions.
5919
5920 2005-05-26  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5921
5922         * call.c (build_op_delete_call): Fix quoting in error message.
5923
5924 2005-05-25  Richard Henderson  <rth@redhat.com>
5925
5926         PR libgcj/21692
5927         * cp-tree.h (make_alias_for): Declare.
5928         * decl2.c (build_java_method_aliases): New.
5929         (cp_finish_file): Call it.
5930         * method.c (make_alias_for): Split out from ...
5931         (make_alias_for_thunk): ... here.
5932
5933 2005-05-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5934
5935         PR c++/21686
5936         * semantics.c (finish_id_expression): Fix quoting in error message.
5937
5938 2005-05-25  DJ Delorie  <dj@redhat.com>
5939
5940         * decl.c (duplicate_decls): Move warning control from if() to
5941         warning(OPT_*).
5942         * name-lookup.c (parse_using_directive): Likewise.
5943         * parser.c (cp_parser_elaborated_type_specifier): Likewise.
5944         (cp_parser_init_declarator): Likewise.
5945         * tree.c (handle_com_interface_attribute): Likewise.
5946
5947 2005-05-24  Ziemowit Laski  <zlaski@apple.com>
5948
5949         * class.c (layout_class_type): Do not issue C++ ABI warnings
5950         for ObjC structs.
5951         * decl.c (objc_mark_locals_volatile): Streamline by calling
5952         objc_volatilize_decl().
5953         * parser.c (cp_parser_objc_message_expression): Allow simple
5954         type specifiers (instead of merely type names) as message
5955         receivers.
5956         * pt.c (template_args_equal): Do not call objc_comptypes().
5957         * typeck.c (composite_pointer_type): If both pointers are
5958         ObjC-esque, arbitrarily choose the first; do not call
5959         objc_comptypes().
5960         (comptypes): Do not call objc_comptypes().
5961         (convert_for_assignment): Call objc_compare_types().
5962         (comp_ptr_ttypes_real): Call objc_type_quals_match() before
5963         concluding that types do not match.
5964
5965 2005-05-24  Andrew Pinski  <pinskia@physics.uc.edu>
5966
5967         PR C++/21645
5968         * optimize.c (update_cloned_parm): Copy the TYPE also from the
5969         original one.
5970
5971 2005-05-19  Jakub Jelinek  <jakub@redhat.com>
5972
5973         PR c++/21495
5974         * decl.c (grokdeclarator): Fix "storage class specified for"
5975         error reporting.
5976
5977 2005-05-19  Kazu Hirata  <kazu@cs.umass.edu>
5978
5979         * parser.c: Fix comment typos.
5980
5981 2005-05-18  Geoffrey Keating  <geoffk@apple.com>
5982
5983         * Make-lang.in (cc1plus-dummy): New.
5984         (cc1plus-checksum.c): New.
5985         (cc1plus-checksum.o): New.
5986         (cc1plus): Add cc1plus-checksum.o.
5987
5988 2005-05-17  H.J. Lu  <hongjiu.lu@intel.com>
5989
5990         PR C++/19664
5991         * decl2.c (determine_visibility): Don't set visibility to
5992         hidden if it has been set explicitly by user.
5993
5994 2005-05-17  Ziemowit Laski  <zlaski@apple.com>
5995             Mike Stump  <mrs@apple.com>
5996
5997         Yet more Objective-C++...
5998
5999         * cp-objcp-common.h (cxx_get_alias_set): Move from
6000         here...
6001         (cxx_warn_unused_global_decl): Likewise.
6002         (cp_expr_size): Likewise.
6003         (cp_tree_size): Likewise.
6004         (cp_var_mod_type_p): Likewise.
6005         (cxx_initialize_diagnostics): Likewise.
6006         (cxx_types_compatible_p): Likewise.
6007         * cp-tree.h: to here.
6008         (do_poplevel): Add.
6009         * lex.c (D_OBJC): Add.
6010         (init_reswords): Add.
6011         * Make-lang.in (cp/pt.o): Add cp/cp-objcp-common.h.
6012         * parser.c: Add c-common.h include.
6013         * pt.c: Add c-common.h and cp-objcp-common.h includes.
6014         (template_args_equal): Use objc_comptypes as well.
6015         (tsubst_copy_and_build): Use objcp_tsubst_copy_and_build as well.
6016         * semantics.c (do_poplevel): Remove static.
6017
6018         * decl.c (objc_mark_locals_volatile): Don't change decls that are
6019         already ok.
6020         * decl2.c (generate_ctor_or_dtor_function): Add code to initialize
6021         Objective C++ early enough.
6022         * lex.c (struct resword reswords): Add Objective-C++ support.
6023         * parser.c (cp_lexer_get_preprocessor_token): Add Objective-C++.
6024         (cp_parser_objc_message_receiver): Add.
6025         (cp_parser_objc_message_args): Likewise.
6026         (cp_parser_objc_message_expression): Likewise.
6027         (cp_parser_objc_encode_expression): Likewise.
6028         (cp_parser_objc_defs_expression): Likewise.
6029         (cp_parser_objc_protocol_expression): Likewise.
6030         (cp_parser_objc_selector_expression): Likewise.
6031         (cp_parser_objc_expression): Likewise.
6032         (cp_parser_objc_visibility_spec): Likewise.
6033         (cp_parser_objc_method_type): Likewise.
6034         (cp_parser_objc_protocol_qualifiers): Likewise.
6035         (cp_parser_objc_typename): Likewise.
6036         (cp_parser_objc_selector_p): Likewise.
6037         (cp_parser_objc_selector): Likewise.
6038         (cp_parser_objc_method_keyword_params): Likewise.
6039         (cp_parser_objc_method_tail_params_opt): Likewise.
6040         (cp_parser_objc_interstitial_code): Likewise.
6041         (cp_parser_objc_method_signature): Likewise.
6042         (cp_parser_objc_method_prototype_list): Likewise.
6043         (cp_parser_objc_method_definition_list): Likewise.
6044         (cp_parser_objc_class_ivars): Likewise.
6045         (cp_parser_objc_identifier_list): Likewise.
6046         (cp_parser_objc_alias_declaration): Likewise.
6047         (cp_parser_objc_class_declaration): Likewise.
6048         (cp_parser_objc_protocol_declaration): Likewise.
6049         (cp_parser_objc_protocol_refs_opt): Likewise.
6050         (cp_parser_objc_superclass_or_category): Likewise.
6051         (cp_parser_objc_class_interface): Likewise.
6052         (cp_parser_objc_class_implementation): Likewise.
6053         (cp_parser_objc_end_implementation): Likewise.
6054         (cp_parser_objc_declaration): Likewise.
6055         (cp_parser_objc_try_catch_finally_statement): Likewise.
6056         (cp_parser_objc_synchronized_statement): Likewise.
6057         (cp_parser_objc_throw_statement): Likewise.
6058         (cp_parser_objc_statement): Likewise.
6059         (cp_parser_primary_expression): Add Objective-C++.
6060         (cp_parser_statement): Likewise.
6061         (cp_parser_declaration): Likewise.
6062         (cp_parser_simple_type_specifier): Likewise.
6063         (cp_parser_type_name): Likewise.
6064         (cp_parser_parameter_declaration_list): Likewise.
6065         (cp_parser_member_declaration) Likewise.
6066         * tree.c: Include debug.h.
6067         * typeck.c (composite_pointer_type): Add Objective-C++ support.
6068         (finish_class_member_access_expr): Likewise.
6069         (build_function_call): Allow objc to rewrite FUNCTION_DECLs.
6070         (build_modify_expr): Allow objc to generate write barriers.
6071
6072         * Make-lang.in (cp/tree.o): Add debug.h.
6073         * tree.c (lvalue_p_1, case CONST_DECL): Add.
6074
6075 2005-05-18  Jan Hubicka  <jh@suse.cz>
6076
6077         * method.c: Include tree-pass.h
6078         (use_thunk): Lower body before expanding.
6079
6080 2005-05-17  Jakub Jelinek  <jakub@redhat.com>
6081
6082         PR c++/21454
6083         * decl.c (maybe_deduce_size_from_array_init): Call
6084         cp_apply_type_quals_to_decl after completing array type.
6085
6086 2005-05-16  Richard Henderson  <rth@redhat.com>
6087
6088         * decl.c (build_library_fn_1): Move setting TREE_NOTHROW ...
6089         (build_library_fn): ... here.
6090
6091 2005-05-12  Ian Lance Taylor  <ian@airs.com>
6092
6093         * cp-tree.h (cp_stmt_codes): Don't define.
6094         (statement_code_p): Declare.
6095         (STATEMENT_CODE_P): Define.
6096         * lex.c (statement_code_p): Define.
6097         (cxx_init): Use actual codes in stmt_codes initializer, not
6098         cp_stmt_codes macro.  Initialize statement_code_p directly, rather
6099         than using INIT_STATEMENT_CODES.
6100
6101 2005-05-09  Mark Mitchell  <mark@codesourcery.com>
6102
6103         * typeck.c (build_unary_op): Do not resort to address arithmetic
6104         when taking the address of a COMPONENT_REF.
6105
6106 2005-05-08  Kazu Hirata  <kazu@cs.umass.edu>
6107
6108         * class.c (vtbl_init_data_s): Change the type of fns to
6109         VEC(tree,gc)*.
6110         (build_vtbl_initializer, add_vcall_offset, add_vcall_offset):
6111         Use VEC instead of VARRAY.
6112
6113 2005-05-07  Richard Sandiford  <rsandifo@redhat.com>
6114
6115         * mangle.c: Remove a reference to the MIPS -mint64 option.
6116
6117 2005-05-07  Kazu Hirata  <kazu@cs.umass.edu>
6118
6119         * decl.c (wrapup_globals_for_namespace): Use VEC instead of
6120         VARRAY.
6121         * name-lookup.c (add_decl_to_level, begin_scope): Likewise.
6122         * name-lookup.h (cp_binding_level): Change the type of
6123         static_decls to VEC(tree,gc)*.
6124
6125         * mangle.c (globals): Change the type of substitutions to
6126         VEC(tree,gc)*.
6127         (dump_substitution_candidates, add_substitution,
6128         find_substitution, finish_mangling, init_mangle): Use VEC
6129         instead of VARRAY.
6130
6131 2005-05-06  Kazu Hirata  <kazu@cs.umass.edu>
6132
6133         * decl2.c (spew_debug): Remove.
6134
6135         * decl2.c (ssdf_decls, start_static_storage_duration_function,
6136         generate_ctor_or_dtor_function): Use VEC instead of VARRAY.
6137
6138         * decl2.c (pending_statics, note_vague_linkage_var,
6139         cp_finish_file): Use VEC instead of VARRAY.
6140         (pending_statics_used): Remove.
6141
6142 2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>
6143
6144         * decl2.c (deferred_fns, note_vague_linkage_fn,
6145         cp_finish_file): Use VEC instead of VARRAY.
6146
6147 2005-05-05  Mark Mitchell  <mark@codesourcery.com>
6148
6149         PR c++/21352
6150         * pt.c (build_non_dependent_expr): Use is_overloaded_fn.
6151
6152 2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>
6153
6154         * pt.c: Fix a comment typo.
6155
6156 2005-05-04  Kazu Hirata  <kazu@cs.umass.edu>
6157
6158         * cp-tree.h (language_function): Change the type of
6159         x_local_names to VEC.
6160         * decl.c (push_local_name): Adjust uses of local_names.
6161
6162 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
6163
6164         * friend.c, lex.c, mangle.c, repo.c: Update copyright.
6165
6166 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
6167
6168         * class.c (local_classes, init_class_processing): Use VEC
6169         instead of VARRAY.
6170         * cp-tree.h (local_classes): Likewise.
6171         * mangle.c (discriminator_for_local_entity): Likewise.
6172         * name-lookup.c (pushtag): Likewise.
6173
6174         * class.c (current_lang_depth, push_lang_context,
6175         pop_lang_context): Use VEC instead of VARRAY.
6176         * cp-tree.h (saved_scope): Use VEC for lang_base instead of
6177         VARRAY.
6178         * name-lookup.c (push_to_top_level): Use VEC instead of
6179         VARRAY.
6180
6181 2005-05-02  Paolo Bonzini  <bonzini@gnu.org>
6182
6183         * semantics.c (finish_call_expr): Call resolve_overloaded_builtin
6184         for BUILT_IN_MD built-ins.
6185
6186 2005-05-02  Michael Matz  <matz@suse.de>
6187
6188         PR c++/19542
6189         * cp-tree.h (cp_tree_index): Remove CPTI_NULL, to be defined in C
6190         common frontend.
6191         (null_node): Remove.
6192         * lex.c (cxx_init): Move null_node initialisation to C common frontend.
6193
6194 2005-04-25  Ian Lance Taylor  <ian@airs.com>
6195
6196         * cp-tree.def: Add EXPR_STMT.
6197         * cp-tree.h (cp_stmt_codes): Add EXPR_STMT.
6198         (EXPR_STMT_EXPR): Define.
6199         * cp-gimplify.c: Include "flags.h".
6200         (gimplify_expr_stmt): New static function.
6201         (cp_gimplify_expr): Handle EXPR_STMT.
6202         * cxx-pretty-print.c (pp_cxx_statement): Use pp_cxx_expression
6203         rather than pp_expression.
6204         (pp_cxx_statement): Handle EXPR_STMT.
6205         * dump.c (cp_dump_tree): Handle EXPR_STMT.
6206         * lex.c (cxx_init): Don't use c_common_stmt_codes in stmt_codes
6207         initializer.
6208
6209 2005-04-25  Andrew Pinski  <pinskia@physics.uc.edu>
6210
6211         PR C++/21188
6212         * rtti.c (ifnonnull): Cast the zero comparison operand
6213         to the correct type.
6214
6215 2005-04-24  Jakub Jelinek  <jakub@redhat.com>
6216
6217         PR middle-end/20991
6218         * class.c: Include cgraph.h.
6219         (cp_fold_obj_type_ref): Set node->local.vtable_method.
6220         * Make-lang.in (cgraph.o): Depend on $(CGRAPH_H).
6221
6222 2005-04-12  Markus F.X.J. Oberhumer  <markus@oberhumer.com>
6223
6224         * mangle.c (write_builtin_type): Handle integer types which are
6225         not one of the shared integer type nodes and emit a "vendor
6226         extended builtin type" with an encoding in the form of "u5int96".
6227
6228 2005-04-24  Ian Lance Taylor  <ian@airs.com>
6229
6230         * cp-tree.def (USING_STMT): Change class to tcc_statement.
6231         (TRY_BLOCK, EH_SPEC_BLOCK, HANDLER, CLEANUP_STMT): Likewise.
6232         (IF_STMT, FOR_STMT, WHILE_STMT, DO_STMT): Likewise.
6233         (BREAK_STMT, CONTINUE_STMT, SWITCH_STMT): Likewise.
6234
6235 2005-04-23  DJ Delorie  <dj@redhat.com>
6236
6237         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, friend.c,
6238         init.c, lex.c, mangle.c, method.c, name-lookup.c, parser.c,
6239         repo.c, rtti.c, tree.c, typeck.c, typeck2.c: Adjust warning()
6240         callers.
6241
6242 2005-04-22  Per Bothner  <per@bothner.com>
6243
6244         * decl.c (make_rtl_for_nonlocal_decl): Don't try get_fileinfo if
6245         input_filename is NULL, as it is for (say) __PRETTY_FUNCTION__.
6246
6247 2005-04-22  Alexandre Oliva  <aoliva@redhat.com>
6248
6249         PR c++/21087
6250         * name-lookup.c (push_overloaded_decl): Do not overload with
6251         non-duplicate anticipated built-in.
6252
6253 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
6254
6255         * cp-tree.h (THROW_NAME, AUTO_VTABLE_NAME, AUTO_TEMP_FORMAT,
6256         VTABLE_BASE, VTABLE_NAME_PREFIX, STATIC_NAME_FORMAT): Remove.
6257
6258 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
6259
6260         * cp-tree.h: Adjust for new VEC API.
6261         Define VEC(tree_pair_s,gc).
6262         (struct save_scope): Adjust.
6263         (struct lang_type_class): Adjust.
6264         (unemitted_tinfo_decls): Adjust.
6265         * class.c (add_method, resort_type_method_vec,
6266         finish_struct_methods, struct find_final_overrider_data,
6267         dfs_find_final_overrider_pre, find_final_overrider,
6268         get_vcall_index, warn_hidden, walk_subobject_offsets,
6269         check_methods, fixup_inline_methods, end_of_class,
6270         warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
6271         add_vcall_offset): Adjust.
6272         * decl.c (xref_basetypes, finish_method): Adjust.
6273         * decl2.c (check_classfn): Adjust.
6274         * init.c (sort_mem_initializers, push_base_cleanups): Adjust.
6275         * method.c (do_build_copy_constructor): Adjust.
6276         * name-lookup.c (new_class_binding, store_binding,
6277         store_bindings, store_class_bindings): Adjust.
6278         * name-lookup.h: Define VEC(cxx_saved_binding,gc),
6279         VEC(cp_class_binding,gc).
6280         (struct cp_binding_level): Adjust.
6281         * parser.c: Define VEC(cp_token_position,heap).
6282         (struct cp_lexer): Adjust.
6283         (cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
6284         cp_lexer_save_tokens): Adjust.
6285         * pt.c (retrieve_specialization,
6286         check_explicit_specialization): Adjust.
6287         * rtti.c (unemitted_tinfo_decls): Adjust.
6288         (init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
6289         get_pseudo_ti_desc): Adjust.
6290         * search.c (dfs_access_in_type, lookup_conversion_operator,
6291         lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
6292         dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
6293         * semantics.c: Define VEC(deferred_access,gc).
6294         (push_deferring_access_checks): Adjust.
6295         * typeck2.c (abstract_virtuals_error): Adjust.
6296
6297 2005-04-20  Ian Lance Taylor  <ian@airs.com>
6298
6299         * cp-tree.def: Add STMT_EXPR.
6300         * cp-tree.h (STMT_EXPR_NO_SCOPE): Define.
6301         (STMT_EXPR_STMT): Define.
6302         * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
6303         STMT_EXPR.
6304         (pp_cxx_expression): Likewise.
6305         (pp_cxx_statement): Call pp_cxx_statement, not pp_statement.
6306         * dump.c (cp_dump_tree): Handle STMT_EXPR.
6307
6308 2005-04-18  Kazu Hirata  <kazu@cs.umass.edu>
6309
6310         * decl.c (expand_static_init): Call build2 and build3 instead
6311         of build.
6312
6313         * cp-tree.h (VPTR_NAME, VPTR_NAME_P): Remove.
6314
6315 2005-04-17  Ian Lance Taylor  <ian@airs.com>
6316
6317         * cp-tree.def: Add SIZEOF_EXPR, ARROW_EXPR and ALIGNOF_EXPR.
6318         * cxx-pretty-print.c (pp_cxx_postfix_expression): Handle
6319         ARROW_EXPR.
6320         (pp_cxx_unary_expression): Handle SIZEOF_EXPR and ALIGNOF_EXPR.
6321         (pp_cxx_expression): Handle ARROW_EXPR, SIZEOF_EXPR, and
6322         ALIGNOF_EXPR.
6323         * typeck.c (cxx_sizeof_or_alignof_type): Update call to
6324         c_sizeof_or_alignof_type for change in parameter type.
6325
6326 2005-04-16  Mark Mitchell  <mark@codesourcery.com>
6327
6328         PR c++/21025
6329         * typeck.c (cxx_sizeof_or_alignof_type): Check whether the type to
6330         which sizeof/alignof is dependent, rather than just whether we are
6331         processing_template_decl.
6332
6333 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
6334
6335         * cp-tree.h (LOOKUP_GLOBAL): Remove.
6336         (LOOKUP_ONLYCONVERTING, DIRECT_BIND, LOOKUP_NO_CONVERSION,
6337         LOOKUP_DESTRUCTOR, LOOKUP_NO_TEMP_BIND, LOOKUP_PREFER_TYPES,
6338         LOOKUP_PREFER_NAMESPACES, LOOKUP_CONSTRUCTOR_CALLABLE): Adjust
6339         their values.
6340
6341 2005-04-15  Richard Henderson  <rth@redhat.com>
6342
6343         PR middle-end/14311
6344         * semantics.c (finish_call_expr): Call resolve_overloaded_builtin.
6345
6346 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
6347
6348         * cp-tree.h (lang_type_class): Remove redefined.  Move
6349         java_interface into where redefined was.  Increment the width
6350         of dummy.
6351         (TYPE_REDEFINED): Remove.
6352
6353 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
6354
6355         * cp-tree.h (SET_TMPL_ARG, ENUM_TI_TEMPLATE, ENUM_TI_ARGS,
6356         CLASSTYPE_TEMPLATE_LEVEL): Remove.
6357
6358 2005-04-11  Mark Mitchell  <mark@codesourcery.com>
6359
6360         * decl2.c (determine_visibility): Don't use export_class_data.
6361         (import_export_decl): Honor TARGET_CXX_CLASS_DATA_ALWAYS_WEAK and
6362         TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY.
6363
6364 2005-04-09  Kazu Hirata  <kazu@cs.umass.edu>
6365
6366         * cp-tree.h (cxx_alignof): Remove.
6367
6368         * cp-tree.h (DECL_ARRAY_DELETE_OPERATOR_P): Remove.
6369
6370         * cp-tree.h (EXCEPTION_CLEANUP_NAME, B_SET, B_CLR, B_TST,
6371         CONV_STATIC_CAST): Remove.
6372
6373         * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Remove.
6374
6375         * cp-tree.h (VF_BINFO_VALUE, VF_BASETYPE_VALUE): Remove.
6376
6377         * cp-tree.h (cp_deprecated): Remove.
6378
6379 2005-04-08  Ian Lance Taylor  <ian@airs.com>
6380
6381         * cp-tree.def: Define FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
6382         CONTINUE_STMT, SWITCH_STMT.
6383         * cp-tree.h (cp_stmt_codes): Add FOR_STMT, WHILE_STMT, DO_STMT,
6384         BREAK_STMT, CONTINUE_STMT, SWITCH_STMT.
6385         (WHILE_COND, WHILE_BODY): Define.
6386         (DO_COND, DO_BODY): Define.
6387         (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Define.
6388         (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Define.
6389         * cp-gimplify.c (enum bc_t): Define.
6390         (struct cp_gimplify_ctx, ctxp): Define.
6391         (push_context, pop_context): New static functions.
6392         (begin_bc_block, finish_bc_block): New static functions.
6393         (build_bc_goto): New static function.
6394         (gimplify_cp_loop, gimplify_for_stmt): New static functions.
6395         (gimplify_while_stmt, gimplify_do_stmt): Likewise.
6396         (gimplify_switch_stmt): Likewise.
6397         (cp_gimplify_expr): Handle FOR_STMT, WHILE_STMT, DO_STMT,
6398         SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
6399         (cp_genericize): Call push_context and pop_context.
6400         * semantics.c (finish_break_stmt): Just call build_stmt
6401         (BREAK_STMT) rather than build_break_stmt.
6402         (finish_continue_stmt): Corresponding change.
6403         * decl.c (pop_switch): Update call to c_do_switch_warnings for new
6404         parameters.
6405         * cxx-pretty-print.c (pp_cxx_statement): Handle SWITCH_STMT,
6406         WHILE_STMT, DO_STMT, FOR_STMT, BREAK_STMT, CONTINUE_STMT.
6407         * dump.c (cp_dump_tree): Likewise.
6408
6409 2005-04-08  Mark Mitchell  <mark@codesourcery.com>
6410
6411         PR c++/20905
6412         * parser.c (cp_parser_type_specifier_seq): Add is_condition
6413         parameter.
6414         (cp_parser_new_type_id): Pass it.
6415         (cp_parser_condition): Likewise.
6416         (cp_parser_conversion_type_id): Likewise.
6417         (cp_parser_type_id): Likewise.
6418         (cp_parser_type_specifier_seq): In a condition, do not allow
6419         invalid type-specifier combinations.
6420         (cp_parser_exception_declaration): Adjust call to
6421         cp_parser_type_specifier_seq.
6422
6423         * cp-tree.def (TINST_LEVEL): Document TINST_IN_SYSTEM_HEADER_P.
6424         * cp-tree.h (struct tinst_level): Add in_system_header_p.
6425         (TINST_IN_SYSTEM_HEADER_P): New macro.
6426         (make_tinst_level): Remove.
6427         * pt.c (lookup_template_class): Preserve DECL_IN_SYSTEM_HEADER on
6428         the instantiated class.
6429         (push_tinst_level): Do not use make_tinst_level.  Set
6430         TINST_IN_SYSTEM_HEADER_P.
6431         (pop_tinst_level): Likewise.
6432         (instantiate_class_template): Set in_system_header.
6433         (instantiate_pending_templates): Likewise.
6434         * tree.c (make_tinst_level): Remove.
6435
6436 2005-04-06  Joseph S. Myers  <joseph@codesourcery.com>
6437
6438         * decl.c (start_decl): Apply pending #pragma weak regardless of
6439         scope.
6440
6441 2005-04-06  Mark Mitchell  <mark@codesourcery.com>
6442
6443         PR c++/20212
6444         * pt.c (regenerate_decl_from_template): Copy attributes for
6445         parameters from the pattern to the instantiation.
6446
6447 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
6448
6449         PR c++/20734
6450         * cp-tree.def (OFFSET_REF): Correct comments.
6451         * init.c (build_offset_ref): Remove misleading comment.
6452         * typeck.c (build_unary_op): Handle pointer-to-member creation
6453         here, rather than ...
6454         (unary_complex_lvalue): ... here.
6455
6456 2005-04-06  Jason Merrill  <jason@redhat.com>
6457
6458         PR c++/19312
6459         * tree.c (stabilize_init): Don't bother trying to stabilize
6460         something with no side-effects.
6461
6462 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
6463
6464         PR c++/20763
6465         * decl.c (grokdeclarator): Correct attribute handling.
6466
6467 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
6468
6469         PR c++/19159
6470         * decl2.c (import_export_decl): Use non-COMDAT external linkage
6471         for virtual tables, typeinfo, etc. that will be emitted in only
6472         one translation unit on systems without weak symbols.
6473
6474 2005-04-04  Mark Mitchell  <mark@codesourcery.com>
6475
6476         PR c++/20679
6477         * parser.c (cp_parser_template_name): Fix thinko.
6478
6479 2005-04-04  Nathan Sidwell  <nathan@codesourcery.com>
6480
6481         PR c++/20746
6482         * method.c (use_thunk): Protect covariant pointer return
6483         adjustments from NULL pointers.
6484
6485 2005-04-04  Jan Hubicka  <jh@suse.cz>
6486
6487         * decl2.c (finish_objects): Revert my previous patch.
6488         (cp_finish_file): Likewise.
6489
6490 2005-04-03  Kazu Hirata  <kazu@cs.umass.edu>
6491
6492         * pt.c: Fix comment typos.
6493
6494 2005-04-03  Nathan Sidwell  <nathan@codesourcery.com>
6495
6496         PR c++/20723
6497         * pt.c (more_specialized_fn): Member functions are unordered wrt
6498         non-members.  Conversion operators are unordered wrt other
6499         functions.
6500
6501 2005-04-01  Nathan Sidwell  <nathan@codesourcery.com>
6502
6503         * call.c (add_template_candidates_real): Remove length parameter
6504         from fn_type_unification call.
6505         * class.c (resolve_address_of_overloaded_function): Likewise
6506         * cp-tree.h (fn_type_unification): Remove length parameter.
6507         * pt.c (get_bindings_overload): Remove.
6508         (get_bindings_real): Rename to ...
6509         (get_bindings): ... here.  Remove length and strict
6510         parameters. Change return type flag to boolean.  Remove original
6511         forwarding function.
6512         (determine_specialization): Adjust get_bindings call.
6513         (fn_type_unification): Remove length parameter.  Adjust.
6514         (type_unification_real): Remove length parameter.  Adjust.
6515         (resolve_overloaded_unification): Adjust get_bindings call.
6516         (try_one_overload): Simplify confusing cascaded if control flow.
6517         (unify): Remove length paramter from type_unification_real call.
6518         (most_specialized_instantiation): Adjust get_bindings calls.
6519         (most_specialized): Likewise.
6520
6521 2005-03-31  Nathan Sidwell  <nathan@codesourcery.com>
6522
6523         PR c++/19203, implement DR 214
6524         * call.c (joust): Use more_specialized_fn.
6525         * cp-tree.h (DEDUCE_ORDER): Remove.
6526         (more_specialized): Replace with ...
6527         (more_specialized_fn): ... this.
6528         * pt.c (maybe_adjust_types_for_deduction): Remove DEDUCE_ORDER
6529         case.
6530         (type_unification_real): Remove DEDUCE_ORDER case.
6531         (more_specialized): Replace with ...
6532         (more_specialized_fn): ... this.  Implement DR 214.
6533         (most_specialized_instantiation): Use get_bindings_real directly.
6534
6535 2005-03-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6536
6537         PR c++/18644
6538         * call.c (build_new_op): Remove check for -Wsynth.
6539
6540 2005-03-31  Jan Hubicka  <jh@suse.cz>
6541
6542         * decl2.c (finish_objects): Mark ctor as needed.
6543         (cp_finish_file): Output variables only in nonunit-at-a-time.
6544
6545 2005-03-29  Richard Henderson  <rth@redhat.com>
6546
6547         PR c/20519
6548         * decl.c (cp_complete_array_type): Rename from complete_array_type.
6549         Use the new complete_array_type in c-common.c.  Update all callers.
6550         * cp-tree.h (cp_complete_array_type): Update to match.
6551
6552 2005-03-24  Geoffrey Keating  <geoffk@apple.com>
6553
6554         * typeck.c (build_static_cast_1): Allow scalar_cast between
6555         any integral, floating, or enumeration type.
6556
6557 2005-03-24  Steven Bosscher  <stevenb@suse.de>
6558
6559         * typeck.c (comptypes): First determine if the types are compatible
6560         from a target-independent point of view.  Check target attributes
6561         last.
6562
6563         * class.c (build_base_path):
6564         (build_vbase_offset_vtbl_entries):
6565         (add_vcall_offset): Replace fold (buildN (...)) with fold_buildN.
6566         * error.c (dump_expr): Likewise.
6567         * init.c (build_zero_init, expand_cleanup_for_base,
6568         build_vec_delete_1): Likewise.
6569         * mangle.c (write_integer_cst): Likewise.
6570         * method.c (thunk_adjust): Likewise.
6571         * pt.c (convert_nontype_argument, tsubst, unify): Likewise.
6572         * tree.c (cxx_print_statistics, array_type_nelts_total): Likewise.
6573         * typeck.c (build_ptrmemfunc_access_expr,
6574         (get_member_function_from_ptrfunc): Likewise.
6575
6576 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
6577
6578         * cp-objcp-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
6579
6580 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
6581
6582         * cp-tree.h (perform_integral_promotions): Remove.
6583         (default_conversion): Add.
6584
6585 2005-03-22  Mark Mitchell  <mark@codesourcery.com>
6586
6587         * parser.c (cp_parser_warn_min_max): New function.
6588         (cp_parser_binary_expression): Use it.
6589         (cp_parser_assignment_operator_opt): Likewise.
6590         (cp_parser_operator): Likewise.
6591
6592 2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6593
6594         PR c++/19980
6595         * decl.c (start_preparsed_function): Robustify.
6596
6597 2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6598
6599         PR c++/20499
6600         * parser.c (cp_parser_class_head): Return NULL_TREE when
6601         encountering a redefinition.
6602
6603 2005-03-22  Nathan Sidwell  <nathan@codesourcery.com>
6604
6605         PR c++/20465
6606         PR c++/20381
6607         * typeck.c (build_ptrmemfunc): Allow OFFSET_REF when processing a
6608         template.
6609
6610 2005-03-21  Paolo Carlini  <pcarlini@suse.de>
6611
6612         PR c++/20461
6613         PR c++/20536
6614         * init.c (emit_mem_initializers): Don't crash on undefined
6615         types.
6616
6617 2005-03-21  Paolo Carlini  <pcarlini@suse.de>
6618
6619         PR c++/20147
6620         * semantics.c (finish_stmt_expr_expr): Return immediately
6621         if error_operand_p (expr).
6622
6623 2005-03-21  Joseph S. Myers  <joseph@codesourcery.com>
6624
6625         * cp-tree.h (lvalue_or_else, lvalue_p): New.
6626         * typeck.c (lvalue_or_else): New.  Call lvalue_error.
6627
6628 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6629
6630         PR c++/20240
6631         * decl.c (decls_match): Compare context of VAR_DECL.
6632
6633 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6634
6635         PR c++/20333
6636         * parser.c (cp_parser_postfix_expression) <case RID_TYPENAME>:
6637         Check the return value of cp_parser_nested_name_specifier.
6638
6639 2005-03-18  Dale Johannesen <dalej@apple.com>
6640
6641         * cp/tree.c (cp_tree_equal):  Handle SSA_NAME.
6642
6643 2005-03-18  Paolo Carlini  <pcarlini@suse.de>
6644
6645         PR c++/20463
6646         * parser.c (cp_parser_diagnose_invalid_type_name):
6647         Check TYPE_BINFO (current_class_type) before attempting
6648         to emit inform messages.
6649
6650 2005-03-17  Paolo Carlini  <pcarlini@suse.de>
6651
6652         PR c++/19966
6653         * cp-tree.h (grok_op_properties): Change return type to void.
6654         * decl.c (grok_op_properties): Return early - don't check the
6655         arity - in case of a static member or an operator that cannot
6656         be non-member; tidy a bit.
6657
6658 2005-03-17  Nathan Sidwell  <nathan@codesourcery.com>
6659
6660         PR c++/20186
6661         * pt.c (contains_dependent_cast_p): Remove.
6662         (fold_non_dependent_expr): Don't use it.
6663         (value_dependent_expression_p): Use a switch statement.
6664         reference_exprs can be dependent.
6665
6666 2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6667
6668         PR c++/4403
6669         PR c++/9783, DR433
6670         * name-lookup.c (pushtag): Skip template parameter scope when
6671         scope is ts_global.  Don't push tag into template parameter
6672         scope.
6673         * pt.c (instantiate_class_template): Reorder friend class
6674         template substitution to handle non-dependent friend class
6675         that hasn't been previously declared.
6676
6677 2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6678
6679         Friend class name lookup 5/n
6680         PR c++/1016
6681         * cp-tree.h (pushtag): Adjust declaration.
6682         * decl.c (lookup_and_check_tag): Call lookup_type_scope if
6683         lookup_name fails.
6684         (xref_tag): Adjust call to pushtag.  Make hidden class visible.
6685         (start_enum): Adjust call to pushtag.
6686         * name-lookup.c (ambiguous_decl): Ignore hidden names.
6687         (qualify_lookup): Change return type to bool.
6688         (hidden_name_p): New function.
6689         (lookup_namespace_name, unqualified_namespace_lookup,
6690         lookup_name_real): Use it.
6691         (lookup_type_scope): Update comments.
6692         (maybe_process_template_type_declaration): Change parameter name
6693         from globalize to is_friend.
6694         (pushtag): Change globalize parameter of type int to tag_scope.
6695         Hide name if introduced by friend declaration.
6696         * name-lookup.h (hidden_name_p): Add declaration.
6697         * parser.c (cp_parser_lookup_name): Don't deal with hidden name
6698         here.
6699         * pt.c (push_template_decl_real): Make hidden class template
6700         visible.
6701         (lookup_template_class, instantiate_class_template): Adjust call
6702         to pushtag.
6703         * semantics.c (begin_class_definition): Likewise.
6704         * rtti.c (init_rtti_processing, build_dynamic_cast_1,
6705         tinfo_base_init, emit_support_tinfos): Use ts_current instead of
6706         ts_global.
6707
6708 2005-03-13  Mark Mitchell  <mark@codesourcery.com>
6709
6710         PR c++/20157
6711         * pt.c (determine_specialization): Reject non-specializations.
6712
6713 2005-03-11  Per Bothner  <per@bothner.com>
6714
6715         * cp-tree.h (struct cp_declarator): New id_loc field.
6716         * cp/parser.c (cp_lexer_get_preprocessor_token): Set cp_token's
6717         location using c_lex_with_flags, instead of input_location.
6718         (cp_parser_direct_declarator): Set declarator's id_loc from
6719         cp_token's id_loc.
6720
6721 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
6722
6723         PR c++/18384, c++/18327
6724         * decl.c (reshape_init_array): Use UHWI type for max_index_cst
6725         and index.  Convert max_index to size_type_node if it isn't
6726         host_integerp (, 1).
6727
6728 2005-03-09  Mark Mitchell  <mark@codesourcery.com>
6729
6730         PR c++/20208
6731         * pt.c (tsubst_decl): Apply array-to-pointer and
6732         function-to-pointer conversions to function arguments.
6733         (regenerate_decl_from_template): Likewise.
6734
6735 2005-03-09  Paolo Carlini  <pcarlini@suse.de>
6736
6737         PR c++/16859
6738         * decl.c (complete_array_type): In pedantic mode, return
6739         3 for an empty initializer list as the initializer for an
6740         array of unknown bound (8.5.1/4).
6741         (maybe_deduce_size_from_array_init): Fix final test to use
6742         the above.
6743
6744 2005-03-08  Nathan Sidwell  <nathan@codesourcery.com>
6745
6746         PR c++/20186
6747         * pt.c (contains_dependent_cast_p): New.
6748         (fold_non_dependent_expr): Call it.
6749
6750 2005-03-08  Mark Mitchell  <mark@codesourcery.com>
6751
6752         PR c++/20142
6753         * cp-tree.h (target_type): Remove.
6754         * decl.c (layout_var_decl): Remove #if 0'd code.
6755         (cp_finish_decl): Remove dead code.
6756         * init.c (build_vec_init): When determining whether or not the
6757         element type has an asignment operator, look through all array
6758         dimensions.
6759         * typeck.c (target_type): Remove.
6760
6761 2005-03-07  Mark Mitchell  <mark@codesourcery.com>
6762
6763         * class.c (finish_struct_1): Do not warn about non-virtual
6764         destructors in Java classes.
6765
6766 2005-03-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6767
6768         PR c++/19311
6769         * init.c (build_offset_ref): Don't build non-dependent SCOPE_REF.
6770         * pt.c (build_non_dependent_expr): Don't build NON_DEPENDENT_EXPR
6771         for OFFSET_TYPE.
6772         * typeck.c (build_x_unary_op): Don't build non-dependent SCOPE_REF.
6773         Also set PTRMEM_OK_P for NON_DEPENDENT_EXPR.
6774         (build_unary_op): Handle building ADDR_EXPR of OFFSET_REF inside
6775         template.
6776
6777 2005-03-02  Alexandre Oliva  <aoliva@redhat.com>
6778
6779         * name-lookup.c (push_overloaded_decl): Don't error if the new
6780         decl matches the old one.
6781         * decl.c (redeclaration_error_message): Likewise.
6782
6783 2005-03-01  Per Bothner  <per@bothner.com>
6784
6785         * decl.c (finish_function): Use SET_EXPR_LOCATION instead of
6786         unavailable annotate_with_file_line, if USE_MAPPED_LOCATION.
6787
6788 2005-03-01  Nathan Sidwell  <nathan@codesourcery.com>
6789
6790         PR c++/20232
6791         * class.c (update_vtable_entry_for_fn): Don't crash on invalid
6792         covariancy.
6793
6794         * cp-tree.g (THUNK_TARGET): Expand comment.
6795         * method.c (use_thunk): Make sure we also use the target, if that
6796         is a thunk.
6797
6798 2005-02-27  Jakub Jelinek  <jakub@redhat.com>
6799
6800         PR c++/20206
6801         * decl.c (cxx_comdat_group): Put thunks for
6802         TARGET_USE_LOCAL_THUNK_ALIAS_P (function) functions into the same
6803         comdat group as the thunk target.
6804
6805 2005-02-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6806
6807         * call.c, class.c, cp-tree.h, decl2.c, error.c, init.c, mangle.c,
6808         parser.c: Fix comment typo(s).
6809
6810 2005-02-24  Jakub Jelinek  <jakub@redhat.com>
6811
6812         PR c++/20175
6813         * decl.c (reshape_init): Don't warn about missing braces if STRING_CST
6814         initializes a char/wchar_t array.
6815
6816 2005-02-23  Mark Mitchell  <mark@codesourcery.com>
6817
6818         PR c++/19878
6819         * decl.c (grokvardecl): Set DECL_INTERFACE_KNOWN for declarations
6820         with internal linkage.
6821
6822 2005-02-23  Alexandre Oliva  <aoliva@redhat.com>
6823
6824         * decl.c (grokvardecl): Don't exempt anonymous types from having
6825         linkage for variables that have linkage other than "C".
6826
6827 2005-02-23  Kazu Hirata  <kazu@cs.umass.edu>
6828
6829         * cp-objcp-common.h, error.c: Update copyright.
6830
6831 2005-02-22  Mark Mitchell  <mark@codesourcery.com>
6832
6833         PR c++/20073
6834         * decl.c (start_decl_1): Don't clear TREE_READONLY.
6835         (cp_finish_decl): Likewise.
6836         (complete_vars): Call cp_apply_type_quals_to_decl.
6837         * typeck.c (cp_apply_type_quals): Avoid setting TREE_READONLY in
6838         cases where that's not valid.
6839
6840         PR c++/19991
6841         * init.c (integral_constant_value): Iterate if the value of a decl
6842         is itself a constant.
6843
6844         PR c++/20152
6845         * parser.c (cp_parser_class_head): Check for redefintions here.
6846         * semantics.c (begin_class_definition): Not here.
6847
6848         PR c++/20153
6849         * decl2.c (build_anon_union_vars): Add type parameter.
6850         (finish_anon_union): Pass it.
6851
6852         PR c++/20148
6853         * error.c (dump_expr): Do not print the body of a BIND_EXPR.
6854         Handle STATEMENT_LIST.
6855
6856         PR c++/19883
6857         * parser.c (cp_parser_direct_declarator): Always complain about
6858         non-constant array bounds when in a function scope.
6859         * semantics.c (finish_id_expression): Do not mark dependent names
6860         as non-constant.
6861
6862 2005-02-21  Douglas Gregor  <dgregor@cs.indiana.edu>
6863
6864         PR c++/19076
6865         PR c++/6628
6866         * cp-tree.h (cp_apply_type_quals_to_decl): Declared.
6867         * decl.c (grokdeclarator): Pedwarn about qualifying a function
6868         type.
6869         Add qualifiers when declaring a typedef of a function type.
6870         Member function pointers pick up the qualifiers of the typedef
6871         used to declare them.
6872         Don't complain about creating cv-qualified function types.
6873         Complain about qualified function typedefs that are used to
6874         declare non-static member functions or free functions.
6875         Use cp_apply_type_quals_to_decl.
6876         (start_preparsed_function): Use cp_apply_type_quals_to_decl.
6877         (grokclassfn): Use cp_apply_type_quals_to_decl.
6878         * error.c (dump_type_suffix): Print qualifiers for function
6879         types.
6880         * pt.c (tsubst_decl): Use cp_apply_type_quals_to_decl.
6881         (tsubst): When substituting a function type into a member
6882         pointer type, pass along the qualifiers.
6883         (unify): Unify member pointers to member function pointers.
6884         * tree.c (cp_build_qualified_type_real): Function types may be
6885         qualified. This includes restrict qualifiers.
6886         * typeck.c (cp_apply_type_quals_to_decl): New function to replace
6887         use of c_apply_type_quals_to_decl. Drops qualifiers that are being
6888         added to function types.
6889
6890 2005-02-20  Zack Weinberg  <zack@codesourcery.com>
6891
6892         PR 18785
6893         * cp-objcp-common.h (LANG_HOOKS_TO_TARGET_CHARSET): Set to
6894         c_common_to_target_charset.  Delete bogus comment.
6895
6896 2005-02-18  Richard Henderson  <rth@redhat.com>
6897
6898         PR libstdc++/10606
6899         * except.c (do_get_exception_ptr): New.
6900         (expand_start_catch_block): Use it.
6901
6902 2005-02-19  Jakub Jelinek  <jakub@redhat.com>
6903
6904         * decl.c (start_decl_1): Only check TYPE_NEEDS_CONSTRUCTING
6905         if type is not error_mark_node.
6906
6907 2005-01-20  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6908
6909         PR c++/19508
6910         * decl2.c (grokfield): Do not apply attributes to template parameters
6911         as they are ignored by tsubst anyway.
6912
6913 2005-02-18  Jakub Jelinek  <jakub@redhat.com>
6914
6915         PR c++/19813
6916         * decl.c (start_decl_1): Clear TREE_READONLY flag if
6917         its type has TYPE_NEEDS_CONSTRUCTING.
6918         (complete_vars): Likewise.
6919
6920 2005-02-17  Alexandre Oliva  <aoliva@redhat.com>
6921
6922         PR c++/20028
6923         * class.c (finish_struct): Initialize TYPE_SIZE_UNIT of a
6924         template along with TYPE_SIZE.
6925
6926         PR c++/20022
6927         * semantics.c (perform_deferred_access_checks): Use
6928         get_deferred_access_checks to get the top of the stack.
6929
6930 2005-02-15  Alexandre Oliva  <aoliva@redhat.com>
6931
6932         PR c++/17788
6933         * class.c (add_implicitly_declared_members, check_field_decl)
6934         (check_field_decls, check_bases): Remove arguments, tests and
6935         assignments of cant_have_default_ctor-related variables.
6936
6937 2005-02-15  Alexandre Oliva  <aoliva@redhat.com>
6938
6939         * decl2.c (mark_used): Set the source location of the used decl to
6940         the current input location here...
6941         * method.c (synthesize_method): ... not here.  Set input_location
6942         from the decl instead.
6943
6944 2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>
6945
6946         PR c++/19608
6947         * parser.c (cp_parser_late_parsing_for_member): Use
6948         current_function_decl as scope to push to and from.
6949
6950         PR c++/19884
6951         * pt.c (check_explicit_specialization): Make sure namespace
6952         binding lookup found an overloaded function.
6953         (lookup_template_function): Just assert FNS is an overloaded
6954         function.
6955
6956         PR c++/19895
6957         * decl.c (grokdeclarator): Check for error mark node in ptrmem
6958         construction.
6959
6960 2005-02-14  Alexandre Oliva  <aoliva@redhat.com>
6961
6962         PR c++/17816
6963         * decl.c (redeclaration_error_message): Report redefinition of
6964         pure virtual function.
6965
6966 2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>
6967
6968         PR c++/19891
6969         * class.c (build_simple_base_path): Build the component_ref
6970         directly.
6971         (update_vtable_entry_for_fn): Walk the covariant's binfo chain
6972         rather than using lookup_base.
6973         * search.c (dfs_walk_once): Add non-recursive assert check.
6974         * typeck.c (build_class_member_access_expr): It is possible for
6975         the member type to be both const and volatile.
6976
6977 2005-02-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6978
6979         PR c++/14479
6980         PR c++/19487
6981         * pt.c (maybe_check_template_type): Remove.
6982         * cp-tree.h (maybe_check_template_type): Remove prototype.
6983         * name-lookup.c (maybe_process_template_type_declaration): Don't
6984         use maybe_check_template_type.
6985
6986 2005-02-11  Richard Henderson  <rth@redhat.com>
6987
6988         PR c++/19632
6989         * pt.c (get_mostly_instantiated_function_type): Save and restore
6990         flag_access_control instead of push/pop_access_scope.
6991
6992 2005-02-10  Mark Mitchell  <mark@codesourcery.com>
6993
6994         PR c++/19755
6995         * decl.c (reshape_init): Issue warnings about missing braces.
6996
6997 2005-02-11  Kazu Hirata  <kazu@cs.umass.edu>
6998
6999         * cp-tree.def, except.c, ptree.c: Update copyright.
7000
7001 2005-02-09  Mark Mitchell  <mark@codesourcery.com>
7002
7003         PR c++/19811
7004         * call.c (build_op_delete_call): Check COMPLETE_TYPE_P before
7005         attempting name lookup.
7006
7007         * parser.c (cp_parser_unqualified_id): Initialize type_decl.
7008
7009         PR c++/19787
7010         * call.c (initialize_reference): Robustify.
7011
7012         PR ++/19732
7013         * decl.c (grokdeclarator): Check for invalid use of destructor
7014         names.
7015
7016         PR c++/19762
7017         * parser.c (cp_parser_unqualified_id): Avoid creating destructor
7018         names with invalid types.
7019
7020         PR c++/19826
7021         * parser.c (cp_parser_direct_declarator): Allow type-dependent
7022         expressions as array bounds.
7023
7024         PR c++/19739
7025         * parser.c (cp_parser_attributes_list): Allow empty lists.
7026
7027 2005-02-08  Mark Mitchell  <mark@codesourcery.com>
7028
7029         PR c++/19733
7030         * class.c (add_method): Don't set TYPE_HAS_DESTRUCTOR.
7031         (check_bases): Give warnings about a base class with a
7032         non-virtual destructor, even if it is implicit.
7033         (finish_struct_bits): Don't copy TYPE_HAS_DESTRUCTOR.
7034         (maybe_warn_about_overly_private_class): Don't use
7035         TYPE_HAS_DESTRUCTOR.
7036         (finish_struct_methods): Don't set TYPE_HAS_DESTRUCTOR.
7037         (check_for_override): Give it external linkage.
7038         (add_implicitly_declared_members): Generate destructors lazily.
7039         (check_field_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
7040         TYPE_HAS_DESTRUCTOR.
7041         (check_bases_and_members): Call check_methods before
7042         check_field_decls.
7043         (check_bases_and_members): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
7044         TYPE_HAS_DESTRUCTOR.
7045         (finish_struct_1): Do not use TYPE_HAS_DESTRUCTOR.
7046         * cp-tree.def (PSEUDO_DTOR_EXPR): Document.
7047         * cp-tree.h (TYPE_HAS_DESTRUCTOR): Remove.
7048         (lang_type_class): Add lazy_destructor.
7049         (CLASSTYPE_LAZY_DESTRUCTOR): New macro.
7050         (CLASSTYPE_DESTRUCTORS): Robustify.
7051         (TYPE_HAS_DESTRUCTOR): Remove.
7052         (check_for_override): Declare.
7053         (build_vbase_delete): Remove.
7054         * cvt.c (convert_to_void): Issue errors about pseudo-destructor
7055         expressions.
7056         * decl.c (cxx_maybe_build_cleanup): Remove dead code.
7057         * except.c (dtor_nothrow): Lazily create destructors if necessary.
7058         (build_throw): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
7059         * init.c (build_delete): Lazily create destructors, if necessary.
7060         (build_vbase_delete): Remove.
7061         * method.c (locate_dtor): Simplify.
7062         (implicitly_declare_fn): Add support for destructors.
7063         * parser.c (cp_parser_lookup_name): Lazily create destructors, if
7064         necessary.
7065         * pt.c (check_explicit_specialization): Don't use
7066         TYPE_HAS_DESTRUCTOR.
7067         (instantiate_class_template): Likewise.
7068         * ptree.c (cxx_print_type): Don't print TYPE_HAS_DESTRUCTOR.
7069         * rtti.c (emit_support_tinfos): Robustify.
7070         * search.c (lookup_fnfields_1): Lazily create destructors.
7071         * typeck.c (build_class_member_access_expr): Remove
7072         PSEUDO_DTOR_EXPR handling.
7073         (lookup_destructor): Likewise.
7074
7075 2005-02-08  Kazu Hirata  <kazu@cs.umass.edu>
7076
7077         * cxx-pretty-print.c, cxx-pretty-print.h, decl.h: Update
7078         copyright.
7079
7080 2005-02-07  Mark Mitchell  <mark@codesourcery.com>
7081
7082         * parser.c (cp_lexer_start_debugging): Avoid arithmetic operations
7083         on boolean variables.
7084         (cp_lexer_stop_debugging): Likewise.
7085
7086 2005-02-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7087
7088         PR c++/17401
7089         * parser.c (cp_parser_pure_specifier): Emit a specific error
7090         message with an invalid pure specifier.
7091         * decl2.c (grok_function_init): Remove.
7092         (grokfield): An initializer for a method is a always a pure
7093         specifier.
7094
7095 2005-02-02  Matt Austern  <austern@apple.com>
7096
7097         PR c++/19628
7098         * cp-tree.h (builtin_valid_in_constant_expr_p): Declare.
7099         * parser.c (cp_parser_postfix_expression): Accept function call in
7100         constant expression if builtin_valid_in_constant_expr_p is true
7101         for that function.
7102         * pt.c (value_dependent_expression_p): Handle CALL_EXPRs properly.
7103         * semantics.c (finish_id_expression): Accept function call in constant
7104         expression if builtin_valid_in_constant_expr_p is true for that
7105         function.
7106         * tree.c (builtin_valid_in_constant_expr_p): New.
7107
7108 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7109
7110         PR c++/17413
7111         * pt.c (check_instantiated_args): Improve error message.
7112         Fix logic when to print its second part.
7113
7114 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7115
7116         * cp-tree.h (complete_type_or_else): Remove macro.
7117         (complete_type_or_diagnostic): Rename to complete_type_or_else
7118         and remove last argument.
7119         * typeck.c (complete_type_or_diagnostic): Rename to
7120         complete_type_or_else and remove last argument.
7121
7122 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7123
7124         * cp-tree.h (commonparms): Remove prototype.
7125         (convert_arguments): Likewise.
7126         (PFN_FROM_PTRMEMFUNC): Remove.
7127         * typeck.c (commonparms): Make static.
7128         (convert_arguments): Add prototype. Make static.
7129         (PFN_FROM_PTRMEMFUNC): Replace by pfn_from_ptrmemfunc.
7130
7131 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
7132
7133         * parser.c (cp_parser_primary_expression): Don't complain about
7134         floating-point literals in integral constant expressions when
7135         !pedantic.
7136
7137 2005-02-01  Alexandre Oliva  <aoliva@redhat.com>
7138
7139         * parser.c (cp_parser_template_id): Revert comment patch too.
7140
7141         PR c++/18757
7142         PR c++/19366
7143         PR c++/19499
7144         * parser.c (cp_parser_template_id): Revert 2004-12-09's patch.
7145         Issue an error when creating the template id.
7146         * pt.c (fn_type_unification): Return early if the explicit
7147         template arg list is an error_mark_node.
7148
7149 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
7150
7151         * decl.c (build_enumerator): Do not issue duplicate error messages
7152         about invalid enumeration constants.
7153         * parser.c (cp_parser_non_integral_constant_expression): Always
7154         set parser->non_integral_constant_expression_p.
7155         (cp_parser_primary_expression): Add cast_p parameter.  Issue
7156         errors about invalid uses of floating-point literals in
7157         cast-expressions.
7158         (cp_parser_postfix_expression): Add cast_p parameter.
7159         (cp_parser_open_square_expression): Pass it.
7160         (cp_parser_parenthesized_expression_list): Add cast_p parameter.
7161         (cp_parser_unary_expression): Likewise.
7162         (cp_parser_new_placement): Pass it.
7163         (cp_parser_direct_new_declarator): Likewise.
7164         (cp_parser_new_initializer): Likewise.
7165         (cp_parser_cast_expression): Add cast_p parameter.
7166         (cp_parser_binary_expression): Likewise.
7167         (cp_parser_question_colon_clause): Likewise.
7168         (cp_parser_assignment_expression): Likewise.
7169         (cp_parser_expression): Likewise.
7170         (cp_parser_constant_expression): If an integral constant
7171         expression is invalid, return error_mark_node.
7172         (cp_parser_expression_statement): Pass cast_p.
7173         (cp_parser_condition): Likewise.
7174         (cp_parser_iteration_statement): Likewise.
7175         (cp_parser_jump_statement): Likewise.
7176         (cp_parser_mem_initializer): Likewise.
7177         (cp_parser_template_argument): Likewise.
7178         (cp_parser_parameter_declaration): Likewise.
7179         (cp_parser_initializer): Likewise.
7180         (cp_parser_throw_expression): Likewise.
7181         (cp_parser_attribute_list): Likewise.
7182         (cp_parser_simple_cast_expression): Likewise.
7183         (cp_parser_functional_cast): Likewise.
7184         (cp_parser_late_parsing_default_args): Likewise.
7185         (cp_parser_sizeof_operand): Save/restore
7186         non_integral_constant_expression_p.
7187
7188 2005-01-31  Mike Stump  <mrs@apple.com>
7189
7190         * parser.c (cp_lexer_new_main): Get the first token, first, before
7191         doing anything.
7192
7193 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
7194
7195         * decl.c (start_decl): Add missing parentheses.
7196
7197 2005-01-30  Mark Mitchell  <mark@codesourcery.com>
7198
7199         PR c++/19555
7200         * cp-tree.h (DECL_USE_TEMPLATE): Expand documentation.
7201         * decl.c (duplicate_decls): Do not discard
7202         DECL_IMPLICIT_INSTANTIATION when merging declarations.
7203         (start_decl): Do not SET_DECL_TEMPLATE_SPECIALIZATION for
7204         variables that do not have DECL_USE_TEMPLATE.
7205
7206         PR c++/19395
7207         * decl.c (grokdeclarator): Refactor code so that qualified names
7208         are never allowed as the declarator in a typedef.
7209
7210         PR c++/19367
7211         * name-lookup.c (do_nonmember_using_decl): Avoid overloading
7212         builtin declarations.
7213
7214         PR c++/19457
7215         * call.c (convert_like_real): Inline call to
7216         dubious_conversion_warnings here.
7217         * cp-tree.h (dubious_conversion_warnings): Remove.
7218         * semantics.c (finish_unary_op_expr): Copy INTEGER_CSTs before
7219         setting TREE_NEGATED_INT.
7220         * typeck.c (dubious_conversion_warnings): Remove.
7221
7222         PR c++/19349
7223         * name-lookup.c (pushdecl_namespace_level): Avoid accessing free'd
7224         memory.
7225
7226 2005-01-28  Mark Mitchell  <mark@codesourcery.com>
7227
7228         PR c++/19253
7229         * parser.c (cp_parser_diagnose_invalid_type_name): Commit to
7230         tentative parses.
7231
7232         PR c++/19667
7233         * pt.c (redeclare_class_template): Robustify.
7234
7235 2005-01-27  Steven Bosscher  <stevenb@suse.de>
7236
7237         * decl.c (finish_case_label): Use SWITCH_STMT accessor macros
7238         instead of SWITCH_EXPR ones.
7239         * pt.c (tsubst_expr): Likewise.
7240         * semantics.c (begin_switch_stmt, finish_switch_cond,
7241         finish_switch_stmt): Likewise.
7242
7243 2005-01-26  J"orn Rennecke <joern.rennecke@st.com>
7244
7245         PR c++/18370
7246         * parser.c (cp_parser_initializer_clause): Initialize *non_constant_p.
7247
7248 2005-01-25  Andrew Pinski  <pinskia@physics.uc.edu>
7249
7250         * class.c (abort_fndecl_addr): New variable.
7251         (build_vtbl_initializer): If we have a pure virtual function
7252         share the abort function's address.
7253         Include gt-cp-class.h at the end.
7254         * config-lang.in (gtfiles): Add cp/class.c.
7255
7256 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7257
7258         * cxx-pretty-print.c (pp_cxx_statement): Add prototype. Make static.
7259         (pp_cxx_function_definition): Make static.
7260         * cxx-pretty-print.h (pp_cxx_statement): Remove prototype.
7261         (pp_cxx_function_definition): Likewise.
7262
7263 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7264
7265         * name-lookup.c (print_binding_level): Make static.
7266         (constructor_name_full): Make static inline.
7267         (current_decl_namespace): Make static.
7268         * name-lookup.h (constructor_name_full): Remove prototype.
7269         (print_binding_level): Likewise.
7270         (current_decl_namespace): Likewise.
7271
7272 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7273
7274         * decl.h (debug_bindings_indentation): Remove.
7275
7276 2005-01-23  Kazu Hirata  <kazu@cs.umass.edu>
7277
7278         * typeck.c: Fix a comment typo.
7279
7280 2005-01-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7281
7282         PR c++/19208
7283         * pt.c (fold_decl_constant_value): Always call fold_non_dependent_expr
7284         at least once.
7285         (tsubst): Use fold_decl_constant_value in place of a bare call to
7286         integral_constant_value.
7287
7288 2005-01-20  Kazu Hirata  <kazu@cs.umass.edu>
7289
7290         * typeck.c (more_qualified_p): Remove.
7291         * cp-tree.h: Remove the corresponding prototype.
7292
7293 2005-01-19  Matt Austern  <austern@apple.com>
7294
7295         * typeck.c (comptypes): Handle return code from objc_comptypes
7296         correctly.
7297
7298 2005-01-19  Kazu Hirata  <kazu@cs.umass.edu>
7299
7300         * cp-tree.h, name-lookup.h: Remove unused prototypes.
7301
7302 2005-01-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7303
7304         PR c++/19375
7305         * semantics.c (finish_id_expression): Disable access checking for
7306         already lookuped FIELD_DECL.
7307
7308 2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>
7309
7310         * decl.c (delete_block): Remove.
7311         * cp-tree.h: Remove the corresponding prototype.
7312
7313         * decl.c (vtable_decl_p, vtype_decl_p, walk_globals_data,
7314         walk_vtables_r, walk_vtables, walk_globals_r, walk_globals):
7315         Remove.
7316         * cp-tree.h: Remove the corresponding prototypes.
7317
7318         * tree.c (count_functions, bound_pmf_p, cp_is_overload_p,
7319         cp_update_decl_after_saving, name_p): Remove.
7320         * cp-tree.h: Remove the corresponding prototypes.
7321
7322 2005-01-18  Andrew Pinski  <pinskia@physics.uc.edu>
7323
7324         PR c/19472
7325         * semantics.c (finish_asm_stmt): Strip nops off
7326         input memory operands.
7327
7328 2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>
7329
7330         * Make-lang.in, call.c, cvt.c, init.c, rtti.c, tree.c,
7331         typeck2.c: Update copyright.
7332
7333 2005-01-16  Kazu Hirata  <kazu@cs.umass.edu>
7334
7335         * class.c (get_enclosing_class): Remove.
7336         * cp-tree.h: Remove the corresponding prototypes.
7337
7338         * cvt.c (convert_lvalue): Remove.
7339         * cp-tree.h: Remove the corresponding prototype.
7340
7341         * pt.c (tinst_for_decl): Remove.
7342         * cp-tree.h: Remove the corresponding prototypes.
7343
7344         * tree.c (hash_chainon): Remove.
7345         * cp-tree.h: Remove the corresponding prototypes.
7346
7347 2005-01-15  Jakub Jelinek  <jakub@redhat.com>
7348
7349         PR c++/19263
7350         * typeck2.c (split_nonconstant_init_1) <case VECTOR_TYPE>: Put a copy
7351         of CONSTRUCTOR's node into MODIFY_EXPR, as the original is modified.
7352
7353 2005-01-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7354
7355         * Make-lang.in (cp-warn): Don't append $(WERROR).
7356
7357 2005-01-10  Kazu Hirata  <kazu@cs.umass.edu>
7358
7359         * cp-tree.h: Fix a comment typo.
7360
7361 2005-01-07  Nathan Sidwell  <nathan@codesourcery.com>
7362
7363         PR c++/19298
7364         * pt.c (tsubst_qualified_id): Call convert_from_reference.
7365
7366 2005-01-06  Mark Mitchell  <mark@codesourcery.com>
7367
7368         PR c++/19244
7369         * class.c (add_implicitly_declared_members): Remove dead code.
7370         * decl.c (grokfndecl): Add sfk parameter.  Use it do set
7371         DECL_CONSTRUCTOR_P.
7372         (grokdeclarator): Adjust calls to grokfndecl.
7373         * method.c (implicitly_declare_fn): Improve documentation.
7374         * parser.c (cp_parser_direct_declarator): Do not consider a
7375         function to be a constructor if the containing class was
7376         originally anonymous.
7377
7378 2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7379
7380         PR c++/17154
7381         * search.c (lookup_field_1): Handle using declaration in
7382         class template partial specialization.
7383
7384 2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7385
7386         PR c++/19258
7387         * pt.c (push_access_scope): Handle friend defined in class.
7388         (pop_access_scope): Likewise.
7389
7390 2005-01-06  Nathan Sidwell  <nathan@codesourcery.com>
7391
7392         PR c++/19270
7393         * pt.c (tsubst_copy) <ARRAY_REF case>: Handle separately.
7394         (tsubst_copy_and_build) <ARRAY_REF case>: Remove obsolete
7395         array-new handling code.  Use build_x_binary_op.
7396
7397 2005-01-05  Nathan Sidwell  <nathan@codesourcery.com>
7398
7399         PR c++/19030
7400         * cp-tree.h (start_decl): Take pointer to pushed scope, not bool.
7401         * name-lookup.h (push_scope): Return pushed scope, not flag.
7402         * name-lookup.c (push_scope): Return scope that should be popped,
7403         not a flag.
7404         * decl.c (start_decl): Adjust.
7405         (grokfndecl): Adjust scope push and pop.
7406         * decl2.c (check_classfn): Likewise.
7407         * parser.c (cp_parser_condition, cp_parser_conversion_function_id,
7408         cp_parser_init_declarator, cp_parser_direct_declarator,
7409         cp_parser_class_specifier, cp_parser_class_head,
7410         cp_parser_lookup_name,
7411         cp_parser_constructor_declarator_p): Likewise.
7412         * pt.c (instantiate_class_template,
7413         resolve_typename_type): Likewise.
7414
7415 2005-01-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7416
7417         PR c++/14136
7418         * parser.c (cp_parser_unqualified_id): Do not issue error message
7419         for typedef-name as destructor declarator when performing an
7420         uncommitted tentative parse.
7421
7422 2005-01-01  Steven Bosscher  <stevenb@suse.de>
7423
7424         PR middle-end/17544
7425         * decl.c (finish_function): Fix comment.  Annotate the compiler
7426         generated return with the current file name and line 0.