Implement range-based for-statements.
[official-gcc.git] / gcc / cp / ChangeLog
blob60936e0aa5d4ad24a3f0694a2301ee0e03e8fac7
1 2010-09-11  Rodrigo Rivas <rodrigorivascosta@gmail.com>
3         Implement range-based for-statements.
4         * cp-tree.def (RANGE_FOR_STMT): New.
5         * cp-tree.h (RANGE_FOR_DECL, RANGE_FOR_EXPR, RANGE_FOR_BODY): New.
6         (cp_convert_range_for): Declare.
7         * pt.c (tsubst_expr): Add RANGE_FOR_STMT.
8         (tsubst_copy_and_build): perform_koenig_lookup takes extra argument.
9         * semantics.c (begin_range_for_stmt): New.
10         (finish_range_for_decl): New.
11         (finish_for_stmt): Accept also RANGE_FOR_STMT.
12         (perform_koenig_lookup): Add extra argument include_std.
13         * parser.c (cp_parser_c_for): New with code from
14         cp_parser_iteration_statement().
15         (cp_parser_range_for): New.
16         (cp_convert_range_for): New.
17         (cp_parser_iteration_statement): Add range-for support.
18         (cp_parser_condition): Adjust comment.
19         (cp_parser_postfix_expression): perform_koenig_lookup takes extra
20         argument.
21         * dump.c (cp_dump_tree): Add RANGE_FOR_STMT.
22         * cxx-pretty-print.c: Likewise.
23         * lex.c (cxx_init): Likewise.
24         * name-lookup.c (lookup_function_nonclass): Add extra argument
25         include_std.
26         (lookup_arg_dependent): Likewise.
27         * name-lookup.h: Likewise.
29 2010-09-10  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
31         PR c++/43824
32         * error.c (maybe_warn_cpp0x): Add new warning
33         CPP0X_INLINE_NAMESPACES.
34         * parser.c (cp_parser_namespace_definition): Likewise.
35         * cp-tree.h (cpp0x_warn_str): Likewise.
37 2010-09-10  Richard Guenther  <rguenther@suse.de>
39         * decl.c (reshape_init_vector): For VECTOR_TYPEs, use
40         TYPE_VECTOR_SUBPARTS instead of TYPE_DEBUG_REPRESENTATION_TYPE.
42 2010-09-10  Jan Hubicka  <jh@suse.cz>
44         PR tree-optimization/45605
45         * cp/class.c (build_vtbl_initializer): Avoid wrong type conversion in
46         ADDR_EXPR.
48 2010-09-08  Jakub Jelinek  <jakub@redhat.com>
50         PR c++/45588
51         * pt.c (tsubst) <case INTEGER_TYPE>: Call mark_rvalue_use
52         before calling fold_decl_constant_value.
54 2010-09-07  Arnaud Charlet  <charlet@adacore.com>
56         * cp-tree.h (build_enumerator): Add new location_t parameter.
57         (build_lang_decl_loc): New function.
58         * decl.c (build_enumerator): New parameter loc. Use it when calling
59         build_decl. Replace build_lang_decl with build_lang_decl_loc.
60         * pt.c (tsubst_enum): Adjust call to build_enumerator.
61         * parser.c (cp_parser_enumerator_definition): Ditto.
62         * lex.c (build_lang_decl_loc): New function.
64 2010-09-06  Dodji Seketeli  <dodji@redhat.com>
66         PR c++/45200
67         PR c++/45293
68         PR c++/45558
69         * tree.c (strip_typedefs): Strip typedefs from the context of
70         TYPENAME_TYPEs.
72 2010-09-06  Mark Mitchell  <mark@codesourcery.com>
74         * typeck.c (cp_build_binary_op): Call do_warn_double_promotion.
75         * call.c (build_conditional_expr): Likewise.
76         (convert_arg_to_ellipsis): Likewise.
78 2010-09-06  Arnaud Charlet  <charlet@adacore.com>
80         * parser.c (make_pointer_declarator, make_reference_declarator,
81         make_call_declarator, make_array_declarator): Set declarator->id_loc.
82         (cp_parser_init_declarator): Adjust location of decl if appropriate.
84 2010-09-06  Jason Merrill  <jason@redhat.com>
86         * call.c (implicit_conversion): Fix value-init of enums.
87         (convert_like_real): Likewise.
89         * decl.c (cp_finish_decl): Don't change init for auto deduction.
91         * pt.c (fold_non_dependent_expr_sfinae): Split out from...
92         (fold_non_dependent_expr): ...here.
93         (convert_nontype_argument): Use it.  Take complain parm.
94         Use perform_implicit_conversion instead of ocp_convert.
95         Allow cv-qual changes.
96         (convert_template_argument): Pass complain down.
97         (tsubst_template_arg): Suppress constant expression warnings.
98         Don't fold here.
100         * method.c (synthesized_method_walk): In constructors, also check
101         subobject destructors.
103         * semantics.c (finish_compound_literal): Always build a
104         TARGET_EXPR.
106 2010-08-30  Paolo Carlini  <paolo.carlini@oracle.com>
108         PR c++/45043
109         * decl.c (grokdeclarator): Use MAIN_NAME_P only on IDENTIFIER_NODEs.
111 2010-08-30  Jakub Jelinek  <jakub@redhat.com>
113         PR middle-end/45423
114         * parser.c (cp_parser_omp_atomic): Handle boolean
115         {PRE,POST}_INCREMENT.
117 2010-08-29  Jason Merrill  <jason@redhat.com>
119         PR c++/44991
120         * parser.c (cp_parser_parameter_declaration): Pop parameter decls
121         after tentative parsing.
123 2010-08-22  Joseph Myers  <joseph@codesourcery.com>
125         * Make-lang.in (g++spec.o): Update dependencies.
126         * g++spec.c: Include opts.h
127         (MATH_LIBRARY, LIBSTDCXX): Remove initial "-l".
128         (lang_specific_driver): Use cl_decoded_option structures.
130 2010-08-20  Nathan Froyd  <froydnj@codesourcery.com>
132         * call.c: Use FOR_EACH_VEC_ELT.
133         * class.c: Likewise.
134         * decl.c: Likewise.
135         * decl2.c: Likewise.
136         * error.c: Likewise.
137         * except.c: Likewise.
138         * mangle.c: Likewise.
139         * method.c: Likewise.
140         * name-lookup.c: Likewise.
141         * parser.c: Likewise.
142         * pt.c: Likewise.
143         * repo.c: Likewise.
144         * semantics.c: Likewise.
145         * typeck2.c: Likewise.
147 2010-08-19  Jason Merrill  <jason@redhat.com>
149         * call.c (reference_related_p): Check for error_mark_node.
150         (add_function_candidate): Check it instead of
151         same_type_ignoring_top_level_qualifiers_p.
153         PR c++/45315
154         * init.c (build_new_1): Don't use build_value_init in a template.
155         (build_value_init): Make sure we don't.
157         PR c++/45307
158         * cp-gimplify.c (cp_gimplify_expr): Also remove assignment
159         of empty class CONSTRUCTOR.
161         * except.c (pending_noexcept, pending_noexcept_checks): New.
162         (perform_deferred_noexcept_checks): New.
163         (maybe_noexcept_warning): Split from...
164         (finish_noexcept_expr): ...here.  Adjust.
165         * decl2.c (cp_write_global_declarations): Call
166         perform_deferred_noexcept_checks.
167         * cp-tree.h: And declare it.
169 2010-08-18  Nathan Froyd  <froydnj@codesourcery.com>
171         PR c++/45049
172         * name-lookup.c (push_overloaded_decl): Change DECL_CHAIN to
173         TREE_CHAIN.
175 2010-08-17  Kai Tietz  <kai.tietz@onevision.com>
177         * class.c (note_name_declared_in_class): Make in 'extern "C"' blocks,
178         or if -fms-extensions is enabled check, check permissive.
180 2010-08-09  Jason Merrill  <jason@redhat.com>
182         PR c++/45236
183         * pt.c (lookup_template_class): Don't re-coerce outer parms.
185 2010-08-09  Nathan Froyd  <froydnj@codesourcery.com>
187         * call.c (add_builtin_candidates): Use VECs for local variable
188         `types'.  Adjust remainder of function accordingly.
190 2010-08-09  Nathan Froyd  <froydnj@codesourcery.com>
192         * name-lookup.c (is_associated_namespace): Convert local variables
193         to be VECs instead of TREE_LISTs.
195 2010-08-09  Nathan Froyd  <froydnj@codesourcery.com>
197         * tree.c (varargs_function_p): Use stdarg_p.
199 2010-08-07  Nathan Froyd  <froydnj@codesourcery.com>
201         * parser.c (cp_default_arg_entry): Declare.  Declare a VEC of it.
202         (cp_unparsed_functions_entry): Declare.  Declare a VEC of it.
203         (cp_parser) [unparsed_functions_queues]: Rename to unparsed_queues.
204         Change type to a VEC.
205         (unparsed_funs_with_default_args): Define.
206         (unparsed_funs_with_definitions): Define.
207         (push_unparsed_function_queues): New function.
208         (cp_parser_new): Call it.
209         (pop_unparsed_function_queues): New function.
210         (cp_parser_class_specifier): Adjust processing of unparsed functions.
211         (cp_parser_template_declaration_after_export): Use VEC_safe_push.
212         (cp_parser_save_member_function_body): Likewise.
213         (cp_parser_late_parsing_for_member): Call push_unparsed_function_queues
214         and pop_unparsed_function_queues.
215         (cp_parser_late_parsing_default_args): Likewise.
216         (cp_parser_save_default_args): Use VEC_safe_push.
218 2010-08-07  Nathan Froyd  <froydnj@codesourcery.com>
220         * name-lookup.h (cp_label_binding): Declare.  Declare a VEC type
221         containing it.
222         (cp_binding_level): Convert shadowed_labels and dead_vars_from_for
223         fields to VECs.
224         * decl.c (poplevel): Adjust for type changes.
225         (declare_local_label): Likewise.
227 2010-08-06  Jason Merrill  <jason@redhat.com>
229         * typeck.c (complete_type_or_maybe_complain): Split out from...
230         (complete_type_or_else): Here.
231         (build_class_member_access_expr): Call it.
232         (finish_class_member_access_expr): Likewise.
233         * call.c (build_special_member_call): Likewise.
234         * cvt.c (build_expr_type_conversion): Likewise.
235         * init.c (build_new): Likewise.
236         * typeck2.c (build_functional_cast): Likewise.
237         * cp-tree.h: Declare it.
239         * init.c (build_value_init): Add complain parm.
240         (build_value_init_noctor): Likewise.
241         (perform_member_init): Pass it.
242         (expand_aggr_init_1): Likewise.
243         (build_new_1): Likewise.
244         (build_vec_init): Likewise.
245         * pt.c (tsubst_expr): Likewise.
246         * typeck2.c (build_functional_cast): Likewise.
247         * cp-tree.h: Adjust.
248         * tree.c (build_target_expr_with_type): Handle error_mark_node.
250         * typeck.c (decay_conversion): Any expression with type nullptr_t
251         decays to nullptr.
253 2010-07-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
255         PR c++/45112
256         * decl.c (duplicate_decls): Merge DECL_USER_ALIGN and DECL_PACKED.
258 2010-07-27  Jason Merrill  <jason@redhat.com>
260         * pt.c (tsubst_expr) [DECL_EXPR]: Handle getting an AGGR_INIT_EXPR
261         from build_value_init.
262         * init.c (build_value_init_noctor): Give error for unknown array
263         bound.
265 2010-07-27  Joseph Myers  <joseph@codesourcery.com>
267         * cp-objcp-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
269 2010-07-27  Joseph Myers  <joseph@codesourcery.com>
271         * cp-objcp-common.c (cxx_initialize_diagnostics): First call
272         c_common_initialize_diagnostics.
273         * cp-objcp-common.h (LANG_HOOKS_OPTION_LANG_MASK,
274         LANG_HOOKS_COMPLAIN_WRONG_LANG_P): Define.
276 2010-07-21  Jason Merrill  <jason@redhat.com>
278         * tree.c (cp_tree_equal): Fix CONSTRUCTOR handling.
280         * parser.c (cp_parser_init_declarator): Pass LOOKUP_NORMAL
281         to cp_finish_decl.
283 2010-07-20  Jeffrey Yasskin  <jyasskin@google.com>
285         PR c++/44641
286         * pt.c (instantiate_class_template): Propagate the template's
287         location to its instance.
289 2010-07-20  Jason Merrill  <jason@redhat.com>
291         PR c++/44967
292         * pt.c (tsubst_copy_and_build): Rework last change.
294         PR c++/44967
295         * pt.c (tsubst_copy_and_build): Handle partial substitution of
296         CALL_EXPR.
298 2010-07-19  Jason Merrill  <jason@redhat.com>
300         PR c++/44996
301         * semantics.c (finish_decltype_type): Correct decltype
302         of parenthesized rvalue reference variable.
304         PR c++/44969
305         * tree.c (cp_tree_equal): Compare type of *CAST_EXPR.
306         * pt.c (iterative_hash_template_arg): Hash type of *CAST_EXPR.
308 2010-07-19  Paolo Carlini  <paolo.carlini@oracle.com>
310         PR c++/44969
311         * typeck.c (build_x_compound_expr_from_list): Add tsubst_flags_t
312         parameter.
313         * cp-tree.h: Adjust declaration.
314         * init.c (perform_member_init): Adjust caller.
315         * decl.c (grok_reference_init, cp_finish_decl): Likewise.
316         * typeck2.c (store_init_value): Likewise.
317         (build_functional_cast): Pass complain argument to
318         build_x_compound_expr_from_list.
320 2010-07-16  Jason Merrill  <jason@redhat.com>
322         PR c++/32505
323         * pt.c (process_partial_specialization): Diagnose partial
324         specialization after instantiation.
325         (most_specialized_class): Add complain parm.
327         * ptree.c (cxx_print_xnode): Handle TEMPLATE_INFO.
329 2010-07-15  Nathan Froyd  <froydnj@codesourcery.com>
331         * init.c (build_new_1): Use cp_build_function_call_nary instead of
332         cp_build_function_call.
334 2010-07-15  Jason Merrill  <jason@redhat.com>
336         PR c++/44909
337         * call.c (add_function_candidate): If we're working on an implicit
338         declaration, don't consider candidates that won't match.
339         * typeck.c (same_type_ignoring_top_level_qualifiers_p): Now a fn.
340         * cp-tree.h (same_type_ignoring_top_level_qualifiers_p): Adjust.
342         Revert:
343         * cp-tree.h (struct lang_type_class): Add has_user_opeq.
344         (TYPE_HAS_USER_OPEQ): New.
345         * decl.c (grok_special_member_properties): Set it.
346         * class.c (add_implicitly_declared_members): Don't lazily declare
347         constructors/operator= if a base or member has a user-declared one.
348         (check_bases_and_members, check_bases): Adjust.
349         (check_field_decls, check_field_decl): Adjust.
351 2010-07-15  Anatoly Sokolov  <aesok@post.ru>
353         * decl.c (integer_three_node): Remove.
354         (cxx_init_decl_processing): Do not initialize the integer_three_node.
355         * cp-tree.h (integer_three_node): Remove.
357 2010-07-15  Nathan Froyd  <froydnj@codesourcery.com>
359         * cp-tree.h: Carefully replace TREE_CHAIN with DECL_CHAIN.
360         * call.c: Likewise.
361         * class.c: Likewise.
362         * cp-gimplify.c: Likewise.
363         * decl.c: Likewise.
364         * decl2.c: Likewise.
365         * init.c: Likewise.
366         * mangle.c: Likewise.
367         * name-lookup.c: Likewise.
368         * optimize.c: Likewise.
369         * parser.c: Likewise.
370         * pt.c: Likewise.
371         * rtti.c: Likewise.
372         * search.c: Likewise.
373         * semantics.c: Likewise.
374         * typeck.c: Likewise.
375         * typeck2.c: Likewise.
377 2010-07-14  Jason Merrill  <jason@redhat.com>
379         * init.c (sort_mem_initializers): Rename "field_type" to "ctx".
380         (build_field_list): Cache field type.
382         Implement C++0x unrestricted unions (N2544)
383         * class.c (check_field_decl): Loosen union handling in C++0x.
384         * method.c (walk_field_subobs): Split out from...
385         (synthesized_method_walk): ...here.  Set msg before loops.
386         (process_subob_fn): Check for triviality in union members.
387         * init.c (sort_mem_initializers): Splice out uninitialized
388         anonymous unions and union members.
389         (push_base_cleanups): Don't automatically destroy anonymous unions
390         and union members.
392 2010-07-13  Jason Merrill  <jason@redhat.com>
394         PR c++/44909
395         * cp-tree.h (struct lang_type_class): Add has_user_opeq.
396         (TYPE_HAS_USER_OPEQ): New.
397         * decl.c (grok_special_member_properties): Set it.
398         * class.c (add_implicitly_declared_members): Don't lazily declare
399         constructors/operator= if a base or member has a user-declared one.
400         (check_bases_and_members, check_bases): Adjust.
401         (check_field_decls, check_field_decl): Adjust.
402         * method.c (synthesized_method_walk): Initialize check_vdtor.
404         PR c++/44540
405         * mangle.c (write_type): Canonicalize.
406         (canonicalize_for_substitution): Retain cv-quals on FUNCTION_TYPE.
407         (write_CV_qualifiers_for_type): Ignore them in abi>=5.
409 2010-07-13  Paolo Carlini  <paolo.carlini@oracle.com>
411         PR c++/44908
412         * call.c (convert_like_real): Adjust convert_ptrmem call, pass
413         complain argument.
414         * typeck.c (get_delta_difference): Update prototype, add a
415         tsubst_flags_t parameter; update get_delta_difference_1 calls and
416         add checks for error_mark_node.
417         (get_delta_difference_1): Update prototype, add a tsubst_flags_t
418         parameter; update lookup_base call.
419         (build_ptrmemfunc): Update prototype, add a tsubst_flags_t
420         parameter; update get_delta_difference call and add check for
421         error_mark_node.
422         (convert_ptrmem): Update prototype, add a tsubst_flags_t
423         parameter; update get_delta_difference call and add check for
424         error_mark_node;  update build_ptrmemfunc call.
425         (build_static_cast_1): Adjust convert_ptrmem call.
426         (expand_ptrmemfunc_cst): Adjust get_delta_difference call.
427         (cp_build_unary_op): Adjust build_ptrmemfunc call.
428         * cvt.c (cp_convert_to_pointer, convert_force): Adjust convert_ptrmem
429         and build_ptrmemfunc calls.
430         * cp-tree.h: Update build_ptrmemfunc and convert_ptrmem prototypes.
432 2010-07-12  Paolo Carlini  <paolo.carlini@oracle.com>
434         PR c++/44907
435         * call.c (build_temp): Add tsubst_flags_t complain parameter;
436         adjust build_special_member_call call, pass complain.
437         (convert_like_real): Adjust build_temp call, pass complain.
439 2010-07-09  Jason Merrill  <jason@redhat.com>
441         PR c++/43120
442         * cp-tree.h (BV_LOST_PRIMARY): New macro.
443         * class.c (update_vtable_entry_for_fn): Fix covariant thunk logic.
444         Set BV_LOST_PRIMARY.
445         (build_vtbl_initializer): Check BV_LOST_PRIMARY.
447 2010-07-08  Jason Merrill  <jason@redhat.com>
449         PR c++/43120
450         * class.c (update_vtable_entry_for_fn): Fix handling of dummy
451         virtual bases for covariant thunks.
453 2010-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
455         * cp-tree.h: Do not include toplev.h.
457 2010-07-06  Jason Merrill  <jason@redhat.com>
459         PR c++/44703
460         * call.c (is_std_init_list): Look through typedefs.
462         PR c++/44778
463         * init.c (build_offset_ref): If scope isn't dependent,
464         don't exit early.  Look at TYPE_MAIN_VARIANT.
465         * pt.c (tsubst_copy) [OFFSET_REF]: Do substitution.
467         * error.c (dump_function_decl): Don't crash on null DECL_NAME.
469 2010-07-06  Shujing Zhao  <pearly.zhao@oracle.com>
471         * cp-tree.h (impl_conv_void): New type.
472         (convert_to_void): Adjust prototype.
473         * cvt.c (convert_to_void): Use impl_conv_void, emit and adjust the
474         diagnostic for easy translation. Change caller.
475         * typeck.c: Update call to convert_to_void.
476         * semantics.c: Likewise.
477         * init.c: Likewise.
479 2010-07-05  Nathan Froyd  <froydnj@codesourcery.com>
481         * decl.c (cp_finish_decl): Call add_local_decl.
482         * optimize.c (clone_body): Adjust for new type of cfun->local_decls.
484 2010-07-05  Paolo Carlini  <paolo.carlini@oracle.com>
486         * pt.c (tsubst): Early declare code = TREE_CODE (t) and use it
487         throughout.
489 2010-07-05  Shujing Zhao  <pearly.zhao@oracle.com>
491         PR c++/22138
492         * parser.c (cp_parser_primary_expression): Error if local template is
493         declared.
495 2010-07-02  Le-Chun Wu  <lcwu@google.com>
497         PR/44128
498         * name-lookup.c (pushdecl_maybe_friend): Warn when a local decl
499         (variable or type) shadows another type.
501 2010-07-02  Jakub Jelinek  <jakub@redhat.com>
503         PR c++/44780
504         * typeck.c (convert_for_assignment): When converting a convertible
505         vector type or objc++ types, call mark_rvalue_use.
506         * typeck2.c (build_m_component_ref): Use return values from
507         mark_rvalue_use or mark_lvalue_use.
508         * class.c (build_base_path): Likewise.
509         * call.c (build_conditional_expr): Likewise.
511 2010-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
513         PR c++/44039
514         * pt.c (tsubst_baselink): Return error_mark_node if lookup_fnfields
515         returns NULL_TREE.
517 2010-07-01  Richard Guenther  <rguenther@suse.de>
519         * cp-gimplify.c (cp_gimplify_expr): Open-code the rhs
520         predicate we are looking for, allow non-gimplified
521         INDIRECT_REFs.
523 2010-06-30  Paolo Carlini  <paolo.carlini@oracle.com>
525         PR c++/44628
526         * typeck.c (cp_build_unary_op): Early return error_mark_node when
527         arg is NULL_TREE too.
528         * call.c (convert_class_to_reference): Return error_mark_node when
529         expr is NULL_TREE.
531 2010-06-30  Michael Matz  <matz@suse.de>
533         * repo.c (finish_repo): Fix typo.
535 2010-06-30  Nathan Froyd  <froydnj@codesourcery.com>
537         * parser.c (cp_parser_omp_for_loop): Use a VEC for for_block.
539 2010-06-30  Nathan Froyd  <froydnj@codesourcery.com>
541         * repo.c (pending_repo): Change type to a VEC.
542         (finish_repo): Adjust for new type of pending_repo.
543         (repo_emit_p): Likewise.
545 2010-06-30  Manuel López-Ibáñez  <manu@gcc.gnu.org>
547         * tree.c: Include gimple.h. Do not include tree-flow.h
548         * decl.c: Do not include tree-flow.h
549         * Make-lang.in: Adjust dependencies.
551 2010-06-29  Nathan Froyd  <froydnj@codesourcery.com>
553         * decl.c (incomplete_var): Declare.  Declare VECs containing them.
554         (incomplete_vars): Adjust comment.  Change type to a VEC.
555         (maybe_register_incomplete_var): Adjust for new type.
556         (complete_vars): Adjust iteration over incomplete_vars.
558 2010-06-29  Nathan Froyd  <froydnj@codesourcery.com>
560         * decl.c (struct named_label_entry): Change type of bad_decls field
561         to a VEC.
562         (poplevel_named_label_1): Adjust for new type of bad_decls.
563         (check_goto): Likewise.
565 2010-06-29  Jason Merrill  <jason@redhat.com>
567         Enable implicitly declared move constructor/operator= (N3053).
568         * class.c (add_implicitly_declared_members): A class with no
569         explicitly declared copy or move constructor gets both declared
570         implicitly, and similarly for operator=.
571         (check_bases): A type with no copy ctor does not inhibit
572         a const copy ctor in a derived class.  It does mean the derived
573         one is non-trivial.
574         (check_field_decl): Likewise.
575         (check_bases_and_members): A nonexistent copy ctor/op= is non-trivial.
576         * tree.c (type_has_nontrivial_copy_init): Adjust semantics.
577         (trivially_copyable_p): Likewise.
578         * call.c (convert_like_real): Use type_has_nontrivial_copy_init.
579         * class.c (finish_struct_bits): Likewise.
580         * tree.c (build_target_expr_with_type): Likewise.
581         * typeck2.c (store_init_value): Likewise.
583         Enable implicitly deleted functions (N2346)
584         * class.c (check_bases_and_members): Adjust lambda flags.
585         * method.c (implicitly_declare_fn): Set DECL_DELETED_FN if appropriate.
587         * decl2.c (mark_used): Adjust error for use of deleted function.
589         Machinery to support implicit delete/move.
590         * cp-tree.h: (struct lang_type_class): Add lazy_move_assign,
591         has_complex_move_ctor, has_complex_move_assign bitfields.
592         (CLASSTYPE_LAZY_MOVE_ASSIGN): New.
593         (TYPE_HAS_COMPLEX_MOVE_ASSIGN): New.
594         (TYPE_HAS_COMPLEX_MOVE_CTOR): New.
595         (enum special_function_kind): Add sfk_move_assignment.
596         (LOOKUP_SPECULATIVE): New.
597         * call.c (build_over_call): Return early if it's set.
598         (build_over_call): Use trivial_fn_p.
599         * class.c (check_bases): If the base has no default constructor,
600         the derived one is non-trivial.  Handle move ctor/op=.
601         (check_field_decl): Likewise.
602         (check_bases_and_members): Handle move ctor/op=.
603         (add_implicitly_declared_members): Handle CLASSTYPE_LAZY_MOVE_ASSIGN.
604         (type_has_move_constructor, type_has_move_assign): New.
605         * decl.c (grok_special_member_properties): Handle move ctor/op=.
606         * method.c (type_has_trivial_fn, type_set_nontrivial_flag): New.
607         (trivial_fn_p): New.
608         (do_build_copy_constructor): Use it.
609         (do_build_assign_ref): Likewise.  Handle move assignment.
610         (build_stub_type, build_stub_object, locate_fn_flags): New.
611         (locate_ctor): Use locate_fn_flags.
612         (locate_copy, locate_dtor): Remove.
613         (get_dtor, get_default_ctor, get_copy_ctor, get_copy_assign): New.
614         (process_subob_fn, synthesized_method_walk): New.
615         (maybe_explain_implicit_delete): New.
616         (implicitly_declare_fn): Use synthesized_method_walk,
617         type_has_trivial_fn, and type_set_nontrivial_flag.
618         (defaulted_late_check): Set DECL_DELETED_FN.
619         (defaultable_fn_check): Handle sfk_move_assignment.
620         (lazily_declare_fn): Clear CLASSTYPE_LAZY_* early.  Don't declare
621         implicitly deleted move ctor/op=.
622         * search.c (lookup_fnfields_1): Handle sfk_move_assignment.
623         (lookup_fnfields_slot): New.
624         * semantics.c (omp_clause_info_fndecl): Remove.
625         (cxx_omp_create_clause_info): Use get_default_ctor, get_copy_ctor,
626         get_copy_assign, trivial_fn_p.
627         (trait_expr_value): Adjust call to locate_ctor.
628         * tree.c (special_function_p): Handle sfk_move_assignment.
630         * class.c (type_has_virtual_destructor): New.
631         * cp-tree.h: Declare it.
632         * semantics.c (trait_expr_value): Use it.
634         * call.c (build_over_call): Only give warnings with tf_warning.
636         * name-lookup.c (pop_scope): Handle NULL_TREE.
638         * cp-tree.h (TYPE_HAS_ASSIGN_REF): Rename to TYPE_HAS_COPY_ASSIGN.
639         (TYPE_HAS_CONST_ASSIGN_REF): Rename to TYPE_HAS_CONST_COPY_ASSIGN.
640         (TYPE_HAS_INIT_REF): Rename to TYPE_HAS_COPY_CTOR.
641         (TYPE_HAS_CONST_INIT_REF): Rename to TYPE_HAS_CONST_COPY_CTOR.
642         (TYPE_HAS_COMPLEX_ASSIGN_REF): Rename to TYPE_HAS_COMPLEX_COPY_ASSIGN.
643         (TYPE_HAS_COMPLEX_INIT_REF): Rename to TYPE_HAS_COMPLEX_COPY_CTOR.
644         (TYPE_HAS_TRIVIAL_ASSIGN_REF): Rename to TYPE_HAS_TRIVIAL_COPY_ASSIGN.
645         (TYPE_HAS_TRIVIAL_INIT_REF): Rename to TYPE_HAS_TRIVIAL_COPY_CTOR.
646         (CLASSTYPE_LAZY_ASSIGNMENT_OP): Rename to CLASSTYPE_LAZY_COPY_ASSIGN.
647         (sfk_assignment_operator): Rename to sfk_copy_assignment.
648         * decl.c, call.c, class.c, init.c, method.c, pt.c, ptree.c: Adjust.
649         * search.c, semantics.c, tree.c: Adjust.
651         * pt.c (dependent_scope_ref_p): Remove.
652         (value_dependent_expression_p): Don't call it.
653         (type_dependent_expression_p): Here either.
654         * init.c (build_offset_ref): Set TREE_TYPE on a qualified-id
655         if the scope isn't dependent.
657         * pt.c (convert_nontype_argument): Use mark_lvalue_use if we want
658         a reference.
660         PR c++/44587
661         * pt.c (has_value_dependent_address): New.
662         (value_dependent_expression_p): Check it.
663         (convert_nontype_argument): Likewise.  Call decay_conversion before
664         folding if we want a pointer.
665         * semantics.c (finish_id_expression): Don't add SCOPE_REF if the
666         scope is the current instantiation.
668 2010-06-28  Jakub Jelinek  <jakub@redhat.com>
670         PR c++/44682
671         * class.c (build_base_path): If want_pointer, call mark_rvalue_use
672         on expr.
674 2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
676         * init.c: Do not include except.h.
677         * decl.c: Likewise.
678         * expr.c: Likewise.
679         * cp-lang.c: Likewise.
680         * pt.c: Likewise.
681         * semantics.c: Likewise.
682         * decl2.c: Likewise.
683         * except.c: Likewise.
684         (init_exception_processing): Do not set the removed
685         lang_protect_cleanup_actions here.
686         (cp_protect_cleanup_actions): Make non-static and remove prototype.
687         (doing_eh): New, moved from except.c but removed the do_warning flag.
688         (expand_start_catch_block): Update doing_eh call.
689         (expand_end_catch_block): Likewise.
690         (build_throw): Likewise.
691         * cp-tree.h: Prototype cp_protect_cleanup_actions.
692         * cp-objcp-common.h: Set LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS to
693         cp_protect_cleanup_actions.
694         * Make-lang.in: Update dependencies.
696 2010-06-26  Jason Merrill  <jason@redhat.com>
698         * call.c (add_function_candidate): Set LOOKUP_COPY_PARM for any
699         constructor called with a single argument that takes a reference
700         to the constructor's class.
701         (BAD_CONVERSION_RANK): New.
702         (compare_ics): Use it to compare bad ICSes.
704 2010-06-25  Joseph Myers  <joseph@codesourcery.com>
706         * lang-specs.h: Remove +e handling.
708 2010-06-24  Andi Kleen  <ak@linux.intel.com>
710         * parser.c: (cp_parser_question_colon_clause):
711         Switch to use cp_lexer_peek_token.
712         Call warn_for_omitted_condop. Call pedwarn for omitted
713         middle operand.
715 2010-06-22  Jakub Jelinek  <jakub@redhat.com>
717         PR c++/44619
718         * typeck2.c (build_m_component_ref): Call mark_lvalue_use on
719         datum and mark_rvalue_use on component.
721         PR c++/44627
722         * error.c (dump_expr): Don't look at CALL_EXPR_ARG (t, 0) if
723         the CALL_EXPR has no arguments.
725 2010-06-21  Jason Merrill  <jason@redhat.com>
727         * typeck.c (comp_except_specs): Fix ce_derived with noexcept.
729         * semantics.c (check_trait_type): Check COMPLETE_TYPE_P for array
730         element type.
732 2010-06-17  Nathan Froyd  <froydnj@codesourcery.com>
734         * name-lookup.c (struct arg_lookup): Convert namespaces and
735         classes fields to VEC.
736         (arg_assoc_namespace): Adjust for new type of namespaces.
737         (arg_assoc_class): Adjust for new type of classes.
738         (lookup_arg_dependent): Use make_tree_vector and
739         release_tree_vector.
740         * typeck2.c (build_x_arrow): Use vec_member.
742 2010-06-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
744         PR c++/44486
745         * error.c (dump_decl): Better wording for anonymous namespace.
747 2010-06-16  Nathan Froyd  <froydnj@codesourcery.com>
749         * class.c (build_vtbl_initializer): Adjust computation of new_position
750         and which entry to add padding for.
752 2010-06-16  Jason Merrill  <jason@redhat.com>
754         * except.c (check_noexcept_r): Return the problematic function.
755         (finish_noexcept_expr): Give -Wnoexcept warning.  Add complain parm.
756         * pt.c (tsubst_copy_and_build): Pass it.
757         * parser.c (cp_parser_unary_expression): Likewise.
758         * cp-tree.h: Adjust prototype.
760         * method.c (defaulted_late_check): Give the defaulted method
761         the same exception specification as the implicit declaration.
763 2010-06-15  Jason Merrill  <jason@redhat.com>
765         * class.c (add_implicitly_declared_members): Implicit assignment
766         operators can also be virtual overriders.
767         * method.c (lazily_declare_fn): Likewise.
769         * call.c (convert_like_real): Give "initializing argument of"
770         information for ambiguous conversion.  Give source position
771         of function.
773         * call.c (print_z_candidates): Do print viable deleted candidates.
774         (joust): Don't choose a deleted function just because its worst
775         conversion is better than another candidate's worst.
777         * call.c (convert_like_real): Don't complain about
778         list-value-initialization from an explicit constructor.
780         * decl.c (duplicate_decls): Use DECL_IS_BUILTIN rather than test
781         DECL_SOURCE_LOCATION directly.
783         * class.c (type_has_user_provided_default_constructor): Use
784         sufficient_parms_p.
786         * call.c (is_subseq): Handle ck_aggr, ck_list.
787         (compare_ics): Treat an aggregate or ambiguous conversion to the
788         same type as involving the same function.
790 2010-06-13  Shujing Zhao  <pearly.zhao@oracle.com>
792         * typeck.c (convert_for_assignment): Fix comment. Change message
793         format from %d to %qP.
794         (convert_for_initialization): Fix comment. 
796 2010-06-11  Shujing Zhao  <pearly.zhao@oracle.com>
798         * cp-tree.h (expr_list_kind): New type.
799         (impl_conv_rhs): New type.
800         (build_x_compound_expr_from_list, convert_for_initialization): Adjust
801         prototype.
802         (typeck.c (convert_arguments): Use impl_conv_rhs and emit the
803         diagnostics for easy translation. Change caller.
804         (convert_for_initialization): Use impl_conv_rhs and change caller.
805         (build_x_compound_expr_from_list): Use expr_list_kind and emit the
806         diagnostics for easy translation. Change caller.
807         * decl.c (bad_spec_place): New enum.
808         (bad_specifiers): Use it and emit the diagnostics for easy
809         translation. Change caller.
810         * pt.c (coerce_template_parms): Put the diagnostics in full sentence.
812 2010-06-09  Nathan Froyd  <froydnj@codesourcery.com>
814         * cp-tree.h (struct saved_scope): Change decl_ns_list field type
815         to a VEC.
816         * decl2.c (cp_write_global_declarations): Adjust for new type of
817         decl_namespace_list.
818         * name-lookup.c (current_decl_namespace): Likewise.
819         (push_decl_namespace): Likewise.
820         (pop_decl_namespace): Likewise.
822 2010-06-09  Nathan Froyd  <froydnj@codesourcery.com>
824         * call.c (build_java_interface_fn_ref): Call build_function_type_list
825         instead of build_function_type.
826         * decl.c (cxx_init_decl_processing): Likewise.
827         (declare_global_var): Likewise.
828         (get_atexit_node): Likewise.
829         (expand_static_init): Likewise.
830         * decl2.c (start_objects): Likewise.
831         (start_static_storage_duration_function): Likewise.
832         * except.c (init_exception_processing): Likewise.
833         (build_exc_ptr): Likewise.
834         (build_throw): Likewise.
835         * rtti.c (throw_bad_cast): Likewise.
836         (throw_bad_typeid): Likewise.
837         (build_dynamic_cast_1): Likewise.
839 2010-06-09  Nathan Froyd  <froydnj@codesourcery.com>
841         * call.c (build_call_n): Call XALLOCAVEC instead of alloca.
842         (build_op_delete_call): Likewise.
843         (build_over_call): Likewise.
844         * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
845         * pt.c (process_partial_specialization): Likewise.
846         (tsubst_template_args): Likewise.
847         * semantics.c (finish_asm_stmt): Likewise.
849 2010-06-08  Nathan Sidwell  <nathan@codesourcery.com>
851         * decl.c (record_key_method_defined): New, broken out of ...
852         (finish_function): ... here.  Call it.  
853         (start_decl): Treat aliases as definitions.
855 2010-06-08  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
857         * typeck2.c (abstract_virtuals_error): Use typed GC allocation.
859         * pt.c (maybe_process_partial_specialization): Likewise.
860         (register_specialization): Likewise.
861         (add_pending_template): Likewise.
862         (lookup_template_class): Likewise.
863         (push_tinst_level): Likewise.
865         * parser.c (cp_lexer_new_main): Likewise.
866         (cp_lexer_new_from_tokens): Likewise.
867         (cp_token_cache_new): Likewise.
868         (cp_parser_context_new): Likewise.
869         (cp_parser_new): Likewise.
870         (cp_parser_nested_name_specifier_opt): Likewise.
871         (cp_parser_template_id): Likewise.
873         * name-lookup.c (binding_entry_make): Likewise.
874         (binding_table_construct): Likewise.
875         (binding_table_new): Likewise.
876         (cxx_binding_make): Likewise.
877         (pushdecl_maybe_friend): Likewise.
878         (begin_scope): Likewise.
879         (push_to_top_level): Likewise.
881         * lex.c (init_reswords): Likewise.
882         (retrofit_lang_decl): Likewise.
883         (cxx_dup_lang_specific_decl): Likewise.
884         (copy_lang_type): Likewise.
885         (cxx_make_type): Likewise.
887         * decl.c (make_label_decl): Likewise.
888         (check_goto): Likewise.
889         (start_preparsed_function): Likewise.
890         (save_function_data): Likewise.
892         * cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Likewise.
894         * cp-objcp-common.c (decl_shadowed_for_var_insert): Likewise.
896         * class.c (finish_struct_1): Likewise.
898         * cp-tree.h (struct lang_type): Add variable_size GTY option.
899         (struct lang_decl): Likewise.
901         * parser.c (cp_parser_new): Update comment to not reference
902         ggc_alloc.
904 2010-06-07  Jason Merrill  <jason@redhat.com>
906         PR c++/44366
907         * error.c (dump_parameters): Mask out TFF_SCOPE.
908         (dump_simple_decl): Don't print the scope of a PARM_DECL.
909         (dump_scope): Remove no-op mask.
911         PR c++/44401
912         * parser.c (cp_parser_lookup_name): Fix naming the constructor.
914         * cp-tree.h (COMPLETE_OR_OPEN_TYPE_P): New macro.
915         * init.c (build_offset_ref): Use it.
916         * pt.c (maybe_process_partial_specialization): Use it.
917         (instantiate_class_template): Use it.
918         * search.c (lookup_base): Use it.
920 2010-06-07  Jakub Jelinek  <jakub@redhat.com>
922         PR c++/44444
923         * expr.c (mark_exp_read): Handle INDIRECT_REF.
924         * cvt.c (convert_to_void): Handle INDIRECT_REF like
925         handled_component_p.
927         PR c++/44443
928         * decl.c (initialize_local_var): If TREE_USED is set on the type,
929         set also DECL_READ_P on the decl.
931 2010-05-25  Dodji Seketeli  <dodji@redhat.com>
933         PR c++/44188
934         * cp-tree.h (typedef_variant_p): Move this declaration to
935         gcc/tree.h.
936         * tree.c (typedef_variant_p): Move this definition to gcc/tree.c.
937         * decl.c (grokdeclarator): Do not rename debug info of an
938         anonymous tagged type named by a typedef.
940 2010-06-05  Fabien Chêne  <fabien@gcc.gnu.org>
942         PR c++/44086
943         * class.c (check_field_decls): Move the call to
944         check_bitfield_decl before trying to set the
945         CLASSTYPE_READONLY_FIELDS_NEED_INIT flag.
947 2010-06-05  Steven Bosscher  <steven@gcc.gnu.org>
949         * typeck.c: Update include path for moved files.
950         * decl.c: Likewise.
951         * rtti.c: Likewise.
952         * cp-gimplify.c: Likewise.
953         * cp-lang.c: Likewise.
954         * pt.c: Likewise.
955         * semantics.c: Likewise.
956         * cxx-pretty-print.h: Likewise.
957         * decl2.c: Likewise.
958         * parser.c: Likewise.
959         * cp-objcp-common.c: Likewise.
960         * cp-tree.h: Likewise.
961         * name-lookup.c: Likewise.
962         * lex.c: Likewise.
963         * name-lookup.h: Likewise.
964         * config-lang.in: Update paths in gtfiles for files in c-family/.
965         * Make-lang.in: Likewise.
967 2010-06-04  Magnus Fromreide  <magfr@lysator.liu.se>
969         * cvt.c (cp_convert_to_pointer): Use null_ptr_cst_p.
970         * typeck.c (build_ptrmemfunc): Likewise.
972 2010-06-04  Jason Merrill  <jason@redhat.com>
974         * typeck2.c (merge_exception_specifiers): Adjust merging of
975         throw() and noexcept(true).
977         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Avoid
978         using an uninitialized variable.
980         * cxx-pretty-print.c (pp_cxx_unary_expression): Handle NOEXCEPT_EXPR.
981         (pp_cxx_expression): Likewise.
983         Implement noexcept-specification (15.4)
984         * parser.c (cp_parser_exception_specification_opt): Parse it.
985         Give -Wdeprecated warning about throw() specs.
986         * pt.c (tsubst_exception_specification): Handle it.
987         * error.c (dump_exception_spec): Handle it.
988         (dump_expr): Handle NOEXCEPT_EXPR.
989         * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
990         * typeck.c (comp_except_specs): Handle compatibility rules.
991         Change exact parm to take an enum.
992         * typeck2.c (merge_exception_specifiers): Handle noexcept.
993         * except.c (nothrow_spec_p, type_noexcept_p): New fns.
994         (type_throw_all_p, build_noexcept_spec): New fns.
995         * cp-tree.h (TYPE_NOTHROW_P, TYPE_NOEXCEPT_P): Use them.
996         (comp_except_specs): Define ce_derived, ce_normal, ce_exact enums.
997         (cp_tree_index): Add CPTI_NOEXCEPT_TRUE_SPEC, CPTI_NOEXCEPT_FALSE_SPEC.
998         (noexcept_true_spec, noexcept_false_spec): New macros.
999         * name-lookup.c (pushdecl_maybe_friend): Adjust.
1000         * search.c (check_final_overrider): Adjust.
1001         * decl.c (check_redeclaration_exception_specification): Adjust.
1002         (use_eh_spec_block): Use type_throw_all_p.
1003         (cxx_init_decl_processing): Set noexcept_false_spec,noexcept_true_spec.
1004         Give operator new a noexcept-specification in C++0x mode.
1005         * tree.c (build_exception_variant, cxx_type_hash_eq): Adjust.
1006         (cp_build_type_attribute_variant): Don't test TYPE_RAISES_EXCEPTIONS.
1008         Implement noexcept operator (5.3.7)
1009         * cp-tree.def (NOEXCEPT_EXPR): New.
1010         * except.c (check_noexcept_r, finish_noexcept_expr): New.
1011         * cp-tree.h: Declare finish_noexcept_expr.
1012         * parser.c (cp_parser_unary_expression): Parse noexcept-expression.
1013         * pt.c (tsubst_copy_and_build): And tsubst it.
1014         (type_dependent_expression_p): Handle it.
1015         (value_dependent_expression_p): Handle it.
1017         * call.c (build_conditional_expr): Never fold in unevaluated context.
1018         * tree.c (build_aggr_init_expr): Propagate TREE_NOTHROW.
1019         * semantics.c (simplify_aggr_init_expr): Likewise.
1020         * typeck.c (merge_types): Call merge_exception_specifiers.
1021         * decl.c (duplicate_decls): Check DECL_SOURCE_LOCATION rather than
1022         DECL_ANTICIPATED for preferring new type.
1024 2010-06-04  Joseph Myers  <joseph@codesourcery.com>
1026         * g++spec.c (lang_specific_driver): Use GCC-specific formats in
1027         diagnostics.
1029 2010-06-04  Jakub Jelinek  <jakub@redhat.com>
1031         PR c++/44412
1032         * typeck.c (build_class_member_access_expr): Call mark_exp_read
1033         on object for static data members.
1035 2010-06-04  Jakub Jelinek  <jakub@redhat.com>
1036             Jason Merrill  <jason@redhat.com>
1038         PR c++/44362
1039         * call.c (build_conditional_expr): If both arg2 and arg3 are lvalues
1040         with the same type, call mark_lvalue_use on both.
1042 2010-06-03  Nathan Froyd  <froydnj@codesourcery.com>
1044         * class.c (struct vtbl_init_data_s): Remove last_init field.
1045         (struct secondary_vptr_vtt_init_data_s): Change type of inits field
1046         to a VEC.
1047         (finish_vtbls): Use a VEC rather than a TREE_LIST for the accumulated
1048         initializers.
1049         (build_vtt): Likewise.
1050         (initialize_vtable): Take a VEC instead of a tree.
1051         (build_vtt_inits): Change return type to void.  Take a VEC **
1052         instead of a tree *; accumulate results into said VEC.
1053         (build_ctor_vtbl_group): Use a VEC rather than a TREE_LIST for the
1054         accumulated initializers.  Pass the vtable to accumulate_vtbl_inits.
1055         (accumulate_vtbl_inits): Add extra vtable tree parameter; take a VEC
1056         instead of a tree.
1057         (dfs_accumulate_vtbl_inits): Likewise.  Change return type to void.
1058         (build_vtbl_initializer): Add VEC parameter; accumulate initializers
1059         into it.
1060         (dfs_build_secondary_vptr_vtt_inits): Use CONSTRUCTOR_APPEND_ELT
1061         rather than tree_cons.
1062         (build_vbase_offset_vtbl_entries): Likewise.
1063         (add_vcall_offset): Likewise.
1064         (build_rtti_vtbl_entries): Likewise.
1065         * cp-tree.h (initialize_artificial_var): Take a VEC instead of a tree.
1066         * decl.c (initialize_artificial_var): Use build_constructor instead
1067         of build_constructor_from_list.
1069 2010-06-03  H.J. Lu  <hongjiu.lu@intel.com>
1071         PR c++/44294
1072         * class.c (layout_class_type): Check MAX_FIXED_MODE_SIZE on
1073         bit-field.
1075 2010-06-02  Jonathan Wakely  <jwakely.gcc@gmail.com>
1077         * parser.c (cp_parser_mem_initializer_list): Change error text.
1079 2010-06-02  Jakub Jelinek  <jakub@redhat.com>
1081         * cp-objcp-common.c (shadowed_var_for_decl): Change into
1082         tree_decl_map hashtab from tree_map.
1083         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Adjust.
1084         (init_shadowed_var_for_decl): Adjust initialization.
1086         PR c++/44361
1087         * cvt.c (convert_to_void): If implicit is NULL, call mark_rvalue_use
1088         instead of calling mark_exp_read only when not an assignment.
1090         PR debug/44367
1091         * semantics.c (finalize_nrv): Don't copy DECL_ARTIFICIAL, DECL_IGNORED_P,
1092         DECL_SOURCE_LOCATION and DECL_ABSTRACT_ORIGIN from var to result.
1093         Set DECL_VALUE_EXPR on var.
1095 2010-06-02  Jason Merrill  <jason@redhat.com>
1097         * error.c (dump_type): Improve typedef handling.
1099         PR c++/9726
1100         PR c++/23594
1101         PR c++/44333
1102         * name-lookup.c (same_entity_p): New.
1103         (ambiguous_decl): Multiple declarations of the same entity
1104         are not ambiguous.
1106 2010-06-01  Jason Merrill  <jason@redhat.com>
1108         DR 990
1109         * call.c (add_list_candidates): Prefer the default constructor.
1110         (build_aggr_conv): Treat missing initializers like { }.
1111         * typeck2.c (process_init_constructor_record): Likewise.
1112         * init.c (expand_default_init): Use digest_init for
1113         direct aggregate initialization, too.
1115         * call.c (add_list_candidates): Split out...
1116         (build_user_type_conversion_1): ...from here.
1117         (build_new_method_call): And here.
1118         (implicit_conversion): Propagate LOOKUP_NO_NARROWING.
1120         PR c++/44358
1121         * call.c (build_list_conv): Set list-initialization flags properly.
1123 2010-06-01  Nathan Froyd  <froydnj@codesourcery.com>
1125         * typeck2.c (build_x_arrow): Make types_memoized a VEC.
1127 2010-06-01  Arnaud Charlet  <charlet@adacore.com>
1128             Matthew Gingell  <gingell@adacore.com>
1130         * Make-lang.in (CXX_C_OBJS): Add c-ada-spec.o.
1131         * decl2.c: Include langhooks.h and c-ada-spec.h.
1132         (cpp_check, collect_source_refs, collect_ada_namespace,
1133         collect_all_refs): New functions.
1134         (cp_write_global_declarations): Add handling of -fdump-ada-spec.
1135         * lang-specs.h: Ditto.
1137 2010-05-29  Nathan Froyd  <froydnj@codesourcery.com>
1139         * cp-tree.h (cp_build_function_call_nary): Declare.
1140         * typeck.c (cp_build_function_call_nary): Define.
1141         * decl.c (register_dtor_fn): Use it instead of
1142         cp_build_function_call.
1143         (cxx_maybe_build_cleanup): Likewise.
1144         * decl2.c (generate_ctor_or_dtor_function): Likewise.
1145         * except.c (do_get_exception_ptr): Likewise.
1146         (do_begin_catch): Likewise.
1147         (do_allocate_exception): Likewise.
1148         (do_free_exception): Likewise.
1149         (build_throw): Likewise.  Use cp_build_function_call_vec instead
1150         of cp_build_function_call.
1151         (do_end_catch): Likewise.
1153 2010-05-29  Nathan Froyd  <froydnj@codesourcery.com>
1155         * cp-tree.h (struct cp_decl_specifier_seq): Move type_location field up.
1156         (struct cp_declarator): Move id_loc field up.
1158 2010-05-29  Steven Bosscher  <steven@gcc.gnu.org>
1160         * cp-tree.h (ATTRIBUTE_GCC_CXXDIAG): Remove.  Require that
1161         this file is included before c-common.h.  Define GCC_DIAG_STYLE
1162         before including diagnostic-core.h and toplev.h.
1163         (pedwarn_cxx98): Use ATTRIBUTE_GCC_DIAG.
1164         * pt.c: Include cp-tree.h before c-common.h.
1166 2010-05-29  Steven Bosscher  <steven@gcc.gnu.org>
1168         * tree.c (c_register_addr_space): Add stub.
1170 2010-05-28  Joseph Myers  <joseph@codesourcery.com>
1172         * g++spec.c (lang_specific_driver): Use fatal_error instead of
1173         fatal.
1175 2010-05-28  Dodji Seketeli  <dodji@redhat.com>
1177         Revert fix of PR c++/44188
1178         * cp-tree.h (typedef_variant_p): Revert moving this declaration to
1179         gcc/tree.h.
1180         * tree.c (typedef_variant_p): Revert moving this definition to
1181         gcc/tree.c.
1182         * decl.c (grokdeclarator): Revert naming typedef handling.
1184 2010-05-27  Joseph Myers  <joseph@codesourcery.com>
1186         * call.c: Include diagnostic-core.h instead of diagnostic.h.
1187         * cp-lang.c: Don't include diagnostic.h
1188         * name-lookup.c: Include diagnostic-core.h instead of
1189         diagnostic.h.
1190         (cp_emit_debug_info_for_using): Use seen_error.
1191         * optimize.c: Include diagnostic-core.h instead of diagnostic.h.
1192         * parser.c: Include diagnostic-core.h instead of diagnostic.h.
1193         * pt.c (iterative_hash_template_arg): Use seen_error.
1194         * repo.c: Include diagnostic-core.h instead of diagnostic.h.
1195         * typeck2.c: Include diagnostic-core.h instead of diagnostic.h.
1196         * Make-lang.in (cp/cp-lang.o, cp/typeck2.o, cp/call.o, cp/repo.o,
1197         cp/optimize.o, cp/parser.o, cp/name-lookup.o): Update
1198         dependencies.
1200 2010-05-25  Dodji Seketeli  <dodji@redhat.com>
1202         PR c++/44188
1203         * cp-tree.h (typedef_variant_p): Move this declaration to
1204         gcc/tree.h.
1205         * tree.c (typedef_variant_p): Move this definition to gcc/tree.c.
1206         * decl.c (grokdeclarator): Do not rename debug info of an
1207         anonymous tagged type named by a typedef.
1209 2010-05-27  Jason Merrill  <jason@redhat.com>
1211         PR c++/43555
1212         * decl.c (grokdeclarator) [cdk_pointer et al]: Force evaluation of
1213         anonymous VLA size.
1215 2010-05-27  Kai Tietz  <kai.tietz@onevision.com>
1217         PR bootstrap/44287
1218         * rtti.c (emit_support_tinfos): Check for NULL_TREE.
1219         * class.c (layout_class_type): Likewise.
1220         * decl.c (finish_enum): Likewise.
1221         * mangle.c (write_builitin_type): Likewise.
1223 2010-05-26  Kai Tietz  <kai.tietz@onevision.com>
1225         * cp-tree.h (cp_decl_specifier_seq): Add new bifield
1226         explicit_int128_p.
1227         * decl.c (grokdeclarator): Handle __int128.
1228         * parser.c (cp_lexer_next_token_is_decl_specifier_ke): Likewise.
1229         (cp_parser_simple_type_specifier): Likewise.
1230         * rtti.c (emit_support_tinfos): Add int128 nodes for rtti.
1231         * typeck.c (cp_common_type): Handle __int128.
1232         * mangle.c (integer_type_codes): Add itk_int128 and
1233         itk_unsigned_int128.
1235 2010-05-26  Jason Merrill  <jason@redhat.com>
1237         PR c++/43382
1238         * pt.c (tsubst_pack_expansion): Don't get confused by recursive
1239         unification.
1241 2010-05-26  Steven Bosscher  <steven@gcc.gnu.org>
1243         * cp-lang.c: Do not include expr.h.
1245 2010-05-26  Steven Bosscher  <steven@gcc.gnu.org>
1247         * decl.c: Do not include rtl.h
1248         * semantics.c: Likewise.
1250 2010-05-25  Steven Bosscher  <steven@gcc.gnu.org>
1252         * cp-tree.h: Do not include splay-tree.h.
1253         (struct prtmem_cst): Remove unused field and false comment.
1254         * typeck.c: Do not include rtl.h, expr.h, and tm_p.h.
1255         * optimize.c: Do not inclde rtl.h, insn-config.h, and integrate.h.
1256         * init.c: Do not include rtl.h and expr.h.
1257         * class.c: Do not include rtl.h.  Include splay-tree.h.
1258         (build_clone): Use plain NULL instead of NULL_RTX.
1259         * decl.c: Do not include expr.h.  Explain why rtl.h has to be
1260         included.  Include splay-tree.h.
1261         * method.c: Do not include rtl.h and expr.h.
1262         (use_thunk): Use plain NULL instead of NULL_RTX.
1263         * except.c: Do not include rtl.h, expr.h, and libfuncs.h.
1264         * tree.c: Do not include rtl.h, insn-config.h, integrate.h,
1265         and target.h.  Include splay-tree.h.
1266         * expr.c: Do not include rtl.h and expr.h.
1267         * pt.c: Do not include obstack.h and rtl.h.
1268         (tsubst_friend_function): Use plain NULL instead of NULL_RTX.
1269         (tsubst_decl): Likewise.
1270         (instantiate_decl): Likewise.
1271         * semantics.c: Do not include exprt.h and debug.h.  Explain why
1272         rtl.h has to be included.
1273         * decl2.c: Do not include rtl.h and expr.h.  Include splay-tree.h.
1274         * call.c: Do not include rtl.h and expr.h.
1275         * search.c: Do not include obstack.h and rtl.h.
1276         * friend.c: Do not include rtl.h and expr.h.
1277         * Make-lang.in: Update dependencies.
1279 2010-05-25  Jakub Jelinek  <jakub@redhat.com>
1281         PR c++/18249
1282         * parser.c (non_integral_constant): Add NIC_NONE.
1283         (required_token): Add RT_NONE.
1284         (cp_parser_unary_expression): Initialize non_constant_p
1285         to NIC_NONE.
1286         (cp_parser_asm_definition): Initialize missing to RT_NONE.
1287         (cp_parser_primary_expression, cp_parser_postfix_expression,
1288         cp_parser_cast_expression, cp_parser_binary_expression,
1289         cp_parser_functional_cast): Fix formatting.
1291 2010-05-25  Shujing Zhao  <pearly.zhao@oracle.com>
1292         
1293         PR c++/18249
1294         * parser.c: Remove inclusion of dyn-string.h.
1295         (non_integral_constant): New enum.
1296         (name_lookup_error): New enum.
1297         (required_token): New enum.
1298         (cp_parser_required_error): New function.
1299         (cp_parser_require): Change the type of variable token_desc to
1300         required_token and use cp_parser_required_error.
1301         (cp_parser_require_keyword): Likewise.
1302         (cp_parser_error): Use gmsgid as parameter.
1303         (cp_parser_name_lookup_error): Change the type of variable desired to
1304         name_lookup_error and put the diagnostic in the full sentences. Change
1305         caller.
1306         (cp_parser_non_integral_constant_expression): Change the type of the
1307         variable thing to non_integral_constant and put the diagnostics in
1308         full sentences. Change caller.
1310 2010-05-24  Eric Botcazou  <ebotcazou@adacore.com>
1312         PR middle-end/44100
1313         * typeck.c (cp_build_unary_op): Fold offsetof-like computations.
1315 2010-05-24  Joseph Myers  <joseph@codesourcery.com>
1317         * error.c (cp_diagnostic_starter): Update call to
1318         diagnostic_build_prefix.
1319         (cp_print_error_function,
1320         print_instantiation_partial_context_line): Check show_column flag
1321         in context.
1323 2010-05-24  Jason Merrill  <jason@redhat.com>
1325         PR c++/41510
1326         * decl.c (check_initializer): Don't wrap an init-list in a
1327         TREE_LIST.
1328         * init.c (build_aggr_init): Don't assume copy-initialization if
1329         init has CONSTRUCTOR_IS_DIRECT_INIT.
1330         * call.c (build_new_method_call): Sanity check.
1332 2010-05-24  Nathan Froyd  <froydnj@codesourcery.com>
1334         * rtti.c (tinfo_base_init): Use build_constructor instead of
1335         build_constructor_from_list.  Don't cons a tree node for
1336         returning.
1337         (generic_initializer): Use build_constructor_single instead of
1338         build_constructor_from_list.
1339         (ptr_initializer): Use build_constructor instead of
1340         build_constructor_from_list
1341         (ptm_initializer): Likewise.
1342         (class_initializer): Likewise.  Take varargs instead of TRAIL.
1343         (get_pseudo_ti_init): Adjust calls to class_initializer.  Use
1344         build_constructor instead of build_constructor_from_list.
1346 2010-05-22  Steven Bosscher  <steven@gcc.gnu.org>
1348         * semantics.c: Include bitmap.h.
1349         * Make-lang.in: Update dependencies.
1351 2010-05-22  Jan Hubicka  <jh@suse.cz>
1353         * decl2.c (maybe_emit_vtables): Produce same comdat group when outputting
1354         comdat vtables.
1355         (cxx_callgraph_analyze_expr): Remove code marking vtables needed.
1357 2010-05-21  Joseph Myers  <joseph@codesourcery.com>
1359         * cxx-pretty-print.c: Correct merge error.
1361 2010-05-21  Joseph Myers  <joseph@codesourcery.com>
1363         * error.c: Include tree-diagnostic.h and tree-pretty-print.h.
1364         (cp_print_error_function): Use diagnostic_abstract_origin macro.
1365         (cp_printer): Handle %K here using percent_K_format.
1366         * cxx-pretty-print.c: Include tree-pretty-print.h.
1367         * Make-lang.in (cp/error.o, cp/cxx-pretty-print.o): Update
1368         dependencies.
1370 2010-05-21  Steven Bosscher  <steven@gcc.gnu.org>
1372         * error.c, tree.c, typeck2.c, cxx-pretty-print.c, mangle.c:
1373         Clean up redundant includes.
1375 2010-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
1377         PR c++/30298
1378         * decl.c (xref_basetypes): Return false in case of ill-formed
1379         redefinition.
1381 2010-05-19  Jason Merrill  <jason@redhat.com>
1383         * call.c (reference_binding): Use cp_build_qualified_type_real
1384         and cp_type_quals consistently.
1385         (add_function_candidate): Likewise.
1386         (build_conditional_expr): Likewise.
1387         (convert_like_real): Likewise.
1388         (type_passed_as): Likewise.
1389         * class.c (add_method): Likewise.
1390         (same_signature_p): Likewise.
1391         (layout_class_type): Likewise.
1392         * decl.c (cxx_init_decl_processing): Likewise.
1393         (cp_fname_init): Likewise.
1394         (grokdeclarator): Likewise.
1395         * decl2.c (cp_reconstruct_complex_type): Likewise.
1396         * init.c (build_new_1): Likewise.
1397         * method.c (do_build_copy_constructor): Likewise.
1398         (implicitly_declare_fn): Likewise.
1399         * pt.c (tsubst_aggr_type): Likewise.
1400         (tsubst): Likewise.
1401         * rtti.c (init_rtti_processing): Likewise.
1402         (build_headof): Likewise.
1403         (build_dynamic_cast_1): Likewise.
1404         (tinfo_base_init): Likewise.
1405         (emit_support_tinfos): Likewise.
1406         * semantics.c (capture_decltype): Likewise.
1407         * tree.c (cv_unqualified): Likewise.
1408         * typeck.c (composite_pointer_type): Likewise.
1409         (string_conv_p): Likewise.
1411         * mangle.c (write_CV_qualifiers_for_type): Tweak.
1413         * call.c (initialize_reference): Use CP_TYPE_CONST_P.
1414         * decl.c (start_decl): Likewise.
1415         * semantics.c (finish_compound_literal): Likewise.
1416         * typeck.c (check_return_expr): Use CP_TYPE_VOLATILE_P.
1417         (cp_type_readonly): Remove.
1418         * cp-tree.h: Remove declaration.
1420         * typeck.c (merge_types): Preserve memfn quals.
1422         * decl.c (grokdeclarator): Don't check quals on fn type.
1423         * typeck.c (cp_apply_type_quals_to_decl): Likewise.
1424         * tree.c (cp_build_qualified_type_real): Simplify qualifier checking.
1426         PR c++/44193
1427         * typeck.c (type_memfn_quals): New fn.
1428         (apply_memfn_quals): New fn.
1429         (cp_type_quals): Return TYPE_UNQUALIFIED for FUNCTION_TYPE.
1430         (cp_type_readonly): Use cp_type_quals.
1431         * cp-tree.h: Add declarations.
1432         * tree.c (cp_build_qualified_type_real): Don't set, but do
1433         preserve, quals on FUNCTION_TYPE.
1434         (strip_typedefs): Use apply_memfn_quals and type_memfn_quals.
1435         * decl.c (build_ptrmem_type): Likewise.
1436         (grokdeclarator): Likewise.
1437         (static_fn_type): Likewise.
1438         * decl2.c (change_return_type): Likewise.
1439         (cp_reconstruct_complex_type): Likewise.
1440         * pt.c (tsubst_function_type): Likewise.
1441         (unify): Likewise.
1442         (tsubst): Likewise.  Drop special FUNCTION_TYPE substitution code.
1444 2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>
1446         * tree.c (build_min_non_dep_call_vec): Update comment.
1448 2010-05-17  Jason Merrill  <jason@redhat.com>
1450         * call.c (struct z_candidate): Add explicit_targs field.
1451         (add_template_candidate_real): Set it.
1452         (build_over_call): Use it to control init-list warning.
1454         PR c++/44157
1455         * call.c (build_over_call): Limit init-list deduction warning to
1456         cases where the argument is actually an init-list.
1458         PR c++/44158
1459         * call.c (build_over_call): Don't do bitwise copy for move ctor.
1461 2010-05-17  Dodji Seketeli  <dodji@redhat.com>
1462             Jason Merrill  <jason@redhat.com>
1464         PR c++/44108
1465         * decl.c (compute_array_index_type): Call mark_rvalue_use.
1467 2010-05-15  Jason Merrill  <jason@redhat.com>
1469         * cp-tree.h (TYPE_NOEXCEPT_P): New macro.
1470         * except.c (begin_eh_spec_block): Use MUST_NOT_THROW_EXPR if
1471         TYPE_NOEXCEPT_P.
1472         (finish_eh_spec_block): Adjust.
1474 2010-05-15  Jakub Jelinek  <jakub@redhat.com>
1476         PR c++/44148
1477         * pt.c (tsubst): Unshare template argument.
1479 2010-05-15  Steven Bosscher  <steven@gcc.gnu.org>
1481         * decl.c: Include tree-iterator.h, as fixup for tree-inline.h changes.
1482         * Make-lang.in: Fix dependencies accordingly.
1484 2010-05-14  Jason Merrill  <jason@redhat.com>
1486         C++ DR 475
1487         * except.c (build_throw): Simplify, adjust for DR 475.
1489         PR c++/44127
1490         * except.c (dtor_nothrow): Return nonzero for type with
1491         trivial destructor.
1493         PR c++/44127
1494         * cp-gimplify.c (gimplify_must_not_throw_expr): Use
1495         gimple_build_eh_must_not_throw.
1497 2010-05-14  Martin Jambor  <mjambor@suse.cz>
1499         * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Remove both its undef
1500         and define.
1502 2010-05-14  Jonathan Wakely  <jwakely.gcc@gmail.com>
1504         * call.c (build_new_method_call): Change warning text.
1505         * typeck2.c (build_functional_cast): Change error text.
1507 2010-05-14  Shujing Zhao  <pearly.zhao@oracle.com>
1509         PR c++/30566
1510         * name-lookup.c (pushdecl_maybe_friend): Avoid the warnings about
1511         shadowing the outer parameter or variables by the declaration of
1512         nested function in nested structure or class. Warn the shadowing by
1513         the declaration of nested lambda expression.
1515 2010-05-13  Jason Merrill  <jason@redhat.com>
1517         * typeck.c (cp_build_array_ref): Factor out from...
1518         (build_array_ref): ...here.  Drop complain parm.
1519         (build_new_op): Adjust.
1520         * class.c (build_vtbl_ref_1): Adjust.
1521         * decl2.c (grok_array_decl): Adjust.
1522         * cp-tree.h: Adjust prototypes.
1524 2010-05-13  Jan Hubicka  <jh@suse.cz>
1526         * decl.c (cp_finish_decl): Do not worry about used attribute.
1528 2010-05-12  Jason Merrill  <jason@redhat.com>
1530         * typeck.c (build_array_ref): Take complain parm.
1531         * cp-tree.h: Add it to prototype.
1532         * call.c (build_new_op): Pass it.
1533         * class.c (build_vtbl_ref): Pass it.
1534         * decl2.c (grok_array_decl): Pass it.
1536         PR bootstrap/44048
1537         PR target/44099
1538         * cp-tree.def (NULLPTR_TYPE): Remove.
1539         * cp-tree.h (NULLPTR_TYPE_P): New.
1540         (SCALAR_TYPE_P): Use it.
1541         (nullptr_type_node): New.
1542         (cp_tree_index): Add CPTI_NULLPTR_TYPE.
1543         * decl.c (cxx_init_decl_processing): Call record_builtin_type on
1544         nullptr_type_node.
1545         * cvt.c (ocp_convert): Use NULLPTR_TYPE_P instead of NULLPTR_TYPE.
1546         * cxx-pretty-print.c (pp_cxx_constant): Likewise.
1547         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
1548         * mangle.c (write_type): Likewise.
1549         * name-lookup.c (arg_assoc_type): Likewise.
1550         * typeck.c (build_reinterpret_cast_1): Likewise.
1551         * rtti.c (typeinfo_in_lib_p): Likewise.
1552         (emit_support_tinfos): Remove local nullptr_type_node.
1554         * cp-tree.h (UNKNOWN_TYPE): Remove.
1555         * decl.c (cxx_init_decl_processing): Use LANG_TYPE instead.
1556         * error.c (dumy_type, dump_type_prefix, dump_type_suffix): Likewise.
1557         * typeck2.c (cxx_incomplete_type_diagnostic): Likewise.
1558         * class.c (instantiate_type): Check unknown_type_node rather than
1559         UNKNOWN_TYPE.
1560         * name-lookup.c (maybe_push_decl): Likewise.
1561         * rtti.c (get_tinfo_decl_dynamic): Likewise.
1562         (get_typeid): Likewise.
1563         * semantics.c (finish_offsetof): Likewise.
1565         PR c++/20669
1566         * call.c (add_template_candidate_real): If deduction fails, still
1567         add the template as a non-viable candidate.
1568         (equal_functions): Handle template candidates.
1569         (print_z_candidate): Likewise.
1570         (print_z_candidates): Likewise.
1571         (build_new_function_call): Likewise.
1573         * cp-tree.h (LOOKUP_LIST_ONLY): New.
1574         * call.c (add_candidates): Enforce it.
1575         (build_new_method_call): Try non-list ctor if no viable list ctor.
1576         (build_user_type_conversion_1): Likewise.
1578         * call.c (add_candidates): Distinguish between type(x) and
1579         x.operator type().
1580         (convert_class_to_reference): Set LOOKUP_NO_CONVERSION.
1581         (build_new_method_call): Give better error for conversion op.
1583         * call.c (add_candidates): Add first_arg and return_type parms.
1584         Add special constructor/conversion op handling.
1585         (convert_class_to_reference): Use it.
1586         (build_user_type_conversion_1): Likewise.
1587         (build_op_call): Likewise.
1588         (build_new_method_call): Likewise.
1589         (build_new_op): Adjust.
1590         (perform_overload_resolution): Adjust.
1592 2010-05-11  Paolo Carlini  <paolo.carlini@oracle.com>
1594         PR c++/34272
1595         PR c++/43630
1596         PR c++/34491
1597         * pt.c (process_partial_specialization): Return error_mark_node
1598         in case of unused template parameters in partial specialization.
1600 2010-05-11  Jakub Jelinek  <jakub@redhat.com>
1602         PR c++/44062
1603         * semantics.c (finish_expr_stmt): Don't call mark_exp_read here...
1604         * cvt.c (convert_to_void): ... but here.  If expr is a COMPOUND_EXPR,
1605         look at its second operand.
1607 2010-05-10  Jason Merrill  <jason@redhat.com>
1609         PR c++/44017
1610         * semantics.c (baselink_for_fns): Revert earlier change.
1612         PR c++/44045
1613         * typeck.c (cp_build_modify_expr): Complain about assignment to
1614         array from init list.
1616 2010-05-10  Fabien Chêne  <fabien.chene@gmail.com>
1618         PR c++/43719
1619         * decl.c (check_initializer): strip array type before checking for
1620         uninitialized const or ref members.
1622 2010-05-07  Fabien Chêne  <fabien.chene@gmail.com>
1624         PR c++/43951
1625         * init.c (diagnose_uninitialized_cst_or_ref_member_1): Returns the
1626         error count. Emit errors only if compain is true.
1627         (build_new_1): Do not return error_mark_node if
1628         diagnose_uninitialized_cst_or_ref_member_1 does not diagnose any
1629         errors. Delay the check for user-provided constructor.
1630         (perform_member_init): Adjust.
1631         * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Change the
1632         prototype.
1634 2010-05-06  Magnus Fromreide  <magfr@lysator.liu.se>
1635             Jason Merrill  <jason@redhat.com>
1637         Add support for C++0x nullptr.
1638         * cp-tree.def: Add NULLPTR_TYPE.
1639         * cp-tree.h: Add nullptr_node.
1640         (cp_tree_index): Add CPTI_NULLPTR.
1641         (SCALAR_TYPE_P): Add NULLPTR_TYPE.
1642         * call.c (null_ptr_cst_p): Handle nullptr.
1643         (standard_conversion): Likewise.
1644         (convert_arg_to_ellipsis): Likewise.
1645         * mangle.c (write_type): Likewise.
1646         * name-lookup.c (arg_assoc_type): Likewise.
1647         * parser.c (cp_parser_primary_expression): Likewise.
1648         * typeck.c (cp_build_binary_op): Likewise.
1649         (build_reinterpret_cast_1): Likewise.
1650         * error.c (dump_type): Likewise.
1651         (dump_type_prefix, dump_type_suffix): Likewise.
1652         * decl.c (cxx_init_decl_processing): Likewise.
1653         * cxx-pretty-print.c (pp_cxx_constant): Likewise.
1654         * cvt.c (ocp_convert): Likewise.
1655         * rtti.c (typeinfo_in_lib_p, emit_support_tinfos): Put
1656         nullptr_t tinfo in libsupc++.
1658 2010-05-06  Jason Merrill  <jason@redhat.com>
1660         * semantics.c (simplify_aggr_init_expr): Use INIT_EXPR.
1662 2010-04-22  Jakub Jelinek <jakub@redhat.com>
1663             Dodji Seketeli <dodji@redhat.com>
1665         PR c/18624
1666         * cp-tree.h (mark_exp_read, rvalue_use, lvalue_use, type_use):
1667         Declare ...
1668         * expr.c (mark_exp_read, rvalue_use, lvalue_use, type_use): ... new fns.
1669         * typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call type_use.
1670         (decay_conversion, perform_integral_promotions): Call rvalue_use.
1671         (cp_build_unary_op): Call lvalue_use.
1672         * decl.c (unused_but_set_errorcount): New variable.
1673         (poplevel): Issue -Wunused-but-set-variable diagnostics.
1674         (duplicate_decls): Merge DECL_READ_P flags.
1675         (start_cleanup_fn): Set DECL_READ_P flag.
1676         (finish_function): Issue -Wunused-but-set-parameter diagnostics.
1677         * tree.c (rvalue): Call rvalue_use.
1678         * pt.c (convert_nontype_argument): Likewise.
1679         * semantics.c (finish_expr_stmt, finish_asm_stmt, finish_typeof,
1680         finish_decltype_type): Likewise.
1681         * call.c (convert_like_real) <ck_identity, ck_user>: Call rvalue use.
1682         (build_x_va_arg, build_new_method_call, build_over_call): Call lvalue_use
1683         or rvalue_use depending on the expr.
1684         * init.c (build_new, build_delete): Likewise.
1685         * rtti.c (build_typeid, build_dynamic_cast_1): Likewise.
1687 2010-05-05  Jason Merrill  <jason@redhat.com>
1689         PR c++/43787
1690         * cp-gimplify.c (cp_gimplify_expr): Remove copies of empty classes.
1691         * call.c (build_over_call): Don't try to avoid INIT_EXPR copies here.
1693 2010-05-04  Paolo Carlini  <paolo.carlini@oracle.com>
1695         PR c++/43028
1696         * pt.c (unify): Check each elt for error_mark_node.
1698 2010-05-04  Jason Merrill  <jason@redhat.com>
1700         PR c++/38064
1701         * typeck.c (cp_build_binary_op): Allow enums for <> as well.
1703 2010-05-04  Paolo Carlini  <paolo.carlini@oracle.com>
1705         PR c++/43705
1706         * call.c (build_new_method_call): Return error_mark_node if fns is
1707         NULL_TREE.
1709 2010-05-03  Dodji Seketeli  <dodji@redhat.com>
1711         PR c++/43953
1712         * pt.c (most_specialized_class): Pretend we are processing
1713         a template decl during the call to coerce_template_parms.
1715 2010-05-03  Jason Merrill  <jason@redhat.com>
1717         PR c++/42810
1718         PR c++/43680
1719         * decl.c (finish_enum): Use the TYPE_MIN_VALUE and TYPE_MAX_VALUE
1720         from the selected underlying type unless -fstrict-enums.  Set
1721         ENUM_UNDERLYING_TYPE to have the restricted range.
1722         * cvt.c (type_promotes_to): Use ENUM_UNDERLYING_TYPE.
1723         * class.c (check_bitfield_decl): Likewise.
1725 2010-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1727         PR c++/43951
1728         * init.c (build_new_1): Revert the accidental checkin in
1729         revision 158918.
1731 2010-04-30  Jason Merrill  <jason@redhat.com>
1733         PR c++/43868
1734         * cxx-pretty-print.c (pp_cxx_decl_specifier_seq): Move pmf handling...
1735         (pp_cxx_type_specifier_seq): ...here.
1737 2010-04-30  Steven Bosscher  <steven@gcc.gnu.org>
1739         * optimize.c, parser.c, mangle.c, cp-tree.h: Do not include varray.h.
1740         * Make-lang.in: Don't include varray.h dependency in CXX_TREE_H.
1742 2010-04-30  Shujing Zhao  <pearly.zhao@oracle.com>
1744         PR c++/43779
1745         * typeck.c (warn_args_num): New function.
1746         (convert_arguments): Use warn_args_num to print the diagnostic
1747         messages. 
1749 2010-04-29  Fabien Chêne  <fabien.chene@gmail.com>
1751         PR c++/43890
1752         * init.c (diagnose_uninitialized_cst_or_ref_member): check for
1753         user-provided constructor while recursing.
1755 2010-04-28  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1757         PR c++/9335
1758         * error.c (print_instantiation_partial_context_line): Handle
1759         recursive instantiation.
1760         (print_instantiation_partial_context): Likewise.
1762 2010-04-27  Jason Merrill  <jason@redhat.com>
1764         * init.c (perform_member_init): Check CLASS_TYPE_P.
1766 2010-04-27  Fabien Chêne  <fabien.chene@gmail.com>
1768         PR c++/29043
1769         * init.c (perform_member_init): check for uninitialized const or
1770         reference members, including array types.
1772 2010-04-24  Jason Merrill  <jason@redhat.com>
1774         * tree.c (get_fns): Split out from get_first_fn.
1775         * cp-tree.h: Declare it.
1776         * search.c (shared_member_p): Use it.
1777         * semantics.c (finish_qualified_id_expr): Simplify.
1778         (finish_id_expression): Simplify.
1780         * semantics.c (finish_non_static_data_member): Call maybe_dummy_object
1781         whenever object is NULL_TREE.  Don't do 'this' capture here.
1782         (finish_qualified_id_expr): Pass NULL_TREE.
1783         (finish_id_expression): Likewise.
1784         (lambda_expr_this_capture): Likewise.
1786         * semantics.c (finish_qualified_id_expr): Use maybe_dummy_object
1787         rather than checking current_class_ref directly.
1788         (finish_call_expr): Likewise.
1790         PR c++/43856
1791         * name-lookup.c (qualify_lookup): Disqualify lambda op().
1792         * class.c (current_nonlambda_class_type): New fn.
1793         * semantics.c (nonlambda_method_basetype): New.
1794         * cp-tree.h: Declare them.
1795         * tree.c (maybe_dummy_object): Handle implicit 'this' capture.
1797         * semantics.c (baselink_for_fns): Correct BASELINK_BINFO.
1799         PR c++/43875
1800         * semantics.c (lambda_return_type): Complain about
1801         braced-init-list.
1803         PR c++/43790
1804         * tree.c (cv_unqualified): Handle error_mark_node.
1806         PR c++/41468
1807         * call.c (convert_like_real) [ck_ambig]: Just return error_mark_node
1808         if we don't want errors.
1810         PR c++/41468
1811         * class.c (convert_to_base): Add complain parameter.  Pass
1812         ba_quiet to lookup_base if we don't want errors.
1813         (build_vfield_ref): Pass complain to convert_to_base.
1814         * call.c (convert_like_real): Likewise.
1815         (initialize_reference): Likewise.
1816         (perform_direct_initialization_if_possible): Pass complain to
1817         convert_like_real.
1818         * cp-tree.h: Adjust.
1820 2010-04-27  Fabien Chêne  <fabien.chene@gmail.com>
1821             Jason Merrill  <jason@redhat.com>
1823         PR c++/42844
1824         * decl.c (check_for_uninitialized_const_var): Handle classes that need
1825         constructing, too.
1826         (check_initializer): Call it for classes that need constructing, too.
1827         * class.c (in_class_defaulted_default_constructor): New.
1828         * cp-tree.h: Declare it.
1830 2010-04-20  Jason Merrill  <jason@redhat.com>
1832         PR c++/9335
1833         * init.c (constant_value_1): Treat error_mark_node as a constant
1834         if DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P is set.
1835         * cvt.c (ocp_convert): Handle getting error_mark_node from
1836         integral_constant_value.
1837         * decl.c (compute_array_index_type): Likewise.
1839 2010-04-20  Dodji Seketeli  <dodji@redhat.com>
1841         PR c++/43800
1842         PR c++/43704
1843         * typeck.c (incompatible_dependent_types_p): If one of the
1844         compared types if not a typedef then honour their main variant
1845         equivalence.
1847 2010-04-20  Jakub Jelinek  <jakub@redhat.com>
1849         * cp-tree.h (TYPE_REF_IS_RVALUE): Remove.
1851 2010-04-19  Dodji Seketeli  <dodji@redhat.com>
1853         PR c++/43704
1854         * typeck.c (structural_comptypes): Test dependent typedefs
1855         incompatibility before testing for their main variant based
1856         equivalence.
1858 2010-04-19  Jakub Jelinek  <jakub@redhat.com>
1860         * cp-tree.h (SCOPED_ENUM_P, UNSCOPED_ENUM_P, SET_SCOPED_ENUM_P): Use
1861         ENUM_IS_SCOPED bit instead of TYPE_LANG_FLAG_5.
1863 2010-04-18  Eric Botcazou  <ebotcazou@adacore.com>
1865         * decl.c (cxx_init_decl_processing): Remove second argument in call to
1866         build_common_tree_nodes.
1868 2010-04-14  Jason Merrill  <jason@redhat.com>
1870         PR c++/36625
1871         * parser.c (cp_parser_parenthesized_expression_list): Change
1872         is_attribute_list parm to int to indicate whether or not to
1873         handle initial identifier specially.
1874         (cp_parser_attribute_list): Use attribute_takes_identifier_p.
1876 2010-04-13  Jason Merrill  <jason@redhat.com>
1878         * call.c (type_decays_to): Check MAYBE_CLASS_TYPE_P instead of
1879         CLASS_TYPE_P.
1880         * parser.c (cp_parser_lambda_expression): Complain about lambda in
1881         unevaluated context.
1882         * pt.c (iterative_hash_template_arg): Don't crash on lambda.
1884 2010-04-12  Jason Merrill  <jason@redhat.com>
1886         PR c++/43641
1887         * semantics.c (maybe_add_lambda_conv_op): Use build_call_a and tweak
1888         return value directly.
1890         * call.c (type_decays_to): Call cv_unqualified for non-class type.
1892 2010-04-12  Fabien Chene  <fabien.chene@gmail.com>
1894         PR c++/25811
1895         * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Declare.
1896         * init.c (build_new_1): Check for uninitialized const members and
1897         uninitialized reference members, when using new without
1898         new-initializer. Call diagnose_uninitialized_cst_or_ref_member.
1899         (diagnose_uninitialized_cst_or_ref_member): Define, call
1900         diagnose_uninitialized_cst_or_ref_member_1.
1901         (diagnose_uninitialized_cst_or_ref_member_1): New function.
1903 2010-04-12  Richard Guenther  <rguenther@suse.de>
1905         PR c++/43611
1906         * semantics.c (expand_or_defer_fn_1): Do not keep extern
1907         template inline functions.
1909 2010-04-09  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1911         PR c++/28584
1912         * typeck.c (cp_build_c_cast): Warn for casting integer to larger
1913         pointer type.
1915 2010-04-07  Jason Merrill  <jason@redhat.com>
1917         PR c++/43016
1918         * decl.c (start_preparsed_function): Do defer nested functions.
1920         PR c++/11094, DR 408
1921         * cp-tree.h (VAR_HAD_UNKNOWN_BOUND, SET_VAR_HAD_UNKNOWN_BOUND): New.
1922         * decl2.c (finish_static_data_member_decl): Set it.
1923         * decl.c (duplicate_decls): Propagate it.
1924         * pt.c (tsubst_decl): Don't substitute the domain of an array
1925         VAR_DECL if it's set.
1926         (regenerate_decl_from_template): Substitute it here.
1927         (type_dependent_expression_p): Return true if it's set.
1928         * semantics.c (finish_decltype_type): Instantiate such a variable.
1929         * typeck.c (cxx_sizeof_expr): Likewise.
1930         (strip_array_domain): New.
1932         PR c++/43145
1933         * name-lookup.c (current_decl_namespace): Non-static.
1934         (pop_nested_namespace): Sanity check.
1935         * cp-tree.h: Declare current_decl_namespace.
1936         * decl.c (grokvardecl): Use it instead of current_namespace.
1937         (grokfndecl): Likewise.
1939         PR c++/38392
1940         * pt.c (tsubst_friend_function): Instatiate a friend that has already
1941         been used.
1943         * pt.c (print_template_statistics): New.
1944         * cp-tree.h: Declare it.
1945         * tree.c (cxx_print_statistics): Call it.
1947         PR c++/41970
1948         * decl.c (grokvardecl): Tweak warning message.
1949         (grokfndecl): Likewise.
1951 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
1953         PR c++/42697
1954         *pt.c (tsubst_decl): Get the arguments of a specialization from
1955         the specialization template, not from the most general template.
1957 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
1959         PR c++/40239
1960         * typeck2.c (process_init_constructor_record):
1961         value-initialize members that are are not explicitely
1962         initialized.
1964 2010-04-07  Jie Zhang  <jie@codesourcery.com>
1966         PR c++/42556
1967         * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR
1968         when all of its elements are non-constant and have been split out.
1970 2010-04-06  Taras Glek  <taras@mozilla.com>
1971             Jason Merrill  <jason@redhat.com>
1973         * parser.c (cp_parser_class_specifier): Set class location to that
1974         of IDENTIFIER_NODE instead of '{' when possible.
1975         * semantics.c (begin_class_definition): Do not overide locations
1976         with less precise ones.
1978 2010-04-06  Jason Merrill  <jason@redhat.com>
1980         PR c++/43648
1981         * name-lookup.c (constructor_name_p): Allow X::~X even for typedefs.
1983         PR c++/43621
1984         * pt.c (maybe_update_decl_type): Check the return value from
1985         push_scope.
1987 2010-04-01  Jason Merrill  <jason@redhat.com>
1989         * decl.c (next_initializable_field): No longer static.
1990         * cp-tree.h: Declare it.
1991         * call.c (build_aggr_conv): Fail if there are more initializers
1992         than initializable fields.
1994         * semantics.c (maybe_add_lambda_conv_op): Use null_pointer_node
1995         instead of void_zero_node.
1997 2010-03-31  Dodji Seketeli  <dodji@redhat.com>
1999         PR c++/43558
2000         * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): New accessor macro.
2001         * pt.c (end_template_parm_list): Store sibling template parms of
2002         each TEMPLATE_TYPE_PARMs into its TEMPLATE_TYPE_PARM_SIBLING_PARMS.
2003         (push_template_decl_real): Don't store the containing template decl
2004         into the DECL_CONTEXT of TEMPLATE_TYPE_PARMs anymore.
2005         * typeck.c (get_template_parms_of_dependent_type): Get sibling parms
2006         of a TEMPLATE_TYPE_PARM from TEMPLATE_TYPE_PARM_SIBLING_PARMS.
2007         Simplify the logic.
2009 2010-03-30  Jason Merrill  <jason@redhat.com>
2011         PR c++/43076
2012         * pt.c (push_template_decl_real): Deal better with running out of
2013         scopes before running out of template parms.
2015         PR c++/41185
2016         PR c++/41786
2017         * parser.c (cp_parser_direct_declarator): Don't allow VLAs in
2018         function parameter context.  Don't print an error if parsing
2019         tentatively.
2021         PR c++/43559
2022         * pt.c (more_specialized_fn): Don't control cv-qualifier check
2023         with same_type_p.
2025 2010-03-26  Jason Merrill  <jason@redhat.com>
2027         PR c++/43509
2028         * parser.c (cp_parser_qualifying_entity): Do accept enum names in
2029         c++0x mode, but not other type-names.
2031 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
2033         PR c++/43327
2034         * pt.c (add_to_template_args): Support NULL ARGS;
2035         (most_specialized_class): call coerce_template_parms on
2036         template arguments passed to get_class_bindings. Use
2037         add_to_template_args.
2038         (unify): Handle VAR_DECLs.
2040 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
2042         * cp-tree.h (get_template_parms_at_level): Change unsigned parm
2043         into int.
2044         * pt.c (get_template_parms_at_level): Adjust.
2046 2010-03-25  Dodji Seketeli  <dodji@redhat.com>
2048         PR c++/43206
2049         * cp-tree.h (get_template_parms_at_level): Declare ...
2050         * pt.c (get_template_parms_at_level): ... new function.
2051         * typeck.c (get_template_parms_of_dependent_type): If a template
2052         type parm's DECL_CONTEXT isn't yet set, get its siblings from
2053         current_template_parms. Use get_template_parms_at_level. Remove
2054         useless test.
2055         (incompatible_dependent_types_p): If we get empty parms from just one
2056         of the template type parms we are comparing then the template parms are
2057         incompatible.
2059 2010-03-24  Jason Merrill  <jason@redhat.com>
2061         PR c++/43502
2062         * parser.c (make_declarator): Initialize id_loc.
2063         (cp_parser_lambda_declarator_opt): And set it.
2065 2010-03-23  Jason Merrill  <jason@redhat.com>
2067         Make lambda conversion op and op() non-static.
2068         * semantics.c (maybe_add_lambda_conv_op): Make non-static.
2069         Also add the thunk function returned by the conversion op.
2070         Mark the conversion deleted if the op() is variadic.
2071         * decl2.c (mark_used): Give helpful message about deleted conversion.
2072         * parser.c (cp_parser_lambda_declarator_opt): Don't make op() static.
2073         * semantics.c (finish_this_expr): Adjust.
2074         * mangle.c (write_closure_type_name): Adjust.
2075         * decl.c (grok_op_properties): Don't allow it.
2076         * call.c (build_user_type_conversion_1): No static conversion ops.
2077         (build_op_call): Or op().
2079         * decl2.c (change_return_type): Fix 'this' quals.
2081 2010-03-22  Jason Merrill  <jason@redhat.com>
2083         PR c++/43333
2084         * tree.c (pod_type_p): Use old meaning in C++98 mode.
2086         PR c++/43281
2087         * pt.c (contains_auto_r): New fn.
2088         (do_auto_deduction): Use it.
2089         (tsubst): Don't look at TREE_TYPE of a TEMPLATE_TYPE_PARM.
2091 2010-03-20  Simon Martin  <simartin@users.sourceforge.net>
2093         PR c++/43081:
2094         * decl2.c (grokfield): Handle invalid initializers for member
2095         functions.
2097 2010-03-20  Dodji Seketeli  <dodji@redhat.com>
2099         PR c++/43375
2100         * method.c (make_alias_for): Avoid crashing when DECL_LANG_SPECIFIC
2101         is NULL.
2102         * decl2.c (vague_linkage_p): Likewise.
2104 2010-03-18  Paolo Carlini  <paolo.carlini@oracle.com>
2106         PR c++/43418
2107         * parser.c (cp_parser_for_init_statement): Use NULL_TREE, not
2108         false, in the cp_parser_expression_statement call.
2110 2010-03-05  Jason Merrill  <jason@redhat.com>
2112         * mangle.c (mangle_decl): Give name collision error even without
2113         ASM_OUTPUT_DEF.
2115 2010-03-04  Marco Poletti  <poletti.marco@gmail.com>
2117         * pt.c (process_partial_specialization): Use error_n instead of
2118         error.
2120 2010-03-03  Jason Merrill  <jason@redhat.com>
2122         PR c++/12909
2123         * mangle.c (mangle_decl): Handle VAR_DECL, too.
2125 2010-03-03  Jason Merrill  <jason@redhat.com>
2127         PR c++/12909
2128         * mangle.c: Include cgraph.h.
2129         (mangle_decl): If the mangled name will change in a later
2130         ABI version, make the later mangled name an alias.
2131         * method.c (make_alias_for): Copy DECL_ARGUMENTS.
2132         * Make-lang.in (mangle.o): Depend on cgraph.h.
2133         * method.c (make_alias_for): Handle VAR_DECL, too.
2134         * decl2.c (vague_linkage_p): Rename from vague_linkage_fn_p.
2135         * tree.c (no_linkage_check): Adjust.
2136         * decl.c (maybe_commonize_var): Adjust.
2137         * cp-tree.h: Adjust.
2139 2010-03-01  Marco Poletti  <poletti.marco@gmail.com>
2141         * pt.c (redeclare_class_template): Use error_n and inform_n.
2143 2010-02-27  Mark Mitchell  <mark@codesourcery.com>
2145         PR c++/42748
2146         * cp-tree.h (push_tinst_level): Declare.
2147         (pop_tinst_level): Likewise.
2148         * pt.c (push_tinst_level): Give it external linkage.
2149         (pop_tinst_level): Likewise.
2150         * mangle.c (mangle_decl_string): Set the source location to that
2151         of the decl while mangling.
2153 2010-02-27  Simon Martin  <simartin@users.sourceforge.net>
2155         PR c++/42054
2156         * pt.c (redeclare_class_template): Return false if there are erroneous
2157         template parameters.
2159 2010-02-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2161         * pt.c (push_tinst_level): Replace -ftemplate-depth- with 
2162         -ftemplate-depth=.
2164 2010-02-24  Jason Merrill  <jason@redhat.com>
2166         PR c++/12909
2167         * mangle.c (write_type): Give -Wabi warning for old vector mangling.
2169         * class.c (layout_class_type): Don't give -Wabi warning for a bug
2170         in a previous ABI version.
2172 2010-02-23  Jason Merrill  <jason@redhat.com>
2174         PR c++/43143
2175         * typeck2.c (digest_init_r): Accept value init of array.
2177 2010-02-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2179         PR c++/43126
2180         * typeck.c (convert_arguments): Update error message.
2182 2010-02-22  Mike Stump  <mikestump@comcast.net>
2184         PR c++/43125
2185         * decl.c (duplicate_decls): Merge DECL_PRESERVE_P.
2187 2010-02-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2189         PR c++/23510
2190         * error.c (print_instantiation_partial_context_line): New.
2191         (print_instantiation_partial_context): Print at most 12 contexts,
2192         skip the rest with a message.
2194 2010-02-21  Dodji Seketeli  <dodji@redhat.com>
2196         PR c++/42824
2197         * pt.c (lookup_template_class): Better support of specialization
2198         of member of class template implicit instantiation.
2200 2010-02-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2202         PR c++/35669
2203         * call.c (conversion_null_warnings): Replace -Wconversion with
2204         -Wconversion-null.
2205         * cvt.c (build_expr_type_conversion): Likewise.
2207 2010-02-18  Jason Merrill  <jason@redhat.com>
2209         PR c++/42837
2210         * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
2212         PR c++/43108
2213         * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from
2214         C build_binary_op.
2215         * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR.
2216         * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE.
2218         PR c++/43070
2219         * semantics.c (finish_goto_stmt): Don't call decay_conversion.
2221         PR c++/26261
2222         PR c++/43101
2223         * pt.c (tsubst_qualified_id): Do normal lookup in non-dependent scope.
2224         (maybe_update_decl_type): New fn.
2225         * parser.c (cp_parser_init_declarator): Use it.
2227         PR c++/43109
2228         * semantics.c (begin_class_definition): Don't crash on unnamed ns.
2230 2010-02-17  Jason Merrill  <jason@redhat.com>
2232         PR c++/43075
2233         * call.c (build_over_call): Don't create zero-sized assignments.
2234         * cp-gimplify.c (cp_genericize_r): Don't remove them here.
2235         * cp-objcp-common.c (cp_expr_size): Remove.
2236         * cp-tree.h: Remove prototype.
2238         PR c++/43069
2239         * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
2240         decl we looked up doesn't match.
2242         PR c++/43093
2243         * cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
2244         have an INIT_EXPR anymore.
2246         PR c++/43079
2247         * pt.c (convert_nontype_argument): Change assert to test.
2249 2010-02-16  Jason Merrill  <jason@redhat.com>
2251         * cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
2253         PR c++/43031
2254         * cp-gimplify.c (cp_gimplify_expr) [MODIFY_EXPR]: Use
2255         VIEW_CONVERT_EXPR for conversions between structural equality types
2256         that the back end can't tell are the same.
2258         PR c++/43036
2259         * tree.c (build_cplus_array_type): Set TYPE_MAIN_VARIANT to strip
2260         cv-quals from element here.
2261         (cp_build_qualified_type_real): Not here.  Preserve typedef name.
2263 2010-02-14  Jason Merrill  <jason@redhat.com>
2265         PR c++/41997
2266         * semantics.c (finish_compound_literal): Use
2267         cp_apply_type_quals_to_decl when creating a static variable.
2269 2010-02-12  Jason Merrill  <jason@redhat.com>
2271         PR c++/43024
2272         * name-lookup.h (current_binding_level): Check for null
2273         cp_function_chain.
2275 2010-02-12  Jason Merrill  <jason@redhat.com>
2277         PR c++/43054
2278         * tree.c (cp_tree_equal): Correct CALL_EXPR logic.
2280 2010-02-12  Jakub Jelinek  <jakub@redhat.com>
2282         PR c++/43033
2283         * name-lookup.c (pushdecl_maybe_friend): Check default args of t
2284         instead of x.
2286 2010-02-10  Jason Merrill  <jason@redhat.com>
2288         PR c++/41896
2289         * semantics.c (outer_lambda_capture_p): Revert.
2290         (add_capture): Only finish_member_declaration if
2291         we're in the lambda class.
2292         (register_capture_members): New.
2293         * cp-tree.h: Declare it.
2294         * parser.c (cp_parser_lambda_expression): Call it.
2296 2010-02-10  Jason Merrill  <jason@redhat.com>
2298         PR c++/41896
2299         * semantics.c (outer_lambda_capture_p): Use current_function_decl
2300         instead of current_class_type.
2302 2010-02-10  Jason Merrill  <jason@redhat.com>
2304         PR c++/42983, core issue 906
2305         * method.c (defaultable_fn_check): Check virtualness.
2307 2010-02-10  Jason Merrill  <jason@redhat.com>
2309         PR c++/43016
2310         * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
2312 2010-02-10  Shujing Zhao  <pearly.zhao@oracle.com>
2314         * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h.
2315         * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy
2316         translation.
2317         * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id)
2318         (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype)
2319         (cp_parser_parameter_declaration)
2320         (cp_parser_exception_specification_opt)
2321         (cp_parser_exception_declaration): Likewise.
2322         * pt.c (check_default_tmpl_args): Likewise.
2323         * search.c (lookup_field_r): Likewise.
2325 2010-02-09  Jason Merrill  <jason@redhat.com>
2327         PR c++/42399
2328         * pt.c (tsubst_copy_and_build): Propagate LAMBDA_EXPR_LOCATION.
2330 2010-02-09  Jason Merrill  <jason@redhat.com>
2332         PR c++/42370
2333         * decl2.c (change_return_type): New fn.
2334         * semantics.c (apply_lambda_return_type): Use it.
2335         * cp-tree.h: Declare it.
2337 2010-02-05  Richard Guenther  <rguenther@suse.de>
2339         * Make-lang.in (cp/cp-lang.o): Depend on gt-cp-cp-lang.h.
2340         * cp-lang.c: Include gt-cp-cp-lang.h.
2341         * config-lang.in (gtfiles): Add cp/cp-lang.c.
2343 2010-02-05  Dodji Seketeli  <dodji@redhat.com>
2345         PR c++/42915
2346         * typeck.c (get_template_parms_of_dependent_type): Try getting
2347         the template parameters fromt the type itself first.
2349 2010-02-03  Jason Merrill  <jason@redhat.com>
2351         PR c++/4926
2352         PR c++/38600
2353         * mangle.c (write_unqualified_id): Split out from write_expression.
2354         (write_unqualified_name): Call it.
2355         (write_member_name): Likewise.
2356         (write_expression): Support TEMPLATE_ID_EXPR.
2357         Disambiguate operator names.
2359         PR c++/12909
2360         * mangle.c (write_type) [VECTOR_TYPE]: Change mangling with
2361         -fabi-version=4.
2363 2010-02-02  Jason Merrill  <jason@redhat.com>
2365         PR c++/41090
2366         * decl.c (cp_finish_decl): Add local statics to cfun->local_decls.
2367         * optimize.c (clone_body): Remap their initializers when making base
2368         variants.
2369         (maybe_clone_body): Complain if multiple clones aren't safe.
2371 2010-01-29  Dodji Seketeli  <dodji@redhat.com>
2373         PR c++/42758
2374         PR c++/42634
2375         PR c++/42336
2376         PR c++/42797
2377         PR c++/42880
2378         * cp-tree.h (NON_DEFAULT_TEMPLATE_ARGS_COUNT,
2379         SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT,
2380         GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT): New accessor macros.
2381         * pt.c (coerce_template_parms, type_unification_real,
2382         expand_template_argument_pack, coerce_template_parameter_pack):
2383         Set the non default template args count.
2384         (current_template_args): Always set non defaulted
2385         template args count when compiled with --enable-checking
2386         (tsubst_template_args, type_unification_real): Propagate the non
2387         defaulted template args count.
2388         * error.c (get_non_default_template_args_count): Renamed
2389         count_non_default_template_args into this. Don't calculate the
2390         non default template argument count anymore. Use the new
2391         accessor macros above to get it.
2392         (dump_template_argument_list, dump_type, dump_decl,
2393         dump_template_parms): Adjust.
2394         * parser.c (cp_parser_template_argument_list): Always set defaulted
2395         template args count when compiled with --enable-checking.
2397 2010-01-29  Shujing Zhao  <pearly.zhao@oracle.com>
2399         * decl.c (redeclaration_error_message): Wrap the return messages into
2400         G_() for easy translation.
2402 2010-01-28  Jason Merrill  <jason@redhat.com>
2404         PR c++/42880
2405         * semantics.c (begin_class_definition): Don't use type_as_string.
2407 2010-01-28  Dodji Seketeli  <dodji@redhat.com>
2409         PR c++/42713
2410         PR c++/42820
2411         * typeck.c (get_template_parms_of_dependent_type): Factorized
2412         this out of incompatible_template_type_parms_p
2413         (incompatible_dependent_types_p): Renamed
2414         incompatible_template_type_parms_p into this. Make it detect
2415         two incompatible dependent typedefs too.
2416         (structural_comptypes): Use incompatible_dependent_types_p.
2417         * pt.c (get_template_info):
2418         Handle BOUND_TEMPLATE_TEMPLATE_PARAM.
2420 2010-01-20  Janis Johnson  <janis187@us.ibm.com>
2421             Jason Merrill  <jason@redhat.com>
2423         * mangle.c (write_type): Mangle transparent record as member type.
2424         * semantics.c (begin_class_definition): Recognize decimal classes
2425         and set TYPE_TRANSPARENT_AGGR.
2427 2010-01-20  Jason Merrill  <jason@redhat.com>
2429         PR c++/42338
2430         * mangle.c (write_expression): Handle tree codes that have extra
2431         arguments in the middle-end.
2433 2010-01-20  Paolo Carlini  <paolo.carlini@oracle.com>
2435         PR c++/42038
2436         * except.c (expand_start_catch_block): Deal correctly with
2437         do_begin_catch returning error_mark_node.
2439 2010-01-20  Jason Merrill  <jason@redhat.com>
2441         PR c++/41788
2442         * class.c (layout_class_type): Set packed_maybe_necessary for packed
2443         non-PODs.
2445         PR c++/41920
2446         * semantics.c (build_lambda_object): Call mark_used on captured
2447         variables.
2449         PR c++/40750
2450         * decl.c (grokdeclarator): Clear type_quals for a member function
2451         declared using a typedef.  Don't complain about adding cv-quals
2452         to a function typedef in C++0x mode.
2454 2010-01-20  Jakub Jelinek  <jakub@redhat.com>
2456         * decl.c (create_array_type_for_decl): Remove set but not used
2457         variable error_msg.  Remove break stmts after return stmts.
2459 2010-01-19  Dodji Seketeli  <dodji@redhat.com>
2461         * error.c (dump_template_parms, count_non_default_template_args):
2462         Revert fix of PR c++/42634.
2464 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
2466         PR c++/42634
2467         * error.c (dump_template_parms): Use innermost template
2468         arguments before calling count_non_default_template_args.
2469         (count_non_default_template_args): We are being called with
2470         template innermost arguments now. There is no need to ensure
2471         that again.
2473 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
2475         PR c++/42766
2476         * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
2478 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
2480         PR c++/42697
2481         *pt.c (tsubst_decl):  Revert commit for PR c++/42697.
2483 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
2485         PR c++/42697
2486         *pt.c (tsubst_decl): Get the arguments of a specialization from
2487         the specialization template, not from the most general template.
2489 2010-01-16  Jason Merrill  <jason@redhat.com>
2491         PR c++/42761
2492         * semantics.c (finish_decltype_type): Within a template, treat
2493         unresolved CALL_EXPR as dependent.
2495 2010-01-15  Dodji Seketeli  <dodji@redhat.com>
2497         * error.c (dump_template_parms,count_non_default_template_args):
2498         Revert changes of PR c++/42634.
2500 2010-01-14  Jakub Jelinek  <jakub@redhat.com>
2502         PR middle-end/42674
2503         * decl.c (finish_function): Don't emit -Wreturn-type warnings in
2504         functions with noreturn attribute.
2506 2010-01-14  Jason Merrill  <jason@redhat.com>
2508         PR c++/42701
2509         * call.c (build_new_method_call): Don't free the vec here.
2511         PR c++/42655
2512         * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
2514 2010-01-13  Dodji Seketeli  <dodji@redhat.com>
2516         PR c++/42634
2517         * error.c (dump_template_parms): Use innermost template
2518         arguments before calling count_non_default_template_args.
2519         (count_non_default_template_args): We are being called with
2520         template innermost arguments now. There is no need to ensure
2521         that again.
2523 2010-01-07  Dodji Seketeli  <dodji@redhat.com>
2525         c++/40155
2526         * pt.c (unify_pack_expansion): In non-deduced contexts, re-use template
2527         arguments that were previously deduced.
2529 2010-01-05  Jason Merrill  <jason@redhat.com>
2531         * pt.c (unify_pack_expansion): Handle deduction from init-list.
2532         * call.c (build_over_call): Don't complain about it.
2534 2010-01-04  Jason Merrill  <jason@redhat.com>
2536         PR c++/42555
2537         * pt.c (tsubst_decl): Don't apply type attributes in place.
2539         PR c++/42567
2540         * semantics.c (describable_type): Remove decltype comment and
2541         semantics.
2545 Copyright (C) 2010 Free Software Foundation, Inc.
2547 Copying and distribution of this file, with or without modification,
2548 are permitted in any medium without royalty provided the copyright
2549 notice and this notice are preserved.