re PR c++/50660 (warning about pass NULL to non pointer argument happens twice)
[official-gcc.git] / gcc / cp / ChangeLog
blobd36ffaa83e591bca3f9e8eded7ed15d68a4e6cf4
1 2011-10-10  Paolo Carlini  <paolo.carlini@oracle.com>
3         PR c++/50660
4         * call.c (conversion_null_warnings): Don't look through references.
6 2011-10-09  Paolo Carlini  <paolo.carlini@oracle.com>
8         PR c++/38980
9         * init.c (constant_value_1): Add bool parameter.
10         (decl_constant_value_safe): Add.
11         (integral_constant_value): Adjust.
12         (decl_constant_value): Adjust.
13         * cp-tree.h (decl_constant_value_safe): Declare.
14         * typeck.c (decay_conversion): Use decl_constant_value_safe.
15         * call.c (convert_like_real): Likewise.
17 2011-10-09  Jakub Jelinek  <jakub@redhat.com>
18             Diego Novillo  <dnovillo@google.com>
20         * pt.c (reregister_specialization): Use htab_find instead of
21         htab_find_slot with INSERT.
22         (maybe_process_partial_specialization, lookup_template_class_1): Change
23         slot variable type to void ** to avoid aliasing problems.
24         (register_specialization): Likewise.  Use slot != NULL instead of
25         more expensive !optimize_specialization_lookup_p (tmpl) test.
27 2011-10-08  Paolo Carlini  <paolo.carlini@oracle.com>
29         PR c++/34927
30         * typeck2.c (abstract_virtuals_error_sfinae): Don't produce duplicate
31         inform messages in case of cloned destructor.
33 2011-10-06  Jason Merrill  <jason@redhat.com>
35         PR c++/39164
36         * decl.c (grokfndecl): Diagnose redefinition of defaulted fn.
38 2011-10-02  Jason Merrill  <jason@redhat.com>
40         * pt.c (tsubst_pack_expansion): Re-use ARGUMENT_PACK_SELECTs.
41         Change unsubstituted_packs to bool.
43         * parser.c (cp_parser_range_for): Don't try to deduce from {}
44         in a template.
46         PR c++/35722
47         Implement N2555 (expanding pack expansion to fixed parm list)
48         * pt.c (coerce_template_parms): Allow expanding a pack expansion
49         to a fixed-length argument list.
50         (unify_pack_expansion): Handle explicit args properly.
51         (unify) [TREE_VEC]: Handle pack expansions here.
52         [TYPE_ARGUMENT_PACK]: Not here.
53         (tsubst_pack_expansion): Don't try to do partial substitution.
54         (pack_deducible_p): New.
55         (fn_type_unification): Use it.
56         (find_parameter_packs_r): Take the TYPE_MAIN_VARIANT
57         of a type parameter.
58         (check_non_deducible_conversion): Split from type_unification_real.
59         (unify_one_argument): Split from type_unification_real...
60         (unify_pack_expansion): ...and here.  Drop call_args_p parm.
61         (type_unification_real, unify, more_specialized_fn): Adjust.
63         * class.c (fixed_type_or_null): Handle NSDMI.
64         * method.c (walk_field_subobs): Disable NSDMI noexcept checking
65         for now.
67 2011-09-30  Jason Merrill  <jason@redhat.com>
69         * cp-tree.h (TREE_NEGATED_INT): Remove.
70         * semantics.c (finish_unary_op_expr): Don't set it.
72 2011-09-30  Janis Johnson  <janisjo@codesourcery.com>
74         PR c++/44473
75         * mangle.c (write_type): Handle CV qualifiers for decimal classes.
77 2011-09-26   Andi Kleen <ak@linux.intel.com>
79         * repo.c (finish_repo): Use HOST_WIDE_INT_PRINT_HEX_PURE.
81 2011-09-28  Paolo Carlini  <paolo.carlini@oracle.com>
83         PR c++/45278
84         * typeck.c (cp_build_binary_op): With -Wextra, warn for ordered
85         comparison of pointer with zero.
87 2011-09-27  Paolo Carlini  <paolo.carlini@oracle.com>
89         PR c++/31489
90         * parser.c (cp_parser_elaborated_type_specifier): For RECORD_TYPE,
91         set CLASSTYPE_DECLARED_CLASS.
93 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
95         * decl.c (duplicate_decls): If compatible stpcpy prototype
96         is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
98 2011-09-26  Jason Merrill  <jason@redhat.com>
100         PR c++/45012
101         * pt.c (tsubst_copy_and_build) [CONST_DECL]: Don't pull out
102         constant value if we're still in a template.
104         PR c++/46105
105         * typeck.c (structural_comptypes): Ignore cv-quals on typename scope.
107         PR c++/50508
108         * semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal
109         rather than ==.
111 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
113         PR c++/45487
114         * error.c (dump_template_bindings): Separate bindings with semicolons
115         instead of commas.
117 2011-09-26  Jason Merrill  <jason@redhat.com>
119         PR c++/50512
120         * call.c (compare_ics): Only consider rvaluedness_matches_p
121         if the target type is the same or it too differs in rvalueness.
123         PR c++/50523
124         * call.c (implicit_conversion): Mask out inappropriate LOOKUP
125         flags at the top of the function.
127         * pt.c (tsubst_copy) [PARM_DECL]: Handle 'this' in NSDMI.
129 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
131         * pt.c (convert_nontype_argument): Handle NULLPTR_TYPE.
133 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
135         PR c++/26747
136         * cp-gimplify.c (get_bc_label): Remove obsolete diagnostics.
138 2011-09-25  Jason Merrill  <jason@redhat.com>
140         * parser.c (inject_this_parameter): Split out from
141         cp_parser_late_return_type_opt.
142         (cp_parser_class_specifier_1): Use it for NSDMIs.
143         * tree.c (bot_replace): Replace NSDMI 'this' with real 'this'.
145 2011-09-24  Jason Merrill  <jason@redhat.com>
147         * except.c (expr_noexcept_p): Split out from finish_noexcept_expr.
148         * cp-tree.h: Declare it.
149         * method.c (walk_field_subobs): Use it.
151         * init.c (perform_member_init): Instantiate NSDMI here.
152         * pt.c (tsubst_decl) [FIELD_DECL]: Not here.
154         Handle deferred parsing of NSDMIs.
155         * parser.h (cp_unparsed_functions_entry): Add nsdmis field.
156         * parser.c (unparsed_nsdmis, cp_parser_save_nsdmi): New.
157         (cp_parser_late_parse_one_default_arg): Split out from
158         cp_parser_late_parsing_default_args.
159         (cp_parser_late_parsing_nsdmi): New.
160         (push_unparsed_function_queues): Set it.
161         (cp_parser_parameter_declaration): Save the '=' token.
162         (cp_parser_template_parameter): Likewise.
163         (cp_parser_default_argument): Call cp_parser_initializer
164         rather than cp_parser_initializer_clause.
165         (cp_parser_class_specifier_1): Parse unparsed_nsdmis.
166         (cp_parser_member_declaration): Handle nsdmis.
167         * decl2.c (grokfield): Handle DEFAULT_ARG for a function.
169         Implement C++11 non-static data member initializers.
170         * cp-tree.h (enum cpp_warn_str): Add CPP0X_NSDMI.
171         * error.c (maybe_warn_cpp0x): Handle it.
172         * call.c (convert_like_real) [ck_user]: Don't complain about
173         using an explicit constructor for direct-initialization.
174         * class.c (check_field_decl): Fix ancient typo.
175         (check_field_decls): NSDMIs make the default ctor non-trivial.
176         * decl.c (cp_finish_decl): Record NSDMI.
177         (grokdeclarator): Allow NSDMI.
178         * decl2.c (grokfield): Allow NSDMI.  Correct LOOKUP flags.
179         * init.c (perform_member_init): Use NSDMI.
180         * method.c (walk_field_subobs): Check for NSDMI.
181         * parser.c (cp_parser_member_declaration): Parse { } init.
182         * semantics.c (register_constexpr_fundef): Don't talk about
183         a return statement in a constexpr constructor.
184         (cxx_eval_call_expression): Check DECL_INITIAL instead of
185         DECL_SAVED_TREE.
187 2011-09-24  Paolo Carlini  <paolo.carlini@oracle.com>
189         PR c++/44267
190         * class.c (build_base_path): Add a tsubst_flags_t parameter.
191         (convert_to_base): Adjust call.
192         * typeck.c (build_class_member_access_expr,
193         get_member_function_from_ptrfunc, build_static_cast_1): Likewise.
194         * init.c (dfs_initialize_vtbl_ptrs, emit_mem_initializers): Likewise.
195         * method.c (do_build_copy_constructor, do_build_copy_assign): Likewise.
196         * rtti.c (build_dynamic_cast_1): Likewise.
197         * typeck2.c (build_scoped_ref, build_m_component_ref): Likewise.
198         * call.c (build_over_call, build_special_member_call): Likewise.
199         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
200         build_up_reference): Likewise.
201         * cp-tree.h (build_base_path): Adjust declaration.
203 2011-09-23  Jason Merrill  <jason@redhat.com>
205         Core 253 - allow const objects with no initializer or
206         user-provided default constructor if the defaulted constructor
207         initializes all the subobjects.
208         PR c++/20039
209         PR c++/42844
210         * class.c (default_init_uninitialized_part): New.
211         * cp-tree.h: Declare it.
212         * decl.c (check_for_uninitialized_const_var): Use it.
213         * init.c (perform_member_init): Likewise.
214         (build_new_1): Likewise.
215         * method.c (walk_field_subobs): Likewise.
217 2011-09-23  Paolo Carlini  <paolo.carlini@oracle.com>
219         PR c++/50258
220         * decl.c (check_static_variable_definition): Allow in-class
221         initialization of static data member of non-integral type in
222         permissive mode.
224 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
226         PR c++/50491
227         * semantics.c (potential_constant_expression_1): Handle USING_DECL.
229 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
231         PR c++/50371
232         * pt.c (invalid_nontype_parm_type_p): Handle NULLPTR_TYPE.
234 2011-09-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
235             Paolo Carlini  <paolo.carlini@oracle.com>
237         PR c++/50344
238         * friend.c (make_friend_class): cv-qualification is ok in a
239         friend declaration.
241 2011-09-21  Paolo Carlini  <paolo.carlini@oracle.com>
243         PR c++/50454
244         * decl.c (grokdeclarator): Consistently handle both __int128
245         and unsigned __int128 with -pedantic; suppress diagnostic in
246         system headers.
248 2011-09-20  Jason Merrill  <jason@redhat.com>
250         * cp-tree.h (DECL_TEMPLOID_INSTANTIATION): New.
251         (DECL_GENERATED_P): New.
252         * class.c (finalize_literal_type_property): Use them.
253         * semantics.c (is_instantiation_of_constexpr): Likewise.
254         (register_constexpr_fundef): Likewise.
256         * call.c (convert_default_arg): Avoid redundant copy.
257         * tree.c (bot_manip): Copy everything.
259 2011-09-20 Roberto Agostino Vitillo <ravitillo@lbl.gov>
261         * call.c (build_new_method_call_1): Use non-virtual lookup
262         for final virtual functions.
264 2011-09-16  Jason Merrill  <jason@redhat.com>
266         PR c++/50424
267         * call.c (set_flags_from_callee): Split out from build_call_a.
268         * cp-tree.h: Declare it.
269         * tree.c (bot_manip): Call it.
271 2011-09-15  Jason Merrill  <jason@redhat.com>
273         PR c++/50365
274         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
275         for clearing current_class_ptr, too.
277 2011-09-14   Diego Novillo  <dnovillo@google.com>
279         * name-lookup.c (lookup_arg_dependent): Use conditional
280         timevars.
281         * decl.c (xref_tag): Likewise.
283 2011-09-14  Paolo Carlini  <paolo.carlini@oracle.com>
285         PR c++/50391
286         * pt.c (regenerate_decl_from_template): Don't pass an error_mark_node
287         to build_exception_variant.
289 2011-09-13  Dodji Seketeli  <dodji@redhat.com>
291         PR c++/48320
292         * pt.c (template_parameter_pack_p): Support TEMPLATE_PARM_INDEX
293         nodes.  Add a comment.
294         (arg_from_parm_pack_p):  New static function, factorized out from
295         tsubst_pack_expansion and extended to support non-type parameter
296         packs represented with TEMPLATE_PARM_INDEX nodes.
297         (tsubst_pack_expansion): Use arg_from_parm_pack_p.
299 2011-09-12  Jason Merrill  <jason@redhat.com>
301         * pt.c (type_unification_real): Fix handling of DEDUCE_CONV
302         with no deducible template parameters.
303         * call.c (rejection_reason_code): Add rr_template_conversion.
304         (print_z_candidate): Handle it.
305         (template_conversion_rejection): New.
306         (build_user_type_conversion_1): Use it.
308         * call.c (merge_conversion_sequences): Set bad_p and user_conv_p
309         on all of the second conversion sequence.
310         (build_user_type_conversion_1): Set bad_p on the ck_user conv.
311         (convert_like_real): Handle bad ck_ref_bind with user_conv_p in the
312         first section.  Fix loop logic.
313         (initialize_reference): Call convert_like for diagnostics when
314         we have a (bad) conversion.
316         * call.c (convert_class_to_reference)
317         (convert_class_to_reference_1): Remove.
318         (reference_binding): Use build_user_type_conversion_1 instead.
320         * call.c (initialize_reference): Add flags parm.
321         * decl.c (grok_reference_init): Likewise.
322         (check_initializer): Pass it.
323         * typeck.c (convert_for_initialization): Likewise.
324         * cp-tree.h: Adjust.
326         * cp-tree.h (LOOKUP_NO_RVAL_BIND): New.
327         * call.c (conditional_conversion): Use it.
328         (reference_binding): Fix handling of xvalues.
330 2011-09-09  Jason Merrill  <jason@redhat.com>
332         * call.c (implicit_conversion): Check BRACE_ENCLOSED_INITIALIZER_P
333         before forcing instantiation.
335 2011-09-08  Paolo Carlini  <paolo.carlini@oracle.com>
337         PR c++/50324
338         * typeck2.c (digest_init_r): Call complete_type_or_maybe_complain
339         instead of complete_type_or_else.
341 2011-09-08  Dodji Seketeli  <dodji@redhat.com>
343         PR c++/33255 - Support -Wunused-local-typedefs warning
344         * name-lookup.c (pushdecl_maybe_friend_1): Use the new
345         record_locally_defined_typedef.
346         * decl.c (finish_function): Use the new
347         maybe_warn_unused_local_typedefs.
348         (grokfield): Use the new record_locally_defined_typedef.
349         * parser.c (lookup_name): Use the new maybe_record_typedef_use.
351 2011-09-07  Paolo Carlini  <paolo.carlini@oracle.com>
353         PR c++/50309
354         * decl.c (grokdeclarator): Check u.function.exception_specification
355         for error_mark_node.
357 2011-09-07  Jason Merrill  <jason@redhat.com>
359         PR c++/50298
360         * parser.c (cp_parser_member_declaration): Don't require a constant
361         rvalue here in C++0x.
363         * pt.c (type_unification_real): Correct complain arg for tsubsting
364         default template args.
366         * pt.c (tsubst_aggr_type): Check TYPE_P before tsubsting.
368 2011-09-06  Jason Merrill  <jason@redhat.com>
370         PR c++/50296
371         * semantics.c (register_constexpr_fundef): Call is_valid_constexpr_fn.
372         (cx_check_missing_mem_inits): Handle bases and empty trivial members.
373         (validate_constexpr_fundecl): Remove.
374         * decl.c (start_preparsed_function): Don't call it.
375         * cp-tree.h: Don't declare it.
377 2011-09-04  Jason Merrill  <jason@redhat.com>
379         PR c++/49267
380         * call.c (reference_binding): Don't set is_lvalue for an rvalue
381         reference rfrom.
383         PR c++/49267
384         PR c++/49458
385         DR 1328
386         * call.c (reference_binding): Set rvaluedness_matches_p properly
387         for reference to function conversion ops.
388         (compare_ics): Adjust.
390         * class.c (trivial_default_constructor_is_constexpr): Rename from
391         synthesized_default_constructor_is_constexpr.
392         (type_has_constexpr_default_constructor): Adjust.
393         (add_implicitly_declared_members): Call it instead.
394         (explain_non_literal_class): Explain about non-constexpr default ctor.
395         * cp-tree.h: Adjust.
396         * method.c (synthesized_method_walk): Adjust.
397         * semantics.c (explain_invalid_constexpr_fn): Handle defaulted
398         functions, too.
400         PR c++/50248
401         Core 1358
402         * init.c (perform_member_init): Don't diagnose missing inits here.
403         (emit_mem_initializers): Or here.
404         * method.c (process_subob_fn): Don't instantiate constexpr ctors.
405         * semantics.c (cx_check_missing_mem_inits): New.
406         (explain_invalid_constexpr_fn): Call it.
407         (register_constexpr_fundef): Likewise.  Leave
408         DECL_DECLARED_CONSTEXPR_P set when the body is unsuitable.
409         (cxx_eval_call_expression): Adjust diagnostics.
410         (cxx_eval_constant_expression): Catch use of 'this' in a constructor.
412 2011-08-30  Jason Merrill  <jason@redhat.com>
414         PR c++/50084
415         * cp-tree.h (cp_decl_specifier_seq): Rename user_defined_type_p
416         to type_definition_p.
417         * parser.c (cp_parser_set_decl_spec_type): Likewise.
418         * decl.c (grokdeclarator): Check it.
420         PR c++/50089
421         * semantics.c (finish_id_expression): Use
422         current_nonlambda_class_type for qualified-ids.
424         PR c++/50114
425         * decl.c (poplevel): Disable for scope compatibility hack
426         in C++11 mode.
428         PR c++/50220
429         * semantics.c (add_capture): Call complete_type for copy.
431         PR c++/50234
432         * semantics.c (cxx_eval_component_reference): Handle
433         value-initialization for omitted initializers.
435 2011-08-29  Jason Merrill  <jason@redhat.com>
437         PR c++/50224
438         * semantics.c (finish_id_expression): Mark captured variables used.
440 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
441             Jason Merrill  <jason@redhat.com>
443         PR c++/50207
444         * class.c (finish_struct_1): Complain if the first field is
445         artificial.
447 2011-08-29  Jason Merrill  <jason@redhat.com>
449         PR c++/50209
450         Core DR 994
451         * parser.c (cp_parser_default_argument): Use
452         cp_parser_initializer_clause.
453         (cp_parser_late_parsing_default_args): Likewise.
455 2011-08-26  Jason Merrill  <jason@redhat.com>
457         Core DR 342
458         PR c++/48582
459         * pt.c (check_valid_ptrmem_cst_expr): A null member pointer value
460         is valid in C++11.
461         (convert_nontype_argument): Likewise.  Implicitly convert nullptr
462         and do constant folding.
463         * mangle.c (write_template_arg_literal): Mangle null member
464         pointer values as 0.
465         * call.c (null_member_pointer_value_p): New.
466         * cp-tree.h: Declare it.
468 2011-08-25  Jason Merrill  <jason@redhat.com>
470         * call.c (convert_like_real): Remove redundant complain checks.
472         PR c++/50157
473         * call.c (convert_like_real): Exit early if bad and !tf_error.
475 2011-08-23  Jason Merrill  <jason@redhat.com>
477         * typeck2.c (build_functional_cast): Don't try to avoid calling
478         build_value_init.
479         * pt.c (instantiate_class_template_1): Don't copy TYPE_HAS_* flags.
481 2011-08-23  Jason Merrill  <jason@redhat.com>
483         PR c++/49045
484         Core 1321
485         * tree.c (dependent_name): New.
486         (cp_tree_equal): Two calls with the same dependent name are
487         equivalent even if the overload sets are different.
489 2011-08-23  Jason Merrill  <jason@redhat.com>
491         * tree.c (build_target_expr): Set TREE_CONSTANT on
492         literal TARGET_EXPR if the value is constant.
493         * typeck2.c (build_functional_cast): Don't set it here.
495 2011-08-23  Jason Merrill  <jason@redhat.com>
497         Core 903 (partial)
498         * call.c (null_ptr_cst_p): Only 0 qualifies in C++11.
500 2011-08-23  Jason Merrill  <jason@redhat.com>
502         Core 975
503         * decl.c (cxx_init_decl_processing): Initialize
504         dependent_lambda_return_type_node.
505         * cp-tree.h (cp_tree_index): Add CPTI_DEPENDENT_LAMBDA_RETURN_TYPE.
506         (dependent_lambda_return_type_node): Define.
507         (DECLTYPE_FOR_LAMBDA_RETURN): Remove.
508         * semantics.c (lambda_return_type): Handle overloaded function.
509         Use dependent_lambda_return_type_node instead of
510         DECLTYPE_FOR_LAMBDA_RETURN.
511         (apply_lambda_return_type): Don't check dependent_type_p.
512         * pt.c (tsubst_copy_and_build): Handle lambda return type deduction.
513         (instantiate_class_template_1): Likewise.
514         (tsubst): Don't use DECLTYPE_FOR_LAMBDA_RETURN.
515         * mangle.c (write_type): Likewise.
516         * typeck.c (structural_comptypes): Likewise.
517         (check_return_expr): Handle dependent_lambda_return_type_node.
519 2011-08-23  Jason Merrill  <jason@redhat.com>
521         PR c++/50024
522         * semantics.c (maybe_constant_value): Don't try to fold { }.
523         * pt.c (build_non_dependent_expr): Don't wrap { }.
524         * init.c (build_value_init): Allow scalar value-init in templates.
526 2011-08-23  Jason Merrill  <jason@redhat.com>
528         * semantics.c (potential_constant_expression_1): Allow 'this'.
530 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
532         PR c++/50158
533         * typeck.c (cp_build_modify_expr): Call mark_rvalue_use on rhs
534         if it has side-effects and needs to be preevaluated.
536 2011-08-23  Siddhesh Poyarekar  <siddhesh.poyarekar@gmail.com>
538         PR c++/50055
539         * except.c (begin_eh_spec_block): Build EH_SPEC block on the
540         same line as the function.
542 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
544         PR c++/46862
545         * class.c (finish_struct_1): If TYPE_TRANSPARENT_AGGR is set on a type
546         which doesn't have any fields, clear it and diagnose.
548 2011-08-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
549             Marc Glisse  <marc.glisse@normalesup.org>
551         PR libstdc++-v3/1773
552         * mangle.c (decl_mangling_context): Call
553         targetm.cxx.decl_mangling_context.
554         (write_unscoped_name): Use decl_mangling_context.
556 2011-08-18  Dodji Seketeli  <dodji@redhat.com>
558         PR c++/45625
559         * pt.c (parameter_of_template_p): Handle comparison with DECLs of
560         template parameters as created by process_template_parm.
562 2011-08-16  Jason Merrill  <jason@redhat.com>
564         PR c++/50086
565         * pt.c (unify_pack_expansion): Correct overloaded unification
566         logic.
568         * pt.c (instantiate_class_template_1): If DECL_PRESERVE_P is set
569         on a member function or static data member, call mark_used.
571         PR c++/50054
572         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
573         init_list_type_node.
575 2011-08-13  Jason Merrill  <jason@redhat.com>
577         PR c++/50075
578         * name-lookup.c (local_bindings_p): New.
579         * name-lookup.h: Declare it.
580         * lex.c (unqualified_name_lookup_error): Use it.
582         PR c++/50059
583         * error.c (dump_expr): Handle MODIFY_EXPR properly.
585         * decl.c (grok_reference_init): Handle constexpr here.
586         * call.c (initialize_reference): Not here.
588 2011-08-12  David Li  <davidxl@google.com>
590         * class.c (update_vtable_entry_for_fn): Set
591         LOST_PRIMARY bit properly.
593 2011-08-12  Jason Merrill  <jason@redhat.com>
595         PR c++/50034
596         * call.c (convert_arg_to_ellipsis): force_rvalue only in
597         potentially evaluated context.
599 2011-08-12  Richard Guenther  <rguenther@suse.de>
601         * call.c (build_over_call): Instead of memcpy use an
602         assignment of two MEM_REFs.
604 2011-08-11  Romain Geissler  <romain.geissler@gmail.com>
605             Brian Hackett  <bhackett1024@gmail.com>
607         * decl.c (cp_finish_decl): Invoke callbacks on finish_decl event.
609 2011-08-10  Richard Guenther  <rguenther@suse.de>
611         * call.c (build_over_call): Call memcpy unconditionally.
613 2011-08-08  Jason Merrill  <jason@redhat.com>
615         PR c++/50020
616         * semantics.c (finish_call_expr): Don't look at 'this' if we
617         had an explicit object argument.
619         PR c++/50011
620         * typeck2.c (check_narrowing): Fix integer logic.
622 2011-08-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
624         * Make-lang.in (g++$(exeext)): Add $(EXTRA_GCC_LIBS).
626 2011-08-05  Jason Merrill  <jason@redhat.com>
628         PR c++/48993
629         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Sorry
630         on 'this' in a constructor.
632         PR c++/49921
633         * semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p.
635         PR c++/49669
636         * init.c (perform_member_init): Handle invalid array initializer.
638         PR c++/49988
639         * semantics.c (cxx_eval_array_reference): Handle failure to
640         reduce the array operand to something we can work with.
642 2011-08-05  Gabriel Charette  <gchare@google.com>
644         * decl.c (finish_function): Remove unecessary line 0 hack.
646 2011-08-05  Jason Merrill  <jason@redhat.com>
648         PR c++/47453
649         * typeck.c (build_x_compound_expr_from_list): Also complain
650         about ({...}).
652         PR c++/49812
653         * typeck.c (cp_build_unary_op) [POSTINCREMENT_EXPR]: Strip cv-quals.
655         PR c++/49983
656         * parser.c (cp_parser_range_for): Only do auto deduction in
657         template if the range is non-dependent.
659         * init.c (perform_member_init): Always build_aggr_init
660         for a class member with an explicit mem-initializer.
662         * pt.c (unify) [TEMPLATE_TYPE_PARM]: Allow VLA for C++0x 'auto'.
664 2011-08-04  Jakub Jelinek  <jakub@redhat.com>
666         PR middle-end/49905
667         * decl.c (cxx_init_decl_processing): Add alloc_size (1) attribute
668         for operator new and operator new [].  Call init_attributes.
670 2011-08-02  Jason Merrill  <jason@redhat.com>
672         PR c++/43886
673         * parser.c (cp_parser_lambda_body): Clear local_variables_forbidden_p.
675         PR c++/49577
676         * typeck2.c (check_narrowing): Check unsigned mismatch.
677         * semantics.c (finish_compound_literal): check_narrowing.
679         PR c++/49593
680         * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR.
682         PR c++/49803
683         * init.c (sort_mem_initializers): Initialize uses_unions_p here.
684         (build_field_list): Not here.
686         PR c++/49834
687         * parser.c (build_range_temp): Split out from...
688         (cp_convert_range_for): ...here.
689         (do_range_for_auto_deduction): New.
690         (cp_parser_range_for): Use it.
692 2011-08-02  Jakub Jelinek  <jakub@redhat.com>
694         * cp-tree.h (finish_omp_atomic): Adjust prototype.
695         (cxx_omp_const_qual_no_mutable): New prototype.
696         (finish_omp_taskyield): New prototype.
697         * parser.c (cp_parser_omp_atomic): (cp_parser_omp_atomic): Handle
698         parsing OpenMP 3.1 atomics.  Adjust finish_omp_atomic caller.
699         (cp_parser_omp_clause_name): Handle final and mergeable clauses.
700         (cp_parser_omp_clause_final, cp_parser_omp_clause_mergeable): New
701         functions.
702         (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FINAL
703         and PRAGMA_OMP_CLAUSE_MERGEABLE.
704         (OMP_TASK_CLAUSE_MASK): Allow final and mergeable clauses.
705         (cp_parser_omp_taskyield): New function.
706         (cp_parser_pragma): Handle PRAGMA_OMP_TASKYIELD.
707         (cp_parser_omp_clause_reduction): Handle min and max.
708         * pt.c (tsubst_expr) <case OMP_ATOMIC>: Handle OpenMP 3.1 atomics.
709         (tsubst_omp_clauses): Handle OMP_CLAUSE_FINAL and
710         OMP_CLAUSE_MERGEABLE.
711         * semantics.c (finish_omp_atomic): Add OPCODE, V, LHS1 and RHS1
712         arguments.  Handle OpenMP 3.1 atomics.  Adjust c_finish_omp_atomic
713         caller.
714         (finish_omp_clauses): Don't complain about const qualified
715         predetermined vars and static data members in firstprivate clause.
716         Handle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE. Handle MIN_EXPR
717         and MAX_EXPR.
718         (finish_omp_taskyield): New function.
719         * cp-gimplify.c (cxx_omp_const_qual_no_mutable): New function.
720         (cxx_omp_predetermined_sharing): Use it.
722 2011-08-02  Jason Merrill  <jason@redhat.com>
724         * call.c (build_call_a): Also check at_function_scope_p.
726 2011-08-01  Jason Merrill  <jason@redhat.com>
728         PR c++/49932
729         * mangle.c (write_prefix): Handle decltype.
731         PR c++/49924
732         * semantics.c (cxx_eval_vec_init_1): Fix logic.
734         PR c++/49813
735         * semantics.c (potential_constant_expression_1): Allow any builtin.
736         (morally_constexpr_builtin_function_p): Remove.
738 2011-07-29  Jason Merrill  <jason@redhat.com>
740         PR c++/49867
741         * parser.c (cp_parser_lambda_expression): Also clear in_statement
742         and in_switch_statement_p.
743         (cp_parser_class_specifier): Likewise.
745 2011-07-28  Jason Merrill  <jason@redhat.com>
747         PR c++/49808
748         * pt.c (tsubst) [TEMPLATE_PARM_INDEX]: Call convert_from_reference.
749         (convert_nontype_argument, tsubst_template_arg): Handle its output.
751 2011-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
753         PR c++/49813
754         * semantics.c (potential_constant_expression_1):  Handle FMA_EXPR.
756 2011-07-27  Jeffrey Yasskin  <jyasskin@google.com>
758         * pt.c (build_template_decl): Copy the function_decl's
759         source location to the new template_decl.
761 2011-07-26  Paolo Carlini  <paolo.carlini@oracle.com>
763         PR c++/49776
764         * typeck.c (cp_build_modify_expr): Check digest_init return value
765         for error_mark_node.
767 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
769         PR bootstrap/49845
770         * parser.c (cp_parser_perform_range_for_lookup): Always assign *being
771         and *end before returning.
773 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
775         PR c++/49838
776         * parser.c (cp_parser_perform_range_for_lookup): Early return if
777         error_operand_p (range).
779 2011-07-23  Jason Merrill  <jason@redhat.com>
781         PR c++/49823
782         * parser.c (cp_parser_qualifying_entity): Handle templates.
784 2011-07-22  Jason Merrill  <jason@redhat.com>
786         PR c++/49793
787         * typeck2.c (check_narrowing): Downgrade permerror to pedwarn.
788         Make conditional on -Wnarrowing.
790 2011-07-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
792         Warn about the use of final/override in non-c++0x mode, and
793         add __final for non-c++0x mode.
794         * cp-tree.h (cpp0x_warn_str): Add CPP0X_OVERRIDE_CONTROLS.
795         * error.c (maybe_warn_cpp0x): Adjust.
796         * parser.c (cp_parser_virt_specifier_seq_opt): Use it. Add
797         '__final' as a non-c++0x alternative for 'final'.
799 2011-07-22  Jason Merrill  <jason@redhat.com>
800             Mark Glisse  <marc.glisse@normalesup.org>
802         PR c++/30112
803         * decl.c (cp_finish_decl): Apply pragma redefine_extname in
804         other namespaces as well.
805         * name-lookup.c (c_linkage_bindings): Define.
806         (lookup_extern_c_fun_in_all_ns): Rename from
807         lookup_extern_c_fun_binding_in_all_ns.  Return tree.
808         (pushdecl_maybe_friend_1): Adjust.  Copy DECL_ASSEMBLER_NAME.
810 2011-07-20  Jason Merrill  <jason@redhat.com>
812         * parser.c (cp_parser_initializer_list): Handle C99 .id= and [N]=
813         designated initializer syntax.
814         * decl.c (check_array_designated_initializer): Add index parm.
815         (maybe_deduce_size_from_array_init): Pass it.
816         (reshape_init_array_1): Likewise.
818         PR c++/6709 (DR 743)
819         PR c++/42603 (DR 950)
820         * parser.c (token_is_decltype, cp_lexer_next_token_is_decltype): New.
821         (cp_parser_nested_name_specifier_opt): Allow decltype.
822         (cp_parser_qualifying_entity): Likewise.
823         (cp_parser_decltype): Replace source tokens with CPP_DECLTYPE.
824         (cp_parser_simple_type_specifier): Handle decltype as scope.
825         (cp_parser_base_specifier): Allow decltype.
826         (cp_parser_base_clause): Don't crash on null base.
827         * parser.h (CPP_KEYWORD, CPP_TEMPLATE_ID): Move to c-common.h.
828         (CPP_NESTED_NAME_SPECIFIER, N_CP_TTYPES): Likewise.
830 2011-07-19  Jason Merrill  <jason@redhat.com>
832         PR c++/49785
833         * pt.c (coerce_template_parms): Handle non-pack after pack.
835 2011-07-19  Richard Guenther  <rguenther@suse.de>
837         * call.c (build_special_member_call): Use fold_build_pointer_plus.
838         * class.c (build_base_path): Likewise.
839         (convert_to_base_statically): Likewise.
840         (dfs_accumulate_vtbl_inits): Likewise.
841         * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
842         * except.c (expand_start_catch_block): Likewise.
843         * init.c (expand_virtual_init): Likewise.
844         (build_new_1): Likewise.
845         (build_vec_delete_1): Likewise.
846         (build_vec_delete): Likewise.
847         * rtti.c (build_headof): Likewise.
848         (tinfo_base_init): Likewise.
849         * typeck.c (get_member_function_from_ptrfunc): Likewise.
850         (cp_build_addr_expr_1): Likewise.
851         * typeck2.c (build_m_component_ref): Likewise.
853 2011-07-18  Martin Jambor  <mjambor@suse.cz>
855         * parser.c (cp_parser_parameter_declaration_list): Initialize
856         parenthesized_p.
858 2011-07-16  Jason Merrill  <jason@redhat.com>
860         * pt.c (tinst_level_tick, last_template_error_tick): Replace with
861         last_error_tinst_level.
862         (push_tinst_level, pop_tinst_level): Adjust.
863         (problematic_instantiation_changed): Adjust.
864         (record_last_problematic_instantiation): Adjust.
865         * error.c (cp_print_error_function): Don't print
866         current_function_decl if we're in a template instantiation context.
867         (print_instantiation_full_context): Always print first line.
869 2011-07-16  Nathan Froyd  <froydnj@codesourcery.com>
870             Jason Merrill  <jason@redhat.com>
872         PR c++/45329
873         PR c++/48934
874         * cp-tree.h (fn_type_unification): Add `bool' parameter.
875         * pt.c (enum template_base_result): Define.
876         (unify_success, unify_unknown): Define.
877         (unify_parameter_deduction_failure): Define.
878         (unify_invalid, unify_cv_qual_mismatch, unify_type_mismatch): Define.
879         (unify_parameter_pack_mismatch): Define.
880         (unify_parameter_pack_inconsistent): Define.
881         (unify_ptrmem_cst_mismatch, unify_vla_arg): Define.
882         (unify_expression_unequal, unify_inconsistency): Define.
883         (unify_method_type_error, unify_arity): Likewise.
884         (unify_too_many_parameters, unify_too_few_parameters): Define.
885         (unify_arg_conversion, unify_no_common_base): Define.
886         (unify_illformed_ptrmem_cst_expr): Define.
887         (unify_substitution_failure): Define.
888         (unify_inconsistent_template_template_parameters): Define.
889         (unify_template_deduction_failure): Define.
890         (unify_template_argument_mismatch): Define.
891         (unify_overload_resolution_failure): Define.
892         (comp_template_args_with_info): New function, split out from...
893         (comp_template_args): ...here.  Call it.
894         (deduction_tsubst_fntype): Add `complain' parameter'.  Pass it
895         to tsubst.
896         (unify): Add `explain_p' parameter.  Pass to all relevant calls.
897         Call above status functions when appropriate.
898         (resolve_overloaded_unification, try_one_overload): Likewise.
899         (type_unification, type_unification_real): Likewise.
900         (unify_pack_expansion): Likewise.
901         (get_template_base, try_class_unification): Likewise.
902         (get_bindings, more_specialized_fn): Pass false to unification
903         calls.
904         (get_class_bindings, do_auto_deduction): Likewise.
905         (convert_nontype_argument): Likewise.
906         (fn_type_unification): Likewise.  Pass tf_warning_or_error if
907         explain_p.
908         (get_template_base): Add `explain_p' parameter and pass it to
909         try_class_unification.  Return an enum template_base_result.
910         * class.c (resolve_address_of_overloaded_function): Pass false to
911         fn_type_unification.
912         * call.c (enum rejection_reason_code): Add new codes.
913         (struct rejection_reason): Add template_unification field.
914         Add template_instantiation field.
915         (template_unification_rejection): Define.
916         (template_unification_error_rejection): Define.
917         (template_instantiation_rejection): Define.
918         (invalid_copy_with_fn_template_rejection): Define.
919         (add_template_candidate): Pass false to unify.
920         Provide more rejection reasons when possible.
921         (print_template_unification_rejection): Define.
922         (print_arity_rejection): Define, split out from...
923         (print_z_candidate): ...here.  Add cases for new rejection
924         reasons.
926 2011-07-15  Jason Merrill  <jason@redhat.com>
928         * Make-lang.in (check-g++-strict-gc): New.
929         (cp/except.o): Depend on gt-cp-except.h
930         * except.c: Include gt-cp-except.h.
931         * config-lang.in (gtfiles): Add cp/except.c.
932         * decl2.c (mark_used): Adjust constexpr condition, set
933         function_depth around template instantiation.
934         * parser.c (cp_parser_lambda_body): Set function_depth.
935         * semantics.c (maybe_add_lambda_conv_op): Likewise.
937         PR testsuite/49741
938         * Make-lang.in (check-c++0x): Use --extra_opts instead of--tool_opts.
940 2011-07-13  Jason Merrill  <jason@redhat.com>
942         * Make-lang.in (check-c++0x): New.
944 2011-07-13  Richard Sandiford  <richard.sandiford@linaro.org>
946         * typeck2.c (split_nonconstant_init_1): Pass the initializer directly,
947         rather than a pointer to it.  Return true if the whole of the value
948         was initialized by the generated statements.  Use
949         complete_ctor_at_level_p instead of count_type_elements.
951 2011-07-12   Diego Novillo  <dnovillo@google.com>
953         * name-lookup.h (cp_binding_level): Rename from cxx_scope.
954         Update all users.
955         (struct cp_binding_level): Fix indentation.
957 2011-07-11  Jason Merrill  <jason@redhat.com>
959         PR c++/49672
960         * pt.c (extract_fnparm_pack): Split out from...
961         (make_fnparm_pack): ...here.
962         (instantiate_decl): Handle non-pack parms after a pack.
963         * semantics.c (maybe_add_lambda_conv_op): Don't in a template.
965         * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p.
967         PR c++/44609
968         * cp-tree.h (struct tinst_level): Add errors field.
969         * pt.c (neglectable_inst_p, limit_bad_template_recurson): New.
970         (push_tinst_level): Don't start another decl in that case.
971         (reopen_tinst_level): Adjust errors field.
972         * decl2.c (cp_write_global_declarations): Don't complain about
973         undefined inline if its template was defined.
974         * mangle.c (mangle_decl_string): Handle failure from push_tinst_level.
976 2011-07-10  Jason Merrill  <jason@redhat.com>
978         PR c++/49691
979         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
980         rather than current_class_type to determine whether to set 'this'.
981         (cp_parser_direct_declarator): Pass -1 to quals if member_p is false.
982         (cp_parser_init_declarator): Pass down member_p.
984 2011-07-09  Jason Merrill  <jason@redhat.com>
986         * tree.c (build_vec_init_elt): Strip TARGET_EXPR.
988 2011-07-08  Jason Merrill  <jason@redhat.com>
990         PR c++/45437
991         * typeck.c (cp_build_modify_expr): Preevaluate RHS.
993         * method.c (use_thunk): Use cgraph_add_to_same_comdat_group.
994         * optimize.c (maybe_clone_body): Likewise.
995         * semantics.c (maybe_add_lambda_conv_op): Likewise.
997         PR c++/45603
998         * decl.c (expand_static_init): Don't get confused by user
999         declaration of __cxa_guard_acquire.
1001         * typeck.c (cp_apply_type_quals_to_decl): Don't check
1002         COMPLETE_TYPE_P either.
1004         PR c++/49673
1005         * typeck.c (cp_apply_type_quals_to_decl): Don't check
1006         TYPE_NEEDS_CONSTRUCTING.
1008 2011-07-07  Jason Merrill  <jason@redhat.com>
1010         PR c++/49663
1011         * pt.c (push_deduction_access_scope): Preserve
1012         processing_template_decl across push_to_top_level.
1013         And revert:
1014         * class.c (pushclass): Accept NULL argument.
1015         (popclass): Deal with popping null class.
1016         * pt.c (push_access_scope, pop_access_scope): Use them rather than
1017         push_to_top_level/pop_from_top_level.
1018         * name-lookup.c (lookup_name_real_1): Check current_class_type.
1020 2011-07-07  Jakub Jelinek  <jakub@redhat.com>
1022         PR c/49644
1023         * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
1024         one non-complex and one complex argument, call save_expr on both
1025         operands.
1027 2011-07-06  Jason Merrill  <jason@redhat.com>
1029         PR c++/49353
1030         * semantics.c (expand_or_defer_fn_1): Clear DECL_EXTERNAL
1031         on kept inlines.
1033         PR c++/49568
1034         * method.c (make_thunk, use_thunk): Copy DECL_COMDAT.
1036 2011-07-05  Jason Merrill  <jason@redhat.com>
1038         PR c++/48157
1039         * pt.c (tsubst_qualified_id): Preserve TEMPLATE_ID_EXPR in
1040         partial instantiation.
1042         PR c++/49598
1043         * semantics.c (finish_id_expression): convert_from_reference.
1045 2011-07-05  Richard Guenther  <rguenther@suse.de>
1047         * decl.c (cxx_init_decl_processing): Defer building common
1048         tree nodes to c_common_nodes_and_builtins.
1050 2011-07-04  Jason Merrill  <jason@redhat.com>
1052         DR 1207
1053         PR c++/49589
1054         * mangle.c (write_expression): Handle 'this'.
1055         * parser.c (cp_parser_postfix_dot_deref_expression): Allow
1056         incomplete *this.
1057         * semantics.c (potential_constant_expression_1): Check that
1058         DECL_CONTEXT is set on 'this'.
1060         * error.c (dump_template_bindings): Don't print typenames
1061         for a partial instantiation.
1062         (dump_function_decl): If we aren't printing function arguments,
1063         print template arguments as <args> rather than [with ...].
1064         (dump_expr): Don't print return type or template header.
1065         [BASELINK]: Use BASELINK_FUNCTIONS rather than get_first_fn.
1066         * pt.c (dependent_template_arg_p): Handle null arg.
1068         * error.c (type_to_string): Avoid redundant akas.
1070 2011-07-01  Jonathan Wakely  <jwakely.gcc@gmail.com>
1072         PR c++/49605
1073         * init.c (build_delete): Only warn for sfk_deleting_destructor.
1075 2011-07-01  Jakub Jelinek  <jakub@redhat.com>
1077         * Make-lang.in (cp/decl.o): Depend on pointer-set.h.
1078         (cp/class.o): Likewise.
1079         (cp/error.o): Likewise.
1080         (cp/name-lookup.o): Likewise.
1081         (cp/decl2.o): Likewise.  Don't depend on $(POINTER_SET_H).
1083 2011-07-01  Jason Merrill  <jason@redhat.com>
1085         PR c++/48261
1086         * pt.c (lookup_template_function): Handle non-function.
1088         PR c++/48593
1089         * pt.c (tsubst_qualified_id): Check PTRMEM_OK_P.
1090         * tree.c (build_qualified_name): Set PTRMEM_OK_P.
1091         * semantics.c (finish_parenthesized_expr): Clear PTRMEM_OK_P on
1092         SCOPE_REF, too.
1093         * cp-tree.h (PTRMEM_OK_P): Apply to SCOPE_REF, too.
1094         (QUALIFIED_NAME_IS_TEMPLATE): Switch to lang flag 1.
1096         PR c++/48883
1097         PR c++/49609
1098         * pt.c (resolve_nondeduced_context): Call mark_used.
1100         PR c++/49085
1101         * semantics.c (finish_offsetof): Complain about incomplete type.
1103 2011-06-30  Jason Merrill  <jason@redhat.com>
1105         PR c++/49387
1106         * rtti.c (get_tinfo_decl): Call complete_type.
1108         PR c++/49569
1109         * method.c (implicitly_declare_fn): Set DECL_PARM_LEVEL and
1110         DECL_PARM_INDEX on rhs parm.
1112         * pt.c (iterative_hash_template_arg): Use cp_tree_operand_length.
1114         PR c++/49355
1115         * tree.c (stabilize_init): Handle aggregate initialization.
1117         PR c++/48481
1118         * name-lookup.c (struct arg_lookup): Add fn_set.
1119         (add_function): Check it.
1120         (lookup_arg_dependent_1): Initialize it.
1122 2011-06-29  Jason Merrill  <jason@redhat.com>
1124         PR c++/49216
1125         * init.c (build_new_1): Pass {} down to build_vec_init.
1126         (build_vec_init): Handle it.
1128         DR 1207
1129         PR c++/49003
1130         * cp-tree.h (struct saved_scope): Add x_current_class_ptr,
1131         x_current_class_ref.
1132         (current_class_ptr, current_class_ref): Use them.
1133         * decl.c (build_this_parm): Handle getting the class type.
1134         * parser.c (cp_parser_late_return_type_opt): Set up 'this'
1135         for use within the trailing return type.
1137         * pt.c (tsubst_decl) [VAR_DECL]: In unevaluated operand,
1138         don't tsubst DECL_INITIAL unless our type use auto.
1140         PR c++/49520
1141         * semantics.c (constexpr_fn_retval): Handle CLEANUP_POINT_EXPR here.
1142         (massage_constexpr_body): Not here.
1144         PR c++/49554
1145         * semantics.c (lambda_proxy_type): New.
1146         (build_capture_proxy): Use it.
1147         * cp-tree.h (DECLTYPE_FOR_LAMBDA_PROXY): New.
1148         * pt.c (tsubst) [DECLTYPE_TYPE]: Use them.
1150         PR c++/45923
1151         * class.c (explain_non_literal_class): New.
1152         (finalize_literal_type_property): Call it.
1153         * cp-tree.h: Declare it.
1154         * semantics.c (ensure_literal_type_for_constexpr_object): Call it.
1155         (is_valid_constexpr_fn): Likewise.
1156         (massage_constexpr_body): Split out from...
1157         (register_constexpr_fundef): ...here.
1158         (is_instantiation_of_constexpr): New.
1159         (expand_or_defer_fn_1): Leave DECL_SAVED_TREE alone in that case.
1160         (explain_invalid_constexpr_fn): New.
1161         (cxx_eval_call_expression): Call it.
1162         (potential_constant_expression_1): Likewise.  Avoid redundant errors.
1163         * method.c (process_subob_fn): Diagnose non-constexpr.
1164         (walk_field_subobs): Likewise.
1165         (synthesized_method_walk): Don't shortcut if we want diagnostics.
1166         (explain_implicit_non_constexpr): New.
1167         (defaulted_late_check): Use it.
1168         * call.c (build_cxx_call): Remember location.
1170         * method.c (maybe_explain_implicit_delete): Use pointer_set
1171         instead of htab.
1173         * class.c (finalize_literal_type_property): Update conditions.
1174         * method.c (defaulted_late_check): Set TYPE_HAS_CONSTEXPR_CTOR.
1176         * tree.c (build_vec_init_expr): Don't add TARGET_EXPR.
1177         * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR.
1178         * semantics.c (cxx_eval_vec_init_1): Correct type.
1180         * init.c (build_value_init): Decide whether or not to zero-initialize
1181         based on user-providedness of default ctor, not any ctor.
1182         (build_value_init_noctor): Adjust assert.
1184         DR 990
1185         * call.c (convert_like_real) [ck_user]: Handle value-initialization.
1186         (build_new_method_call_1): Likewise.
1187         * init.c (expand_default_init): Handle direct list-initialization
1188         of aggregates.
1190 2011-06-27  Jakub Jelinek  <jakub@redhat.com>
1192         * cp-tree.h (union lang_tree_node): Use it in chain_next expression.
1194 2011-06-26  Jason Merrill  <jason@redhat.com>
1196         PR c++/49528
1197         * semantics.c (potential_constant_expression_1): Check
1198         for non-literality rather than cleanup.
1199         (cxx_eval_constant_expression): Likewise.
1201         PR c++/49528
1202         * semantics.c (potential_constant_expression_1): A TARGET_EXPR
1203         with a cleanup isn't constant.
1204         (cxx_eval_constant_expression): Likewise.
1205         * init.c (expand_default_init): Use maybe_constant_init.
1207 2011-06-24  Jakub Jelinek  <jakub@redhat.com>
1209         PR c++/46400
1210         * cp-tree.h (union lang_tree_node): Use TYPE_NEXT_VARIANT
1211         instead of TYPE_CHAIN for chain_next for types.
1213 2011-06-23  Gabriel Charette  <gchare@google.com>
1215         * name-lookup.h (cp_binding_level): Removed unused
1216         member names_size. Update all users.
1218 2011-06-23  Jason Merrill  <jason@redhat.com>
1220         * typeck2.c (build_functional_cast): Strip cv-quals for value init.
1221         * init.c (build_zero_init_1): Not here.
1223         PR c++/35255
1224         * pt.c (resolve_overloaded_unification): Fix DR 115 handling.
1226 2011-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
1228         PR c++/44625
1229         * decl2.c (build_anon_union_vars): Early return error_mark_node
1230         for a nested anonymous struct.
1232 2011-06-23  Jason Merrill  <jason@redhat.com>
1234         PR c++/49507
1235         * decl2.c (mark_used): Don't call synthesize_method for
1236         functions defaulted outside the class.
1238         * optimize.c (maybe_clone_body): Set linkage flags before
1239         cgraph_same_body_alias.
1241         PR c++/49440
1242         * class.c (set_linkage_according_to_type): Hand off to
1243         determine_visibility.
1245         PR c++/49395
1246         * init.c (build_zero_init_1): Strip cv-quals from scalar types.
1248         PR c++/36435
1249         * pt.c (most_specialized_instantiation): Do check return types.
1251 2011-06-22  Jason Merrill  <jason@redhat.com>
1253         PR c++/49260
1254         * call.c (build_call_a): Set cp_function_chain->can_throw here.
1255         (build_cxx_call): Not here.
1257 2011-06-21  Jason Merrill  <jason@redhat.com>
1259         PR c++/49172
1260         * decl.c (cp_finish_decl): Adjust init_const_expr_p for refs.
1261         (grokdeclarator): constexpr doesn't apply const for refs.
1262         * parser.c (cp_parser_initializer_clause): Don't call
1263         maybe_constant_value here.
1264         * call.c (initialize_reference): Handle constexpr.
1266         PR c++/49482
1267         * semantics.c (maybe_add_lambda_conv_op): Call mark_exp_read for
1268         static fn parameters.
1270         * call.c (add_builtin_candidates): Use cv_unqualified rather than
1271         TYPE_MAIN_VARIANT.
1272         * pt.c (tsubst_arg_types): Likewise.
1273         * except.c (build_throw): Use cv_unqualified.
1275         PR c++/49418
1276         * call.c (cxx_type_promotes_to): Don't strip cv-quals.
1277         * semantics.c (lambda_return_type): Strip them here.
1279 2011-06-21  Andrew MacLeod  <amacleod@redhat.com>
1281         * semantics.c: Add sync_ or SYNC__ to builtin names.
1283 2011-06-20  Jason Merrill  <jason@redhat.com>
1285         PR c++/49216
1286         * init.c (build_vec_init): Don't try to use a CONSTRUCTOR when
1287         base is a pointer.
1288         * typeck2.c (process_init_constructor_array): Use {} for classes,
1289         too.
1290         * call.c (convert_like_real): Handle substitution failure.
1292         PR c++/48138
1293         * pt.c (canonicalize_type_argument): New.
1294         (convert_template_argument, unify): Use it.
1296         PR c++/47080
1297         * call.c (rejection_reason_code): Add rr_explicit_conversion.
1298         (print_z_candidate): Handle it.
1299         (explicit_conversion_rejection): New.
1300         (build_user_type_conversion_1): Reject an explicit conversion
1301         function that requires more than a qualification conversion.
1303         PR c++/47635
1304         * decl.c (grokdeclarator): Don't set ctype to an ENUMERAL_TYPE.
1306         PR c++/48138
1307         * tree.c (strip_typedefs): Use build_aligned_type.
1309         PR c++/49205
1310         * call.c (sufficient_parms_p): Allow parameter packs too.
1312         PR c++/43321
1313         * semantics.c (describable_type): Remove.
1314         * cp-tree.h: Likewise.
1315         * decl.c (cp_finish_decl): Don't call it.
1316         * init.c (build_new): Likewise.
1317         * parser.c (cp_parser_omp_for_loop): Likewise.
1318         * pt.c (tsubst_decl): Likewise.
1319         (do_auto_deduction): If we fail in a template, try again
1320         at instantiation time.
1322         PR c++/43831
1323         * parser.c (cp_parser_lambda_introducer): Complain about redundant
1324         captures.
1325         * semantics.c (add_capture): Likewise.
1326         (register_capture_members): Clear IDENTIFIER_MARKED.
1328 2011-06-17  Jason Merrill  <jason@redhat.com>
1330         PR c++/49458
1331         * call.c (convert_class_to_reference_1): Allow binding function
1332         lvalue to rvalue reference.
1334         PR c++/43912
1335         Generate proxy VAR_DECLs for better lambda debug info.
1336         * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): Add lambda operator().
1337         (LAMBDA_EXPR_PENDING_PROXIES): New.
1338         (struct tree_lambda_expr): Add pending_proxies.
1339         * name-lookup.c (pushdecl_maybe_friend_1): Handle capture shadowing.
1340         (qualify_lookup): Use is_lambda_ignored_entity.
1341         * parser.c (cp_parser_lambda_expression): Don't adjust field names.
1342         Call insert_pending_capture_proxies.
1343         (cp_parser_lambda_introducer): Use this_identifier.
1344         (cp_parser_lambda_declarator_opt): Call the object parameter
1345         of the op() "__closure" instead of "this".
1346         (cp_parser_lambda_body): Call build_capture_proxy.
1347         * semantics.c (build_capture_proxy, is_lambda_ignored_entity): New.
1348         (insert_pending_capture_proxies, insert_capture_proxy): New.
1349         (is_normal_capture_proxy, is_capture_proxy): New.
1350         (add_capture): Add __ to field names here, return capture proxy.
1351         (add_default_capture): Use this_identifier, adjust to expect
1352         add_capture to return a capture proxy.
1353         (outer_lambda_capture_p, thisify_lambda_field): Remove.
1354         (finish_id_expression, lambda_expr_this_capture): Adjust.
1355         (build_lambda_expr): Initialize LAMBDA_EXPR_PENDING_PROXIES.
1356         * pt.c (tsubst_copy_and_build): Check that LAMBDA_EXPR_PENDING_PROXIES
1357         is null.
1359         * name-lookup.c (pushdecl_maybe_friend_1): Do check for shadowing
1360         of artificial locals.
1362         * parser.c (cp_parser_lambda_expression): Clear
1363         LAMBDA_EXPR_THIS_CAPTURE after parsing.
1364         * pt.c (tsubst_copy_and_build): Make sure it isn't set.
1366         * cp-tree.h (struct tree_lambda_expr): Change common to typed.
1367         Move non-pointers to end of struct.
1369         * pt.c (tsubst_decl): Handle DECL_VALUE_EXPR on reference.
1370         * decl.c (check_initializer): Handle DECL_VALUE_EXPR_P.
1372         * semantics.c (finish_non_static_data_member): Preserve dereference
1373         in template.
1375 2011-06-16  Jason Merrill  <jason@redhat.com>
1377         PR c++/44160
1378         * parser.c (cp_parser_lambda_body): Share code between
1379         simple and complex cases instead of using cp_parser_function_body.
1381         PR c++/45378
1382         * decl.c (check_initializer): Check narrowing.
1384         PR c++/49229
1385         * pt.c (tsubst_decl) [FUNCTION_DECL]: Handle substitution failure.
1387         PR c++/49251
1388         * semantics.c (finish_id_expression): Mark even dependent
1389         variables as used.
1391         PR c++/49420
1392         * error.c (dump_template_argument): Don't try to omit default
1393         template args from an argument pack.
1395 2011-06-15  H.J. Lu  <hongjiu.lu@intel.com>
1397         PR c++/49412
1398         * decl.c (get_dso_handle_node): Mark __dso_handle hidden if
1399         assembler supports hidden visibility.
1401 2011-06-14  Jason Merrill  <jason@redhat.com>
1403         PR c++/49107
1404         * cp-tree.h (DEFERRED_NOEXCEPT_SPEC_P): Handle overload.
1405         * method.c (defaulted_late_check): Only maybe_instantiate_noexcept
1406         if the declaration had an exception-specifier.
1407         (process_subob_fn): Don't maybe_instantiate_noexcept.
1408         * pt.c (maybe_instantiate_noexcept): Handle overload.
1409         * typeck2.c (nothrow_spec_p_uninst): New.
1410         (merge_exception_specifiers): Add 'fn' parm.  Build up overload.
1411         * typeck.c (merge_types): Adjust.
1413         * pt.c (deduction_tsubst_fntype): Don't save input_location.
1414         (maybe_instantiate_noexcept): Likewise.
1416 2011-06-14  Joseph Myers  <joseph@codesourcery.com>
1418         * Make-lang.in (cp/method.o): Update dependencies.
1419         * method.c: Include common/common-target.h.
1420         (use_thunk): Use targetm_common.have_named_sections.
1422 2011-06-14  Steve Ellcey  <sje@cup.hp.com>
1424         * decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
1426 2011-06-14  Jason Merrill  <jason@redhat.com>
1428         * error.c (type_to_string): Print typedef-stripped version too.
1430         PR c++/49117
1431         * call.c (perform_implicit_conversion_flags): Print source type as
1432         well as expression.
1434         PR c++/49389
1435         * typeck2.c (build_m_component_ref): Preserve rvalueness.
1437         PR c++/49369
1438         * class.c (build_base_path): Fix cv-quals in unevaluated context.
1440         PR c++/49290
1441         * semantics.c (cxx_fold_indirect_ref): Local, more permissive copy
1442         of fold_indirect_ref_1.
1443         (cxx_eval_indirect_ref): Use it.
1445 2011-06-11  Jan Hubicka  <jh@suse.cz>
1447         * decl2.c (cp_write_global_declarations): Process aliases; look trhough
1448         same body aliases.
1450 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
1452         PR c++/41769
1453         * decl.c (grokdeclarator): Reject operator names in parameters.
1455 2011-06-10  Jan Hubicka  <jh@suse.cz>
1457         * decl2.c (clear_decl_external): New functoin.
1458         (cp_write_global_declarations): Use it.
1460 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
1462         * cp-tree.h (error_operand_p): Remove.
1464 2011-06-09  David Krauss  <potswa@mac.com>
1466         PR c++/49118
1467         * typeck2.c (build_x_arrow): Push fake template context
1468         to produce diagnostic on acyclic endless operator-> drill-down.
1469         * call.c (build_new_op): Change Boolean overload status
1470         value to a pointer to the overload function.
1471         * cp-tree.h: Likewise.
1472         * typeck.c: Likewise.
1473         * parser.c: Likewise.
1474         * decl2.c: Likewise.
1475         * pt.c: Likewise.
1477 2011-06-09  Jason Merrill  <jason@redhat.com>
1479         * semantics.c (maybe_constant_value): Handle overflowed input.
1480         (non_const_var_error): Handle non-constant DECL_INITIAL.
1482         * pt.c (build_non_dependent_expr): Use fold_non_dependent_expr_sfinae.
1484         * parser.c (cp_parser_constant_expression): Just return the
1485         non-constant expression.
1487         * semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR.
1489 2011-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
1491         PR c++/29003
1492         * decl.c (grokdeclarator): Reject operator names in typedefs.
1494 2011-06-08  Jason Merrill  <jason@redhat.com>
1496         PR c++/49107
1497         * cp-tree.def (DEFERRED_NOEXCEPT): New.
1498         * cp-tree.h (struct tree_deferred_noexcept): New.
1499         (DEFERRED_NOEXCEPT_PATTERN, DEFERRED_NOEXCEPT_ARGS): New.
1500         (DEFERRED_NOEXCEPT_SPEC_P): New.
1501         (enum cp_tree_node_structure_enum): Add TS_CP_DEFERRED_NOEXCEPT.
1502         (union lang_tree_node): Add tree_deferred_noexcept.
1503         (maybe_instantiate_noexcept): Declare.
1504         * cp-objcp-common.c (cp_tree_size): Handle DEFERRED_NOEXCEPT.
1505         * error.c (dump_exception_spec): Likewise.
1506         * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
1507         * ptree.c (cxx_print_xnode): Likewise.
1508         * tree.c (cp_tree_equal): Likewise.
1509         * decl.c (cp_tree_node_structure): Likewise.
1510         (duplicate_decls): Call maybe_instantiate_noexcept.
1511         * except.c (build_noexcept_spec): Handle DEFERRED_NOEXCEPT.
1512         (nothrow_spec_p, type_noexcept_p, type_throw_all_p): Check
1513         DEFERRED_NOEXCEPT_SPEC_P.
1514         * typeck2.c (merge_exception_specifiers): Likewise.
1515         * decl2.c (mark_used): Call maybe_instantiate_noexcept.
1516         * method.c (process_subob_fn, defaulted_late_check): Likewise.
1517         * pt.c (tsubst_exception_specification): Add defer_ok parm.
1518         Build DEFERRED_NOEXCEPT.
1519         (maybe_instantiate_noexcept): New.
1520         (tsubst, regenerate_decl_from_template, instantiate_decl): Adjust.
1521         * search.c (check_final_overrider): Call maybe_instantiate_noexcept.
1523         * semantics.c (potential_constant_expression_1): Handle destructor
1524         call.
1526 2011-06-08  Jakub Jelinek  <jakub@redhat.com>
1528         * cp-tree.h (struct tinst_level): Add chain_next GTY
1529         markup.
1531 2011-06-08  Jason Merrill  <jason@redhat.com>
1533         PR c++/49322
1534         * pt.c (deduction_tsubst_fntype): Don't free the tinst entry
1535         if a pending_template entry is pointing at it.
1537 2011-06-07  Jason Merrill  <jason@redhat.com>
1539         PR c++/48969
1540         PR c++/44175
1541         * error.c (subst_to_string): New.
1542         (cp_printer): Use it for 'S'.
1543         (print_instantiation_partial_context_line): Handle subst context.
1544         * pt.c (push_tinst_level): Handle subst context.
1545         (deduction_tsubst_fntype): Don't track specific substitutions.
1546         Use push_tinst_level.
1548         * pt.c (deduction_tsubst_fntype): Use push_deduction_access_scope.
1549         (fn_type_unification): Don't call push_deduction_access_scope here.
1551 2011-06-06  Jason Merrill  <jason@redhat.com>
1553         PR c++/48780
1554         * typeck.c (perform_integral_promotions): Don't promote scoped enums.
1555         * call.c (convert_arg_to_ellipsis): Promote them here in old ABI.
1557 2011-06-06  Nicola Pero  <nicola.pero@meta-innovation.com>,
1559         PR obj-c++/48275
1560         * parser.c (cp_parser_objc_at_property_declaration): Allow setter
1561         and getter names to use all the allowed method names.
1563 2011-06-06  Jason Merrill  <jason@redhat.com>
1565         PR c++/49298
1566         * semantics.c (potential_constant_expression_1): Handle FIELD_DECL.
1568         PR objc++/49221
1569         * decl.c (cp_finish_decl): Check DECL_FUNCTION_SCOPE_P rather than
1570         at_function_scope_p.
1572         PR c++/49134
1573         * tree.c (build_target_expr): Deal with ARM ABI tweaks.
1575 2011-06-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
1577         * init.c (build_delete): Warn when deleting type with non-virtual
1578         destructor.
1580 2011-06-03  Jakub Jelinek  <jakub@redhat.com>
1582         PR c++/49276
1583         * mangle.c (write_nested_name): Use CP_DECL_CONTEXT instead of
1584         DECL_CONTEXT.
1586 2011-06-01  Jason Merrill  <jason@redhat.com>
1588         * pt.c (build_non_dependent_expr): Remove special handling of
1589         REFERENCE_REF_P.
1591         PR c++/44175
1592         * pt.c (template_args_equal): Handle one arg being NULL_TREE.
1593         (deduction_tsubst_fntype): Handle excessive non-infinite recursion.
1595         PR c++/49253
1596         * typeck2.c (build_x_arrow): Don't use build_min_nt.
1598 2010-05-31  Fabien Chêne  <fabien@gcc.gnu.org>
1600         PR c++/48010
1601         * name-lookup.c (supplement_binding_1): If the old binding was a
1602         type name, also check that the DECL actually refers to the same
1603         type or is not a type.
1605 2011-05-31  Jason Merrill  <jason@redhat.com>
1607         PR c++/44870
1608         * tree.c (lvalue_kind): Recurse on NON_DEPENDENT_EXPR.  Handle
1609         ARROW_EXPR, TYPEID_EXPR, and arbitrary class-valued expressions.
1610         (build_min_non_dep): Preserve reference refs.
1611         (build_min_non_dep_call_vec): Likewise
1613 2011-05-30  Jakub Jelinek  <jakub@redhat.com>
1615         PR c++/49223
1616         * semantics.c (finish_omp_clauses): Call require_complete_type
1617         even for copyin/copyprivate clauses.  Only call
1618         cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P.
1620 2011-05-28  Jason Merrill  <jason@redhat.com>
1622         PR c++/46124
1623         * parser.c (cp_parser_lambda_expression): Improve error recovery.
1624         (cp_parser_lambda_declarator_opt): Likewise.  Return bool.
1626 2011-05-27  Jason Merrill  <jason@redhat.com>
1628         PR c++/47277
1629         * parser.c (cp_parser_pseudo_destructor_name): Commit to parse
1630         after we see the ~.
1632         * mangle.c (mangle_decl_string): Make sure we don't try to mangle
1633         templates.
1635         PR c++/47049
1636         * semantics.c (maybe_add_lambda_conv_op): Fix COMDAT sharing.
1637         * decl.c (start_preparsed_function): Don't call comdat_linkage for
1638         a template.
1640         PR c++/47132
1641         * mangle.c (write_expression): Handle MODOP_EXPR.
1643         PR c++/47277
1644         * parser.c (cp_parser_unqualified_id): Don't check
1645         constructor_name_p for enums.
1647         PR c++/47687
1648         * pt.c (dependent_type_p_r): Avoid infinite recursion.
1650         PR c++/48284
1651         * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot
1652         with INDIRECT_REF of REFERENCE_TYPE.
1654         PR c++/49181
1655         * pt.c (get_mostly_instantiated_function_type): Use push_access_scope.
1657 2011-05-27  Nathan Froyd  <froydnj@codesourcery.com>
1659         * cp-tree.h (building_stmt_tree): Delete.
1660         * decl.c (save_function_data): Tweak initializer for x_cur_stmt_list.
1661         (build_aggr_init_full_exprs): Call building_stmt_list_p
1662         instead of building_stmt_tree.
1663         (initialize_local_var): Likewise.
1664         (finish_function): Likewise.
1665         * decl2.c (finish_anon_union): Likewise.
1666         * init.c (begin_init_stmts): Likewise.
1667         (finish_init_stmts): Likewise.
1668         (expand_aggr_init_1): Likewise.
1669         * name-lookup.c (do_local_using_decl): Likewise.
1670         (do_namespace_alias): Likewise.
1671         (do_using_directive): Likewise.
1672         (cp_emit_debug_info_for_using): Likewise.
1673         * semantics.c (add_stmt): Assert that stmt_list_stack is non-empty.
1675 2011-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
1677         PR c++/42056
1678         * typeck2.c (build_functional_cast): Complain early for invalid uses
1679         of 'auto' and set type to error_mark_node.
1681 2011-05-26  Jason Merrill  <jason@redhat.com>
1683         PR c++/47721
1684         * parser.c (cp_parser_member_declaration): Allow friend T.
1685         * friend.c (make_friend_class): Ignore non-classes.
1686         * pt.c (instantiate_class_template_1): Handle TEMPLATE_TYPE_PARM.
1688         DR 1004
1689         * pt.c (convert_template_argument): Don't complain about using
1690         injected-class-name as template template argument.
1692         PR c++/47956
1693         * decl.c (check_static_variable_definition): Now static.
1694         (cp_finish_decl): Call it here.
1695         (grokdeclarator): Not here.
1696         * pt.c (instantiate_class_template_1): Or here.
1697         * cp-tree.h: Don't declare it.
1699 2011-05-26  Janis Johnson  <janis187@us.ibm.com>
1700             Nathan Froyd  <froydnj@codesourcery.com>
1702         PR c++/2288
1703         PR c++/18770
1704         * name-lookup.h (enum scope_kind): Add sk_cond.
1705         * name-lookup.c (pushdecl_maybe_friend): Get scope of shadowed local.
1706         Detect and report error for redeclaration from for-init or if
1707         or switch condition.
1708         (begin_scope): Handle sk_cond.
1709         * semantics.c (begin_if_stmt): Use sk_cond.
1710         (begin switch_stmt): Ditto.
1712 2011-05-26  Jason Merrill  <jason@redhat.com>
1714         PR c++/48211
1715         * name-lookup.h (cp_class_binding): Make base a pointer.
1716         * name-lookup.c (new_class_binding): Adjust.
1717         (poplevel_class): Adjust.
1719         PR c++/48424
1720         * decl.c (grokparms): Function parameter packs don't need to
1721         go at the end.
1722         * pt.c (type_unification_real): But they aren't deduced otherwise.
1724 2011-05-25  Jason Merrill  <jason@redhat.com>
1726         PR c++/48536
1727         * decl.c (build_enumerator): If incremented enumerator won't fit in
1728         previous integral type, find one it will fit in.
1730         PR c++/48599
1731         * decl.c (create_array_type_for_decl): Complain about array of auto.
1733         PR c++/44994
1734         PR c++/49156
1735         * error.c (dump_template_bindings): Set processing_template_decl
1736         for a partial instantiation.
1738         PR c++/45401
1739         * decl.c (grokdeclarator): Don't change type when adding rvalue ref
1740         to another reference type.
1742         PR c++/44311
1743         * decl.c (case_conversion): New.
1744         (finish_case_label): Use it.
1746         * ptree.c (cxx_print_xnode): Handle ARGUMENT_PACK_SELECT.
1748         PR c++/45698
1749         * pt.c (dependent_template_arg_p): See through ARGUMENT_PACK_SELECT.
1751         PR c++/46005
1752         * decl.c (grokdeclarator): Complain about auto typedef.
1754         PR c++/46245
1755         * decl.c (grokdeclarator): Complain later for auto parameter.
1756         * pt.c (splice_late_return_type): Handle use in a template
1757         type-parameter.
1759         PR c++/46696
1760         * typeck.c (cp_build_modify_expr): Check DECL_DEFAULTED_FN.
1762         PR c++/47184
1763         * parser.c (cp_parser_parameter_declaration): Recognize
1764         list-initialization.
1765         (cp_parser_direct_declarator): Check for the closing
1766         paren before parsing definitely.
1768         PR c++/48935
1769         * parser.c (cp_parser_constructor_declarator_p): Don't check
1770         constructor_name_p for enums.
1771         (cp_parser_diagnose_invalid_type_name): Correct error message.
1773         PR c++/45418
1774         * init.c (perform_member_init): Handle list-initialization
1775         of array of non-trivial class type.
1777         PR c++/45080
1778         * pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op.
1779         * semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P.
1781         PR c++/48292
1782         * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of
1783         function parameter pack.
1784         (tsubst_pack_expansion): Likewise.
1786         * cp-objcp-common.c (cp_common_init_ts): TYPE_ARGUMENT_PACK has
1787         TS_COMMON.
1789 2011-05-25  Jakub Jelinek  <jakub@redhat.com>
1791         * cp-objcp-common.c (cp_common_init_ts): Mark CTOR_INITIALIZER
1792         as TS_TYPED.
1794         PR c++/49136
1795         * semantics.c (cxx_eval_bit_field_ref): Handle the
1796         case when BIT_FIELD_REF doesn't cover only a single field.
1798 2011-05-24  Jason Merrill  <jason@redhat.com>
1800         PR c++/49042
1801         * pt.c (get_mostly_instantiated_function_type): Use
1802         push_deferring_access_checks rather than set flag_access_control.
1804 2011-05-24  Nicola Pero  <nicola.pero@meta-innovation.com>,
1806         * parser.c (cp_parser_objc_class_ivars): Deal gracefully with a
1807         syntax error in declaring an ObjC instance variable.
1809 2011-05-24  Jason Merrill  <jason@redhat.com>
1811         PR c++/48884
1812         * class.c (pushclass): Accept NULL argument.
1813         (popclass): Deal with popping null class.
1814         * pt.c (push_access_scope, pop_access_scope): Use them rather than
1815         push_to_top_level/pop_from_top_level.
1816         (push_deduction_access_scope, pop_defarg_context): New.
1817         (fn_type_unification): Use them.
1818         * name-lookup.c (lookup_name_real_1): Check current_class_type.
1820 2011-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
1822         * decl.c (grokdeclarator): Use current_class_name.
1824 2011-05-24  Joseph Myers  <joseph@codesourcery.com>
1826         * Make-lang.in (GXX_OBJS): Remove prefix.o.
1827         (g++$(exeext)): Use libcommon-target.a.
1828         (CXX_C_OBJS): Remove prefix.o.
1830 2011-05-23  Jason Merrill  <jason@redhat.com>
1832         * pt.c (tsubst_copy_and_build): Use current_class_name.
1834         PR c++/49102
1835         * call.c (convert_arg_to_ellipsis): Call force_rvalue.
1837         PR c++/49105
1838         * typeck.c (cp_build_c_cast): Don't strip cv-quals when
1839         converting to reference.
1840         (build_static_cast_1): Update for glvalues.
1842         PR c++/49105
1843         * typeck.c (build_const_cast_1): Handle rvalue references.
1845         PR c++/47263
1846         * decl.c (use_eh_spec_block): Do use an EH spec block for a
1847         lambda op().
1849         PR c++/49058
1850         * call.c (splice_viable): Be strict in templates.
1852         PR c++/47336
1853         * error.c (dump_template_bindings): Suppress access control.
1855         PR c++/47544
1856         * pt.c (instantiate_decl): Handle =default.
1858         PR c++/48617
1859         * pt.c (invalid_nontype_parm_type_p): Allow DECLTYPE_TYPE.
1861 2011-05-23  Nathan Froyd  <froydnj@codesourcery.com>
1863         * call.c (build_over_call): Tweak call to check_function_arguments.
1864         * typeck.c (cp_build_function_call_vec): Likewise.
1866 2011-05-23  Jonathan Wakely  <jwakely.gcc@gmail.com>
1868         PR c++/18016
1869         * init.c (perform_member_init): Check for self-initialization.
1871 2011-05-22  Jason Merrill  <jason@redhat.com>
1873         PR c++/48647
1874         * typeck.c (composite_pointer_type_r): Return error_mark_node
1875         on error in SFINAE context.
1877 2011-05-20  Jason Merrill  <jason@redhat.com>
1879         PR c++/48945
1880         * decl.c (grokdeclarator): Don't add set const function-cv-qual
1881         for constexpr fns to memfn_quals, just add it to the type.
1882         (revert_static_member_fn): Don't complain about quals.
1883         (check_static_quals): New.
1884         (grokfndecl): Call it.
1885         (start_preparsed_function): Don't call revert_static_member_fn.
1887         PR c++/48945
1888         * decl.c (revert_static_member_fn): Ignore const on constexpr fn.
1890         PR c++/48780
1891         * cvt.c (type_promotes_to): Don't promote scoped enums.
1893         PR c++/49066
1894         * decl.c (duplicate_decls): Preserve DECL_DELETED_FN.
1896         PR c++/48873
1897         * tree.c (stabilize_expr): Fix typo.
1899         DR 1073
1900         PR c++/49082
1901         * typeck.c (comp_except_specs): noexcept(false) is not compatible
1902         with throw(type-list).
1903         * typeck2.c (merge_exception_specifiers): noexcept(false)
1904         beats any more limited specification.
1906         PR c++/24163
1907         PR c++/29131
1908         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating
1909         unqualified lookup.
1910         * semantics.c (perform_koenig_lookup): Add complain parm.
1911         * cp-tree.h: Adjust.
1912         * parser.c (cp_parser_postfix_expression): Adjust.
1913         (cp_parser_perform_range_for_lookup): Adjust.
1915 2011-05-20  Jason Merrill  <jason@redhat.com>
1917         * semantics.c (finish_call_expr): SET_EXPR_LOCATION.
1919 2011-05-20  Joseph Myers  <joseph@codesourcery.com>
1921         * Make-lang.in (GXX_OBJS): Remove intl.o and version.o.
1923 2011-05-19  Jakub Jelinek  <jakub@redhat.com>
1925         PR c++/49043
1926         * decl.c (check_omp_return): Stop searching on sk_function_parms.
1928         PR c++/48869
1929         * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument,
1930         pass it down to locate_fn_flags.
1931         * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes.
1932         * semantics.c (cxx_omp_create_clause_info): Adjust callers.
1933         * cp-gimplify.c: Include splay-tree.h.
1934         (splay_tree_compare_decl_uid, omp_var_to_track,
1935         omp_cxx_notice_variable): New functions.
1936         (struct cp_genericize_omp_taskreg): New type.
1937         (struct cp_genericize_data): Add omp_ctx field.
1938         (cp_genericize_r): Attempt to determine implicitly determined
1939         firstprivate class type variables.
1940         (cp_genericize): Clear omp_ctx.
1941         * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H).
1943 2011-05-18  Jason Merrill  <jason@redhat.com>
1945         PR c++/48948
1946         PR c++/49015
1947         * class.c (finalize_literal_type_property): Do check
1948         for constexpr member functions of non-literal class.
1949         (finish_struct): Don't call check_deferred_constexpr_decls.
1950         * cp-tree.h: Don't declare it.
1951         (DECL_DEFERRED_CONSTEXPR_CHECK): Remove.
1952         * decl.c (grok_special_member_properties): Don't check it
1953         (grokfnedcl): Don't call validate_constexpr_fundecl.
1954         (start_preparsed_function): Do call it.
1955         * pt.c (tsubst_decl): Don't call it.
1956         (instantiate_class_template_1): Don't call
1957         check_deferred_constexpr_decls.
1958         * semantics.c (literal_type_p): Check for any incompleteness.
1959         (ensure_literal_type_for_constexpr_object): Likewise.
1960         (is_valid_constexpr_fn): Revert deferral changes.
1961         (validate_constexpr_fundecl): Likewise.
1962         (register_constexpr_fundef): Likewise.
1963         (check_deferred_constexpr_decls): Remove.
1965 2011-05-16  Jason Merrill  <jason@redhat.com>
1967         PR c++/48969
1968         * pt.c (deduction_tsubst_fntype): Use a VEC initially.
1970 2011-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
1972         * cxx-pretty-print.c: Update comment.
1973         * semantics.c (trait_expr_value, finish_trait_expr):
1974         Reorder the cases.
1975         * parser.c (cp_parser_primary_expression): Likewise.
1977 2011-05-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
1979         PR c++/48994
1980         * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
1982 2011-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
1984         Implement final on class.
1985         * class.c (check_bases): Diagnose derivation from a final class.
1986         * cp-tree.h (lang_type_class): Add is_final and adjust dummy.
1987         (CLASSTYPE_FINAL): New.
1988         * parser.c (cp_parser_class_head): Parse class-virt-specifier, set
1989         CLASSTYPE_FINAL.
1990         * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL.
1992 2011-05-13  Jason Merrill  <jason@redhat.com>
1994         PR c++/48969
1995         * pt.c (deduction_tsubst_fntype): New.
1996         (fn_type_unification): Use it.
1997         (init_template_processing): Initialize hash table.
1998         (print_template_statistics): Print hash table stats.
2000         * call.c (build_op_call): Use timevar_cond_start/stop.
2001         (build_user_type_conversion): Likewise.
2003 2011-05-12  Jason Merrill  <jason@redhat.com>
2005         * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New.
2006         * semantics.c (validate_constexpr_fundecl): Set it.
2007         (check_deferred_constexpr_decls): Clear it.
2008         (register_constexpr_fundef): Make sure it isn't set.
2009         * decl.c (grok_special_member_properties): Check it.
2011 2011-05-11  Jason Merrill  <jason@redhat.com>
2013         PR c++/48948
2014         * semantics.c (validate_constexpr_fundecl): Defer checking if
2015         an argument type is being defined.
2016         (is_valid_constexpr_fn): Add defer_ok parm.
2017         (cxx_eval_call_expression): Adjust.
2018         (check_deferred_constexpr_decls): New.
2019         (literal_type_p): Make sure type isn't being defined.
2020         (ensure_literal_type_for_constexpr_object): Handle type being defined.
2021         * cp-tree.h: Declare check_deferred_constexpr_decls.
2022         * decl.c (grokfndecl): Call validate_constexpr_fundecl here.
2023         (start_preparsed_function, cp_finish_decl): Not here.
2024         * class.c (finalize_literal_type_property): Don't call
2025         validate_constexpr_fundecl.
2026         (finish_struct): Call check_deferred_constexpr_decls.
2027         * pt.c (tsubst_decl): Call validate_constexpr_fundecl.
2028         (instantiate_class_template): Call check_deferred_constexpr_decls.
2030         * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO
2031         rather than DECL_TEMPLATE_INSTANTIATION.
2032         (cxx_eval_call_expression): Likewise.
2034         * semantics.c (register_constexpr_fundef): Add to hash table here.
2035         (validate_constexpr_fundecl): Not here.
2037         * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once.
2039         * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p,
2040         do call maybe_constant_value in C++0x mode.
2041         * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL.
2043         PR c++/48745
2044         * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR.
2046 2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>
2048         * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
2049         TYPE_VALUES_RAW.
2050         (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
2051         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
2052         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
2054 2011-05-10  Jason Merrill  <jason@redhat.com>
2056         PR c++/48930
2057         * class.c (type_build_ctor_call): New.
2058         * cp-tree.h: Declare it.
2059         * decl.c (check_initializer): Use it instead of
2060         TYPE_NEEDS_CONSTRUCTING.
2061         * init.c (build_value_init, build_value_init_noctor): Likewise.
2062         (perform_member_init, expand_aggr_init_1, build_new_1): Likewise.
2063         (build_vec_init): Likewise.
2064         * typeck2.c (process_init_constructor_array): Likewise.
2065         (process_init_constructor_record): Likewise.
2067         PR c++/48736
2068         * pt.c (tsubst_copy_and_build): Handle substitution of a pack
2069         expansion producing another expansion.
2071 2011-05-10  Ville Voutilainen  <ville.voutilainen@gmail.com>
2073         Fixes for override/final.
2074         * class.c (check_for_override): Diagnose final on a nonvirtual
2075         member function, diagnose override for a virtual with no matching
2076         override. Don't fiddle around with DECL_VINDEX.
2078 2011-05-10  Nathan Froyd  <froydnj@codesourcery.com>
2080         * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand.
2081         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2082         * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new
2083         operand of EXPR_PACK_EXPANSION.
2084         (cp_tree_operand_length): Declare.
2085         * tree.c (cp_tree_operand_length): Define.
2086         (cp_tree_equal): Call it.
2087         * pt.c (value_dependent_expr_P): Likewise.
2088         * mangle.c (write_expression): Likewise.
2090 2011-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
2092         PR c++/48737
2093         PR c++/48744
2094         * decl.c (reshape_init): Take a complain parameter and do
2095         not call error if tf_error is not set.
2096         (check_initializer, reshape_init_r, reshape_init_array,
2097         reshape_init_array_1, reshape_init_vector, reshape_init_class):
2098         Adjust.
2099         * typeck2.c (digest_init_r): Take a complain parameter and
2100         pass it to convert_for_initialization.
2101         (digest_init, digest_init_flags, process_init_constructor_array,
2102         process_init_constructor_record, process_init_constructor_union,
2103         process_init_constructor, digest_init_r): Adjust.
2104         * init.c (expand_default_init, build_new_1): Likewise.
2105         * typeck.c (cp_build_modify_expr): Likewise.
2106         * decl2.c (grokfield): Likewise.
2107         * call.c (convert_like_real, convert_default_arg): Likewise.
2108         * semantics.c (finish_compound_literal): Pass complain to
2109         reshape_init and digest_init.
2110         * cp-tree.h: Adjust declarations.
2112 2011-05-07  Fabien Chêne  <fabien@gcc.gnu.org>
2114         PR c++/48859
2115         * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the
2116         recursion if there is user defined constructor.
2118 2011-05-09  Jason Merrill  <jason@redhat.com>
2120         PR c++/34772
2121         * decl.c (initialize_local_var): Use DECL_INITIAL for simple
2122         initialization.
2124 2011-05-08  Ville Voutilainen  <ville.voutilainen@gmail.com>
2126         Implement final/override for member functions.
2127         * class.c (check_for_override): Check for DECL_OVERRIDE_P.
2128         * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New.
2129         (cp_virt_specifiers, enum virt_specifier): New.
2130         * decl.c (set_virt_specifiers): New.
2131         (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields.
2132         * parser.c (make_call_declarator): add virt-specifiers parameter.
2133         (cp_parser_lambda_declarator_opt): Adjust.
2134         (cp_parser_direct_declarator): Likewise.
2135         (cp_parser_virt_specifier_seq_opt): New.
2136         * search.c (check_final_overrider): Diagnose attempts to override
2137         a final member function.
2139 2011-05-09  Dodji Seketeli  <dodji@redhat.com>
2141         PR c++/48574
2142         * class.c (fixed_type_or_null): Use type_dependent_p_push to test
2143         if the instance has a dependent initializer.
2145 2011-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
2147         PR c++/48816
2148         * cxx-pretty-print.c (pp_cxx_template_declaration): Remove
2149         effectively unused variable.
2151 2011-05-07  Eric Botcazou  <ebotcazou@adacore.com>
2153         * name-lookup.h (global_bindings_p): Adjust prototype.
2154         * name-lookup.c (global_bindings_p): Return bool.
2156 2011-05-06  Jason Merrill  <jason@redhat.com>
2158         * decl.c (stabilize_save_expr_r): Set *walk_subtrees as
2159         appropriate.
2161         PR c++/48909
2162         * semantics.c (cxx_eval_conditional_expression): Check
2163         integer_zerop instead.
2164         (potential_constant_expression_1): Likewise.
2166         PR c++/48911
2167         * semantics.c (cxx_eval_array_reference): Handle implicit
2168         initializers.
2170 2011-05-06  Nathan Froyd  <froydnj@codesourcery.com>
2172         * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions.
2173         * call.c (standard_conversion): Call class_of_this_parm.
2174         * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise.
2175         (pp_cxx_direct_abstract_declarator): Likewise.
2176         * decl2.c (change_return_type): Likewise.
2177         (cp_reconstruct_complex_type): Likewise.
2178         * error.c (dump_type_suffix, dump_function_decl): Likewise.
2179         * mangle.c (write_function_type): Likewise.
2180         * pt.c (unify): Likewise.
2181         * typeck.c (merge_types, type_memfn_quals): Likewise.
2182         * decl.c (build_this_parm): Call type_of_this_parm.
2184 2011-05-06  Dodji Seketeli  <dodji@redhat.com>
2186         PR c++/48838
2187         * cp-tree.h (non_static_member_function_p): Declare new function.
2188         * tree.c (non_static_member_function_p): Define it.
2189         * semantics.c (finish_call_expr): Use it.
2191 2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>
2193         * decl.c (finish_case_label): Omit the loc argument to
2194         build_case_label.
2196 2011-05-05  Jason Merrill  <jason@redhat.com>
2198         * cp-tree.h (REFERENCE_REF_P): Just check the type.
2199         * cvt.c (convert_from_reference): Adjust.
2200         * pt.c (build_non_dependent_expr): Adjust.
2201         * semantics.c (finish_offsetof): Adjust.
2202         * tree.c (lvalue_kind): Use it.
2204         PR c++/48873
2205         * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
2207 2011-05-05  Eric Botcazou  <ebotcazou@adacore.com>
2209         * decl.c (start_preparsed_function): Do not set
2210         dont_save_pending_sizes_p.
2212 2011-05-05  Joseph Myers  <joseph@codesourcery.com>
2214         * parser.c (cp_parser_objc_method_definition_list): Update call to
2215         objc_start_method_definition.
2217 2011-05-04  Jason Merrill  <jason@redhat.com>
2219         PR c++/48749
2220         * class.c (resolves_to_fixed_type_p): Don't look closely
2221         in templates.
2223 2011-05-03  Paolo Carlini  <paolo.carlini@oracle.com>
2225         PR c++/28501
2226         * call.c (add_builtin_candidate): Handle REALPART_EXPR and
2227         IMAGPART_EXPR.
2229 2011-05-02  Lawrence Crowl  <crowl@google.com>
2231         * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
2232         (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
2233         Change TV_NAME_LOOKUP to start/stop.
2234         (define_label): Refactor timevar calls out to a wrapper function.
2235         Change TV_NAME_LOOKUP to start/stop.
2236         (xref_tag): Likewise.
2237         (lookup_label): Refactor timevar calls out to a wrapper function.
2238         Change TV_NAME_LOOKUP to start_cond/stop_cond.
2240         * pt.c: (instantiate_class_template): Add a wrapper to push/pop new
2241         TV_TEMPLATE_INST.
2242         (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
2243         (lookup_template_class): Refactor timevar calls out to a wrapper
2244         function.  Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
2245         (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
2247         * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
2248         (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
2249         (push_namespace): Likewise.
2250         (pop_nested_namespace): Likewise.
2251         (pushdecl_namespace_level): Likewise.
2252         (store_class_bindings): Likewise.
2253         (push_to_top_level): Likewise.
2254         (identifier_type_value): Refactor timevar calls out to a wrapper
2255         function.  Change TV_NAME_LOOKUP to start/stop.
2256         (find_binding): Likewise.
2257         (push_using_decl): Likewise.
2258         (lookup_arg_dependent): Likewise.
2259         (push_using_directive): Likewise.
2260         (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
2261         to plain code.  Change TV_NAME_LOOKUP to start/stop.
2262         (lookup_type_current_level): Likewise.  Refactor inner return to
2263         break.
2264         (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
2265         code.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
2266         (pushdecl_top_level_1): Likewise.
2267         (lookup_using_namespace): Likewise.
2268         (pushdecl_with_scope): Refactor timevar calls out to a wrapper
2269         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
2270         (push_overloaded_decl): Likewise.
2271         (push_class_level_binding): Likewise.
2272         (namespace_binding): Likewise.
2273         (set_namespace_binding): Likewise.
2274         (supplement_binding): Likewise.
2275         (unqualified_namespace_lookup): Likewise.
2276         (lookup_name_real): Likewise.
2277         (lookup_type_scope): Likewise.
2278         (namespace_ancestor): Likewise.
2279         (lookup_name_innermost_nonclass_level): Likewise.
2280         (pushtag): Likewise.
2281         (pop_from_top_level): Likewise.
2282         (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
2283         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Wrap long
2284         lines.
2285         (add_using_namespace): Refactor timevar calls out to a wrapper
2286         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Bypass
2287         wrapper on call to self.
2289         * decl2.c: (cp_write_global_declarations):  Add start/stop of
2290         new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
2291         Remove push/pop calls to TV_VARCONST.
2293         * parser.c: Add include of "timevar.h".
2294         (cp_parser_explicit_instantiation): Add push/pop calls to
2295         TV_TEMPLATE_INST.
2296         (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
2297         (cp_parser_class_specifier): Add wrapper to add push/pop calls to
2298         TV_PARSE_STRUCT.
2299         (cp_parser_function_definition_from_specifiers_and_declarator): Add
2300         push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
2301         (cp_parser_late_parsing_for_member):  Add push/pop calls to
2302         new TV_PARSE_INMETH.
2304         * call.c: Add include of "timevar.h".
2305         (convert_class_to_reference): Wrap and add push/pop calls to 
2306         TV_OVERLOAD.
2307         (build_op_call): Likewise.
2308         (build_conditional_expr): Likewise.
2309         (build_new_op): Likewise.
2310         (build_new_method_call): Likewise.
2311         (build_user_type_conversion): Reorganize to single return and add
2312         push/pop calls to TV_OVERLOAD.
2313         (perform_overload_resolution): Likewise.
2315         * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
2317 2011-05-02  Jason Merrill  <jason@redhat.com>
2319         * tree.c (build_vec_init_expr): Take complain parm.
2320         (build_vec_init_elt): Likewise.  Free arg vector.
2321         (diagnose_non_constexpr_vec_init, build_array_copy): Adjust.
2322         * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK.
2323         (VEC_INIT_EXPR_INIT): Likewise.
2324         Adjust build_vec_init_expr declaration.
2325         * init.c (perform_member_init): Adjust.
2327         Revert:
2328         PR c++/40975
2329         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
2330         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
2331         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
2332         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
2333         (build_vec_init_elt): Don't expect an array type.
2334         (build_array_copy): Adjust.
2335         * init.c (perform_member_init): Adjust.
2336         (build_new_1): Use build_vec_init_expr.
2338         PR c++/48834
2339         * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS.
2340         Protect an explicit target.
2342         PR c++/48446
2343         * decl.c (stabilize_save_expr_r, stabilize_vla_size): New.
2344         (compute_array_index_type): Revert earlier 48446 changes.
2345         (grokdeclarator): Use stabilize_vla_size.
2347 2011-05-02  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
2348             Eric Botcazou <ebotcazou@adacore.com>
2350         * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE
2351         instead of inappropriate zero values.
2353 2011-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
2355         PR c++/47969
2356         * decl.c (compute_array_index_type): Check build_expr_type_conversion
2357         return value for NULL_TREE.
2359 2011-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
2361         PR c++/48606
2362         * init.c (perform_member_init): Check build_value_init return
2363         value for error_mark_node.
2365 2011-04-29  Diego Novillo  <dnovillo@google.com>
2366             Le-Chun Wu  <lcwu@google.com>
2368         * call.c (conversion_null_warnings): Also handle assignments
2369         when warning about NULL conversions.
2371 2011-04-29  Le-Chun Wu  <lcwu@google.com>
2373         * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
2374         * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
2375         (build_over_call): Use it to determine whether to emit a NULL
2376         warning for template function instantiations.
2377         (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
2378         EXPLICIT_TARGS is set.
2380 2011-04-29  Nicola Pero  <nicola.pero@meta-innovation.com>,
2381             Mike Stump <mikestump@comcast.net>
2383         * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only
2384         in maintainer mode.  Use the --output-file option of gperf instead
2385         of > to prevent creating an empty cp/cfns.h when gperf is not
2386         available.
2388 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2390         PR c++/48798
2391         * semantics.c (finish_base_specifier): cv-qualified base class
2392         is fine, per DR 484.
2394 2011-04-28  Dodji Seketeli  <dodji@redhat.com>
2396         PR c++/48656
2397         * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
2398         considering call expressions involving a member function.
2400 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2402         PR c++/48530
2403         * tree.c (build_cplus_new): Check build_target_expr return
2404         value for error_mark_node.
2406 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2408         PR c++/48771
2409         * semantics.c (literal_type_p): Reference types are literal types,
2410         per the FDIS.
2411         (valid_type_in_constexpr_fundecl_p): Remove.
2412         (is_valid_constexpr_fn): Adjust.
2414 2011-04-27  Jason Merrill  <jason@redhat.com>
2416         PR libstdc++/48760
2417         Implement list-initialization of _Complex.
2418         * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
2419         (check_initializer): Likewise.
2420         * call.c (build_complex_conv): New.
2421         (implicit_conversion): Call it.
2422         (convert_like_real): Handle it.
2423         * typeck2.c (check_narrowing): Handle it.
2425         * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
2426         decide whether to delete.
2427         (build_vec_init): Pass sfk_complete_destructor.
2429         PR c++/40975
2430         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
2431         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
2432         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
2433         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
2434         (build_vec_init_elt): Don't expect an array type.
2435         (build_array_copy): Adjust.
2436         * init.c (perform_member_init): Adjust.
2437         (build_new_1): Use build_vec_init_expr.
2439         * class.c (resolve_address_of_overloaded_function): Don't
2440         change OVERLOAD to TREE_LIST.
2441         * pt.c (print_candidates_1): Remove nonsensical assert.
2443         PR c++/48046
2444         * parser.c (cp_parser_diagnose_invalid_type_name): Commit
2445         to tentative parse sooner.
2447 2011-04-26  Jason Merrill  <jason@redhat.com>
2449         PR c++/42687
2450         * parser.c (cp_parser_primary_expression): Set *idk to
2451         CP_ID_KIND_NONE for a parenthesized identifier.
2453         * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
2454         (cxx_print_identifier): Correct indentation.
2456         PR c++/48530
2457         * decl.c (cxx_maybe_build_cleanup): Add complain parm.
2458         * tree.c (force_target_expr): Add complain parm.
2459         (build_target_expr_with_type): Likewise.
2460         (get_target_expr_sfinae): Split out.
2461         (build_vec_init_expr, bot_manip): Adjust.
2462         * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
2463         (build_delete, build_dtor_call): Likewise.
2464         (perform_direct_initialization_if_possible): Adjust.
2465         (build_vec_init): Handle error return.
2466         * cvt.c (force_rvalue): Add complain parm.
2467         Call build_special_member_call directly.
2468         * decl2.c (delete_sanity): Add complain parm.
2469         (build_cleanup): Adjust.
2470         * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
2471         * semantics.c (finish_stmt_expr_expr): Adjust.
2472         (finish_compound_literal): Adjust.
2473         * parser.c (cp_parser_delete_expression): Adjust.
2474         * typeck2.c (build_functional_cast): Adjust.
2475         * cp-tree.h: Adjust.
2477 2011-04-26  Martin Jambor  <mjambor@suse.cz>
2479         * class.c (cp_fold_obj_type_ref): Remove.
2480         * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
2482 2011-04-25  Paolo Carlini  <paolo.carlini@oracle.com>
2484         * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
2485         * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
2486         (UNDERLYING_TYPE_TYPE): Add.
2487         * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
2488         as TS_COMMON.
2489         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
2490         cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
2491         (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
2492         * semantics.c (finish_underlying_type): New.
2493         * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
2494         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
2495         * cxx-pretty-print.c (p_cxx_type_id): Likewise.
2496         * tree.c (cp_walk_subtrees): Likewise.
2497         * pt.c (for_each_template_parm_r, tsubst, unify,
2498         dependent_type_p_r): Likewise.
2499         * mangle.c (write_type): Sorry for __underlying_type.
2501 2011-04-25  Jason Merrill  <jason@redhat.com>
2503         PR c++/48707
2504         * decl.c (type_dependent_init_p): New.
2505         (cp_finish_decl): Check it.
2506         * pt.c (any_type_dependent_elements_p): New.
2507         * cp-tree.h: Declare it.
2509 2011-04-20  Jason Merrill  <jason@redhat.com>
2511         * semantics.c (finish_compound_literal): Don't put an array
2512         with a dtor in a static variable.
2514         * call.c (build_over_call): Handle trivial dtor.
2516         * search.c (lookup_fnfields_slot): Call complete_type.
2518         PR c++/48594
2519         * decl2.c (build_offset_ref_call_from_tree): Move
2520         non-dependency of object outside condition.
2522         PR c++/48657
2523         * decl.c (cp_finish_decl): Simplify template handling.
2525 2011-04-20  Jim Meyering  <meyering@redhat.com>
2527         * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
2529 2011-04-19  Jason Merrill  <jason@redhat.com>
2531         PR c++/46304
2532         * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
2534         PR c++/45267
2535         * decl.c (duplicate_decls): Keep always_inline attribute
2536         in sync with DECL_DISREGARD_INLINE_LIMITS.
2538 2011-04-18  Jason Merrill  <jason@redhat.com>
2540         PR c++/48569
2541         * typeck2.c (build_functional_cast): Handle VOID_TYPE.
2543         PR c++/48537
2544         * init.c (build_value_init): Handle UNION_TYPE the same.
2546 2011-04-18  Jakub Jelinek  <jakub@redhat.com>
2548         PR c++/48632
2549         * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
2550         for type dependent pointers.
2552 2011-04-18  Jim Meyering  <meyering@redhat.com>
2554         * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
2556 2011-04-17  Jan Hubicka  <jh@suse.cz>
2558         * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
2559         gotos.
2561 2011-04-17  Jason Merrill  <jason@redhat.com>
2563         PR c++/48531
2564         * typeck2.c (build_functional_cast): Disallow array type.
2566         * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
2568 2011-04-17  Jan Hubicka  <jh@suse.cz>
2570         * class.c (cp_fold_obj_type_ref): Drop vtable_method.
2572 2011-04-15  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
2574         Implement N3271
2575         * parser.c (cp_convert_range_for): Split into
2576         cp_parser_perform_range_for_lookup.
2577         (cp_parser_perform_range_for_lookup): New.
2578         (cp_parser_range_for_member_function): New.
2579         (cp_parser_for_init_statement): Correct error message.
2580         * semantics.c (finish_call_expr): Accept COMPONENT_REF.
2582 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
2584         * parser.c (cp_parser_objc_protocol_declaration): Updated for
2585         change from objc_declare_protocols() to objc_declare_protocol().
2587 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2589         PR objc++/48479
2590         * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
2591         and return immediately.
2593 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2595         * cp-tree.def (SWITCH_STMT): Add an extra operand.
2596         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2597         * cp-tree.h (SWITCH_STMT_SCOPE): Define.
2598         * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
2599         (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
2601 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2603         * cp-tree.def (IF_STMT): Add an extra operand.
2604         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2605         * cp-tree.h (IF_SCOPE): Define.
2606         * semantics.c (begin_if_stmt): Pass scope to build_stmt.
2607         (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
2609 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2611         * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
2612         * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
2613         * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
2614         * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
2615         Use FOR_SCOPE instead of TREE_CHAIN.
2616         (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
2617         (finish_for_stmt): Likewise.
2619 2011-04-14  Jason Merrill  <jason@redhat.com>
2621         * parser.c (cp_parser_postfix_expression): Fix flags passed to
2622         build_new_method_call.
2623         * semantics.c (finish_call_expr): Likewise.
2625         PR c++/48531
2626         * init.c (build_value_init_noctor): Check complain consistently.
2628         PR c++/48557
2629         * typeck.c (cp_build_binary_op): Don't decay void operands.
2631         PR c++/48446
2632         * decl.c (compute_array_index_type): Use get_temp_regvar instead
2633         of variable_size.
2634         * init.c (get_temp_regvar): No longer static.
2635         * cp-tree.h: Declare it.
2637 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
2639         * parser.c (cp_parser_objc_class_declaration): Updated for change
2640         in objc_declare_class().
2642 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2644         * decl.c (poplevel): Use block_chainon.
2646 2011-04-13  Jason Merrill  <jason@redhat.com>
2648         PR c++/48594
2649         * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
2650         or pointer to (non-member) function.
2652 2011-04-13  Jakub Jelinek  <jakub@redhat.com>
2654         PR c++/48570
2655         * semantics.c (cxx_eval_array_reference): Handle reading from
2656         wchar_t, char16_t and char32_t STRING_CST.
2658 2011-04-13  Dodji Seketeli  <dodji@redhat.com>
2660         PR c++/48574
2661         * class.c (fixed_type_or_null): We cannot determine the dynamic
2662         type of a reference variable if its initializer is dependent.
2664 2011-04-13  Jason Merrill  <jason@redhat.com>
2666         PR c++/48581
2667         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
2668         unqualified lookup failing if we're still in a template.
2670 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
2672         * cp-lang.c (cp_init_ts): Call cp_common_init_ts.  Move
2673         tree_contains_struct initialization to...
2674         * cp-objcp-common.c (cp_common_init_ts): ...here.  Use MARK_*
2675         macros.
2676         * cp-objcp-common.h (cp_common_init_ts): Declare.
2677         * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
2678         calling TREE_CHAIN.
2680 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
2682         * parser.c (cp_parser_objc_message_expression): Updated call
2683         to objc_build_message_expr.
2685 2011-04-12  Martin Jambor  <mjambor@suse.cz>
2687         * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
2688         cgraph_get_create_node.
2689         * decl2.c (cp_write_global_declarations): Call cgraph_get_node
2690         instead of cgraph_get_create_node.
2691         * method.c (make_alias_for_thunk): Call cgraph_get_node
2692         instead of cgraph_get_create_node, assert it returns non-NULL.
2693         (use_thunk): Likewise.
2694         * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
2695         when flag_syntax_only is not set.  Call cgraph_get_node instead of
2696         cgraph_get_create_node.
2697         (maybe_clone_body): Call cgraph_get_node instead of
2698         cgraph_get_create_node.
2700 2011-04-12  Martin Jambor  <mjambor@suse.cz>
2702         * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
2703         instead of cgraph_node.
2704         * decl2.c (cxx_callgraph_analyze_expr): Likewise.
2705         (cp_write_global_declarations): Likewise.
2706         * optimize.c (maybe_clone_body): Likewise.
2707         * semantics.c (maybe_add_lambda_conv_op): Likewise.
2708         * mangle.c (mangle_decl): Likewise.
2709         * method.c (make_alias_for_thunk): Likewise.
2710         (use_thunk): Likewise.
2712 2011-04-11  Jason Merrill  <jason@redhat.com>
2714         PR c++/48535
2715         * decl.c (cp_complete_array_type_or_error): New.
2716         * semantics.c (finish_compound_literal): Use it.
2717         * cp-tree.h: Declare it.
2719         PR c++/48535
2720         * semantics.c (finish_compound_literal): Handle references.
2722         PR c++/48535
2723         * semantics.c (finish_compound_literal): Take complain parm.
2724         (build_lambda_object): Adjust.
2725         * cp-tree.h: Adjust.
2726         * call.c (convert_like_real): Adjust.
2727         * decl.c (check_initializer): Adjust.
2728         * parser.c (cp_parser_postfix_expression): Adjust.
2729         (cp_parser_functional_cast): Adjust.
2730         * pt.c (tsubst_copy_and_build): Adjust.
2731         * typeck2.c (process_init_constructor_record): Adjust.
2733         PR c++/48534
2734         * cvt.c (ocp_convert): Use build_nop to convert to underlying type
2735         of scoped enum.
2737         PR c++/48523
2738         * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
2739         than cp_build_indirect_ref.
2741         PR c++/48457, Core 1238
2742         * call.c (reference_binding): Allow rvalue reference to bind to
2743         function lvalue.
2744         * tree.c (lvalue_kind): Functions are always lvalues.
2746 2011-04-07  Jason Merrill  <jason@redhat.com>
2748         PR c++/48500
2749         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
2750         arguments even if we don't know the function.
2752         PR c++/48481
2753         * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
2754         at the end of the chain.
2755         * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
2756         (iterative_hash_template_arg): Likewise.
2758         PR c++/48481
2759         * cp-tree.h (OVL_ARG_DEPENDENT): New.
2760         * name-lookup.c (add_function): Set it.
2761         * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
2763         PR c++/48481
2764         * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
2765         Release unused vector.
2767         PR c++/48451
2768         * pt.c (fn_type_unification): Don't clear incomplete pack flag.
2769         (type_unification_real): Clear it here instead.
2771         PR c++/48468
2772         * except.c (build_noexcept_spec): Propagate error_mark_node.
2773         (finish_noexcept_expr): Likewise.
2775         PR c++/48452
2776         * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
2777         in SFINAE context.
2779         PR c++/48450
2780         * call.c (resolve_args): Take complain.
2781         (build_new_function_call, build_operator_new_call): Pass it.
2782         (build_op_call, build_new_op, build_new_method_call): Pass it.
2784         PR c++/48450
2785         * typeck.c (check_for_casting_away_constness): Take complain.
2786         (build_static_cast_1, build_reinterpret_cast_1): Pass it.
2787         (build_const_cast_1): Pass it.  Take full complain parm.
2788         (build_const_cast, cp_build_c_cast): Adjust.
2790         * tree.c (build_aggr_init_expr): Always return error_mark_node
2791         on abstract violation.
2793         PR c++/48450
2794         * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
2795         (bot_manip): Adjust.
2796         * cp-tree.h: Adjust.
2797         * call.c (convert_like_real, build_cxx_call): Adjust.
2798         (perform_direct_initialization_if_possible): Adjust.
2799         * cvt.c (ocp_convert): Adjust.
2800         * init.c (build_value_init): Adjust.
2801         * semantics.c (maybe_add_lambda_conv_op): Adjust.
2802         * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
2803         * typeck2.c (build_functional_cast): Adjust.
2805         * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
2806         level.
2807         (perform_member_init): Not here.
2808         * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
2809         case to templates.
2810         (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
2812         PR c++/48449
2813         * typeck2.c (build_functional_cast): Check complain consistently.
2814         Use build_value_init and abstract_virtuals_error_sfinae.
2815         (abstract_virtuals_error_sfinae): Split out.
2816         * cp-tree.h: Declare it.
2817         * init.c (build_new_1): Use it.
2818         (build_value_init_noctor): Handle FUNCTION_TYPE.
2820         * semantics.c (finish_decltype_type): Simplify handling of unknown
2821         type.
2823         * semantics.c (finish_decltype_type): Add complain parm.
2824         * cp-tree.h: Adjust.
2825         * parser.c (cp_parser_decltype): Adjust.
2826         * pt.c (tsubst): Adjust.
2828         PR c++/48450
2829         * cvt.c (ocp_convert): Handle converting scoped enum to bool.
2831 2011-03-31  Jason Merrill  <jason@redhat.com>
2833         PR c++/48277
2834         * semantics.c (finish_call_expr): Remove assert.
2836         PR c++/48280
2837         * method.c (defaultable_fn_check): Templates are not defaultable.
2839         * parser.c (cp_parser_init_declarator): Avoid redundant
2840         cp_finish_decl for member declarations.
2842 2011-03-30  Jason Merrill  <jason@redhat.com>
2844         PR c++/48212
2845         * semantics.c (non_const_var_error): Just return if DECL_INITIAL
2846         is error_mark_node.
2848 2011-03-30  Jason Merrill  <jason@redhat.com>
2850         PR c++/48369
2851         * semantics.c (potential_constant_expression_1): Handle
2852         UNORDERED_EXPR and ORDERED_EXPR.
2854         PR c++/48281
2855         * semantics.c (finish_compound_literal): Do put static/constant
2856         arrays in static variables.
2858         * call.c (convert_like_real) [ck_list]: Build up the
2859         initializer_list object directly.
2860         * decl.c (build_init_list_var_init): Adjust.
2862         * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
2863         * decl.c (reshape_init_array_1): Likewise.
2865 2011-03-29  Jason Merrill  <jason@redhat.com>
2867         PR c++/48265
2868         * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
2869         the variable is constant before looking at its initializer.
2871         PR c++/48319
2872         * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
2874         PR c++/48089
2875         * semantics.c (potential_constant_expression_1): Change error about
2876         use of *this in constructor into sorry.
2878         PR c++/48296
2879         * decl.c (cp_finish_decl): Defer validation of constexpr member
2880         functions.
2881         * class.c (finalize_literal_type_property): Validate them here.
2882         * semantics.c (is_valid_constexpr_fn): Don't check completeness.
2884         * semantics.c (is_valid_constexpr_fn): Specify input location.
2886 2011-03-28  Jason Merrill  <jason@redhat.com>
2888         PR c++/48313
2889         * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
2890         from overloaded function.
2892         Core 1232
2893         * call.c (build_array_conv): New.
2894         (implicit_conversion): Use it.
2896         * call.c (reference_binding): Allow direct binding to an array
2897         rvalue.
2899         Core 898
2900         * parser.c (cp_parser_compound_statement): Add function_body parm.
2901         Complain about non-body compound-stmt in constexpr fn.
2902         (cp_parser_primary_expression, cp_parser_statement): Adjust.
2903         (cp_parser_implicitly_scoped_statement): Adjust.
2904         (cp_parser_function_body, cp_parser_try_block): Adjust.
2905         (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
2906         (cp_parser_objc_try_catch_finally_statement): Adjust.
2908         Core 898
2909         * semantics.c (constexpr_fn_retval): New.  Allow using-declaration
2910         and using-definition.
2911         (register_constexpr_fundef): Call it.
2913         * except.c (build_noexcept_spec): Call cxx_constant_value after
2914         converting to bool.
2916 2011-03-25  Kai Tietz  <ktietz@redhat.com>
2918         * lex.c (interface_strcmp): Handle dos-paths.
2919         (handle_pragma_implementation): Use filename_cmp instead of
2920         strcmp.
2921         (in_main_input_context): Likewise.
2923 2011-03-25  Jason Merrill  <jason@redhat.com>
2925         Core 1135
2926         * method.c (defaulted_late_check): Check for exception spec mismatch.
2927         (defaultable_fn_check): Allow exception spec and virtual.
2928         * class.c (check_for_override): A virtual dtor is non-trivial.
2930         PR c++/48289
2931         * pt.c (build_non_dependent_expr): Keep dereferences outside the
2932         NON_DEPENDENT_EXPR.
2934 2011-03-25  Kai Tietz  <ktietz@redhat.com>
2936         * decl.c (decls_match): Replace target hook
2937         call of comp_type_attributes by version in tree.c file.
2938         * search.c (check_final_overrider): Likewise.
2939         * typeck.c (structural_comptypes): Likewise.
2941 2011-03-21  Kai Tietz  <ktietz@redhat.com>
2943         PR target/12171
2944         * cxx-pretty-print.c (pp_cxx_ptr_operator):
2945         Display allowed attributes for function pointer types.
2946         * error.c (dump_type_prefix): Likewise.
2948         * tree.c (cxx_attribute_table): Adjust table.
2950 2011-03-18  Jason Merrill  <jason@redhat.com>
2952         PR c++/48162
2953         * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
2955         PR c++/48118
2956         * call.c (build_over_call): Don't skip ck_rvalue.
2958 2011-03-17  Jason Merrill  <jason@redhat.com>
2960         PR c++/47504
2961         * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
2962         the conversion set TREE_OVERFLOW.
2964         Core 1212
2965         * semantics.c (finish_decltype_type): Return T&& for xvalue.
2966         * typeck.c (unlowered_expr_type): Preserve cv-quals.
2968         PR c++/48166
2969         * decl.c (revert_static_member_fn): Strip function-cv-quals.
2971 2011-03-16  Jason Merrill  <jason@redhat.com>
2973         PR c++/48089
2974         * semantics.c (potential_constant_expression_1): Don't allow *this
2975         in a constructor.
2976         (register_constexpr_fundef): Use potential_rvalue_constant_expression.
2978         PR c++/47301
2979         * decl.c (compute_array_index_type): Don't bother trying to deal
2980         with literal classes in ABI v1.
2982         PR c++/46336
2983         * decl.c (duplicate_decls): Return NULL_TREE for clashing
2984         C functions.
2986         PR c++/47570
2987         * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
2988         use the generic binary expression handling.
2990 2011-03-16  Diego Novillo  <dnovillo@google.com>
2992         * Make-lang.in (CXX_PARSER_H): New.
2993         (cp/parser.o): Add dependency on CXX_PARSER_H.
2994         Add dependency on tree-pretty-print.h
2995         (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
2996         * cp-lang.c: Include parser.h.
2997         * parser.c: Include parser.h.
2998         (struct cp_token): Add bitfield purged_p.
2999         Update all users.
3000         Move to parser.h.
3001         (CPP_PURGED): Remove.  Update all users.
3002         (struct cp_lexer): Change field buffer to be a VEC of cp_token.
3003         Remove field buffer_length.
3004         Update all users.
3005         Move to parser.h.
3006         (struct tree_check): Move to parser.h.
3007         (cp_token_position): Likewise.
3008         (struct cp_token_cache): Likewise.
3009         (CPP_KEYWORD): Likewise.
3010         (CPP_TEMPLATE_ID): Likewise.
3011         (CPP_NESTED_NAME_SPECIFIER): Likewise.
3012         (N_CP_TTYPES): Likewise.
3013         (enum cp_parser_status_kind): Likewise.
3014         (struct cp_parser_context): Likewise.
3015         (struct cp_default_arg_entry_d): Likewise.
3016         (struct cp_unparsed_functions_entry_d): Likewise.
3017         (struct cp_parser): Likewise.
3018         (cp_lexer_dump_tokens): New.
3019         (cp_lexer_debug_tokens): New.
3020         (cp_lexer_finished_p): New.
3021         (cp_lexer_alloc): Factor out of cp_lexer_new_main.
3022         (cp_lexer_new_main): Re-write main lexing loop to push
3023         tokens into the new VEC buffer.
3024         (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
3025         Do not abort if the token type is not recognized, just print
3026         its code.
3027         * parser.h: New file.
3028         * config-lang.in (gtfiles): Add cp/parser.h.
3030 2011-03-16  Jason Merrill  <jason@redhat.com>
3032         Core 1148
3033         * typeck.c (check_return_expr): Fix conditions for setting
3034         LOOKUP_PREFER_RVALUE.
3036         * call.c (build_over_call): Remove require_complete_type_sfinae call.
3038         PR c++/48132
3039         * decl.c (check_array_designated_initializer): Allow integer index.
3040         (reshape_init_array_1): Set index on the elements.
3042 2011-03-16  Jason Merrill  <jason@redhat.com>
3044         PR c++/48113
3045         * typeck.c (convert_for_initialization): Use
3046         perform_implicit_conversion_flags.
3047         * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
3048         rvaluedness_matches_p on ck_rvalue.
3049         (convert_like_real) [ck_rvalue]: And restore it here.
3051         PR c++/48115
3052         * call.c (convert_arg_to_ellipsis): Handle incomplete type.
3054 2011-03-16  Jason Merrill  <jason@redhat.com>
3056         * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
3057         committed to this tentative parse.
3059         PR c++/47999
3060         * semantics.c (finish_call_expr): Preserve reference semantics
3061         in templates.
3063         * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
3065 2011-03-16  Jakub Jelinek  <jakub@redhat.com>
3067         * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
3068         DECL_LANG_SPECIFIC is NULL.
3070 2011-03-15  Jason Merrill  <jason@redhat.com>
3072         Core 1074
3073         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
3074         check value_dependent_expression_p on the operand.
3076         * semantics.c (push_cx_call_context): Return bool.
3077         (cxx_eval_call_expression): Handle excess depth.
3079         Core 1191
3080         * method.c (synthesized_method_walk): Cleanups don't affect the
3081         triviality of a constructor, but do affect deletion and exception
3082         specification.
3084 2011-03-15  Rodrigo Rivas Costa  <rodrigorivascosta@gmail.com>
3086         * decl2.c (cp_check_const_attributes): New.
3087         (cplus_decl_attributes): Call cp_check_const_attributes.
3089 2011-03-15  Jason Merrill  <jason@redhat.com>
3091         PR c++/34758
3092         * call.c (convert_default_arg): Use DECL_ORIGIN of fn.  Check for
3093         recursion first.
3094         (push_defarg_context, pop_defarg_context): New.
3095         * parser.c (cp_parser_late_parsing_default_args): Use them.
3096         * cp-tree.h: Declare them.
3098 2011-03-11  Dodji Seketeli  <dodji@redhat.com>
3100         * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
3101         the argument of the indirection operator should not be dependent.
3102         Fix the comment.
3104 2011-03-11  Jason Merrill  <jason@redhat.com>
3106         PR c++/47125
3107         * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
3109         PR c++/47144
3110         * parser.c (cp_parser_template_type_arg): Set
3111         type_definition_forbidden_message.
3113         PR c++/47808
3114         * decl.c (compute_array_index_type): Discard folding
3115         if it didn't produce a constant.
3117 2011-03-11  Jakub Jelinek  <jakub@redhat.com>
3119         PR c++/48035
3120         * init.c (build_zero_init_1): Extracted from build_zero_init.
3121         Add FIELD_SIZE argument, if non-NULL and field bit_position
3122         as not smaller than that, don't add that field's initializer.
3123         Pass DECL_SIZE as last argument to build_zero_init_1
3124         for DECL_FIELD_IS_BASE fields.
3125         (build_zero_init): Use build_zero_init_1.
3127 2011-03-10  Jason Merrill  <jason@redhat.com>
3129         PR c++/48029
3130         * pt.c (iterative_hash_template_arg): Remove special case for
3131         ARRAY_TYPE.
3133         PR c++/47198
3134         * parser.c (cp_parser_single_declaration): Just return if
3135         cp_parser_parse_and_diagnose_invalid_type_name complained.
3137 2011-03-09  Jason Merrill  <jason@redhat.com>
3139         PR c++/44629
3140         * pt.c (unify): An unresolved overload is a nondeduced context.
3142 2011-03-09  Martin Jambor  <mjambor@suse.cz>
3144         PR tree-optimization/47714
3145         * method.c (use_thunk): Clear addressable flag of thunk arguments.
3147 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
3149         PR c++/47705
3150         * pt.c (convert_nontype_argument): Only call decay_conversion on
3151         arrays.
3153 2011-03-08  Jason Merrill  <jason@redhat.com>
3155         PR c++/47488
3156         * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
3158         PR c++/47705
3159         * pt.c (convert_nontype_argument): Don't crash on non-pointer
3160         argument to pointer parameter.
3162         PR c++/45651
3163         * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
3164         !TREE_PUBLIC decls.
3166 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
3168         PR c++/47957
3169         * name-lookup.c (binding_to_template_parms_of_scope_p): Only
3170         consider scopes of primary template definitions.  Adjust comments.
3172 2011-03-07  Jason Merrill  <jason@redhat.com>
3174         PR c++/48003
3175         * pt.c (convert_nontype_argument): Fix -fpermissive allowing
3176         integer overflow.
3177         * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
3179         PR c++/48015
3180         * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
3182         PR c++/48008
3183         * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
3184         (write_CV_qualifiers_for_type): Not here.
3186 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
3188         * lang-specs.h: Match -save-temps* instead of -save-temps.
3190 2011-03-05  Jason Merrill  <jason@redhat.com>
3192         * mangle.c (write_expression): Change ABI v6 to v5.
3193         (write_type): Likewise.
3195 2011-03-04  Jan Hubicka  <jh@suse.cz>
3197         PR lto/47497
3198         * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
3199         and cgraph_add_thunk.
3200         * method.c (make_alias_for_thunk, use_thunk): Likewise.
3201         * mangle.c (mangle_decl): Likewise.
3203 2011-03-04  Jason Merrill  <jason@redhat.com>
3205         PR c++/47971
3206         * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
3207         (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
3209         PR c++/46220
3210         * search.c (check_final_overrider): Allow pointer to same incomplete
3211         class type with different cv-quals.
3213 2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
3215         PR c++/47974
3216         * pt.c (tsubst_template_args): Check argument t for error_mark_node.
3218 2011-03-03  Jason Merrill  <jason@redhat.com>
3220         PR c++/47950
3221         * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
3223 2011-03-02  Jason Merrill  <jason@redhat.com>
3225         PR c++/47950
3226         * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
3228         PR c++/47774
3229         * tree.c (build_vec_init_elt): Split out from...
3230         (build_vec_init_expr): ...here.
3231         (diagnose_non_constexpr_vec_init): New fn.
3232         * semantics.c (potential_constant_expression_1): Use it.
3233         * cp-tree.h: Declare it.
3235 2011-03-01  Jason Merrill  <jason@redhat.com>
3237         PR c++/46159
3238         * parser.c (cp_parser_primary_expression): Don't warn about a
3239         failed tentative parse.
3241         PR c++/47200
3242         * semantics.c (cxx_bind_parameters_in_call): Don't call
3243         adjust_temp_type on non-constant args.
3245         PR c++/47851
3246         * call.c (standard_conversion): Provide requested cv-quals on
3247         class rvalue conversion.
3249         PR c++/46282
3250         * decl2.c (grokbitfield): Handle type-dependent width.
3252 2011-02-28  Jason Merrill  <jason@redhat.com>
3254         PR c++/47873
3255         * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
3256         after checking for a non-thunk.
3258 2011-02-26  Jason Merrill  <jason@redhat.com>
3260         PR c++/47904
3261         * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
3262         * pt.c (iterative_hash_template_arg): And hash it.
3264         PR c++/47897
3265         * semantics.c (non_const_var_error): Split out from...
3266         (cxx_eval_constant_expression): ...here.
3267         (potential_constant_expression_1) [VAR_DECL]: Use it.
3268         Allow dependent variables.
3270 2011-02-24  Jason Merrill  <jason@redhat.com>
3272         * parser.c (cp_parser_constant_expression): Set
3273         non_integral_constant_expression correctly for C++0x too.
3274         (cp_parser_static_assert): Allow non-constant expression.
3275         (cp_parser_direct_declarator): Expect non_constant_p to be set
3276         properly for C++0x.
3277         * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
3278         * semantics.c (maybe_constant_value): Check type_unknown_p too.
3279         (potential_rvalue_constant_expression): New.
3280         (require_potential_rvalue_constant_expression): New.
3282 2011-02-23  Jason Merrill  <jason@redhat.com>
3284         * cp-tree.h (DECL_PARM_LEVEL): New.
3285         (struct lang_decl_parm): Add level field.
3286         * name-lookup.c (function_parm_depth): New fn.
3287         * name-lookup.h: Declare it.
3288         * parser.c (cp_parser_parameter_declaration_list): Use it.
3289         * mangle.c (struct globals): Add parm_depth field.
3290         (write_bare_function_type): Adjust it.
3291         (write_expression): Include the level delta in PARM_DECL mangling
3292         for abi >= 6.
3294         * semantics.c (finish_decltype_type): Remove shortcut for decltype
3295         of id-expression.
3296         * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
3298 2011-02-23  Nathan Froyd  <froydnj@codesourcery.com>
3300         PR c++/46868
3301         * parser.c (cp_parser_class_specifier): Require a closing brace
3302         to attempt error recovery.
3304 2011-02-23  Jakub Jelinek  <jakub@redhat.com>
3306         PR c++/47833
3307         * pt.c (struct pending_template): Add chain_next GTY option.
3308         * decl.c (struct named_label_use_entry): Likewise.
3310 2011-02-22  Paolo Carlini  <paolo.carlini@oracle.com>
3312         PR c++/47242
3313         * semantics.c (build_lambda_object): Bail out if a field is
3314         error_mark_node.
3316 2011-02-22  Dodji Seketeli  <dodji@redhat.com>
3318         PR c++/47666
3319         * class.c (dfs_declare_virt_assop_and_dtor)
3320         (declare_virt_assop_and_dtor): New static functions.
3321         (add_implicitly_declared_members): Use
3322         declare_virt_assop_and_dtor.
3324 2011-02-21  Jason Merrill  <jason@redhat.com>
3326         PR c++/47207
3327         * decl2.c (decl_constant_var_p): A constexpr var needs an
3328         initializer to be constant.
3329         * semantics.c (cxx_eval_constant_expression): Complain about
3330         constexpr var used in its own initializer.
3331         * call.c (set_up_extended_ref_temp): Set
3332         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
3334 2011-02-20  Jason Merrill  <jason@redhat.com>
3336         PR c++/47199
3337         * semantics.c (cxx_eval_call_expression): Call
3338         cxx_eval_constant_expression in trivial shortcut.
3340         PR c++/46831
3341         * call.c (convert_class_to_reference): Don't try to set up a
3342         second conv sequence for non-viable candidates.
3344         PR c++/47703
3345         * error.c (location_of): Handle non-tagged types.
3347         PR c++/46472
3348         * method.c (process_subob_fn): Instantiate constexpr templates.
3349         * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
3351 2011-02-20  Dodji Seketeli  <dodji@redhat.com>
3353         PR c++/46394
3354         * pt.c (tsubst_pack_expansion): do not use
3355         cp_tree_equal/same_type_p to detect an expansion of a parameter
3356         pack.
3358 2011-02-19  Jason Merrill  <jason@redhat.com>
3360         PR c++/47503
3361         * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
3363 2011-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
3365         PR c++/47795
3366         * semantics.c (finish_non_static_data_member): Early return if
3367         object is error_mark_node.
3369 2011-02-18  Dodji Seketeli  <dodji@redhat.com>
3371         PR c++/47208
3372         * pt.c (do_auto_deduction): Do not mention error_mark_node in
3373         diagnostics.
3374         * semantics.c (finish_id_expression): Do not pass erroneous decl
3375         to decl_constant_var_p.
3377 2011-02-17  Jakub Jelinek  <jakub@redhat.com>
3379         PR c++/47783
3380         * cvt.c (convert_from_reference): Call mark_exp_read.
3382 2011-02-11  Dodji Seketeli  <dodji@redhat.com>
3384         PR c++/47172
3385         * pt.c (finish_call_expr): Consider a call expression that has a
3386         dependent "this" pointer as being dependent.  Add comments.
3387         (dependent_type_p, type_dependent_expression_p): Update comments.
3389 2011-02-16  Dodji Seketeli  <dodji@redhat.com>
3391         PR c++/47326
3392         * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
3393         expansion arguments are not evaluated.
3395 2011-02-16  Jakub Jelinek  <jakub@redhat.com>
3397         PR c++/47704
3398         * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
3399         instead of TYPE_LANG_FLAG_3.
3400         * pt.c (lookup_template_class): Copy over
3401         ENUM_FIXED_UNDERLYING_TYPE_P.
3403 2011-02-15  Jason Merrill  <jason@redhat.com>
3405         PR c++/46807
3406         * method.c (synthesized_method_walk): Always exit early for
3407         trivial fn in C++98 mode.
3409 2011-02-14  Jason Merrill  <jason@redhat.com>
3411         PR c++/47482
3412         * parser.c (cp_parser_enumerator_definition): Call
3413         fold_non_dependent_expr.
3415 2011-02-09  Jason Merrill  <jason@redhat.com>
3417         * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
3418         * semantics.c (finish_fname): Only return the name if we're in
3419         a function.
3421         * decl.c (build_enumerator): Don't perform integral promotions on
3422         non-integral constants.
3424         * cvt.c (convert_to_void): Handle null op1.
3426         * class.c (type_has_constexpr_default_constructor): Make sure the
3427         caller stripped an enclosing array.
3428         * init.c (perform_member_init): Strip arrays before calling it.
3430         PR c++/47511
3431         * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
3433 2011-02-03  Dodji Seketeli  <dodji@redhat.com>
3435         PR c++/47398
3436         * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
3437         template parameters in account.
3439 2011-02-03  Nathan Froyd  <froydnj@codesourcery.com>
3441         PR c++/46890
3442         * parser.c (cp_parser_class_specifier): Fix setting of
3443         want_semicolon.
3445 2011-01-31  Jakub Jelinek  <jakub@redhat.com>
3447         PR c++/47416
3448         * semantics.c (build_data_member_initialization): Handle
3449         STATEMENT_LIST always instead of just for CLEANUP_BODY.
3451 2011-01-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3453         * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
3454         LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
3456 2011-01-29  Dodji Seketeli  <dodji@redhat.com>
3458         PR c++/47311
3459         * cp-tree.h (fixup_template_parms): Declare.
3460         * pt.c (end_template_parm_list): Do not fixup template parms here.
3461         (fixup_template_parms): Remove static. Fix typo in the
3462         comments. Remove useless code statement.
3463         (fixup_template_parm): For a template template parameter, fixup
3464         its attributes before fixing up its type.
3465         * parser.c
3466         (cp_parser_template_declaration_after_export): After parsing
3467         template parameters fixup their types.
3469 2011-01-26  Jakub Jelinek  <jakub@redhat.com>
3471         PR c++/47476
3472         * semantics.c (potential_constant_expression_1): Handle
3473         TRUTH_XOR_EXPR.
3475 2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
3477         PR c++/43601
3478         * semantics.c (expand_or_defer_fn_1): Handle it.
3479         * decl2.c (decl_needed_p): Likewise.
3481 2011-01-21  Jason Merrill  <jason@redhat.com>
3483         PR c++/47041
3484         * semantics.c (build_constexpr_constructor_member_initializers):
3485         Handle trivial copy.
3487 2011-01-21  Jakub Jelinek  <jakub@redhat.com>
3489         PR c++/47388
3490         * semantics.c (begin_for_stmt): If -fno-for-scope, don't
3491         assume init must be NULL if scope is NULL.
3492         (begin_range_for_stmt): Likewise.
3494 2011-01-21  Jason Merrill  <jason@redhat.com>
3496         PR c++/46552
3497         * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
3499         PR c++/46977
3500         * semantics.c (potential_constant_expression_1): Split out from
3501         potential_constant_expression.  Add want_rval parm.  Handle
3502         template expression forms.  Don't enforce restriction on address
3503         of automatic variable here.  Add a couple of diagnostics that
3504         had been missing.
3505         (require_potential_constant_expression): New entry point.
3506         (build_data_member_initialization, register_constexpr_fundef): Adjust.
3507         (maybe_constant_value): Check potential_constant_expression.
3508         * pt.c (fold_non_dependent_expr_sfinae): Likewise.
3509         * tree.c (build_vec_init_expr): Adjust.
3511 2011-01-19  Jakub Jelinek  <jakub@redhat.com>
3513         PR c++/47303
3514         * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
3515         or DECL_EXTERNAL.
3517 2011-01-17  Jason Merrill  <jason@redhat.com>
3519         PR c++/47067
3520         * semantics.c (base_field_constructor_elt): New fn.
3521         (cxx_eval_bare_aggregate): Use it.
3522         (build_data_member_initialization): Leave COMPONENT_REF for
3523         vfield inits.
3525 2011-01-14  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
3527         * parser.c (cp_parser_range_for): Remove the "unused variable" warning
3528         workaround.
3530 2011-01-15  Giovanni Funchal  <gafunchal@gmail.com>
3531             Jonathan Wakely  <jwakely.gcc@gmail.com>
3533         PR c++/33558
3534         * decl.c (grokdeclarator): Reject mutable reference members.
3536 2011-01-14  Jason Merrill  <jason@redhat.com>
3538         PR c++/47289
3539         * pt.c (coerce_template_parms): Fix error recovery.
3541         PR c++/46903
3542         * typeck2.c (check_narrowing): Only check arithmetic types.
3544         PR c++/46688
3545         * tree.c (build_vec_init_expr): Handle flexible array
3546         properly.
3548 2011-01-13  Kai Tietz  <kai.tietz@onevision.com>
3550         PR c++/47213
3551         * cp-tree.h (CLASSTYPE_VISIBILITY): Use
3552         TYPE_MAIN_DECL instead of TYPE_NAME.
3553         (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
3554         * decl2.c (determine_visibility): Add check
3555         of CLASS_TYPE_P for underlying_type.
3557 2011-01-12  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
3559         * cp-tree.h (begin_for_scope): New prototype.
3560         (begin_for_stmt): Update prototype.
3561         (begin_range_for_stmt): Update prototype.
3562         * init.c (build_vec_init): Update call to begin_for_stmt.
3563         * parser.c (cp_parser_for): New.
3564         (cp_parser_c_for): Add three new parameters.
3565         (cp_parser_range_for): Likewise. Most parsing code removed.
3566         (cp_parser_iteration_statement): Call cp_parser_for instead of
3567         cp_parser_c_for and cp_parser_range_for.
3568         (cp_parser_for_init_statement): Add new parameter and return type.
3569         (cp_parser_block_declaration): Update call to
3570         cp_parser_simple_declaration.
3571         (cp_parser_simple_declaration): Add new parameter.
3572         Update call to cp_parser_init_declarator.
3573         (cp_parser_init_declarator): Add new parameter.
3574         * pt.c (tsubst_expr): Update call to begin_for_stmt.
3575         * semantics.c (begin_for_scope): New.
3576         (begin_for_stmt): Add two new parameters.
3577         (begin_range_for_stmt): Likewise.
3579 2011-01-12  Nicola Pero  <nicola.pero@meta-innovation.com>
3581         * parser.c (cp_parser_objc_at_property_declaration): Improved
3582         error message.
3584 2011-01-11  Dodji Seketeli  <dodji@redhat.com>
3586         PR debug/46955
3587         * cp-lang.c (get_template_innermost_arguments_folded)
3588         (get_template_argument_pack_elems_folded)
3589         (template_arg_needs_folding, fold_cplus_constants): New static
3590         functions.
3591         (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
3592         get_template_innermost_arguments_folded.
3593         (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
3594         get_template_argument_pack_elems_folded.
3596 2011-01-11  Jason Merrill  <jason@redhat.com>
3598         PR c++/46658
3599         * init.c (build_new_1): Handle value-init in templates differently.
3601         PR c++/45520
3602         * tree.c (maybe_dummy_object): Check current_class_ref against
3603         context, not current_class_type.
3605 2011-01-08  Nicola Pero  <nicola.pero@meta-innovation.com>
3607         PR objc/47078
3608         * parser.c (cp_parser_objc_typename): If the type is unknown, for
3609         error recovery purposes behave as if it was not specified so that
3610         the default type is used.
3612 2011-01-07  Jakub Jelinek  <jakub@redhat.com>
3614         PR c++/47022
3615         * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
3616         for the second build_x_va_arg argument.
3618 2011-01-05  Tom Tromey  <tromey@redhat.com>
3620         * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
3621         (lvalue_or_else): Likewise.
3623 2011-01-01  Kai Tietz  <kai.tietz@onevision.com>
3625         PR target/38662
3626         * tree.c (cxx_type_hash_eq):
3627         Allow METHOD_TYPE, too.
3630 Copyright (C) 2011 Free Software Foundation, Inc.
3632 Copying and distribution of this file, with or without modification,
3633 are permitted in any medium without royalty provided the copyright
3634 notice and this notice are preserved.