OSDN Git Service

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