re PR c++/34927 (Duplicate error message about abstract class)
[official-gcc.git] / gcc / cp / ChangeLog
blob2b03e473a956c4b5b8ce294aee7875f669feca3c
1 2011-10-08  Paolo Carlini  <paolo.carlini@oracle.com>
3         PR c++/34927
4         * typeck2.c (abstract_virtuals_error_sfinae): Don't produce duplicate
5         inform messages in case of cloned destructor.
7 2011-10-06  Jason Merrill  <jason@redhat.com>
9         PR c++/39164
10         * decl.c (grokfndecl): Diagnose redefinition of defaulted fn.
12 2011-10-02  Jason Merrill  <jason@redhat.com>
14         * pt.c (tsubst_pack_expansion): Re-use ARGUMENT_PACK_SELECTs.
15         Change unsubstituted_packs to bool.
17         * parser.c (cp_parser_range_for): Don't try to deduce from {}
18         in a template.
20         PR c++/35722
21         Implement N2555 (expanding pack expansion to fixed parm list)
22         * pt.c (coerce_template_parms): Allow expanding a pack expansion
23         to a fixed-length argument list.
24         (unify_pack_expansion): Handle explicit args properly.
25         (unify) [TREE_VEC]: Handle pack expansions here.
26         [TYPE_ARGUMENT_PACK]: Not here.
27         (tsubst_pack_expansion): Don't try to do partial substitution.
28         (pack_deducible_p): New.
29         (fn_type_unification): Use it.
30         (find_parameter_packs_r): Take the TYPE_MAIN_VARIANT
31         of a type parameter.
32         (check_non_deducible_conversion): Split from type_unification_real.
33         (unify_one_argument): Split from type_unification_real...
34         (unify_pack_expansion): ...and here.  Drop call_args_p parm.
35         (type_unification_real, unify, more_specialized_fn): Adjust.
37         * class.c (fixed_type_or_null): Handle NSDMI.
38         * method.c (walk_field_subobs): Disable NSDMI noexcept checking
39         for now.
41 2011-09-30  Jason Merrill  <jason@redhat.com>
43         * cp-tree.h (TREE_NEGATED_INT): Remove.
44         * semantics.c (finish_unary_op_expr): Don't set it.
46 2011-09-30  Janis Johnson  <janisjo@codesourcery.com>
48         PR c++/44473
49         * mangle.c (write_type): Handle CV qualifiers for decimal classes.
51 2011-09-26   Andi Kleen <ak@linux.intel.com>
53         * repo.c (finish_repo): Use HOST_WIDE_INT_PRINT_HEX_PURE.
55 2011-09-28  Paolo Carlini  <paolo.carlini@oracle.com>
57         PR c++/45278
58         * typeck.c (cp_build_binary_op): With -Wextra, warn for ordered
59         comparison of pointer with zero.
61 2011-09-27  Paolo Carlini  <paolo.carlini@oracle.com>
63         PR c++/31489
64         * parser.c (cp_parser_elaborated_type_specifier): For RECORD_TYPE,
65         set CLASSTYPE_DECLARED_CLASS.
67 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
69         * decl.c (duplicate_decls): If compatible stpcpy prototype
70         is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
72 2011-09-26  Jason Merrill  <jason@redhat.com>
74         PR c++/45012
75         * pt.c (tsubst_copy_and_build) [CONST_DECL]: Don't pull out
76         constant value if we're still in a template.
78         PR c++/46105
79         * typeck.c (structural_comptypes): Ignore cv-quals on typename scope.
81         PR c++/50508
82         * semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal
83         rather than ==.
85 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
87         PR c++/45487
88         * error.c (dump_template_bindings): Separate bindings with semicolons
89         instead of commas.
91 2011-09-26  Jason Merrill  <jason@redhat.com>
93         PR c++/50512
94         * call.c (compare_ics): Only consider rvaluedness_matches_p
95         if the target type is the same or it too differs in rvalueness.
97         PR c++/50523
98         * call.c (implicit_conversion): Mask out inappropriate LOOKUP
99         flags at the top of the function.
101         * pt.c (tsubst_copy) [PARM_DECL]: Handle 'this' in NSDMI.
103 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
105         * pt.c (convert_nontype_argument): Handle NULLPTR_TYPE.
107 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
109         PR c++/26747
110         * cp-gimplify.c (get_bc_label): Remove obsolete diagnostics.
112 2011-09-25  Jason Merrill  <jason@redhat.com>
114         * parser.c (inject_this_parameter): Split out from
115         cp_parser_late_return_type_opt.
116         (cp_parser_class_specifier_1): Use it for NSDMIs.
117         * tree.c (bot_replace): Replace NSDMI 'this' with real 'this'.
119 2011-09-24  Jason Merrill  <jason@redhat.com>
121         * except.c (expr_noexcept_p): Split out from finish_noexcept_expr.
122         * cp-tree.h: Declare it.
123         * method.c (walk_field_subobs): Use it.
125         * init.c (perform_member_init): Instantiate NSDMI here.
126         * pt.c (tsubst_decl) [FIELD_DECL]: Not here.
128         Handle deferred parsing of NSDMIs.
129         * parser.h (cp_unparsed_functions_entry): Add nsdmis field.
130         * parser.c (unparsed_nsdmis, cp_parser_save_nsdmi): New.
131         (cp_parser_late_parse_one_default_arg): Split out from
132         cp_parser_late_parsing_default_args.
133         (cp_parser_late_parsing_nsdmi): New.
134         (push_unparsed_function_queues): Set it.
135         (cp_parser_parameter_declaration): Save the '=' token.
136         (cp_parser_template_parameter): Likewise.
137         (cp_parser_default_argument): Call cp_parser_initializer
138         rather than cp_parser_initializer_clause.
139         (cp_parser_class_specifier_1): Parse unparsed_nsdmis.
140         (cp_parser_member_declaration): Handle nsdmis.
141         * decl2.c (grokfield): Handle DEFAULT_ARG for a function.
143         Implement C++11 non-static data member initializers.
144         * cp-tree.h (enum cpp_warn_str): Add CPP0X_NSDMI.
145         * error.c (maybe_warn_cpp0x): Handle it.
146         * call.c (convert_like_real) [ck_user]: Don't complain about
147         using an explicit constructor for direct-initialization.
148         * class.c (check_field_decl): Fix ancient typo.
149         (check_field_decls): NSDMIs make the default ctor non-trivial.
150         * decl.c (cp_finish_decl): Record NSDMI.
151         (grokdeclarator): Allow NSDMI.
152         * decl2.c (grokfield): Allow NSDMI.  Correct LOOKUP flags.
153         * init.c (perform_member_init): Use NSDMI.
154         * method.c (walk_field_subobs): Check for NSDMI.
155         * parser.c (cp_parser_member_declaration): Parse { } init.
156         * semantics.c (register_constexpr_fundef): Don't talk about
157         a return statement in a constexpr constructor.
158         (cxx_eval_call_expression): Check DECL_INITIAL instead of
159         DECL_SAVED_TREE.
161 2011-09-24  Paolo Carlini  <paolo.carlini@oracle.com>
163         PR c++/44267
164         * class.c (build_base_path): Add a tsubst_flags_t parameter.
165         (convert_to_base): Adjust call.
166         * typeck.c (build_class_member_access_expr,
167         get_member_function_from_ptrfunc, build_static_cast_1): Likewise.
168         * init.c (dfs_initialize_vtbl_ptrs, emit_mem_initializers): Likewise.
169         * method.c (do_build_copy_constructor, do_build_copy_assign): Likewise.
170         * rtti.c (build_dynamic_cast_1): Likewise.
171         * typeck2.c (build_scoped_ref, build_m_component_ref): Likewise.
172         * call.c (build_over_call, build_special_member_call): Likewise.
173         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
174         build_up_reference): Likewise.
175         * cp-tree.h (build_base_path): Adjust declaration.
177 2011-09-23  Jason Merrill  <jason@redhat.com>
179         Core 253 - allow const objects with no initializer or
180         user-provided default constructor if the defaulted constructor
181         initializes all the subobjects.
182         PR c++/20039
183         PR c++/42844
184         * class.c (default_init_uninitialized_part): New.
185         * cp-tree.h: Declare it.
186         * decl.c (check_for_uninitialized_const_var): Use it.
187         * init.c (perform_member_init): Likewise.
188         (build_new_1): Likewise.
189         * method.c (walk_field_subobs): Likewise.
191 2011-09-23  Paolo Carlini  <paolo.carlini@oracle.com>
193         PR c++/50258
194         * decl.c (check_static_variable_definition): Allow in-class
195         initialization of static data member of non-integral type in
196         permissive mode.
198 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
200         PR c++/50491
201         * semantics.c (potential_constant_expression_1): Handle USING_DECL.
203 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
205         PR c++/50371
206         * pt.c (invalid_nontype_parm_type_p): Handle NULLPTR_TYPE.
208 2011-09-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
209             Paolo Carlini  <paolo.carlini@oracle.com>
211         PR c++/50344
212         * friend.c (make_friend_class): cv-qualification is ok in a
213         friend declaration.
215 2011-09-21  Paolo Carlini  <paolo.carlini@oracle.com>
217         PR c++/50454
218         * decl.c (grokdeclarator): Consistently handle both __int128
219         and unsigned __int128 with -pedantic; suppress diagnostic in
220         system headers.
222 2011-09-20  Jason Merrill  <jason@redhat.com>
224         * cp-tree.h (DECL_TEMPLOID_INSTANTIATION): New.
225         (DECL_GENERATED_P): New.
226         * class.c (finalize_literal_type_property): Use them.
227         * semantics.c (is_instantiation_of_constexpr): Likewise.
228         (register_constexpr_fundef): Likewise.
230         * call.c (convert_default_arg): Avoid redundant copy.
231         * tree.c (bot_manip): Copy everything.
233 2011-09-20 Roberto Agostino Vitillo <ravitillo@lbl.gov>
235         * call.c (build_new_method_call_1): Use non-virtual lookup
236         for final virtual functions.
238 2011-09-16  Jason Merrill  <jason@redhat.com>
240         PR c++/50424
241         * call.c (set_flags_from_callee): Split out from build_call_a.
242         * cp-tree.h: Declare it.
243         * tree.c (bot_manip): Call it.
245 2011-09-15  Jason Merrill  <jason@redhat.com>
247         PR c++/50365
248         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
249         for clearing current_class_ptr, too.
251 2011-09-14   Diego Novillo  <dnovillo@google.com>
253         * name-lookup.c (lookup_arg_dependent): Use conditional
254         timevars.
255         * decl.c (xref_tag): Likewise.
257 2011-09-14  Paolo Carlini  <paolo.carlini@oracle.com>
259         PR c++/50391
260         * pt.c (regenerate_decl_from_template): Don't pass an error_mark_node
261         to build_exception_variant.
263 2011-09-13  Dodji Seketeli  <dodji@redhat.com>
265         PR c++/48320
266         * pt.c (template_parameter_pack_p): Support TEMPLATE_PARM_INDEX
267         nodes.  Add a comment.
268         (arg_from_parm_pack_p):  New static function, factorized out from
269         tsubst_pack_expansion and extended to support non-type parameter
270         packs represented with TEMPLATE_PARM_INDEX nodes.
271         (tsubst_pack_expansion): Use arg_from_parm_pack_p.
273 2011-09-12  Jason Merrill  <jason@redhat.com>
275         * pt.c (type_unification_real): Fix handling of DEDUCE_CONV
276         with no deducible template parameters.
277         * call.c (rejection_reason_code): Add rr_template_conversion.
278         (print_z_candidate): Handle it.
279         (template_conversion_rejection): New.
280         (build_user_type_conversion_1): Use it.
282         * call.c (merge_conversion_sequences): Set bad_p and user_conv_p
283         on all of the second conversion sequence.
284         (build_user_type_conversion_1): Set bad_p on the ck_user conv.
285         (convert_like_real): Handle bad ck_ref_bind with user_conv_p in the
286         first section.  Fix loop logic.
287         (initialize_reference): Call convert_like for diagnostics when
288         we have a (bad) conversion.
290         * call.c (convert_class_to_reference)
291         (convert_class_to_reference_1): Remove.
292         (reference_binding): Use build_user_type_conversion_1 instead.
294         * call.c (initialize_reference): Add flags parm.
295         * decl.c (grok_reference_init): Likewise.
296         (check_initializer): Pass it.
297         * typeck.c (convert_for_initialization): Likewise.
298         * cp-tree.h: Adjust.
300         * cp-tree.h (LOOKUP_NO_RVAL_BIND): New.
301         * call.c (conditional_conversion): Use it.
302         (reference_binding): Fix handling of xvalues.
304 2011-09-09  Jason Merrill  <jason@redhat.com>
306         * call.c (implicit_conversion): Check BRACE_ENCLOSED_INITIALIZER_P
307         before forcing instantiation.
309 2011-09-08  Paolo Carlini  <paolo.carlini@oracle.com>
311         PR c++/50324
312         * typeck2.c (digest_init_r): Call complete_type_or_maybe_complain
313         instead of complete_type_or_else.
315 2011-09-08  Dodji Seketeli  <dodji@redhat.com>
317         PR c++/33255 - Support -Wunused-local-typedefs warning
318         * name-lookup.c (pushdecl_maybe_friend_1): Use the new
319         record_locally_defined_typedef.
320         * decl.c (finish_function): Use the new
321         maybe_warn_unused_local_typedefs.
322         (grokfield): Use the new record_locally_defined_typedef.
323         * parser.c (lookup_name): Use the new maybe_record_typedef_use.
325 2011-09-07  Paolo Carlini  <paolo.carlini@oracle.com>
327         PR c++/50309
328         * decl.c (grokdeclarator): Check u.function.exception_specification
329         for error_mark_node.
331 2011-09-07  Jason Merrill  <jason@redhat.com>
333         PR c++/50298
334         * parser.c (cp_parser_member_declaration): Don't require a constant
335         rvalue here in C++0x.
337         * pt.c (type_unification_real): Correct complain arg for tsubsting
338         default template args.
340         * pt.c (tsubst_aggr_type): Check TYPE_P before tsubsting.
342 2011-09-06  Jason Merrill  <jason@redhat.com>
344         PR c++/50296
345         * semantics.c (register_constexpr_fundef): Call is_valid_constexpr_fn.
346         (cx_check_missing_mem_inits): Handle bases and empty trivial members.
347         (validate_constexpr_fundecl): Remove.
348         * decl.c (start_preparsed_function): Don't call it.
349         * cp-tree.h: Don't declare it.
351 2011-09-04  Jason Merrill  <jason@redhat.com>
353         PR c++/49267
354         * call.c (reference_binding): Don't set is_lvalue for an rvalue
355         reference rfrom.
357         PR c++/49267
358         PR c++/49458
359         DR 1328
360         * call.c (reference_binding): Set rvaluedness_matches_p properly
361         for reference to function conversion ops.
362         (compare_ics): Adjust.
364         * class.c (trivial_default_constructor_is_constexpr): Rename from
365         synthesized_default_constructor_is_constexpr.
366         (type_has_constexpr_default_constructor): Adjust.
367         (add_implicitly_declared_members): Call it instead.
368         (explain_non_literal_class): Explain about non-constexpr default ctor.
369         * cp-tree.h: Adjust.
370         * method.c (synthesized_method_walk): Adjust.
371         * semantics.c (explain_invalid_constexpr_fn): Handle defaulted
372         functions, too.
374         PR c++/50248
375         Core 1358
376         * init.c (perform_member_init): Don't diagnose missing inits here.
377         (emit_mem_initializers): Or here.
378         * method.c (process_subob_fn): Don't instantiate constexpr ctors.
379         * semantics.c (cx_check_missing_mem_inits): New.
380         (explain_invalid_constexpr_fn): Call it.
381         (register_constexpr_fundef): Likewise.  Leave
382         DECL_DECLARED_CONSTEXPR_P set when the body is unsuitable.
383         (cxx_eval_call_expression): Adjust diagnostics.
384         (cxx_eval_constant_expression): Catch use of 'this' in a constructor.
386 2011-08-30  Jason Merrill  <jason@redhat.com>
388         PR c++/50084
389         * cp-tree.h (cp_decl_specifier_seq): Rename user_defined_type_p
390         to type_definition_p.
391         * parser.c (cp_parser_set_decl_spec_type): Likewise.
392         * decl.c (grokdeclarator): Check it.
394         PR c++/50089
395         * semantics.c (finish_id_expression): Use
396         current_nonlambda_class_type for qualified-ids.
398         PR c++/50114
399         * decl.c (poplevel): Disable for scope compatibility hack
400         in C++11 mode.
402         PR c++/50220
403         * semantics.c (add_capture): Call complete_type for copy.
405         PR c++/50234
406         * semantics.c (cxx_eval_component_reference): Handle
407         value-initialization for omitted initializers.
409 2011-08-29  Jason Merrill  <jason@redhat.com>
411         PR c++/50224
412         * semantics.c (finish_id_expression): Mark captured variables used.
414 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
415             Jason Merrill  <jason@redhat.com>
417         PR c++/50207
418         * class.c (finish_struct_1): Complain if the first field is
419         artificial.
421 2011-08-29  Jason Merrill  <jason@redhat.com>
423         PR c++/50209
424         Core DR 994
425         * parser.c (cp_parser_default_argument): Use
426         cp_parser_initializer_clause.
427         (cp_parser_late_parsing_default_args): Likewise.
429 2011-08-26  Jason Merrill  <jason@redhat.com>
431         Core DR 342
432         PR c++/48582
433         * pt.c (check_valid_ptrmem_cst_expr): A null member pointer value
434         is valid in C++11.
435         (convert_nontype_argument): Likewise.  Implicitly convert nullptr
436         and do constant folding.
437         * mangle.c (write_template_arg_literal): Mangle null member
438         pointer values as 0.
439         * call.c (null_member_pointer_value_p): New.
440         * cp-tree.h: Declare it.
442 2011-08-25  Jason Merrill  <jason@redhat.com>
444         * call.c (convert_like_real): Remove redundant complain checks.
446         PR c++/50157
447         * call.c (convert_like_real): Exit early if bad and !tf_error.
449 2011-08-23  Jason Merrill  <jason@redhat.com>
451         * typeck2.c (build_functional_cast): Don't try to avoid calling
452         build_value_init.
453         * pt.c (instantiate_class_template_1): Don't copy TYPE_HAS_* flags.
455 2011-08-23  Jason Merrill  <jason@redhat.com>
457         PR c++/49045
458         Core 1321
459         * tree.c (dependent_name): New.
460         (cp_tree_equal): Two calls with the same dependent name are
461         equivalent even if the overload sets are different.
463 2011-08-23  Jason Merrill  <jason@redhat.com>
465         * tree.c (build_target_expr): Set TREE_CONSTANT on
466         literal TARGET_EXPR if the value is constant.
467         * typeck2.c (build_functional_cast): Don't set it here.
469 2011-08-23  Jason Merrill  <jason@redhat.com>
471         Core 903 (partial)
472         * call.c (null_ptr_cst_p): Only 0 qualifies in C++11.
474 2011-08-23  Jason Merrill  <jason@redhat.com>
476         Core 975
477         * decl.c (cxx_init_decl_processing): Initialize
478         dependent_lambda_return_type_node.
479         * cp-tree.h (cp_tree_index): Add CPTI_DEPENDENT_LAMBDA_RETURN_TYPE.
480         (dependent_lambda_return_type_node): Define.
481         (DECLTYPE_FOR_LAMBDA_RETURN): Remove.
482         * semantics.c (lambda_return_type): Handle overloaded function.
483         Use dependent_lambda_return_type_node instead of
484         DECLTYPE_FOR_LAMBDA_RETURN.
485         (apply_lambda_return_type): Don't check dependent_type_p.
486         * pt.c (tsubst_copy_and_build): Handle lambda return type deduction.
487         (instantiate_class_template_1): Likewise.
488         (tsubst): Don't use DECLTYPE_FOR_LAMBDA_RETURN.
489         * mangle.c (write_type): Likewise.
490         * typeck.c (structural_comptypes): Likewise.
491         (check_return_expr): Handle dependent_lambda_return_type_node.
493 2011-08-23  Jason Merrill  <jason@redhat.com>
495         PR c++/50024
496         * semantics.c (maybe_constant_value): Don't try to fold { }.
497         * pt.c (build_non_dependent_expr): Don't wrap { }.
498         * init.c (build_value_init): Allow scalar value-init in templates.
500 2011-08-23  Jason Merrill  <jason@redhat.com>
502         * semantics.c (potential_constant_expression_1): Allow 'this'.
504 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
506         PR c++/50158
507         * typeck.c (cp_build_modify_expr): Call mark_rvalue_use on rhs
508         if it has side-effects and needs to be preevaluated.
510 2011-08-23  Siddhesh Poyarekar  <siddhesh.poyarekar@gmail.com>
512         PR c++/50055
513         * except.c (begin_eh_spec_block): Build EH_SPEC block on the
514         same line as the function.
516 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
518         PR c++/46862
519         * class.c (finish_struct_1): If TYPE_TRANSPARENT_AGGR is set on a type
520         which doesn't have any fields, clear it and diagnose.
522 2011-08-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
523             Marc Glisse  <marc.glisse@normalesup.org>
525         PR libstdc++-v3/1773
526         * mangle.c (decl_mangling_context): Call
527         targetm.cxx.decl_mangling_context.
528         (write_unscoped_name): Use decl_mangling_context.
530 2011-08-18  Dodji Seketeli  <dodji@redhat.com>
532         PR c++/45625
533         * pt.c (parameter_of_template_p): Handle comparison with DECLs of
534         template parameters as created by process_template_parm.
536 2011-08-16  Jason Merrill  <jason@redhat.com>
538         PR c++/50086
539         * pt.c (unify_pack_expansion): Correct overloaded unification
540         logic.
542         * pt.c (instantiate_class_template_1): If DECL_PRESERVE_P is set
543         on a member function or static data member, call mark_used.
545         PR c++/50054
546         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
547         init_list_type_node.
549 2011-08-13  Jason Merrill  <jason@redhat.com>
551         PR c++/50075
552         * name-lookup.c (local_bindings_p): New.
553         * name-lookup.h: Declare it.
554         * lex.c (unqualified_name_lookup_error): Use it.
556         PR c++/50059
557         * error.c (dump_expr): Handle MODIFY_EXPR properly.
559         * decl.c (grok_reference_init): Handle constexpr here.
560         * call.c (initialize_reference): Not here.
562 2011-08-12  David Li  <davidxl@google.com>
564         * class.c (update_vtable_entry_for_fn): Set
565         LOST_PRIMARY bit properly.
567 2011-08-12  Jason Merrill  <jason@redhat.com>
569         PR c++/50034
570         * call.c (convert_arg_to_ellipsis): force_rvalue only in
571         potentially evaluated context.
573 2011-08-12  Richard Guenther  <rguenther@suse.de>
575         * call.c (build_over_call): Instead of memcpy use an
576         assignment of two MEM_REFs.
578 2011-08-11  Romain Geissler  <romain.geissler@gmail.com>
579             Brian Hackett  <bhackett1024@gmail.com>
581         * decl.c (cp_finish_decl): Invoke callbacks on finish_decl event.
583 2011-08-10  Richard Guenther  <rguenther@suse.de>
585         * call.c (build_over_call): Call memcpy unconditionally.
587 2011-08-08  Jason Merrill  <jason@redhat.com>
589         PR c++/50020
590         * semantics.c (finish_call_expr): Don't look at 'this' if we
591         had an explicit object argument.
593         PR c++/50011
594         * typeck2.c (check_narrowing): Fix integer logic.
596 2011-08-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
598         * Make-lang.in (g++$(exeext)): Add $(EXTRA_GCC_LIBS).
600 2011-08-05  Jason Merrill  <jason@redhat.com>
602         PR c++/48993
603         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Sorry
604         on 'this' in a constructor.
606         PR c++/49921
607         * semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p.
609         PR c++/49669
610         * init.c (perform_member_init): Handle invalid array initializer.
612         PR c++/49988
613         * semantics.c (cxx_eval_array_reference): Handle failure to
614         reduce the array operand to something we can work with.
616 2011-08-05  Gabriel Charette  <gchare@google.com>
618         * decl.c (finish_function): Remove unecessary line 0 hack.
620 2011-08-05  Jason Merrill  <jason@redhat.com>
622         PR c++/47453
623         * typeck.c (build_x_compound_expr_from_list): Also complain
624         about ({...}).
626         PR c++/49812
627         * typeck.c (cp_build_unary_op) [POSTINCREMENT_EXPR]: Strip cv-quals.
629         PR c++/49983
630         * parser.c (cp_parser_range_for): Only do auto deduction in
631         template if the range is non-dependent.
633         * init.c (perform_member_init): Always build_aggr_init
634         for a class member with an explicit mem-initializer.
636         * pt.c (unify) [TEMPLATE_TYPE_PARM]: Allow VLA for C++0x 'auto'.
638 2011-08-04  Jakub Jelinek  <jakub@redhat.com>
640         PR middle-end/49905
641         * decl.c (cxx_init_decl_processing): Add alloc_size (1) attribute
642         for operator new and operator new [].  Call init_attributes.
644 2011-08-02  Jason Merrill  <jason@redhat.com>
646         PR c++/43886
647         * parser.c (cp_parser_lambda_body): Clear local_variables_forbidden_p.
649         PR c++/49577
650         * typeck2.c (check_narrowing): Check unsigned mismatch.
651         * semantics.c (finish_compound_literal): check_narrowing.
653         PR c++/49593
654         * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR.
656         PR c++/49803
657         * init.c (sort_mem_initializers): Initialize uses_unions_p here.
658         (build_field_list): Not here.
660         PR c++/49834
661         * parser.c (build_range_temp): Split out from...
662         (cp_convert_range_for): ...here.
663         (do_range_for_auto_deduction): New.
664         (cp_parser_range_for): Use it.
666 2011-08-02  Jakub Jelinek  <jakub@redhat.com>
668         * cp-tree.h (finish_omp_atomic): Adjust prototype.
669         (cxx_omp_const_qual_no_mutable): New prototype.
670         (finish_omp_taskyield): New prototype.
671         * parser.c (cp_parser_omp_atomic): (cp_parser_omp_atomic): Handle
672         parsing OpenMP 3.1 atomics.  Adjust finish_omp_atomic caller.
673         (cp_parser_omp_clause_name): Handle final and mergeable clauses.
674         (cp_parser_omp_clause_final, cp_parser_omp_clause_mergeable): New
675         functions.
676         (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FINAL
677         and PRAGMA_OMP_CLAUSE_MERGEABLE.
678         (OMP_TASK_CLAUSE_MASK): Allow final and mergeable clauses.
679         (cp_parser_omp_taskyield): New function.
680         (cp_parser_pragma): Handle PRAGMA_OMP_TASKYIELD.
681         (cp_parser_omp_clause_reduction): Handle min and max.
682         * pt.c (tsubst_expr) <case OMP_ATOMIC>: Handle OpenMP 3.1 atomics.
683         (tsubst_omp_clauses): Handle OMP_CLAUSE_FINAL and
684         OMP_CLAUSE_MERGEABLE.
685         * semantics.c (finish_omp_atomic): Add OPCODE, V, LHS1 and RHS1
686         arguments.  Handle OpenMP 3.1 atomics.  Adjust c_finish_omp_atomic
687         caller.
688         (finish_omp_clauses): Don't complain about const qualified
689         predetermined vars and static data members in firstprivate clause.
690         Handle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE. Handle MIN_EXPR
691         and MAX_EXPR.
692         (finish_omp_taskyield): New function.
693         * cp-gimplify.c (cxx_omp_const_qual_no_mutable): New function.
694         (cxx_omp_predetermined_sharing): Use it.
696 2011-08-02  Jason Merrill  <jason@redhat.com>
698         * call.c (build_call_a): Also check at_function_scope_p.
700 2011-08-01  Jason Merrill  <jason@redhat.com>
702         PR c++/49932
703         * mangle.c (write_prefix): Handle decltype.
705         PR c++/49924
706         * semantics.c (cxx_eval_vec_init_1): Fix logic.
708         PR c++/49813
709         * semantics.c (potential_constant_expression_1): Allow any builtin.
710         (morally_constexpr_builtin_function_p): Remove.
712 2011-07-29  Jason Merrill  <jason@redhat.com>
714         PR c++/49867
715         * parser.c (cp_parser_lambda_expression): Also clear in_statement
716         and in_switch_statement_p.
717         (cp_parser_class_specifier): Likewise.
719 2011-07-28  Jason Merrill  <jason@redhat.com>
721         PR c++/49808
722         * pt.c (tsubst) [TEMPLATE_PARM_INDEX]: Call convert_from_reference.
723         (convert_nontype_argument, tsubst_template_arg): Handle its output.
725 2011-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
727         PR c++/49813
728         * semantics.c (potential_constant_expression_1):  Handle FMA_EXPR.
730 2011-07-27  Jeffrey Yasskin  <jyasskin@google.com>
732         * pt.c (build_template_decl): Copy the function_decl's
733         source location to the new template_decl.
735 2011-07-26  Paolo Carlini  <paolo.carlini@oracle.com>
737         PR c++/49776
738         * typeck.c (cp_build_modify_expr): Check digest_init return value
739         for error_mark_node.
741 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
743         PR bootstrap/49845
744         * parser.c (cp_parser_perform_range_for_lookup): Always assign *being
745         and *end before returning.
747 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
749         PR c++/49838
750         * parser.c (cp_parser_perform_range_for_lookup): Early return if
751         error_operand_p (range).
753 2011-07-23  Jason Merrill  <jason@redhat.com>
755         PR c++/49823
756         * parser.c (cp_parser_qualifying_entity): Handle templates.
758 2011-07-22  Jason Merrill  <jason@redhat.com>
760         PR c++/49793
761         * typeck2.c (check_narrowing): Downgrade permerror to pedwarn.
762         Make conditional on -Wnarrowing.
764 2011-07-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
766         Warn about the use of final/override in non-c++0x mode, and
767         add __final for non-c++0x mode.
768         * cp-tree.h (cpp0x_warn_str): Add CPP0X_OVERRIDE_CONTROLS.
769         * error.c (maybe_warn_cpp0x): Adjust.
770         * parser.c (cp_parser_virt_specifier_seq_opt): Use it. Add
771         '__final' as a non-c++0x alternative for 'final'.
773 2011-07-22  Jason Merrill  <jason@redhat.com>
774             Mark Glisse  <marc.glisse@normalesup.org>
776         PR c++/30112
777         * decl.c (cp_finish_decl): Apply pragma redefine_extname in
778         other namespaces as well.
779         * name-lookup.c (c_linkage_bindings): Define.
780         (lookup_extern_c_fun_in_all_ns): Rename from
781         lookup_extern_c_fun_binding_in_all_ns.  Return tree.
782         (pushdecl_maybe_friend_1): Adjust.  Copy DECL_ASSEMBLER_NAME.
784 2011-07-20  Jason Merrill  <jason@redhat.com>
786         * parser.c (cp_parser_initializer_list): Handle C99 .id= and [N]=
787         designated initializer syntax.
788         * decl.c (check_array_designated_initializer): Add index parm.
789         (maybe_deduce_size_from_array_init): Pass it.
790         (reshape_init_array_1): Likewise.
792         PR c++/6709 (DR 743)
793         PR c++/42603 (DR 950)
794         * parser.c (token_is_decltype, cp_lexer_next_token_is_decltype): New.
795         (cp_parser_nested_name_specifier_opt): Allow decltype.
796         (cp_parser_qualifying_entity): Likewise.
797         (cp_parser_decltype): Replace source tokens with CPP_DECLTYPE.
798         (cp_parser_simple_type_specifier): Handle decltype as scope.
799         (cp_parser_base_specifier): Allow decltype.
800         (cp_parser_base_clause): Don't crash on null base.
801         * parser.h (CPP_KEYWORD, CPP_TEMPLATE_ID): Move to c-common.h.
802         (CPP_NESTED_NAME_SPECIFIER, N_CP_TTYPES): Likewise.
804 2011-07-19  Jason Merrill  <jason@redhat.com>
806         PR c++/49785
807         * pt.c (coerce_template_parms): Handle non-pack after pack.
809 2011-07-19  Richard Guenther  <rguenther@suse.de>
811         * call.c (build_special_member_call): Use fold_build_pointer_plus.
812         * class.c (build_base_path): Likewise.
813         (convert_to_base_statically): Likewise.
814         (dfs_accumulate_vtbl_inits): Likewise.
815         * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
816         * except.c (expand_start_catch_block): Likewise.
817         * init.c (expand_virtual_init): Likewise.
818         (build_new_1): Likewise.
819         (build_vec_delete_1): Likewise.
820         (build_vec_delete): Likewise.
821         * rtti.c (build_headof): Likewise.
822         (tinfo_base_init): Likewise.
823         * typeck.c (get_member_function_from_ptrfunc): Likewise.
824         (cp_build_addr_expr_1): Likewise.
825         * typeck2.c (build_m_component_ref): Likewise.
827 2011-07-18  Martin Jambor  <mjambor@suse.cz>
829         * parser.c (cp_parser_parameter_declaration_list): Initialize
830         parenthesized_p.
832 2011-07-16  Jason Merrill  <jason@redhat.com>
834         * pt.c (tinst_level_tick, last_template_error_tick): Replace with
835         last_error_tinst_level.
836         (push_tinst_level, pop_tinst_level): Adjust.
837         (problematic_instantiation_changed): Adjust.
838         (record_last_problematic_instantiation): Adjust.
839         * error.c (cp_print_error_function): Don't print
840         current_function_decl if we're in a template instantiation context.
841         (print_instantiation_full_context): Always print first line.
843 2011-07-16  Nathan Froyd  <froydnj@codesourcery.com>
844             Jason Merrill  <jason@redhat.com>
846         PR c++/45329
847         PR c++/48934
848         * cp-tree.h (fn_type_unification): Add `bool' parameter.
849         * pt.c (enum template_base_result): Define.
850         (unify_success, unify_unknown): Define.
851         (unify_parameter_deduction_failure): Define.
852         (unify_invalid, unify_cv_qual_mismatch, unify_type_mismatch): Define.
853         (unify_parameter_pack_mismatch): Define.
854         (unify_parameter_pack_inconsistent): Define.
855         (unify_ptrmem_cst_mismatch, unify_vla_arg): Define.
856         (unify_expression_unequal, unify_inconsistency): Define.
857         (unify_method_type_error, unify_arity): Likewise.
858         (unify_too_many_parameters, unify_too_few_parameters): Define.
859         (unify_arg_conversion, unify_no_common_base): Define.
860         (unify_illformed_ptrmem_cst_expr): Define.
861         (unify_substitution_failure): Define.
862         (unify_inconsistent_template_template_parameters): Define.
863         (unify_template_deduction_failure): Define.
864         (unify_template_argument_mismatch): Define.
865         (unify_overload_resolution_failure): Define.
866         (comp_template_args_with_info): New function, split out from...
867         (comp_template_args): ...here.  Call it.
868         (deduction_tsubst_fntype): Add `complain' parameter'.  Pass it
869         to tsubst.
870         (unify): Add `explain_p' parameter.  Pass to all relevant calls.
871         Call above status functions when appropriate.
872         (resolve_overloaded_unification, try_one_overload): Likewise.
873         (type_unification, type_unification_real): Likewise.
874         (unify_pack_expansion): Likewise.
875         (get_template_base, try_class_unification): Likewise.
876         (get_bindings, more_specialized_fn): Pass false to unification
877         calls.
878         (get_class_bindings, do_auto_deduction): Likewise.
879         (convert_nontype_argument): Likewise.
880         (fn_type_unification): Likewise.  Pass tf_warning_or_error if
881         explain_p.
882         (get_template_base): Add `explain_p' parameter and pass it to
883         try_class_unification.  Return an enum template_base_result.
884         * class.c (resolve_address_of_overloaded_function): Pass false to
885         fn_type_unification.
886         * call.c (enum rejection_reason_code): Add new codes.
887         (struct rejection_reason): Add template_unification field.
888         Add template_instantiation field.
889         (template_unification_rejection): Define.
890         (template_unification_error_rejection): Define.
891         (template_instantiation_rejection): Define.
892         (invalid_copy_with_fn_template_rejection): Define.
893         (add_template_candidate): Pass false to unify.
894         Provide more rejection reasons when possible.
895         (print_template_unification_rejection): Define.
896         (print_arity_rejection): Define, split out from...
897         (print_z_candidate): ...here.  Add cases for new rejection
898         reasons.
900 2011-07-15  Jason Merrill  <jason@redhat.com>
902         * Make-lang.in (check-g++-strict-gc): New.
903         (cp/except.o): Depend on gt-cp-except.h
904         * except.c: Include gt-cp-except.h.
905         * config-lang.in (gtfiles): Add cp/except.c.
906         * decl2.c (mark_used): Adjust constexpr condition, set
907         function_depth around template instantiation.
908         * parser.c (cp_parser_lambda_body): Set function_depth.
909         * semantics.c (maybe_add_lambda_conv_op): Likewise.
911         PR testsuite/49741
912         * Make-lang.in (check-c++0x): Use --extra_opts instead of--tool_opts.
914 2011-07-13  Jason Merrill  <jason@redhat.com>
916         * Make-lang.in (check-c++0x): New.
918 2011-07-13  Richard Sandiford  <richard.sandiford@linaro.org>
920         * typeck2.c (split_nonconstant_init_1): Pass the initializer directly,
921         rather than a pointer to it.  Return true if the whole of the value
922         was initialized by the generated statements.  Use
923         complete_ctor_at_level_p instead of count_type_elements.
925 2011-07-12   Diego Novillo  <dnovillo@google.com>
927         * name-lookup.h (cp_binding_level): Rename from cxx_scope.
928         Update all users.
929         (struct cp_binding_level): Fix indentation.
931 2011-07-11  Jason Merrill  <jason@redhat.com>
933         PR c++/49672
934         * pt.c (extract_fnparm_pack): Split out from...
935         (make_fnparm_pack): ...here.
936         (instantiate_decl): Handle non-pack parms after a pack.
937         * semantics.c (maybe_add_lambda_conv_op): Don't in a template.
939         * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p.
941         PR c++/44609
942         * cp-tree.h (struct tinst_level): Add errors field.
943         * pt.c (neglectable_inst_p, limit_bad_template_recurson): New.
944         (push_tinst_level): Don't start another decl in that case.
945         (reopen_tinst_level): Adjust errors field.
946         * decl2.c (cp_write_global_declarations): Don't complain about
947         undefined inline if its template was defined.
948         * mangle.c (mangle_decl_string): Handle failure from push_tinst_level.
950 2011-07-10  Jason Merrill  <jason@redhat.com>
952         PR c++/49691
953         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
954         rather than current_class_type to determine whether to set 'this'.
955         (cp_parser_direct_declarator): Pass -1 to quals if member_p is false.
956         (cp_parser_init_declarator): Pass down member_p.
958 2011-07-09  Jason Merrill  <jason@redhat.com>
960         * tree.c (build_vec_init_elt): Strip TARGET_EXPR.
962 2011-07-08  Jason Merrill  <jason@redhat.com>
964         PR c++/45437
965         * typeck.c (cp_build_modify_expr): Preevaluate RHS.
967         * method.c (use_thunk): Use cgraph_add_to_same_comdat_group.
968         * optimize.c (maybe_clone_body): Likewise.
969         * semantics.c (maybe_add_lambda_conv_op): Likewise.
971         PR c++/45603
972         * decl.c (expand_static_init): Don't get confused by user
973         declaration of __cxa_guard_acquire.
975         * typeck.c (cp_apply_type_quals_to_decl): Don't check
976         COMPLETE_TYPE_P either.
978         PR c++/49673
979         * typeck.c (cp_apply_type_quals_to_decl): Don't check
980         TYPE_NEEDS_CONSTRUCTING.
982 2011-07-07  Jason Merrill  <jason@redhat.com>
984         PR c++/49663
985         * pt.c (push_deduction_access_scope): Preserve
986         processing_template_decl across push_to_top_level.
987         And revert:
988         * class.c (pushclass): Accept NULL argument.
989         (popclass): Deal with popping null class.
990         * pt.c (push_access_scope, pop_access_scope): Use them rather than
991         push_to_top_level/pop_from_top_level.
992         * name-lookup.c (lookup_name_real_1): Check current_class_type.
994 2011-07-07  Jakub Jelinek  <jakub@redhat.com>
996         PR c/49644
997         * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
998         one non-complex and one complex argument, call save_expr on both
999         operands.
1001 2011-07-06  Jason Merrill  <jason@redhat.com>
1003         PR c++/49353
1004         * semantics.c (expand_or_defer_fn_1): Clear DECL_EXTERNAL
1005         on kept inlines.
1007         PR c++/49568
1008         * method.c (make_thunk, use_thunk): Copy DECL_COMDAT.
1010 2011-07-05  Jason Merrill  <jason@redhat.com>
1012         PR c++/48157
1013         * pt.c (tsubst_qualified_id): Preserve TEMPLATE_ID_EXPR in
1014         partial instantiation.
1016         PR c++/49598
1017         * semantics.c (finish_id_expression): convert_from_reference.
1019 2011-07-05  Richard Guenther  <rguenther@suse.de>
1021         * decl.c (cxx_init_decl_processing): Defer building common
1022         tree nodes to c_common_nodes_and_builtins.
1024 2011-07-04  Jason Merrill  <jason@redhat.com>
1026         DR 1207
1027         PR c++/49589
1028         * mangle.c (write_expression): Handle 'this'.
1029         * parser.c (cp_parser_postfix_dot_deref_expression): Allow
1030         incomplete *this.
1031         * semantics.c (potential_constant_expression_1): Check that
1032         DECL_CONTEXT is set on 'this'.
1034         * error.c (dump_template_bindings): Don't print typenames
1035         for a partial instantiation.
1036         (dump_function_decl): If we aren't printing function arguments,
1037         print template arguments as <args> rather than [with ...].
1038         (dump_expr): Don't print return type or template header.
1039         [BASELINK]: Use BASELINK_FUNCTIONS rather than get_first_fn.
1040         * pt.c (dependent_template_arg_p): Handle null arg.
1042         * error.c (type_to_string): Avoid redundant akas.
1044 2011-07-01  Jonathan Wakely  <jwakely.gcc@gmail.com>
1046         PR c++/49605
1047         * init.c (build_delete): Only warn for sfk_deleting_destructor.
1049 2011-07-01  Jakub Jelinek  <jakub@redhat.com>
1051         * Make-lang.in (cp/decl.o): Depend on pointer-set.h.
1052         (cp/class.o): Likewise.
1053         (cp/error.o): Likewise.
1054         (cp/name-lookup.o): Likewise.
1055         (cp/decl2.o): Likewise.  Don't depend on $(POINTER_SET_H).
1057 2011-07-01  Jason Merrill  <jason@redhat.com>
1059         PR c++/48261
1060         * pt.c (lookup_template_function): Handle non-function.
1062         PR c++/48593
1063         * pt.c (tsubst_qualified_id): Check PTRMEM_OK_P.
1064         * tree.c (build_qualified_name): Set PTRMEM_OK_P.
1065         * semantics.c (finish_parenthesized_expr): Clear PTRMEM_OK_P on
1066         SCOPE_REF, too.
1067         * cp-tree.h (PTRMEM_OK_P): Apply to SCOPE_REF, too.
1068         (QUALIFIED_NAME_IS_TEMPLATE): Switch to lang flag 1.
1070         PR c++/48883
1071         PR c++/49609
1072         * pt.c (resolve_nondeduced_context): Call mark_used.
1074         PR c++/49085
1075         * semantics.c (finish_offsetof): Complain about incomplete type.
1077 2011-06-30  Jason Merrill  <jason@redhat.com>
1079         PR c++/49387
1080         * rtti.c (get_tinfo_decl): Call complete_type.
1082         PR c++/49569
1083         * method.c (implicitly_declare_fn): Set DECL_PARM_LEVEL and
1084         DECL_PARM_INDEX on rhs parm.
1086         * pt.c (iterative_hash_template_arg): Use cp_tree_operand_length.
1088         PR c++/49355
1089         * tree.c (stabilize_init): Handle aggregate initialization.
1091         PR c++/48481
1092         * name-lookup.c (struct arg_lookup): Add fn_set.
1093         (add_function): Check it.
1094         (lookup_arg_dependent_1): Initialize it.
1096 2011-06-29  Jason Merrill  <jason@redhat.com>
1098         PR c++/49216
1099         * init.c (build_new_1): Pass {} down to build_vec_init.
1100         (build_vec_init): Handle it.
1102         DR 1207
1103         PR c++/49003
1104         * cp-tree.h (struct saved_scope): Add x_current_class_ptr,
1105         x_current_class_ref.
1106         (current_class_ptr, current_class_ref): Use them.
1107         * decl.c (build_this_parm): Handle getting the class type.
1108         * parser.c (cp_parser_late_return_type_opt): Set up 'this'
1109         for use within the trailing return type.
1111         * pt.c (tsubst_decl) [VAR_DECL]: In unevaluated operand,
1112         don't tsubst DECL_INITIAL unless our type use auto.
1114         PR c++/49520
1115         * semantics.c (constexpr_fn_retval): Handle CLEANUP_POINT_EXPR here.
1116         (massage_constexpr_body): Not here.
1118         PR c++/49554
1119         * semantics.c (lambda_proxy_type): New.
1120         (build_capture_proxy): Use it.
1121         * cp-tree.h (DECLTYPE_FOR_LAMBDA_PROXY): New.
1122         * pt.c (tsubst) [DECLTYPE_TYPE]: Use them.
1124         PR c++/45923
1125         * class.c (explain_non_literal_class): New.
1126         (finalize_literal_type_property): Call it.
1127         * cp-tree.h: Declare it.
1128         * semantics.c (ensure_literal_type_for_constexpr_object): Call it.
1129         (is_valid_constexpr_fn): Likewise.
1130         (massage_constexpr_body): Split out from...
1131         (register_constexpr_fundef): ...here.
1132         (is_instantiation_of_constexpr): New.
1133         (expand_or_defer_fn_1): Leave DECL_SAVED_TREE alone in that case.
1134         (explain_invalid_constexpr_fn): New.
1135         (cxx_eval_call_expression): Call it.
1136         (potential_constant_expression_1): Likewise.  Avoid redundant errors.
1137         * method.c (process_subob_fn): Diagnose non-constexpr.
1138         (walk_field_subobs): Likewise.
1139         (synthesized_method_walk): Don't shortcut if we want diagnostics.
1140         (explain_implicit_non_constexpr): New.
1141         (defaulted_late_check): Use it.
1142         * call.c (build_cxx_call): Remember location.
1144         * method.c (maybe_explain_implicit_delete): Use pointer_set
1145         instead of htab.
1147         * class.c (finalize_literal_type_property): Update conditions.
1148         * method.c (defaulted_late_check): Set TYPE_HAS_CONSTEXPR_CTOR.
1150         * tree.c (build_vec_init_expr): Don't add TARGET_EXPR.
1151         * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR.
1152         * semantics.c (cxx_eval_vec_init_1): Correct type.
1154         * init.c (build_value_init): Decide whether or not to zero-initialize
1155         based on user-providedness of default ctor, not any ctor.
1156         (build_value_init_noctor): Adjust assert.
1158         DR 990
1159         * call.c (convert_like_real) [ck_user]: Handle value-initialization.
1160         (build_new_method_call_1): Likewise.
1161         * init.c (expand_default_init): Handle direct list-initialization
1162         of aggregates.
1164 2011-06-27  Jakub Jelinek  <jakub@redhat.com>
1166         * cp-tree.h (union lang_tree_node): Use it in chain_next expression.
1168 2011-06-26  Jason Merrill  <jason@redhat.com>
1170         PR c++/49528
1171         * semantics.c (potential_constant_expression_1): Check
1172         for non-literality rather than cleanup.
1173         (cxx_eval_constant_expression): Likewise.
1175         PR c++/49528
1176         * semantics.c (potential_constant_expression_1): A TARGET_EXPR
1177         with a cleanup isn't constant.
1178         (cxx_eval_constant_expression): Likewise.
1179         * init.c (expand_default_init): Use maybe_constant_init.
1181 2011-06-24  Jakub Jelinek  <jakub@redhat.com>
1183         PR c++/46400
1184         * cp-tree.h (union lang_tree_node): Use TYPE_NEXT_VARIANT
1185         instead of TYPE_CHAIN for chain_next for types.
1187 2011-06-23  Gabriel Charette  <gchare@google.com>
1189         * name-lookup.h (cp_binding_level): Removed unused
1190         member names_size. Update all users.
1192 2011-06-23  Jason Merrill  <jason@redhat.com>
1194         * typeck2.c (build_functional_cast): Strip cv-quals for value init.
1195         * init.c (build_zero_init_1): Not here.
1197         PR c++/35255
1198         * pt.c (resolve_overloaded_unification): Fix DR 115 handling.
1200 2011-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
1202         PR c++/44625
1203         * decl2.c (build_anon_union_vars): Early return error_mark_node
1204         for a nested anonymous struct.
1206 2011-06-23  Jason Merrill  <jason@redhat.com>
1208         PR c++/49507
1209         * decl2.c (mark_used): Don't call synthesize_method for
1210         functions defaulted outside the class.
1212         * optimize.c (maybe_clone_body): Set linkage flags before
1213         cgraph_same_body_alias.
1215         PR c++/49440
1216         * class.c (set_linkage_according_to_type): Hand off to
1217         determine_visibility.
1219         PR c++/49395
1220         * init.c (build_zero_init_1): Strip cv-quals from scalar types.
1222         PR c++/36435
1223         * pt.c (most_specialized_instantiation): Do check return types.
1225 2011-06-22  Jason Merrill  <jason@redhat.com>
1227         PR c++/49260
1228         * call.c (build_call_a): Set cp_function_chain->can_throw here.
1229         (build_cxx_call): Not here.
1231 2011-06-21  Jason Merrill  <jason@redhat.com>
1233         PR c++/49172
1234         * decl.c (cp_finish_decl): Adjust init_const_expr_p for refs.
1235         (grokdeclarator): constexpr doesn't apply const for refs.
1236         * parser.c (cp_parser_initializer_clause): Don't call
1237         maybe_constant_value here.
1238         * call.c (initialize_reference): Handle constexpr.
1240         PR c++/49482
1241         * semantics.c (maybe_add_lambda_conv_op): Call mark_exp_read for
1242         static fn parameters.
1244         * call.c (add_builtin_candidates): Use cv_unqualified rather than
1245         TYPE_MAIN_VARIANT.
1246         * pt.c (tsubst_arg_types): Likewise.
1247         * except.c (build_throw): Use cv_unqualified.
1249         PR c++/49418
1250         * call.c (cxx_type_promotes_to): Don't strip cv-quals.
1251         * semantics.c (lambda_return_type): Strip them here.
1253 2011-06-21  Andrew MacLeod  <amacleod@redhat.com>
1255         * semantics.c: Add sync_ or SYNC__ to builtin names.
1257 2011-06-20  Jason Merrill  <jason@redhat.com>
1259         PR c++/49216
1260         * init.c (build_vec_init): Don't try to use a CONSTRUCTOR when
1261         base is a pointer.
1262         * typeck2.c (process_init_constructor_array): Use {} for classes,
1263         too.
1264         * call.c (convert_like_real): Handle substitution failure.
1266         PR c++/48138
1267         * pt.c (canonicalize_type_argument): New.
1268         (convert_template_argument, unify): Use it.
1270         PR c++/47080
1271         * call.c (rejection_reason_code): Add rr_explicit_conversion.
1272         (print_z_candidate): Handle it.
1273         (explicit_conversion_rejection): New.
1274         (build_user_type_conversion_1): Reject an explicit conversion
1275         function that requires more than a qualification conversion.
1277         PR c++/47635
1278         * decl.c (grokdeclarator): Don't set ctype to an ENUMERAL_TYPE.
1280         PR c++/48138
1281         * tree.c (strip_typedefs): Use build_aligned_type.
1283         PR c++/49205
1284         * call.c (sufficient_parms_p): Allow parameter packs too.
1286         PR c++/43321
1287         * semantics.c (describable_type): Remove.
1288         * cp-tree.h: Likewise.
1289         * decl.c (cp_finish_decl): Don't call it.
1290         * init.c (build_new): Likewise.
1291         * parser.c (cp_parser_omp_for_loop): Likewise.
1292         * pt.c (tsubst_decl): Likewise.
1293         (do_auto_deduction): If we fail in a template, try again
1294         at instantiation time.
1296         PR c++/43831
1297         * parser.c (cp_parser_lambda_introducer): Complain about redundant
1298         captures.
1299         * semantics.c (add_capture): Likewise.
1300         (register_capture_members): Clear IDENTIFIER_MARKED.
1302 2011-06-17  Jason Merrill  <jason@redhat.com>
1304         PR c++/49458
1305         * call.c (convert_class_to_reference_1): Allow binding function
1306         lvalue to rvalue reference.
1308         PR c++/43912
1309         Generate proxy VAR_DECLs for better lambda debug info.
1310         * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): Add lambda operator().
1311         (LAMBDA_EXPR_PENDING_PROXIES): New.
1312         (struct tree_lambda_expr): Add pending_proxies.
1313         * name-lookup.c (pushdecl_maybe_friend_1): Handle capture shadowing.
1314         (qualify_lookup): Use is_lambda_ignored_entity.
1315         * parser.c (cp_parser_lambda_expression): Don't adjust field names.
1316         Call insert_pending_capture_proxies.
1317         (cp_parser_lambda_introducer): Use this_identifier.
1318         (cp_parser_lambda_declarator_opt): Call the object parameter
1319         of the op() "__closure" instead of "this".
1320         (cp_parser_lambda_body): Call build_capture_proxy.
1321         * semantics.c (build_capture_proxy, is_lambda_ignored_entity): New.
1322         (insert_pending_capture_proxies, insert_capture_proxy): New.
1323         (is_normal_capture_proxy, is_capture_proxy): New.
1324         (add_capture): Add __ to field names here, return capture proxy.
1325         (add_default_capture): Use this_identifier, adjust to expect
1326         add_capture to return a capture proxy.
1327         (outer_lambda_capture_p, thisify_lambda_field): Remove.
1328         (finish_id_expression, lambda_expr_this_capture): Adjust.
1329         (build_lambda_expr): Initialize LAMBDA_EXPR_PENDING_PROXIES.
1330         * pt.c (tsubst_copy_and_build): Check that LAMBDA_EXPR_PENDING_PROXIES
1331         is null.
1333         * name-lookup.c (pushdecl_maybe_friend_1): Do check for shadowing
1334         of artificial locals.
1336         * parser.c (cp_parser_lambda_expression): Clear
1337         LAMBDA_EXPR_THIS_CAPTURE after parsing.
1338         * pt.c (tsubst_copy_and_build): Make sure it isn't set.
1340         * cp-tree.h (struct tree_lambda_expr): Change common to typed.
1341         Move non-pointers to end of struct.
1343         * pt.c (tsubst_decl): Handle DECL_VALUE_EXPR on reference.
1344         * decl.c (check_initializer): Handle DECL_VALUE_EXPR_P.
1346         * semantics.c (finish_non_static_data_member): Preserve dereference
1347         in template.
1349 2011-06-16  Jason Merrill  <jason@redhat.com>
1351         PR c++/44160
1352         * parser.c (cp_parser_lambda_body): Share code between
1353         simple and complex cases instead of using cp_parser_function_body.
1355         PR c++/45378
1356         * decl.c (check_initializer): Check narrowing.
1358         PR c++/49229
1359         * pt.c (tsubst_decl) [FUNCTION_DECL]: Handle substitution failure.
1361         PR c++/49251
1362         * semantics.c (finish_id_expression): Mark even dependent
1363         variables as used.
1365         PR c++/49420
1366         * error.c (dump_template_argument): Don't try to omit default
1367         template args from an argument pack.
1369 2011-06-15  H.J. Lu  <hongjiu.lu@intel.com>
1371         PR c++/49412
1372         * decl.c (get_dso_handle_node): Mark __dso_handle hidden if
1373         assembler supports hidden visibility.
1375 2011-06-14  Jason Merrill  <jason@redhat.com>
1377         PR c++/49107
1378         * cp-tree.h (DEFERRED_NOEXCEPT_SPEC_P): Handle overload.
1379         * method.c (defaulted_late_check): Only maybe_instantiate_noexcept
1380         if the declaration had an exception-specifier.
1381         (process_subob_fn): Don't maybe_instantiate_noexcept.
1382         * pt.c (maybe_instantiate_noexcept): Handle overload.
1383         * typeck2.c (nothrow_spec_p_uninst): New.
1384         (merge_exception_specifiers): Add 'fn' parm.  Build up overload.
1385         * typeck.c (merge_types): Adjust.
1387         * pt.c (deduction_tsubst_fntype): Don't save input_location.
1388         (maybe_instantiate_noexcept): Likewise.
1390 2011-06-14  Joseph Myers  <joseph@codesourcery.com>
1392         * Make-lang.in (cp/method.o): Update dependencies.
1393         * method.c: Include common/common-target.h.
1394         (use_thunk): Use targetm_common.have_named_sections.
1396 2011-06-14  Steve Ellcey  <sje@cup.hp.com>
1398         * decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
1400 2011-06-14  Jason Merrill  <jason@redhat.com>
1402         * error.c (type_to_string): Print typedef-stripped version too.
1404         PR c++/49117
1405         * call.c (perform_implicit_conversion_flags): Print source type as
1406         well as expression.
1408         PR c++/49389
1409         * typeck2.c (build_m_component_ref): Preserve rvalueness.
1411         PR c++/49369
1412         * class.c (build_base_path): Fix cv-quals in unevaluated context.
1414         PR c++/49290
1415         * semantics.c (cxx_fold_indirect_ref): Local, more permissive copy
1416         of fold_indirect_ref_1.
1417         (cxx_eval_indirect_ref): Use it.
1419 2011-06-11  Jan Hubicka  <jh@suse.cz>
1421         * decl2.c (cp_write_global_declarations): Process aliases; look trhough
1422         same body aliases.
1424 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
1426         PR c++/41769
1427         * decl.c (grokdeclarator): Reject operator names in parameters.
1429 2011-06-10  Jan Hubicka  <jh@suse.cz>
1431         * decl2.c (clear_decl_external): New functoin.
1432         (cp_write_global_declarations): Use it.
1434 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
1436         * cp-tree.h (error_operand_p): Remove.
1438 2011-06-09  David Krauss  <potswa@mac.com>
1440         PR c++/49118
1441         * typeck2.c (build_x_arrow): Push fake template context
1442         to produce diagnostic on acyclic endless operator-> drill-down.
1443         * call.c (build_new_op): Change Boolean overload status
1444         value to a pointer to the overload function.
1445         * cp-tree.h: Likewise.
1446         * typeck.c: Likewise.
1447         * parser.c: Likewise.
1448         * decl2.c: Likewise.
1449         * pt.c: Likewise.
1451 2011-06-09  Jason Merrill  <jason@redhat.com>
1453         * semantics.c (maybe_constant_value): Handle overflowed input.
1454         (non_const_var_error): Handle non-constant DECL_INITIAL.
1456         * pt.c (build_non_dependent_expr): Use fold_non_dependent_expr_sfinae.
1458         * parser.c (cp_parser_constant_expression): Just return the
1459         non-constant expression.
1461         * semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR.
1463 2011-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
1465         PR c++/29003
1466         * decl.c (grokdeclarator): Reject operator names in typedefs.
1468 2011-06-08  Jason Merrill  <jason@redhat.com>
1470         PR c++/49107
1471         * cp-tree.def (DEFERRED_NOEXCEPT): New.
1472         * cp-tree.h (struct tree_deferred_noexcept): New.
1473         (DEFERRED_NOEXCEPT_PATTERN, DEFERRED_NOEXCEPT_ARGS): New.
1474         (DEFERRED_NOEXCEPT_SPEC_P): New.
1475         (enum cp_tree_node_structure_enum): Add TS_CP_DEFERRED_NOEXCEPT.
1476         (union lang_tree_node): Add tree_deferred_noexcept.
1477         (maybe_instantiate_noexcept): Declare.
1478         * cp-objcp-common.c (cp_tree_size): Handle DEFERRED_NOEXCEPT.
1479         * error.c (dump_exception_spec): Likewise.
1480         * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
1481         * ptree.c (cxx_print_xnode): Likewise.
1482         * tree.c (cp_tree_equal): Likewise.
1483         * decl.c (cp_tree_node_structure): Likewise.
1484         (duplicate_decls): Call maybe_instantiate_noexcept.
1485         * except.c (build_noexcept_spec): Handle DEFERRED_NOEXCEPT.
1486         (nothrow_spec_p, type_noexcept_p, type_throw_all_p): Check
1487         DEFERRED_NOEXCEPT_SPEC_P.
1488         * typeck2.c (merge_exception_specifiers): Likewise.
1489         * decl2.c (mark_used): Call maybe_instantiate_noexcept.
1490         * method.c (process_subob_fn, defaulted_late_check): Likewise.
1491         * pt.c (tsubst_exception_specification): Add defer_ok parm.
1492         Build DEFERRED_NOEXCEPT.
1493         (maybe_instantiate_noexcept): New.
1494         (tsubst, regenerate_decl_from_template, instantiate_decl): Adjust.
1495         * search.c (check_final_overrider): Call maybe_instantiate_noexcept.
1497         * semantics.c (potential_constant_expression_1): Handle destructor
1498         call.
1500 2011-06-08  Jakub Jelinek  <jakub@redhat.com>
1502         * cp-tree.h (struct tinst_level): Add chain_next GTY
1503         markup.
1505 2011-06-08  Jason Merrill  <jason@redhat.com>
1507         PR c++/49322
1508         * pt.c (deduction_tsubst_fntype): Don't free the tinst entry
1509         if a pending_template entry is pointing at it.
1511 2011-06-07  Jason Merrill  <jason@redhat.com>
1513         PR c++/48969
1514         PR c++/44175
1515         * error.c (subst_to_string): New.
1516         (cp_printer): Use it for 'S'.
1517         (print_instantiation_partial_context_line): Handle subst context.
1518         * pt.c (push_tinst_level): Handle subst context.
1519         (deduction_tsubst_fntype): Don't track specific substitutions.
1520         Use push_tinst_level.
1522         * pt.c (deduction_tsubst_fntype): Use push_deduction_access_scope.
1523         (fn_type_unification): Don't call push_deduction_access_scope here.
1525 2011-06-06  Jason Merrill  <jason@redhat.com>
1527         PR c++/48780
1528         * typeck.c (perform_integral_promotions): Don't promote scoped enums.
1529         * call.c (convert_arg_to_ellipsis): Promote them here in old ABI.
1531 2011-06-06  Nicola Pero  <nicola.pero@meta-innovation.com>,
1533         PR obj-c++/48275
1534         * parser.c (cp_parser_objc_at_property_declaration): Allow setter
1535         and getter names to use all the allowed method names.
1537 2011-06-06  Jason Merrill  <jason@redhat.com>
1539         PR c++/49298
1540         * semantics.c (potential_constant_expression_1): Handle FIELD_DECL.
1542         PR objc++/49221
1543         * decl.c (cp_finish_decl): Check DECL_FUNCTION_SCOPE_P rather than
1544         at_function_scope_p.
1546         PR c++/49134
1547         * tree.c (build_target_expr): Deal with ARM ABI tweaks.
1549 2011-06-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
1551         * init.c (build_delete): Warn when deleting type with non-virtual
1552         destructor.
1554 2011-06-03  Jakub Jelinek  <jakub@redhat.com>
1556         PR c++/49276
1557         * mangle.c (write_nested_name): Use CP_DECL_CONTEXT instead of
1558         DECL_CONTEXT.
1560 2011-06-01  Jason Merrill  <jason@redhat.com>
1562         * pt.c (build_non_dependent_expr): Remove special handling of
1563         REFERENCE_REF_P.
1565         PR c++/44175
1566         * pt.c (template_args_equal): Handle one arg being NULL_TREE.
1567         (deduction_tsubst_fntype): Handle excessive non-infinite recursion.
1569         PR c++/49253
1570         * typeck2.c (build_x_arrow): Don't use build_min_nt.
1572 2010-05-31  Fabien Chêne  <fabien@gcc.gnu.org>
1574         PR c++/48010
1575         * name-lookup.c (supplement_binding_1): If the old binding was a
1576         type name, also check that the DECL actually refers to the same
1577         type or is not a type.
1579 2011-05-31  Jason Merrill  <jason@redhat.com>
1581         PR c++/44870
1582         * tree.c (lvalue_kind): Recurse on NON_DEPENDENT_EXPR.  Handle
1583         ARROW_EXPR, TYPEID_EXPR, and arbitrary class-valued expressions.
1584         (build_min_non_dep): Preserve reference refs.
1585         (build_min_non_dep_call_vec): Likewise
1587 2011-05-30  Jakub Jelinek  <jakub@redhat.com>
1589         PR c++/49223
1590         * semantics.c (finish_omp_clauses): Call require_complete_type
1591         even for copyin/copyprivate clauses.  Only call
1592         cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P.
1594 2011-05-28  Jason Merrill  <jason@redhat.com>
1596         PR c++/46124
1597         * parser.c (cp_parser_lambda_expression): Improve error recovery.
1598         (cp_parser_lambda_declarator_opt): Likewise.  Return bool.
1600 2011-05-27  Jason Merrill  <jason@redhat.com>
1602         PR c++/47277
1603         * parser.c (cp_parser_pseudo_destructor_name): Commit to parse
1604         after we see the ~.
1606         * mangle.c (mangle_decl_string): Make sure we don't try to mangle
1607         templates.
1609         PR c++/47049
1610         * semantics.c (maybe_add_lambda_conv_op): Fix COMDAT sharing.
1611         * decl.c (start_preparsed_function): Don't call comdat_linkage for
1612         a template.
1614         PR c++/47132
1615         * mangle.c (write_expression): Handle MODOP_EXPR.
1617         PR c++/47277
1618         * parser.c (cp_parser_unqualified_id): Don't check
1619         constructor_name_p for enums.
1621         PR c++/47687
1622         * pt.c (dependent_type_p_r): Avoid infinite recursion.
1624         PR c++/48284
1625         * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot
1626         with INDIRECT_REF of REFERENCE_TYPE.
1628         PR c++/49181
1629         * pt.c (get_mostly_instantiated_function_type): Use push_access_scope.
1631 2011-05-27  Nathan Froyd  <froydnj@codesourcery.com>
1633         * cp-tree.h (building_stmt_tree): Delete.
1634         * decl.c (save_function_data): Tweak initializer for x_cur_stmt_list.
1635         (build_aggr_init_full_exprs): Call building_stmt_list_p
1636         instead of building_stmt_tree.
1637         (initialize_local_var): Likewise.
1638         (finish_function): Likewise.
1639         * decl2.c (finish_anon_union): Likewise.
1640         * init.c (begin_init_stmts): Likewise.
1641         (finish_init_stmts): Likewise.
1642         (expand_aggr_init_1): Likewise.
1643         * name-lookup.c (do_local_using_decl): Likewise.
1644         (do_namespace_alias): Likewise.
1645         (do_using_directive): Likewise.
1646         (cp_emit_debug_info_for_using): Likewise.
1647         * semantics.c (add_stmt): Assert that stmt_list_stack is non-empty.
1649 2011-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
1651         PR c++/42056
1652         * typeck2.c (build_functional_cast): Complain early for invalid uses
1653         of 'auto' and set type to error_mark_node.
1655 2011-05-26  Jason Merrill  <jason@redhat.com>
1657         PR c++/47721
1658         * parser.c (cp_parser_member_declaration): Allow friend T.
1659         * friend.c (make_friend_class): Ignore non-classes.
1660         * pt.c (instantiate_class_template_1): Handle TEMPLATE_TYPE_PARM.
1662         DR 1004
1663         * pt.c (convert_template_argument): Don't complain about using
1664         injected-class-name as template template argument.
1666         PR c++/47956
1667         * decl.c (check_static_variable_definition): Now static.
1668         (cp_finish_decl): Call it here.
1669         (grokdeclarator): Not here.
1670         * pt.c (instantiate_class_template_1): Or here.
1671         * cp-tree.h: Don't declare it.
1673 2011-05-26  Janis Johnson  <janis187@us.ibm.com>
1674             Nathan Froyd  <froydnj@codesourcery.com>
1676         PR c++/2288
1677         PR c++/18770
1678         * name-lookup.h (enum scope_kind): Add sk_cond.
1679         * name-lookup.c (pushdecl_maybe_friend): Get scope of shadowed local.
1680         Detect and report error for redeclaration from for-init or if
1681         or switch condition.
1682         (begin_scope): Handle sk_cond.
1683         * semantics.c (begin_if_stmt): Use sk_cond.
1684         (begin switch_stmt): Ditto.
1686 2011-05-26  Jason Merrill  <jason@redhat.com>
1688         PR c++/48211
1689         * name-lookup.h (cp_class_binding): Make base a pointer.
1690         * name-lookup.c (new_class_binding): Adjust.
1691         (poplevel_class): Adjust.
1693         PR c++/48424
1694         * decl.c (grokparms): Function parameter packs don't need to
1695         go at the end.
1696         * pt.c (type_unification_real): But they aren't deduced otherwise.
1698 2011-05-25  Jason Merrill  <jason@redhat.com>
1700         PR c++/48536
1701         * decl.c (build_enumerator): If incremented enumerator won't fit in
1702         previous integral type, find one it will fit in.
1704         PR c++/48599
1705         * decl.c (create_array_type_for_decl): Complain about array of auto.
1707         PR c++/44994
1708         PR c++/49156
1709         * error.c (dump_template_bindings): Set processing_template_decl
1710         for a partial instantiation.
1712         PR c++/45401
1713         * decl.c (grokdeclarator): Don't change type when adding rvalue ref
1714         to another reference type.
1716         PR c++/44311
1717         * decl.c (case_conversion): New.
1718         (finish_case_label): Use it.
1720         * ptree.c (cxx_print_xnode): Handle ARGUMENT_PACK_SELECT.
1722         PR c++/45698
1723         * pt.c (dependent_template_arg_p): See through ARGUMENT_PACK_SELECT.
1725         PR c++/46005
1726         * decl.c (grokdeclarator): Complain about auto typedef.
1728         PR c++/46245
1729         * decl.c (grokdeclarator): Complain later for auto parameter.
1730         * pt.c (splice_late_return_type): Handle use in a template
1731         type-parameter.
1733         PR c++/46696
1734         * typeck.c (cp_build_modify_expr): Check DECL_DEFAULTED_FN.
1736         PR c++/47184
1737         * parser.c (cp_parser_parameter_declaration): Recognize
1738         list-initialization.
1739         (cp_parser_direct_declarator): Check for the closing
1740         paren before parsing definitely.
1742         PR c++/48935
1743         * parser.c (cp_parser_constructor_declarator_p): Don't check
1744         constructor_name_p for enums.
1745         (cp_parser_diagnose_invalid_type_name): Correct error message.
1747         PR c++/45418
1748         * init.c (perform_member_init): Handle list-initialization
1749         of array of non-trivial class type.
1751         PR c++/45080
1752         * pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op.
1753         * semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P.
1755         PR c++/48292
1756         * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of
1757         function parameter pack.
1758         (tsubst_pack_expansion): Likewise.
1760         * cp-objcp-common.c (cp_common_init_ts): TYPE_ARGUMENT_PACK has
1761         TS_COMMON.
1763 2011-05-25  Jakub Jelinek  <jakub@redhat.com>
1765         * cp-objcp-common.c (cp_common_init_ts): Mark CTOR_INITIALIZER
1766         as TS_TYPED.
1768         PR c++/49136
1769         * semantics.c (cxx_eval_bit_field_ref): Handle the
1770         case when BIT_FIELD_REF doesn't cover only a single field.
1772 2011-05-24  Jason Merrill  <jason@redhat.com>
1774         PR c++/49042
1775         * pt.c (get_mostly_instantiated_function_type): Use
1776         push_deferring_access_checks rather than set flag_access_control.
1778 2011-05-24  Nicola Pero  <nicola.pero@meta-innovation.com>,
1780         * parser.c (cp_parser_objc_class_ivars): Deal gracefully with a
1781         syntax error in declaring an ObjC instance variable.
1783 2011-05-24  Jason Merrill  <jason@redhat.com>
1785         PR c++/48884
1786         * class.c (pushclass): Accept NULL argument.
1787         (popclass): Deal with popping null class.
1788         * pt.c (push_access_scope, pop_access_scope): Use them rather than
1789         push_to_top_level/pop_from_top_level.
1790         (push_deduction_access_scope, pop_defarg_context): New.
1791         (fn_type_unification): Use them.
1792         * name-lookup.c (lookup_name_real_1): Check current_class_type.
1794 2011-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
1796         * decl.c (grokdeclarator): Use current_class_name.
1798 2011-05-24  Joseph Myers  <joseph@codesourcery.com>
1800         * Make-lang.in (GXX_OBJS): Remove prefix.o.
1801         (g++$(exeext)): Use libcommon-target.a.
1802         (CXX_C_OBJS): Remove prefix.o.
1804 2011-05-23  Jason Merrill  <jason@redhat.com>
1806         * pt.c (tsubst_copy_and_build): Use current_class_name.
1808         PR c++/49102
1809         * call.c (convert_arg_to_ellipsis): Call force_rvalue.
1811         PR c++/49105
1812         * typeck.c (cp_build_c_cast): Don't strip cv-quals when
1813         converting to reference.
1814         (build_static_cast_1): Update for glvalues.
1816         PR c++/49105
1817         * typeck.c (build_const_cast_1): Handle rvalue references.
1819         PR c++/47263
1820         * decl.c (use_eh_spec_block): Do use an EH spec block for a
1821         lambda op().
1823         PR c++/49058
1824         * call.c (splice_viable): Be strict in templates.
1826         PR c++/47336
1827         * error.c (dump_template_bindings): Suppress access control.
1829         PR c++/47544
1830         * pt.c (instantiate_decl): Handle =default.
1832         PR c++/48617
1833         * pt.c (invalid_nontype_parm_type_p): Allow DECLTYPE_TYPE.
1835 2011-05-23  Nathan Froyd  <froydnj@codesourcery.com>
1837         * call.c (build_over_call): Tweak call to check_function_arguments.
1838         * typeck.c (cp_build_function_call_vec): Likewise.
1840 2011-05-23  Jonathan Wakely  <jwakely.gcc@gmail.com>
1842         PR c++/18016
1843         * init.c (perform_member_init): Check for self-initialization.
1845 2011-05-22  Jason Merrill  <jason@redhat.com>
1847         PR c++/48647
1848         * typeck.c (composite_pointer_type_r): Return error_mark_node
1849         on error in SFINAE context.
1851 2011-05-20  Jason Merrill  <jason@redhat.com>
1853         PR c++/48945
1854         * decl.c (grokdeclarator): Don't add set const function-cv-qual
1855         for constexpr fns to memfn_quals, just add it to the type.
1856         (revert_static_member_fn): Don't complain about quals.
1857         (check_static_quals): New.
1858         (grokfndecl): Call it.
1859         (start_preparsed_function): Don't call revert_static_member_fn.
1861         PR c++/48945
1862         * decl.c (revert_static_member_fn): Ignore const on constexpr fn.
1864         PR c++/48780
1865         * cvt.c (type_promotes_to): Don't promote scoped enums.
1867         PR c++/49066
1868         * decl.c (duplicate_decls): Preserve DECL_DELETED_FN.
1870         PR c++/48873
1871         * tree.c (stabilize_expr): Fix typo.
1873         DR 1073
1874         PR c++/49082
1875         * typeck.c (comp_except_specs): noexcept(false) is not compatible
1876         with throw(type-list).
1877         * typeck2.c (merge_exception_specifiers): noexcept(false)
1878         beats any more limited specification.
1880         PR c++/24163
1881         PR c++/29131
1882         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating
1883         unqualified lookup.
1884         * semantics.c (perform_koenig_lookup): Add complain parm.
1885         * cp-tree.h: Adjust.
1886         * parser.c (cp_parser_postfix_expression): Adjust.
1887         (cp_parser_perform_range_for_lookup): Adjust.
1889 2011-05-20  Jason Merrill  <jason@redhat.com>
1891         * semantics.c (finish_call_expr): SET_EXPR_LOCATION.
1893 2011-05-20  Joseph Myers  <joseph@codesourcery.com>
1895         * Make-lang.in (GXX_OBJS): Remove intl.o and version.o.
1897 2011-05-19  Jakub Jelinek  <jakub@redhat.com>
1899         PR c++/49043
1900         * decl.c (check_omp_return): Stop searching on sk_function_parms.
1902         PR c++/48869
1903         * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument,
1904         pass it down to locate_fn_flags.
1905         * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes.
1906         * semantics.c (cxx_omp_create_clause_info): Adjust callers.
1907         * cp-gimplify.c: Include splay-tree.h.
1908         (splay_tree_compare_decl_uid, omp_var_to_track,
1909         omp_cxx_notice_variable): New functions.
1910         (struct cp_genericize_omp_taskreg): New type.
1911         (struct cp_genericize_data): Add omp_ctx field.
1912         (cp_genericize_r): Attempt to determine implicitly determined
1913         firstprivate class type variables.
1914         (cp_genericize): Clear omp_ctx.
1915         * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H).
1917 2011-05-18  Jason Merrill  <jason@redhat.com>
1919         PR c++/48948
1920         PR c++/49015
1921         * class.c (finalize_literal_type_property): Do check
1922         for constexpr member functions of non-literal class.
1923         (finish_struct): Don't call check_deferred_constexpr_decls.
1924         * cp-tree.h: Don't declare it.
1925         (DECL_DEFERRED_CONSTEXPR_CHECK): Remove.
1926         * decl.c (grok_special_member_properties): Don't check it
1927         (grokfnedcl): Don't call validate_constexpr_fundecl.
1928         (start_preparsed_function): Do call it.
1929         * pt.c (tsubst_decl): Don't call it.
1930         (instantiate_class_template_1): Don't call
1931         check_deferred_constexpr_decls.
1932         * semantics.c (literal_type_p): Check for any incompleteness.
1933         (ensure_literal_type_for_constexpr_object): Likewise.
1934         (is_valid_constexpr_fn): Revert deferral changes.
1935         (validate_constexpr_fundecl): Likewise.
1936         (register_constexpr_fundef): Likewise.
1937         (check_deferred_constexpr_decls): Remove.
1939 2011-05-16  Jason Merrill  <jason@redhat.com>
1941         PR c++/48969
1942         * pt.c (deduction_tsubst_fntype): Use a VEC initially.
1944 2011-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
1946         * cxx-pretty-print.c: Update comment.
1947         * semantics.c (trait_expr_value, finish_trait_expr):
1948         Reorder the cases.
1949         * parser.c (cp_parser_primary_expression): Likewise.
1951 2011-05-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
1953         PR c++/48994
1954         * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
1956 2011-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
1958         Implement final on class.
1959         * class.c (check_bases): Diagnose derivation from a final class.
1960         * cp-tree.h (lang_type_class): Add is_final and adjust dummy.
1961         (CLASSTYPE_FINAL): New.
1962         * parser.c (cp_parser_class_head): Parse class-virt-specifier, set
1963         CLASSTYPE_FINAL.
1964         * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL.
1966 2011-05-13  Jason Merrill  <jason@redhat.com>
1968         PR c++/48969
1969         * pt.c (deduction_tsubst_fntype): New.
1970         (fn_type_unification): Use it.
1971         (init_template_processing): Initialize hash table.
1972         (print_template_statistics): Print hash table stats.
1974         * call.c (build_op_call): Use timevar_cond_start/stop.
1975         (build_user_type_conversion): Likewise.
1977 2011-05-12  Jason Merrill  <jason@redhat.com>
1979         * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New.
1980         * semantics.c (validate_constexpr_fundecl): Set it.
1981         (check_deferred_constexpr_decls): Clear it.
1982         (register_constexpr_fundef): Make sure it isn't set.
1983         * decl.c (grok_special_member_properties): Check it.
1985 2011-05-11  Jason Merrill  <jason@redhat.com>
1987         PR c++/48948
1988         * semantics.c (validate_constexpr_fundecl): Defer checking if
1989         an argument type is being defined.
1990         (is_valid_constexpr_fn): Add defer_ok parm.
1991         (cxx_eval_call_expression): Adjust.
1992         (check_deferred_constexpr_decls): New.
1993         (literal_type_p): Make sure type isn't being defined.
1994         (ensure_literal_type_for_constexpr_object): Handle type being defined.
1995         * cp-tree.h: Declare check_deferred_constexpr_decls.
1996         * decl.c (grokfndecl): Call validate_constexpr_fundecl here.
1997         (start_preparsed_function, cp_finish_decl): Not here.
1998         * class.c (finalize_literal_type_property): Don't call
1999         validate_constexpr_fundecl.
2000         (finish_struct): Call check_deferred_constexpr_decls.
2001         * pt.c (tsubst_decl): Call validate_constexpr_fundecl.
2002         (instantiate_class_template): Call check_deferred_constexpr_decls.
2004         * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO
2005         rather than DECL_TEMPLATE_INSTANTIATION.
2006         (cxx_eval_call_expression): Likewise.
2008         * semantics.c (register_constexpr_fundef): Add to hash table here.
2009         (validate_constexpr_fundecl): Not here.
2011         * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once.
2013         * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p,
2014         do call maybe_constant_value in C++0x mode.
2015         * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL.
2017         PR c++/48745
2018         * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR.
2020 2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>
2022         * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
2023         TYPE_VALUES_RAW.
2024         (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
2025         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
2026         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
2028 2011-05-10  Jason Merrill  <jason@redhat.com>
2030         PR c++/48930
2031         * class.c (type_build_ctor_call): New.
2032         * cp-tree.h: Declare it.
2033         * decl.c (check_initializer): Use it instead of
2034         TYPE_NEEDS_CONSTRUCTING.
2035         * init.c (build_value_init, build_value_init_noctor): Likewise.
2036         (perform_member_init, expand_aggr_init_1, build_new_1): Likewise.
2037         (build_vec_init): Likewise.
2038         * typeck2.c (process_init_constructor_array): Likewise.
2039         (process_init_constructor_record): Likewise.
2041         PR c++/48736
2042         * pt.c (tsubst_copy_and_build): Handle substitution of a pack
2043         expansion producing another expansion.
2045 2011-05-10  Ville Voutilainen  <ville.voutilainen@gmail.com>
2047         Fixes for override/final.
2048         * class.c (check_for_override): Diagnose final on a nonvirtual
2049         member function, diagnose override for a virtual with no matching
2050         override. Don't fiddle around with DECL_VINDEX.
2052 2011-05-10  Nathan Froyd  <froydnj@codesourcery.com>
2054         * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand.
2055         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2056         * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new
2057         operand of EXPR_PACK_EXPANSION.
2058         (cp_tree_operand_length): Declare.
2059         * tree.c (cp_tree_operand_length): Define.
2060         (cp_tree_equal): Call it.
2061         * pt.c (value_dependent_expr_P): Likewise.
2062         * mangle.c (write_expression): Likewise.
2064 2011-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
2066         PR c++/48737
2067         PR c++/48744
2068         * decl.c (reshape_init): Take a complain parameter and do
2069         not call error if tf_error is not set.
2070         (check_initializer, reshape_init_r, reshape_init_array,
2071         reshape_init_array_1, reshape_init_vector, reshape_init_class):
2072         Adjust.
2073         * typeck2.c (digest_init_r): Take a complain parameter and
2074         pass it to convert_for_initialization.
2075         (digest_init, digest_init_flags, process_init_constructor_array,
2076         process_init_constructor_record, process_init_constructor_union,
2077         process_init_constructor, digest_init_r): Adjust.
2078         * init.c (expand_default_init, build_new_1): Likewise.
2079         * typeck.c (cp_build_modify_expr): Likewise.
2080         * decl2.c (grokfield): Likewise.
2081         * call.c (convert_like_real, convert_default_arg): Likewise.
2082         * semantics.c (finish_compound_literal): Pass complain to
2083         reshape_init and digest_init.
2084         * cp-tree.h: Adjust declarations.
2086 2011-05-07  Fabien Chêne  <fabien@gcc.gnu.org>
2088         PR c++/48859
2089         * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the
2090         recursion if there is user defined constructor.
2092 2011-05-09  Jason Merrill  <jason@redhat.com>
2094         PR c++/34772
2095         * decl.c (initialize_local_var): Use DECL_INITIAL for simple
2096         initialization.
2098 2011-05-08  Ville Voutilainen  <ville.voutilainen@gmail.com>
2100         Implement final/override for member functions.
2101         * class.c (check_for_override): Check for DECL_OVERRIDE_P.
2102         * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New.
2103         (cp_virt_specifiers, enum virt_specifier): New.
2104         * decl.c (set_virt_specifiers): New.
2105         (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields.
2106         * parser.c (make_call_declarator): add virt-specifiers parameter.
2107         (cp_parser_lambda_declarator_opt): Adjust.
2108         (cp_parser_direct_declarator): Likewise.
2109         (cp_parser_virt_specifier_seq_opt): New.
2110         * search.c (check_final_overrider): Diagnose attempts to override
2111         a final member function.
2113 2011-05-09  Dodji Seketeli  <dodji@redhat.com>
2115         PR c++/48574
2116         * class.c (fixed_type_or_null): Use type_dependent_p_push to test
2117         if the instance has a dependent initializer.
2119 2011-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
2121         PR c++/48816
2122         * cxx-pretty-print.c (pp_cxx_template_declaration): Remove
2123         effectively unused variable.
2125 2011-05-07  Eric Botcazou  <ebotcazou@adacore.com>
2127         * name-lookup.h (global_bindings_p): Adjust prototype.
2128         * name-lookup.c (global_bindings_p): Return bool.
2130 2011-05-06  Jason Merrill  <jason@redhat.com>
2132         * decl.c (stabilize_save_expr_r): Set *walk_subtrees as
2133         appropriate.
2135         PR c++/48909
2136         * semantics.c (cxx_eval_conditional_expression): Check
2137         integer_zerop instead.
2138         (potential_constant_expression_1): Likewise.
2140         PR c++/48911
2141         * semantics.c (cxx_eval_array_reference): Handle implicit
2142         initializers.
2144 2011-05-06  Nathan Froyd  <froydnj@codesourcery.com>
2146         * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions.
2147         * call.c (standard_conversion): Call class_of_this_parm.
2148         * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise.
2149         (pp_cxx_direct_abstract_declarator): Likewise.
2150         * decl2.c (change_return_type): Likewise.
2151         (cp_reconstruct_complex_type): Likewise.
2152         * error.c (dump_type_suffix, dump_function_decl): Likewise.
2153         * mangle.c (write_function_type): Likewise.
2154         * pt.c (unify): Likewise.
2155         * typeck.c (merge_types, type_memfn_quals): Likewise.
2156         * decl.c (build_this_parm): Call type_of_this_parm.
2158 2011-05-06  Dodji Seketeli  <dodji@redhat.com>
2160         PR c++/48838
2161         * cp-tree.h (non_static_member_function_p): Declare new function.
2162         * tree.c (non_static_member_function_p): Define it.
2163         * semantics.c (finish_call_expr): Use it.
2165 2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>
2167         * decl.c (finish_case_label): Omit the loc argument to
2168         build_case_label.
2170 2011-05-05  Jason Merrill  <jason@redhat.com>
2172         * cp-tree.h (REFERENCE_REF_P): Just check the type.
2173         * cvt.c (convert_from_reference): Adjust.
2174         * pt.c (build_non_dependent_expr): Adjust.
2175         * semantics.c (finish_offsetof): Adjust.
2176         * tree.c (lvalue_kind): Use it.
2178         PR c++/48873
2179         * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
2181 2011-05-05  Eric Botcazou  <ebotcazou@adacore.com>
2183         * decl.c (start_preparsed_function): Do not set
2184         dont_save_pending_sizes_p.
2186 2011-05-05  Joseph Myers  <joseph@codesourcery.com>
2188         * parser.c (cp_parser_objc_method_definition_list): Update call to
2189         objc_start_method_definition.
2191 2011-05-04  Jason Merrill  <jason@redhat.com>
2193         PR c++/48749
2194         * class.c (resolves_to_fixed_type_p): Don't look closely
2195         in templates.
2197 2011-05-03  Paolo Carlini  <paolo.carlini@oracle.com>
2199         PR c++/28501
2200         * call.c (add_builtin_candidate): Handle REALPART_EXPR and
2201         IMAGPART_EXPR.
2203 2011-05-02  Lawrence Crowl  <crowl@google.com>
2205         * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
2206         (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
2207         Change TV_NAME_LOOKUP to start/stop.
2208         (define_label): Refactor timevar calls out to a wrapper function.
2209         Change TV_NAME_LOOKUP to start/stop.
2210         (xref_tag): Likewise.
2211         (lookup_label): Refactor timevar calls out to a wrapper function.
2212         Change TV_NAME_LOOKUP to start_cond/stop_cond.
2214         * pt.c: (instantiate_class_template): Add a wrapper to push/pop new
2215         TV_TEMPLATE_INST.
2216         (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
2217         (lookup_template_class): Refactor timevar calls out to a wrapper
2218         function.  Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
2219         (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
2221         * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
2222         (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
2223         (push_namespace): Likewise.
2224         (pop_nested_namespace): Likewise.
2225         (pushdecl_namespace_level): Likewise.
2226         (store_class_bindings): Likewise.
2227         (push_to_top_level): Likewise.
2228         (identifier_type_value): Refactor timevar calls out to a wrapper
2229         function.  Change TV_NAME_LOOKUP to start/stop.
2230         (find_binding): Likewise.
2231         (push_using_decl): Likewise.
2232         (lookup_arg_dependent): Likewise.
2233         (push_using_directive): Likewise.
2234         (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
2235         to plain code.  Change TV_NAME_LOOKUP to start/stop.
2236         (lookup_type_current_level): Likewise.  Refactor inner return to
2237         break.
2238         (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
2239         code.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
2240         (pushdecl_top_level_1): Likewise.
2241         (lookup_using_namespace): Likewise.
2242         (pushdecl_with_scope): Refactor timevar calls out to a wrapper
2243         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
2244         (push_overloaded_decl): Likewise.
2245         (push_class_level_binding): Likewise.
2246         (namespace_binding): Likewise.
2247         (set_namespace_binding): Likewise.
2248         (supplement_binding): Likewise.
2249         (unqualified_namespace_lookup): Likewise.
2250         (lookup_name_real): Likewise.
2251         (lookup_type_scope): Likewise.
2252         (namespace_ancestor): Likewise.
2253         (lookup_name_innermost_nonclass_level): Likewise.
2254         (pushtag): Likewise.
2255         (pop_from_top_level): Likewise.
2256         (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
2257         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Wrap long
2258         lines.
2259         (add_using_namespace): Refactor timevar calls out to a wrapper
2260         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Bypass
2261         wrapper on call to self.
2263         * decl2.c: (cp_write_global_declarations):  Add start/stop of
2264         new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
2265         Remove push/pop calls to TV_VARCONST.
2267         * parser.c: Add include of "timevar.h".
2268         (cp_parser_explicit_instantiation): Add push/pop calls to
2269         TV_TEMPLATE_INST.
2270         (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
2271         (cp_parser_class_specifier): Add wrapper to add push/pop calls to
2272         TV_PARSE_STRUCT.
2273         (cp_parser_function_definition_from_specifiers_and_declarator): Add
2274         push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
2275         (cp_parser_late_parsing_for_member):  Add push/pop calls to
2276         new TV_PARSE_INMETH.
2278         * call.c: Add include of "timevar.h".
2279         (convert_class_to_reference): Wrap and add push/pop calls to 
2280         TV_OVERLOAD.
2281         (build_op_call): Likewise.
2282         (build_conditional_expr): Likewise.
2283         (build_new_op): Likewise.
2284         (build_new_method_call): Likewise.
2285         (build_user_type_conversion): Reorganize to single return and add
2286         push/pop calls to TV_OVERLOAD.
2287         (perform_overload_resolution): Likewise.
2289         * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
2291 2011-05-02  Jason Merrill  <jason@redhat.com>
2293         * tree.c (build_vec_init_expr): Take complain parm.
2294         (build_vec_init_elt): Likewise.  Free arg vector.
2295         (diagnose_non_constexpr_vec_init, build_array_copy): Adjust.
2296         * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK.
2297         (VEC_INIT_EXPR_INIT): Likewise.
2298         Adjust build_vec_init_expr declaration.
2299         * init.c (perform_member_init): Adjust.
2301         Revert:
2302         PR c++/40975
2303         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
2304         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
2305         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
2306         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
2307         (build_vec_init_elt): Don't expect an array type.
2308         (build_array_copy): Adjust.
2309         * init.c (perform_member_init): Adjust.
2310         (build_new_1): Use build_vec_init_expr.
2312         PR c++/48834
2313         * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS.
2314         Protect an explicit target.
2316         PR c++/48446
2317         * decl.c (stabilize_save_expr_r, stabilize_vla_size): New.
2318         (compute_array_index_type): Revert earlier 48446 changes.
2319         (grokdeclarator): Use stabilize_vla_size.
2321 2011-05-02  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
2322             Eric Botcazou <ebotcazou@adacore.com>
2324         * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE
2325         instead of inappropriate zero values.
2327 2011-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
2329         PR c++/47969
2330         * decl.c (compute_array_index_type): Check build_expr_type_conversion
2331         return value for NULL_TREE.
2333 2011-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
2335         PR c++/48606
2336         * init.c (perform_member_init): Check build_value_init return
2337         value for error_mark_node.
2339 2011-04-29  Diego Novillo  <dnovillo@google.com>
2340             Le-Chun Wu  <lcwu@google.com>
2342         * call.c (conversion_null_warnings): Also handle assignments
2343         when warning about NULL conversions.
2345 2011-04-29  Le-Chun Wu  <lcwu@google.com>
2347         * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
2348         * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
2349         (build_over_call): Use it to determine whether to emit a NULL
2350         warning for template function instantiations.
2351         (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
2352         EXPLICIT_TARGS is set.
2354 2011-04-29  Nicola Pero  <nicola.pero@meta-innovation.com>,
2355             Mike Stump <mikestump@comcast.net>
2357         * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only
2358         in maintainer mode.  Use the --output-file option of gperf instead
2359         of > to prevent creating an empty cp/cfns.h when gperf is not
2360         available.
2362 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2364         PR c++/48798
2365         * semantics.c (finish_base_specifier): cv-qualified base class
2366         is fine, per DR 484.
2368 2011-04-28  Dodji Seketeli  <dodji@redhat.com>
2370         PR c++/48656
2371         * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
2372         considering call expressions involving a member function.
2374 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2376         PR c++/48530
2377         * tree.c (build_cplus_new): Check build_target_expr return
2378         value for error_mark_node.
2380 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2382         PR c++/48771
2383         * semantics.c (literal_type_p): Reference types are literal types,
2384         per the FDIS.
2385         (valid_type_in_constexpr_fundecl_p): Remove.
2386         (is_valid_constexpr_fn): Adjust.
2388 2011-04-27  Jason Merrill  <jason@redhat.com>
2390         PR libstdc++/48760
2391         Implement list-initialization of _Complex.
2392         * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
2393         (check_initializer): Likewise.
2394         * call.c (build_complex_conv): New.
2395         (implicit_conversion): Call it.
2396         (convert_like_real): Handle it.
2397         * typeck2.c (check_narrowing): Handle it.
2399         * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
2400         decide whether to delete.
2401         (build_vec_init): Pass sfk_complete_destructor.
2403         PR c++/40975
2404         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
2405         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
2406         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
2407         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
2408         (build_vec_init_elt): Don't expect an array type.
2409         (build_array_copy): Adjust.
2410         * init.c (perform_member_init): Adjust.
2411         (build_new_1): Use build_vec_init_expr.
2413         * class.c (resolve_address_of_overloaded_function): Don't
2414         change OVERLOAD to TREE_LIST.
2415         * pt.c (print_candidates_1): Remove nonsensical assert.
2417         PR c++/48046
2418         * parser.c (cp_parser_diagnose_invalid_type_name): Commit
2419         to tentative parse sooner.
2421 2011-04-26  Jason Merrill  <jason@redhat.com>
2423         PR c++/42687
2424         * parser.c (cp_parser_primary_expression): Set *idk to
2425         CP_ID_KIND_NONE for a parenthesized identifier.
2427         * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
2428         (cxx_print_identifier): Correct indentation.
2430         PR c++/48530
2431         * decl.c (cxx_maybe_build_cleanup): Add complain parm.
2432         * tree.c (force_target_expr): Add complain parm.
2433         (build_target_expr_with_type): Likewise.
2434         (get_target_expr_sfinae): Split out.
2435         (build_vec_init_expr, bot_manip): Adjust.
2436         * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
2437         (build_delete, build_dtor_call): Likewise.
2438         (perform_direct_initialization_if_possible): Adjust.
2439         (build_vec_init): Handle error return.
2440         * cvt.c (force_rvalue): Add complain parm.
2441         Call build_special_member_call directly.
2442         * decl2.c (delete_sanity): Add complain parm.
2443         (build_cleanup): Adjust.
2444         * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
2445         * semantics.c (finish_stmt_expr_expr): Adjust.
2446         (finish_compound_literal): Adjust.
2447         * parser.c (cp_parser_delete_expression): Adjust.
2448         * typeck2.c (build_functional_cast): Adjust.
2449         * cp-tree.h: Adjust.
2451 2011-04-26  Martin Jambor  <mjambor@suse.cz>
2453         * class.c (cp_fold_obj_type_ref): Remove.
2454         * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
2456 2011-04-25  Paolo Carlini  <paolo.carlini@oracle.com>
2458         * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
2459         * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
2460         (UNDERLYING_TYPE_TYPE): Add.
2461         * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
2462         as TS_COMMON.
2463         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
2464         cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
2465         (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
2466         * semantics.c (finish_underlying_type): New.
2467         * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
2468         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
2469         * cxx-pretty-print.c (p_cxx_type_id): Likewise.
2470         * tree.c (cp_walk_subtrees): Likewise.
2471         * pt.c (for_each_template_parm_r, tsubst, unify,
2472         dependent_type_p_r): Likewise.
2473         * mangle.c (write_type): Sorry for __underlying_type.
2475 2011-04-25  Jason Merrill  <jason@redhat.com>
2477         PR c++/48707
2478         * decl.c (type_dependent_init_p): New.
2479         (cp_finish_decl): Check it.
2480         * pt.c (any_type_dependent_elements_p): New.
2481         * cp-tree.h: Declare it.
2483 2011-04-20  Jason Merrill  <jason@redhat.com>
2485         * semantics.c (finish_compound_literal): Don't put an array
2486         with a dtor in a static variable.
2488         * call.c (build_over_call): Handle trivial dtor.
2490         * search.c (lookup_fnfields_slot): Call complete_type.
2492         PR c++/48594
2493         * decl2.c (build_offset_ref_call_from_tree): Move
2494         non-dependency of object outside condition.
2496         PR c++/48657
2497         * decl.c (cp_finish_decl): Simplify template handling.
2499 2011-04-20  Jim Meyering  <meyering@redhat.com>
2501         * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
2503 2011-04-19  Jason Merrill  <jason@redhat.com>
2505         PR c++/46304
2506         * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
2508         PR c++/45267
2509         * decl.c (duplicate_decls): Keep always_inline attribute
2510         in sync with DECL_DISREGARD_INLINE_LIMITS.
2512 2011-04-18  Jason Merrill  <jason@redhat.com>
2514         PR c++/48569
2515         * typeck2.c (build_functional_cast): Handle VOID_TYPE.
2517         PR c++/48537
2518         * init.c (build_value_init): Handle UNION_TYPE the same.
2520 2011-04-18  Jakub Jelinek  <jakub@redhat.com>
2522         PR c++/48632
2523         * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
2524         for type dependent pointers.
2526 2011-04-18  Jim Meyering  <meyering@redhat.com>
2528         * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
2530 2011-04-17  Jan Hubicka  <jh@suse.cz>
2532         * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
2533         gotos.
2535 2011-04-17  Jason Merrill  <jason@redhat.com>
2537         PR c++/48531
2538         * typeck2.c (build_functional_cast): Disallow array type.
2540         * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
2542 2011-04-17  Jan Hubicka  <jh@suse.cz>
2544         * class.c (cp_fold_obj_type_ref): Drop vtable_method.
2546 2011-04-15  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
2548         Implement N3271
2549         * parser.c (cp_convert_range_for): Split into
2550         cp_parser_perform_range_for_lookup.
2551         (cp_parser_perform_range_for_lookup): New.
2552         (cp_parser_range_for_member_function): New.
2553         (cp_parser_for_init_statement): Correct error message.
2554         * semantics.c (finish_call_expr): Accept COMPONENT_REF.
2556 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
2558         * parser.c (cp_parser_objc_protocol_declaration): Updated for
2559         change from objc_declare_protocols() to objc_declare_protocol().
2561 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2563         PR objc++/48479
2564         * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
2565         and return immediately.
2567 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2569         * cp-tree.def (SWITCH_STMT): Add an extra operand.
2570         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2571         * cp-tree.h (SWITCH_STMT_SCOPE): Define.
2572         * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
2573         (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
2575 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2577         * cp-tree.def (IF_STMT): Add an extra operand.
2578         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2579         * cp-tree.h (IF_SCOPE): Define.
2580         * semantics.c (begin_if_stmt): Pass scope to build_stmt.
2581         (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
2583 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2585         * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
2586         * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
2587         * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
2588         * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
2589         Use FOR_SCOPE instead of TREE_CHAIN.
2590         (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
2591         (finish_for_stmt): Likewise.
2593 2011-04-14  Jason Merrill  <jason@redhat.com>
2595         * parser.c (cp_parser_postfix_expression): Fix flags passed to
2596         build_new_method_call.
2597         * semantics.c (finish_call_expr): Likewise.
2599         PR c++/48531
2600         * init.c (build_value_init_noctor): Check complain consistently.
2602         PR c++/48557
2603         * typeck.c (cp_build_binary_op): Don't decay void operands.
2605         PR c++/48446
2606         * decl.c (compute_array_index_type): Use get_temp_regvar instead
2607         of variable_size.
2608         * init.c (get_temp_regvar): No longer static.
2609         * cp-tree.h: Declare it.
2611 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
2613         * parser.c (cp_parser_objc_class_declaration): Updated for change
2614         in objc_declare_class().
2616 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2618         * decl.c (poplevel): Use block_chainon.
2620 2011-04-13  Jason Merrill  <jason@redhat.com>
2622         PR c++/48594
2623         * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
2624         or pointer to (non-member) function.
2626 2011-04-13  Jakub Jelinek  <jakub@redhat.com>
2628         PR c++/48570
2629         * semantics.c (cxx_eval_array_reference): Handle reading from
2630         wchar_t, char16_t and char32_t STRING_CST.
2632 2011-04-13  Dodji Seketeli  <dodji@redhat.com>
2634         PR c++/48574
2635         * class.c (fixed_type_or_null): We cannot determine the dynamic
2636         type of a reference variable if its initializer is dependent.
2638 2011-04-13  Jason Merrill  <jason@redhat.com>
2640         PR c++/48581
2641         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
2642         unqualified lookup failing if we're still in a template.
2644 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
2646         * cp-lang.c (cp_init_ts): Call cp_common_init_ts.  Move
2647         tree_contains_struct initialization to...
2648         * cp-objcp-common.c (cp_common_init_ts): ...here.  Use MARK_*
2649         macros.
2650         * cp-objcp-common.h (cp_common_init_ts): Declare.
2651         * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
2652         calling TREE_CHAIN.
2654 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
2656         * parser.c (cp_parser_objc_message_expression): Updated call
2657         to objc_build_message_expr.
2659 2011-04-12  Martin Jambor  <mjambor@suse.cz>
2661         * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
2662         cgraph_get_create_node.
2663         * decl2.c (cp_write_global_declarations): Call cgraph_get_node
2664         instead of cgraph_get_create_node.
2665         * method.c (make_alias_for_thunk): Call cgraph_get_node
2666         instead of cgraph_get_create_node, assert it returns non-NULL.
2667         (use_thunk): Likewise.
2668         * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
2669         when flag_syntax_only is not set.  Call cgraph_get_node instead of
2670         cgraph_get_create_node.
2671         (maybe_clone_body): Call cgraph_get_node instead of
2672         cgraph_get_create_node.
2674 2011-04-12  Martin Jambor  <mjambor@suse.cz>
2676         * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
2677         instead of cgraph_node.
2678         * decl2.c (cxx_callgraph_analyze_expr): Likewise.
2679         (cp_write_global_declarations): Likewise.
2680         * optimize.c (maybe_clone_body): Likewise.
2681         * semantics.c (maybe_add_lambda_conv_op): Likewise.
2682         * mangle.c (mangle_decl): Likewise.
2683         * method.c (make_alias_for_thunk): Likewise.
2684         (use_thunk): Likewise.
2686 2011-04-11  Jason Merrill  <jason@redhat.com>
2688         PR c++/48535
2689         * decl.c (cp_complete_array_type_or_error): New.
2690         * semantics.c (finish_compound_literal): Use it.
2691         * cp-tree.h: Declare it.
2693         PR c++/48535
2694         * semantics.c (finish_compound_literal): Handle references.
2696         PR c++/48535
2697         * semantics.c (finish_compound_literal): Take complain parm.
2698         (build_lambda_object): Adjust.
2699         * cp-tree.h: Adjust.
2700         * call.c (convert_like_real): Adjust.
2701         * decl.c (check_initializer): Adjust.
2702         * parser.c (cp_parser_postfix_expression): Adjust.
2703         (cp_parser_functional_cast): Adjust.
2704         * pt.c (tsubst_copy_and_build): Adjust.
2705         * typeck2.c (process_init_constructor_record): Adjust.
2707         PR c++/48534
2708         * cvt.c (ocp_convert): Use build_nop to convert to underlying type
2709         of scoped enum.
2711         PR c++/48523
2712         * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
2713         than cp_build_indirect_ref.
2715         PR c++/48457, Core 1238
2716         * call.c (reference_binding): Allow rvalue reference to bind to
2717         function lvalue.
2718         * tree.c (lvalue_kind): Functions are always lvalues.
2720 2011-04-07  Jason Merrill  <jason@redhat.com>
2722         PR c++/48500
2723         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
2724         arguments even if we don't know the function.
2726         PR c++/48481
2727         * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
2728         at the end of the chain.
2729         * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
2730         (iterative_hash_template_arg): Likewise.
2732         PR c++/48481
2733         * cp-tree.h (OVL_ARG_DEPENDENT): New.
2734         * name-lookup.c (add_function): Set it.
2735         * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
2737         PR c++/48481
2738         * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
2739         Release unused vector.
2741         PR c++/48451
2742         * pt.c (fn_type_unification): Don't clear incomplete pack flag.
2743         (type_unification_real): Clear it here instead.
2745         PR c++/48468
2746         * except.c (build_noexcept_spec): Propagate error_mark_node.
2747         (finish_noexcept_expr): Likewise.
2749         PR c++/48452
2750         * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
2751         in SFINAE context.
2753         PR c++/48450
2754         * call.c (resolve_args): Take complain.
2755         (build_new_function_call, build_operator_new_call): Pass it.
2756         (build_op_call, build_new_op, build_new_method_call): Pass it.
2758         PR c++/48450
2759         * typeck.c (check_for_casting_away_constness): Take complain.
2760         (build_static_cast_1, build_reinterpret_cast_1): Pass it.
2761         (build_const_cast_1): Pass it.  Take full complain parm.
2762         (build_const_cast, cp_build_c_cast): Adjust.
2764         * tree.c (build_aggr_init_expr): Always return error_mark_node
2765         on abstract violation.
2767         PR c++/48450
2768         * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
2769         (bot_manip): Adjust.
2770         * cp-tree.h: Adjust.
2771         * call.c (convert_like_real, build_cxx_call): Adjust.
2772         (perform_direct_initialization_if_possible): Adjust.
2773         * cvt.c (ocp_convert): Adjust.
2774         * init.c (build_value_init): Adjust.
2775         * semantics.c (maybe_add_lambda_conv_op): Adjust.
2776         * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
2777         * typeck2.c (build_functional_cast): Adjust.
2779         * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
2780         level.
2781         (perform_member_init): Not here.
2782         * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
2783         case to templates.
2784         (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
2786         PR c++/48449
2787         * typeck2.c (build_functional_cast): Check complain consistently.
2788         Use build_value_init and abstract_virtuals_error_sfinae.
2789         (abstract_virtuals_error_sfinae): Split out.
2790         * cp-tree.h: Declare it.
2791         * init.c (build_new_1): Use it.
2792         (build_value_init_noctor): Handle FUNCTION_TYPE.
2794         * semantics.c (finish_decltype_type): Simplify handling of unknown
2795         type.
2797         * semantics.c (finish_decltype_type): Add complain parm.
2798         * cp-tree.h: Adjust.
2799         * parser.c (cp_parser_decltype): Adjust.
2800         * pt.c (tsubst): Adjust.
2802         PR c++/48450
2803         * cvt.c (ocp_convert): Handle converting scoped enum to bool.
2805 2011-03-31  Jason Merrill  <jason@redhat.com>
2807         PR c++/48277
2808         * semantics.c (finish_call_expr): Remove assert.
2810         PR c++/48280
2811         * method.c (defaultable_fn_check): Templates are not defaultable.
2813         * parser.c (cp_parser_init_declarator): Avoid redundant
2814         cp_finish_decl for member declarations.
2816 2011-03-30  Jason Merrill  <jason@redhat.com>
2818         PR c++/48212
2819         * semantics.c (non_const_var_error): Just return if DECL_INITIAL
2820         is error_mark_node.
2822 2011-03-30  Jason Merrill  <jason@redhat.com>
2824         PR c++/48369
2825         * semantics.c (potential_constant_expression_1): Handle
2826         UNORDERED_EXPR and ORDERED_EXPR.
2828         PR c++/48281
2829         * semantics.c (finish_compound_literal): Do put static/constant
2830         arrays in static variables.
2832         * call.c (convert_like_real) [ck_list]: Build up the
2833         initializer_list object directly.
2834         * decl.c (build_init_list_var_init): Adjust.
2836         * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
2837         * decl.c (reshape_init_array_1): Likewise.
2839 2011-03-29  Jason Merrill  <jason@redhat.com>
2841         PR c++/48265
2842         * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
2843         the variable is constant before looking at its initializer.
2845         PR c++/48319
2846         * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
2848         PR c++/48089
2849         * semantics.c (potential_constant_expression_1): Change error about
2850         use of *this in constructor into sorry.
2852         PR c++/48296
2853         * decl.c (cp_finish_decl): Defer validation of constexpr member
2854         functions.
2855         * class.c (finalize_literal_type_property): Validate them here.
2856         * semantics.c (is_valid_constexpr_fn): Don't check completeness.
2858         * semantics.c (is_valid_constexpr_fn): Specify input location.
2860 2011-03-28  Jason Merrill  <jason@redhat.com>
2862         PR c++/48313
2863         * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
2864         from overloaded function.
2866         Core 1232
2867         * call.c (build_array_conv): New.
2868         (implicit_conversion): Use it.
2870         * call.c (reference_binding): Allow direct binding to an array
2871         rvalue.
2873         Core 898
2874         * parser.c (cp_parser_compound_statement): Add function_body parm.
2875         Complain about non-body compound-stmt in constexpr fn.
2876         (cp_parser_primary_expression, cp_parser_statement): Adjust.
2877         (cp_parser_implicitly_scoped_statement): Adjust.
2878         (cp_parser_function_body, cp_parser_try_block): Adjust.
2879         (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
2880         (cp_parser_objc_try_catch_finally_statement): Adjust.
2882         Core 898
2883         * semantics.c (constexpr_fn_retval): New.  Allow using-declaration
2884         and using-definition.
2885         (register_constexpr_fundef): Call it.
2887         * except.c (build_noexcept_spec): Call cxx_constant_value after
2888         converting to bool.
2890 2011-03-25  Kai Tietz  <ktietz@redhat.com>
2892         * lex.c (interface_strcmp): Handle dos-paths.
2893         (handle_pragma_implementation): Use filename_cmp instead of
2894         strcmp.
2895         (in_main_input_context): Likewise.
2897 2011-03-25  Jason Merrill  <jason@redhat.com>
2899         Core 1135
2900         * method.c (defaulted_late_check): Check for exception spec mismatch.
2901         (defaultable_fn_check): Allow exception spec and virtual.
2902         * class.c (check_for_override): A virtual dtor is non-trivial.
2904         PR c++/48289
2905         * pt.c (build_non_dependent_expr): Keep dereferences outside the
2906         NON_DEPENDENT_EXPR.
2908 2011-03-25  Kai Tietz  <ktietz@redhat.com>
2910         * decl.c (decls_match): Replace target hook
2911         call of comp_type_attributes by version in tree.c file.
2912         * search.c (check_final_overrider): Likewise.
2913         * typeck.c (structural_comptypes): Likewise.
2915 2011-03-21  Kai Tietz  <ktietz@redhat.com>
2917         PR target/12171
2918         * cxx-pretty-print.c (pp_cxx_ptr_operator):
2919         Display allowed attributes for function pointer types.
2920         * error.c (dump_type_prefix): Likewise.
2922         * tree.c (cxx_attribute_table): Adjust table.
2924 2011-03-18  Jason Merrill  <jason@redhat.com>
2926         PR c++/48162
2927         * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
2929         PR c++/48118
2930         * call.c (build_over_call): Don't skip ck_rvalue.
2932 2011-03-17  Jason Merrill  <jason@redhat.com>
2934         PR c++/47504
2935         * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
2936         the conversion set TREE_OVERFLOW.
2938         Core 1212
2939         * semantics.c (finish_decltype_type): Return T&& for xvalue.
2940         * typeck.c (unlowered_expr_type): Preserve cv-quals.
2942         PR c++/48166
2943         * decl.c (revert_static_member_fn): Strip function-cv-quals.
2945 2011-03-16  Jason Merrill  <jason@redhat.com>
2947         PR c++/48089
2948         * semantics.c (potential_constant_expression_1): Don't allow *this
2949         in a constructor.
2950         (register_constexpr_fundef): Use potential_rvalue_constant_expression.
2952         PR c++/47301
2953         * decl.c (compute_array_index_type): Don't bother trying to deal
2954         with literal classes in ABI v1.
2956         PR c++/46336
2957         * decl.c (duplicate_decls): Return NULL_TREE for clashing
2958         C functions.
2960         PR c++/47570
2961         * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
2962         use the generic binary expression handling.
2964 2011-03-16  Diego Novillo  <dnovillo@google.com>
2966         * Make-lang.in (CXX_PARSER_H): New.
2967         (cp/parser.o): Add dependency on CXX_PARSER_H.
2968         Add dependency on tree-pretty-print.h
2969         (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
2970         * cp-lang.c: Include parser.h.
2971         * parser.c: Include parser.h.
2972         (struct cp_token): Add bitfield purged_p.
2973         Update all users.
2974         Move to parser.h.
2975         (CPP_PURGED): Remove.  Update all users.
2976         (struct cp_lexer): Change field buffer to be a VEC of cp_token.
2977         Remove field buffer_length.
2978         Update all users.
2979         Move to parser.h.
2980         (struct tree_check): Move to parser.h.
2981         (cp_token_position): Likewise.
2982         (struct cp_token_cache): Likewise.
2983         (CPP_KEYWORD): Likewise.
2984         (CPP_TEMPLATE_ID): Likewise.
2985         (CPP_NESTED_NAME_SPECIFIER): Likewise.
2986         (N_CP_TTYPES): Likewise.
2987         (enum cp_parser_status_kind): Likewise.
2988         (struct cp_parser_context): Likewise.
2989         (struct cp_default_arg_entry_d): Likewise.
2990         (struct cp_unparsed_functions_entry_d): Likewise.
2991         (struct cp_parser): Likewise.
2992         (cp_lexer_dump_tokens): New.
2993         (cp_lexer_debug_tokens): New.
2994         (cp_lexer_finished_p): New.
2995         (cp_lexer_alloc): Factor out of cp_lexer_new_main.
2996         (cp_lexer_new_main): Re-write main lexing loop to push
2997         tokens into the new VEC buffer.
2998         (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
2999         Do not abort if the token type is not recognized, just print
3000         its code.
3001         * parser.h: New file.
3002         * config-lang.in (gtfiles): Add cp/parser.h.
3004 2011-03-16  Jason Merrill  <jason@redhat.com>
3006         Core 1148
3007         * typeck.c (check_return_expr): Fix conditions for setting
3008         LOOKUP_PREFER_RVALUE.
3010         * call.c (build_over_call): Remove require_complete_type_sfinae call.
3012         PR c++/48132
3013         * decl.c (check_array_designated_initializer): Allow integer index.
3014         (reshape_init_array_1): Set index on the elements.
3016 2011-03-16  Jason Merrill  <jason@redhat.com>
3018         PR c++/48113
3019         * typeck.c (convert_for_initialization): Use
3020         perform_implicit_conversion_flags.
3021         * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
3022         rvaluedness_matches_p on ck_rvalue.
3023         (convert_like_real) [ck_rvalue]: And restore it here.
3025         PR c++/48115
3026         * call.c (convert_arg_to_ellipsis): Handle incomplete type.
3028 2011-03-16  Jason Merrill  <jason@redhat.com>
3030         * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
3031         committed to this tentative parse.
3033         PR c++/47999
3034         * semantics.c (finish_call_expr): Preserve reference semantics
3035         in templates.
3037         * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
3039 2011-03-16  Jakub Jelinek  <jakub@redhat.com>
3041         * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
3042         DECL_LANG_SPECIFIC is NULL.
3044 2011-03-15  Jason Merrill  <jason@redhat.com>
3046         Core 1074
3047         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
3048         check value_dependent_expression_p on the operand.
3050         * semantics.c (push_cx_call_context): Return bool.
3051         (cxx_eval_call_expression): Handle excess depth.
3053         Core 1191
3054         * method.c (synthesized_method_walk): Cleanups don't affect the
3055         triviality of a constructor, but do affect deletion and exception
3056         specification.
3058 2011-03-15  Rodrigo Rivas Costa  <rodrigorivascosta@gmail.com>
3060         * decl2.c (cp_check_const_attributes): New.
3061         (cplus_decl_attributes): Call cp_check_const_attributes.
3063 2011-03-15  Jason Merrill  <jason@redhat.com>
3065         PR c++/34758
3066         * call.c (convert_default_arg): Use DECL_ORIGIN of fn.  Check for
3067         recursion first.
3068         (push_defarg_context, pop_defarg_context): New.
3069         * parser.c (cp_parser_late_parsing_default_args): Use them.
3070         * cp-tree.h: Declare them.
3072 2011-03-11  Dodji Seketeli  <dodji@redhat.com>
3074         * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
3075         the argument of the indirection operator should not be dependent.
3076         Fix the comment.
3078 2011-03-11  Jason Merrill  <jason@redhat.com>
3080         PR c++/47125
3081         * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
3083         PR c++/47144
3084         * parser.c (cp_parser_template_type_arg): Set
3085         type_definition_forbidden_message.
3087         PR c++/47808
3088         * decl.c (compute_array_index_type): Discard folding
3089         if it didn't produce a constant.
3091 2011-03-11  Jakub Jelinek  <jakub@redhat.com>
3093         PR c++/48035
3094         * init.c (build_zero_init_1): Extracted from build_zero_init.
3095         Add FIELD_SIZE argument, if non-NULL and field bit_position
3096         as not smaller than that, don't add that field's initializer.
3097         Pass DECL_SIZE as last argument to build_zero_init_1
3098         for DECL_FIELD_IS_BASE fields.
3099         (build_zero_init): Use build_zero_init_1.
3101 2011-03-10  Jason Merrill  <jason@redhat.com>
3103         PR c++/48029
3104         * pt.c (iterative_hash_template_arg): Remove special case for
3105         ARRAY_TYPE.
3107         PR c++/47198
3108         * parser.c (cp_parser_single_declaration): Just return if
3109         cp_parser_parse_and_diagnose_invalid_type_name complained.
3111 2011-03-09  Jason Merrill  <jason@redhat.com>
3113         PR c++/44629
3114         * pt.c (unify): An unresolved overload is a nondeduced context.
3116 2011-03-09  Martin Jambor  <mjambor@suse.cz>
3118         PR tree-optimization/47714
3119         * method.c (use_thunk): Clear addressable flag of thunk arguments.
3121 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
3123         PR c++/47705
3124         * pt.c (convert_nontype_argument): Only call decay_conversion on
3125         arrays.
3127 2011-03-08  Jason Merrill  <jason@redhat.com>
3129         PR c++/47488
3130         * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
3132         PR c++/47705
3133         * pt.c (convert_nontype_argument): Don't crash on non-pointer
3134         argument to pointer parameter.
3136         PR c++/45651
3137         * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
3138         !TREE_PUBLIC decls.
3140 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
3142         PR c++/47957
3143         * name-lookup.c (binding_to_template_parms_of_scope_p): Only
3144         consider scopes of primary template definitions.  Adjust comments.
3146 2011-03-07  Jason Merrill  <jason@redhat.com>
3148         PR c++/48003
3149         * pt.c (convert_nontype_argument): Fix -fpermissive allowing
3150         integer overflow.
3151         * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
3153         PR c++/48015
3154         * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
3156         PR c++/48008
3157         * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
3158         (write_CV_qualifiers_for_type): Not here.
3160 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
3162         * lang-specs.h: Match -save-temps* instead of -save-temps.
3164 2011-03-05  Jason Merrill  <jason@redhat.com>
3166         * mangle.c (write_expression): Change ABI v6 to v5.
3167         (write_type): Likewise.
3169 2011-03-04  Jan Hubicka  <jh@suse.cz>
3171         PR lto/47497
3172         * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
3173         and cgraph_add_thunk.
3174         * method.c (make_alias_for_thunk, use_thunk): Likewise.
3175         * mangle.c (mangle_decl): Likewise.
3177 2011-03-04  Jason Merrill  <jason@redhat.com>
3179         PR c++/47971
3180         * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
3181         (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
3183         PR c++/46220
3184         * search.c (check_final_overrider): Allow pointer to same incomplete
3185         class type with different cv-quals.
3187 2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
3189         PR c++/47974
3190         * pt.c (tsubst_template_args): Check argument t for error_mark_node.
3192 2011-03-03  Jason Merrill  <jason@redhat.com>
3194         PR c++/47950
3195         * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
3197 2011-03-02  Jason Merrill  <jason@redhat.com>
3199         PR c++/47950
3200         * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
3202         PR c++/47774
3203         * tree.c (build_vec_init_elt): Split out from...
3204         (build_vec_init_expr): ...here.
3205         (diagnose_non_constexpr_vec_init): New fn.
3206         * semantics.c (potential_constant_expression_1): Use it.
3207         * cp-tree.h: Declare it.
3209 2011-03-01  Jason Merrill  <jason@redhat.com>
3211         PR c++/46159
3212         * parser.c (cp_parser_primary_expression): Don't warn about a
3213         failed tentative parse.
3215         PR c++/47200
3216         * semantics.c (cxx_bind_parameters_in_call): Don't call
3217         adjust_temp_type on non-constant args.
3219         PR c++/47851
3220         * call.c (standard_conversion): Provide requested cv-quals on
3221         class rvalue conversion.
3223         PR c++/46282
3224         * decl2.c (grokbitfield): Handle type-dependent width.
3226 2011-02-28  Jason Merrill  <jason@redhat.com>
3228         PR c++/47873
3229         * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
3230         after checking for a non-thunk.
3232 2011-02-26  Jason Merrill  <jason@redhat.com>
3234         PR c++/47904
3235         * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
3236         * pt.c (iterative_hash_template_arg): And hash it.
3238         PR c++/47897
3239         * semantics.c (non_const_var_error): Split out from...
3240         (cxx_eval_constant_expression): ...here.
3241         (potential_constant_expression_1) [VAR_DECL]: Use it.
3242         Allow dependent variables.
3244 2011-02-24  Jason Merrill  <jason@redhat.com>
3246         * parser.c (cp_parser_constant_expression): Set
3247         non_integral_constant_expression correctly for C++0x too.
3248         (cp_parser_static_assert): Allow non-constant expression.
3249         (cp_parser_direct_declarator): Expect non_constant_p to be set
3250         properly for C++0x.
3251         * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
3252         * semantics.c (maybe_constant_value): Check type_unknown_p too.
3253         (potential_rvalue_constant_expression): New.
3254         (require_potential_rvalue_constant_expression): New.
3256 2011-02-23  Jason Merrill  <jason@redhat.com>
3258         * cp-tree.h (DECL_PARM_LEVEL): New.
3259         (struct lang_decl_parm): Add level field.
3260         * name-lookup.c (function_parm_depth): New fn.
3261         * name-lookup.h: Declare it.
3262         * parser.c (cp_parser_parameter_declaration_list): Use it.
3263         * mangle.c (struct globals): Add parm_depth field.
3264         (write_bare_function_type): Adjust it.
3265         (write_expression): Include the level delta in PARM_DECL mangling
3266         for abi >= 6.
3268         * semantics.c (finish_decltype_type): Remove shortcut for decltype
3269         of id-expression.
3270         * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
3272 2011-02-23  Nathan Froyd  <froydnj@codesourcery.com>
3274         PR c++/46868
3275         * parser.c (cp_parser_class_specifier): Require a closing brace
3276         to attempt error recovery.
3278 2011-02-23  Jakub Jelinek  <jakub@redhat.com>
3280         PR c++/47833
3281         * pt.c (struct pending_template): Add chain_next GTY option.
3282         * decl.c (struct named_label_use_entry): Likewise.
3284 2011-02-22  Paolo Carlini  <paolo.carlini@oracle.com>
3286         PR c++/47242
3287         * semantics.c (build_lambda_object): Bail out if a field is
3288         error_mark_node.
3290 2011-02-22  Dodji Seketeli  <dodji@redhat.com>
3292         PR c++/47666
3293         * class.c (dfs_declare_virt_assop_and_dtor)
3294         (declare_virt_assop_and_dtor): New static functions.
3295         (add_implicitly_declared_members): Use
3296         declare_virt_assop_and_dtor.
3298 2011-02-21  Jason Merrill  <jason@redhat.com>
3300         PR c++/47207
3301         * decl2.c (decl_constant_var_p): A constexpr var needs an
3302         initializer to be constant.
3303         * semantics.c (cxx_eval_constant_expression): Complain about
3304         constexpr var used in its own initializer.
3305         * call.c (set_up_extended_ref_temp): Set
3306         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
3308 2011-02-20  Jason Merrill  <jason@redhat.com>
3310         PR c++/47199
3311         * semantics.c (cxx_eval_call_expression): Call
3312         cxx_eval_constant_expression in trivial shortcut.
3314         PR c++/46831
3315         * call.c (convert_class_to_reference): Don't try to set up a
3316         second conv sequence for non-viable candidates.
3318         PR c++/47703
3319         * error.c (location_of): Handle non-tagged types.
3321         PR c++/46472
3322         * method.c (process_subob_fn): Instantiate constexpr templates.
3323         * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
3325 2011-02-20  Dodji Seketeli  <dodji@redhat.com>
3327         PR c++/46394
3328         * pt.c (tsubst_pack_expansion): do not use
3329         cp_tree_equal/same_type_p to detect an expansion of a parameter
3330         pack.
3332 2011-02-19  Jason Merrill  <jason@redhat.com>
3334         PR c++/47503
3335         * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
3337 2011-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
3339         PR c++/47795
3340         * semantics.c (finish_non_static_data_member): Early return if
3341         object is error_mark_node.
3343 2011-02-18  Dodji Seketeli  <dodji@redhat.com>
3345         PR c++/47208
3346         * pt.c (do_auto_deduction): Do not mention error_mark_node in
3347         diagnostics.
3348         * semantics.c (finish_id_expression): Do not pass erroneous decl
3349         to decl_constant_var_p.
3351 2011-02-17  Jakub Jelinek  <jakub@redhat.com>
3353         PR c++/47783
3354         * cvt.c (convert_from_reference): Call mark_exp_read.
3356 2011-02-11  Dodji Seketeli  <dodji@redhat.com>
3358         PR c++/47172
3359         * pt.c (finish_call_expr): Consider a call expression that has a
3360         dependent "this" pointer as being dependent.  Add comments.
3361         (dependent_type_p, type_dependent_expression_p): Update comments.
3363 2011-02-16  Dodji Seketeli  <dodji@redhat.com>
3365         PR c++/47326
3366         * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
3367         expansion arguments are not evaluated.
3369 2011-02-16  Jakub Jelinek  <jakub@redhat.com>
3371         PR c++/47704
3372         * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
3373         instead of TYPE_LANG_FLAG_3.
3374         * pt.c (lookup_template_class): Copy over
3375         ENUM_FIXED_UNDERLYING_TYPE_P.
3377 2011-02-15  Jason Merrill  <jason@redhat.com>
3379         PR c++/46807
3380         * method.c (synthesized_method_walk): Always exit early for
3381         trivial fn in C++98 mode.
3383 2011-02-14  Jason Merrill  <jason@redhat.com>
3385         PR c++/47482
3386         * parser.c (cp_parser_enumerator_definition): Call
3387         fold_non_dependent_expr.
3389 2011-02-09  Jason Merrill  <jason@redhat.com>
3391         * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
3392         * semantics.c (finish_fname): Only return the name if we're in
3393         a function.
3395         * decl.c (build_enumerator): Don't perform integral promotions on
3396         non-integral constants.
3398         * cvt.c (convert_to_void): Handle null op1.
3400         * class.c (type_has_constexpr_default_constructor): Make sure the
3401         caller stripped an enclosing array.
3402         * init.c (perform_member_init): Strip arrays before calling it.
3404         PR c++/47511
3405         * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
3407 2011-02-03  Dodji Seketeli  <dodji@redhat.com>
3409         PR c++/47398
3410         * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
3411         template parameters in account.
3413 2011-02-03  Nathan Froyd  <froydnj@codesourcery.com>
3415         PR c++/46890
3416         * parser.c (cp_parser_class_specifier): Fix setting of
3417         want_semicolon.
3419 2011-01-31  Jakub Jelinek  <jakub@redhat.com>
3421         PR c++/47416
3422         * semantics.c (build_data_member_initialization): Handle
3423         STATEMENT_LIST always instead of just for CLEANUP_BODY.
3425 2011-01-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3427         * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
3428         LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
3430 2011-01-29  Dodji Seketeli  <dodji@redhat.com>
3432         PR c++/47311
3433         * cp-tree.h (fixup_template_parms): Declare.
3434         * pt.c (end_template_parm_list): Do not fixup template parms here.
3435         (fixup_template_parms): Remove static. Fix typo in the
3436         comments. Remove useless code statement.
3437         (fixup_template_parm): For a template template parameter, fixup
3438         its attributes before fixing up its type.
3439         * parser.c
3440         (cp_parser_template_declaration_after_export): After parsing
3441         template parameters fixup their types.
3443 2011-01-26  Jakub Jelinek  <jakub@redhat.com>
3445         PR c++/47476
3446         * semantics.c (potential_constant_expression_1): Handle
3447         TRUTH_XOR_EXPR.
3449 2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
3451         PR c++/43601
3452         * semantics.c (expand_or_defer_fn_1): Handle it.
3453         * decl2.c (decl_needed_p): Likewise.
3455 2011-01-21  Jason Merrill  <jason@redhat.com>
3457         PR c++/47041
3458         * semantics.c (build_constexpr_constructor_member_initializers):
3459         Handle trivial copy.
3461 2011-01-21  Jakub Jelinek  <jakub@redhat.com>
3463         PR c++/47388
3464         * semantics.c (begin_for_stmt): If -fno-for-scope, don't
3465         assume init must be NULL if scope is NULL.
3466         (begin_range_for_stmt): Likewise.
3468 2011-01-21  Jason Merrill  <jason@redhat.com>
3470         PR c++/46552
3471         * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
3473         PR c++/46977
3474         * semantics.c (potential_constant_expression_1): Split out from
3475         potential_constant_expression.  Add want_rval parm.  Handle
3476         template expression forms.  Don't enforce restriction on address
3477         of automatic variable here.  Add a couple of diagnostics that
3478         had been missing.
3479         (require_potential_constant_expression): New entry point.
3480         (build_data_member_initialization, register_constexpr_fundef): Adjust.
3481         (maybe_constant_value): Check potential_constant_expression.
3482         * pt.c (fold_non_dependent_expr_sfinae): Likewise.
3483         * tree.c (build_vec_init_expr): Adjust.
3485 2011-01-19  Jakub Jelinek  <jakub@redhat.com>
3487         PR c++/47303
3488         * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
3489         or DECL_EXTERNAL.
3491 2011-01-17  Jason Merrill  <jason@redhat.com>
3493         PR c++/47067
3494         * semantics.c (base_field_constructor_elt): New fn.
3495         (cxx_eval_bare_aggregate): Use it.
3496         (build_data_member_initialization): Leave COMPONENT_REF for
3497         vfield inits.
3499 2011-01-14  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
3501         * parser.c (cp_parser_range_for): Remove the "unused variable" warning
3502         workaround.
3504 2011-01-15  Giovanni Funchal  <gafunchal@gmail.com>
3505             Jonathan Wakely  <jwakely.gcc@gmail.com>
3507         PR c++/33558
3508         * decl.c (grokdeclarator): Reject mutable reference members.
3510 2011-01-14  Jason Merrill  <jason@redhat.com>
3512         PR c++/47289
3513         * pt.c (coerce_template_parms): Fix error recovery.
3515         PR c++/46903
3516         * typeck2.c (check_narrowing): Only check arithmetic types.
3518         PR c++/46688
3519         * tree.c (build_vec_init_expr): Handle flexible array
3520         properly.
3522 2011-01-13  Kai Tietz  <kai.tietz@onevision.com>
3524         PR c++/47213
3525         * cp-tree.h (CLASSTYPE_VISIBILITY): Use
3526         TYPE_MAIN_DECL instead of TYPE_NAME.
3527         (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
3528         * decl2.c (determine_visibility): Add check
3529         of CLASS_TYPE_P for underlying_type.
3531 2011-01-12  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
3533         * cp-tree.h (begin_for_scope): New prototype.
3534         (begin_for_stmt): Update prototype.
3535         (begin_range_for_stmt): Update prototype.
3536         * init.c (build_vec_init): Update call to begin_for_stmt.
3537         * parser.c (cp_parser_for): New.
3538         (cp_parser_c_for): Add three new parameters.
3539         (cp_parser_range_for): Likewise. Most parsing code removed.
3540         (cp_parser_iteration_statement): Call cp_parser_for instead of
3541         cp_parser_c_for and cp_parser_range_for.
3542         (cp_parser_for_init_statement): Add new parameter and return type.
3543         (cp_parser_block_declaration): Update call to
3544         cp_parser_simple_declaration.
3545         (cp_parser_simple_declaration): Add new parameter.
3546         Update call to cp_parser_init_declarator.
3547         (cp_parser_init_declarator): Add new parameter.
3548         * pt.c (tsubst_expr): Update call to begin_for_stmt.
3549         * semantics.c (begin_for_scope): New.
3550         (begin_for_stmt): Add two new parameters.
3551         (begin_range_for_stmt): Likewise.
3553 2011-01-12  Nicola Pero  <nicola.pero@meta-innovation.com>
3555         * parser.c (cp_parser_objc_at_property_declaration): Improved
3556         error message.
3558 2011-01-11  Dodji Seketeli  <dodji@redhat.com>
3560         PR debug/46955
3561         * cp-lang.c (get_template_innermost_arguments_folded)
3562         (get_template_argument_pack_elems_folded)
3563         (template_arg_needs_folding, fold_cplus_constants): New static
3564         functions.
3565         (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
3566         get_template_innermost_arguments_folded.
3567         (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
3568         get_template_argument_pack_elems_folded.
3570 2011-01-11  Jason Merrill  <jason@redhat.com>
3572         PR c++/46658
3573         * init.c (build_new_1): Handle value-init in templates differently.
3575         PR c++/45520
3576         * tree.c (maybe_dummy_object): Check current_class_ref against
3577         context, not current_class_type.
3579 2011-01-08  Nicola Pero  <nicola.pero@meta-innovation.com>
3581         PR objc/47078
3582         * parser.c (cp_parser_objc_typename): If the type is unknown, for
3583         error recovery purposes behave as if it was not specified so that
3584         the default type is used.
3586 2011-01-07  Jakub Jelinek  <jakub@redhat.com>
3588         PR c++/47022
3589         * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
3590         for the second build_x_va_arg argument.
3592 2011-01-05  Tom Tromey  <tromey@redhat.com>
3594         * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
3595         (lvalue_or_else): Likewise.
3597 2011-01-01  Kai Tietz  <kai.tietz@onevision.com>
3599         PR target/38662
3600         * tree.c (cxx_type_hash_eq):
3601         Allow METHOD_TYPE, too.
3604 Copyright (C) 2011 Free Software Foundation, Inc.
3606 Copying and distribution of this file, with or without modification,
3607 are permitted in any medium without royalty provided the copyright
3608 notice and this notice are preserved.