/cp
[official-gcc.git] / gcc / cp / ChangeLog
blob47e79fe9c5ab7a1bf2620bfcd69ba0ac89223ba4
1 2011-11-04  Paolo Carlini  <paolo.carlini@oracle.com>
3         PR c++/48420
4         * call.c (conversion_null_warnings): For 'false' to NULL pointer,
5         just check that TREE_TYPE (expr) is a BOOLEAN_TYPE.
7 2011-11-04  Ed Smith-Rowland  <3dw4rd@verizon.net>
9         PR c++/50941
10         * parser.c (cp_parser_userdef_string_literal): Fix string length.
12 2011-11-04  Jason Merrill  <jason@redhat.com>
14         PR c++/48370
15         * call.c (extend_ref_init_temps, extend_ref_init_temps_1): New.
16         (set_up_extended_ref_temp): Use it.  Change cleanup parm to VEC.
17         (initialize_reference): Just call convert_like.
18         * decl.c (grok_reference_init): Just call initialize_reference.
19         (build_init_list_var_init): Remove.
20         (check_initializer): Change cleanup parm to VEC.  Handle references
21         like other types.  Call perform_implicit_conversion instead
22         of build_init_list_var_init.  Don't use build_aggr_init for
23         aggregate initialization of arrays.
24         (cp_finish_decl): Change cleanup to VEC.
25         * typeck2.c (store_init_value): Call extend_ref_init_temps.
26         Use build_vec_init for non-constant arrays.
27         * init.c (expand_aggr_init_1): Adjust.
28         (build_vec_init): Avoid re-converting an initializer
29         that's already digested.
30         * mangle.c (mangle_ref_init_variable): Add a discriminator.
31         * cp-tree.h: Adjust.
32         * typeck.c (convert_for_initialization): Adjust.
33         * decl2.c (maybe_emit_vtables): Adjust.
35 2011-11-02  Jason Merrill  <jason@redhat.com>
37         PR c++/50930
38         * init.c (build_aggr_init): Don't set LOOKUP_ONLYCONVERTING
39         if the initializer has TARGET_EXPR_DIRECT_INIT_P.
40         (expand_default_init): An initializer with TARGET_EXPR_DIRECT_INIT_P
41         or TARGET_EXPR_LIST_INIT_P doesn't need more processing.
42         * tree.c (bot_manip): Propagate TARGET_EXPR_IMPLICIT_P,
43         TARGET_EXPR_LIST_INIT_P, TARGET_EXPR_DIRECT_INIT_P.
44         * call.c (convert_like_real): Set TARGET_EXPR_DIRECT_INIT_P
45         as appropriate on list-value-initialization.
47         * parser.c (cp_parser_decl_specifier_seq): Change "C++0x" to
48         "C++11" in warnings.
49         (cp_lexer_get_preprocessor_token): Likewise.
50         (cp_parser_binary_expression): Likewise.
52 2011-11-02  Paolo Carlini  <paolo.carlini@oracle.com>
54         PR c++/50810
55         * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
56         (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
57         * decl.c (check_initializer): Likewise.
58         * semantics.c (finish_compound_literal): Likewise.
60 2011-11-02  Paolo Carlini  <paolo.carlini@oracle.com>
62         PR c++/50956
63         * typeck.c (build_const_cast_1): Fix -Wcast-qual for false
64         comp_ptr_ttypes_const.
66 2011-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
68         * Make-lang.in (g++spec.o): Pass SHLIB instead of SHLIB_LINK.
70 2011-11-01  Paolo Carlini  <paolo.carlini@oracle.com>
72         PR c++/44277
73         * cvt.c (cp_convert_to_pointer): Warn for zero as null pointer
74         constant.
75         * typeck.c (cp_truthvalue_conversion): Handle pointers and member
76         function pointers under c_inhibit_evaluation_warnings; use
77         nullptr_node for data member pointers.
78         (cp_build_binary_op): Tweak, just forward to cp_convert op1,
79         either a nullptr_node or an integer_zero_node.
80         (build_ptrmemfunc): Use nullptr_node.
81         * init.c (build_zero_init_1): Likewise.
83 2011-11-01  Jason Merrill  <jason@redhat.com>
85         PR c++/50500
86         DR 1082
87         * search.c (lookup_fnfields_idx_nolazy): Split out from...
88         (lookup_fnfields_1): ...here.
89         (lookup_fnfields_slot_nolazy): Use it.
90         * cp-tree.h: Declare it.
91         * class.c (type_has_move_assign): Use it.
92         (type_has_user_declared_move_assign): Likewise.
94 2011-10-31  Jason Merrill  <jason@redhat.com>
96         PR c++/50920
97         * class.c (check_field_decl): Change c++0x in diags to c++11.
98         * error.c (maybe_warn_cpp0x): Likewise.
99         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
100         * pt.c (check_default_tmpl_args): Likewise.
102 2011-10-31   Diego Novillo  <dnovillo@google.com>
104         * mangle.c (get_mangled_id): Factor from ...
105         (mangle_decl): ... here.
106         Call get_mangled_id.
108 2011-10-25  Gerald Pfeifer  <gerald@pfeifer.com>
110         * NEWS (GCC 2.95): Refer to GNU/Linux instead of Linux.
111         (EGCS 1.0): Ditto.
113 2011-10-29  Paolo Carlini  <paolo.carlini@oracle.com>
115         PR c++/50901
116         * call.c (build_new_op_1): Handle ABS_EXPR together with the
117         other unary EXPR.
119 2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
121         Revert:
122         2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
124         PR c++/50864
125         * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
126         call in case COMPONENT_REF.
128 2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
130         * pt.c (unify_pack_expansion): Initialize bad_old_arg and bad_new_arg.
132 2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
134         PR c++/50864
135         * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
136         call in case COMPONENT_REF.
138 2011-10-27  Jason Merrill  <jason@redhat.com>
140         * semantics.c (cxx_eval_outermost_constant_expr): Check
141         cp_has_mutable_p.
142         (cxx_eval_component_reference): Check DECL_MUTABLE_P.
144 2011-10-27  Roberto Agostino Vitillo  <ravitillo@lbl.gov>
146         PR c++/30066
147         * decl2.c (determine_hidden_inline): New function.
148         (determine_visibility): fvisibility-inlines-hidden affects inline
149         functions.
151 2011-10-27  Dodji Seketeli  <dodji@redhat.com>
153         * cp-tree.h (DECL_DECLARES_TYPE_P): Fix comment.
155 2011-10-26  Jason Merrill  <jason@redhat.com>
157         * typeck.c (check_literal_operator_args): Avoid building types.
159 2011-10-26  Ed Smith-Rowland  <3dw4rd@verizon.net>
161         Implement C++11 user-defined literals.
162         * cp-objcp-common.c: (cp_tree_size) Return size of USERDEF_LITERAL tree.
163         * cp-tree.h: (UDLIT_OP_*, UDLIT_OPER_P): Literal operator
164         name tools. New tree code for user-defined literals.
165         * cxx-pretty-print.h: (pp_cxx_userdef_literal) New.
166         * cxx-pretty-print.c: (pp_cxx_userdef_literal) New.
167         (pp_cxx_primary_expression, pp_cxx_expression): Use it.
168         * decl.c: (cp_tree_node_structure): Return new tree code.
169         (duplicate_decls): Check for raw vs. template operator conflicts.
170         (grokfndecl, grokdeclarator): New checks for literal operators.
171         * error.c: (dump_expr): Warn about user-defined literals
172         in C++98 mode. (dump_function_name): Pretty printing.
173         * mangle.c: (write_literal_operator_name): New.
174         (write_unqualified_id, write_unqualified_name): Use it.
175         * parser.c: (cp_parser_operator): Handle operator"".
176         (cp_parser_userdef_char_literal, cp_parser_userdef_numeric_literal,
177         cp_parser_userdef_string_literal): New.
178         (cp_parser_primary_expression): Handle new user-defined literal tokens
179         with new functions.
180         * semantics.c: (potential_constant_expression_1): Add
181         user-defined literals.
182         * typeck.c (check_raw_literal_operator,
183         check_literal_operator_args): New.
185 2011-10-26  Paolo Carlini  <paolo.carlini@oracle.com>
187         * typeck.c (cp_build_addr_expr_1): Use BASELINK_P.
188         * class.c (instantiate_type): Likewise.
189         * pt.c (convert_nontype_argument_function, uses_template_parms,
190         tsubst_copy, resolve_nondeduced_context, type_dependent_expression_p):
191         Likewise.
192         * semantics.c (finish_decltype_type): Likewise.
193         * decl2.c (mark_used): Likewise.
194         * name-lookup.c (arg_assoc): Likewise.
196 2011-10-26  Paolo Carlini  <paolo.carlini@oracle.com>
198         PR c++/50870
199         * typeck.c (non_reference): Pass NULL_TREE through.
201 2011-10-25  Jason Merrill  <jason@redhat.com>
203         PR c++/50866
204         PR c++/41449
205         * semantics.c (maybe_cleanup_point_expr_void): No longer static.
206         * typeck2.c (split_nonconstant_init_1): Use it.
207         * cp-tree.h: Declare it.
208         * decl.c (wrap_cleanups_r): Stop at CLEANUP_POINT_EXPR.
210         PR c++/49996
211         * tree.c (stabilize_init): Stabilize scalar elements of a
212         CONSTRUCTOR, too.
214 2011-10-25  Paolo Carlini  <paolo.carlini@oracle.com>
216         PR c++/50858
217         * typeck.c (composite_pointer_type_r): Check return value of
218         composite_pointer_type_r for error_mark_node.
220 2011-10-25  Paolo Carlini  <paolo.carlini@oracle.com>
222         PR c++/50861
223         * pt.c (tsubst_copy_and_build): Check return value of
224         tsubst_copy_and_build for error_mark_node.
226 2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
228         PR c++/50841
229         Revert:
230         2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
232         PR c++/50810
233         * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
234         (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
235         * decl.c (check_initializer): Likewise.
236         * semantics.c (finish_compound_literal): Likewise.
238 2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
240         PR c++/50810
241         * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
242         (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
243         * decl.c (check_initializer): Likewise.
244         * semantics.c (finish_compound_literal): Likewise.
246 2011-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
248         PR c++/45385
249         * init.c (build_vec_init): Early return error_mark_node if
250         maxindex is -1.
252 2011-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
254         PR c++/31423
255         * typeck2.c (cxx_incomplete_type_diagnostic): Improve error message
256         for invalid use of member function.
258 2011-10-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
260         PR c++/50811
261         * parser.c (cp_parser_class_head): Parse virt-specifiers
262         regardless of whether an id is present
264 2011-10-20  Jason Merrill  <jason@redhat.com>
266         PR c++/41449
267         * typeck2.c (split_nonconstant_init_1): Handle EH cleanup of
268         initialized subobjects.
270 2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>
272         PR c++/13657
273         * class.c (instantiate_type): Fix error message.
275 2011-10-19  Jason Merrill  <jason@redhat.com>
277         PR c++/50793
278         * tree.c (bot_manip): Propagate AGGR_INIT_ZERO_FIRST.
280 2011-10-19  Roland Stigge  <stigge@antcom.de>
282         PR translation/49704
283         * semantics.c (potential_constant_expression_1): Use "AST" instead of
284         "ast" in sorry message.
286 2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>
288         PR c++/38761
289         PR c++/40872
290         * decl.c (duplicate_decls, make_typename_type, grokdeclarator): Use
291         G_() in error message strings to facilitate translation.
292         * semantics.c (finish_id_expression): Likewise.
293         * parser.c (cp_parser_nested_name_specifier_opt,
294         cp_parser_parameter_declaration): Likewise.
296 2011-10-18  Jason Merrill  <jason@redhat.com>
298         PR c++/50531
299         * pt.c (instantiate_decl): Recognize when a function defaulted
300         outside the class is already instantiated.
302         PR c++/50742
303         * decl.c (check_previous_goto_1): Handle using-decl.
305 2011-10-18  Jason Merrill  <jason@redhat.com>
307         PR c++/50500
308         DR 1082
309         * class.c (type_has_user_declared_move_constructor): New.
310         (type_has_user_declared_move_assign): New.
311         (add_implicitly_declared_members): Add lazy copy ops
312         even if there's a move.
313         * method.c (lazily_declare_fn): Delete implicit copies
314         if there's a move.
315         (maybe_explain_implicit_delete): Explain this.  Use inform rather
316         than error.
317         * cp-tree.h: Declare new fns.
319 2011-10-18   Diego Novillo  <dnovillo@google.com>
321         * parser.c: Remove ENABLE_CHECKING markers around debugging
322         routines.
323         (cp_lexer_dump_tokens): Add arguments START_TOKEN and CURR_TOKEN.
324         Make static
325         When printing CURR_TOKEN surround it in [[ ]].
326         Start printing at START_TOKEN.
327         Update all users.
328         (cp_debug_print_tree_if_set): New.
329         (cp_debug_print_context): New.
330         (cp_debug_print_context_stack): New.
331         (cp_debug_print_flag): New.
332         (cp_debug_print_unparsed_function): New.
333         (cp_debug_print_unparsed_queues): New.
334         (cp_debug_parser_tokens): New.
335         (cp_debug_parser): New.
336         (cp_lexer_start_debugging): Set cp_lexer_debug_stream to stderr.
337         (cp_lexer_stop_debugging): Set cp_lexer_debug_stream to NULL.
338         * parser.h (cp_lexer_dump_tokens): Remove declaration.
339         (cp_debug_parser): Declare.
341 2011-10-17  Michael Spertus  <mike_spertus@symantec.com>
343         * cp-tree.def: Add BASES as a new tree code.
344         * cp-tree.h (enum cp_trait_kind): Add CPTK_BASES, CPTK_DIRECT_BASES.
345         (BASES_TYPE, BASES_DIRECT): Define.
346         (calculate_bases, finish_bases, calculate_direct_bases): Declare.
347         * parser.c (cp_parser_trait_expr, cp_parser_template_argument_list,
348         (cp_parser_simple_type_specifier, cp_parser_save_nsdmi): Use them.
349         * pt.c (find_parameter_packs_r, tsubst_pack_expansion): Likewise.
350         * semantics.c (calculate_bases, finish_bases, calculate_direct_bases,
351         dfs_calculate_bases_pre, dfs_calculate_bases_post,
352         calculate_bases_helper): Define.
354 2011-10-17  Jason Merrill  <jason@redhat.com>
356         PR c++/50736
357         * parser.c (cp_parser_lambda_introducer): Check for more
358         invalid captures.
360 2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
362         PR c++/44524
363         * typeck.c (build_class_member_access_expr): Provide a better error
364         message for X.Y where X is a pointer to class type.
365         (finish_class_member_access_expr): Likewise.
367 2011-10-15  Tom Tromey  <tromey@redhat.com>
368             Dodji Seketeli  <dodji@redhat.com>
370         * error.c (cp_diagnostic_starter): Pass the relevant location to
371         diagnostic_report_current_module.
372         (cp_diagnostic_finalizer): Call virt_loc_aware_diagnostic_finalizer.
374 2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
376         PR c++/48489
377         * typeck.c (finish_class_member_access_expr): Fix error call
378         for TREE_CODE (access_path) == TREE_BINFO.
380 2011-10-15  Paolo Carlini  <paolo.carlini@oracle.com>
382         PR c++/50732
383         * semantics.c (finish_trait_expr): Do not try to instantiate the
384         the base type of an __is_base_of trait.
385         (check_trait_type): Return a tree; use complete_type_or_else.
387 2011-10-14  Jason Merrill  <jason@redhat.com>
389         PR c++/50563
390         * parser.c (cp_parser_cache_group): Handle end==CPP_COMMA.
391         (cp_parser_save_nsdmi): Pass it.
393         PR c++/50707
394         * method.c (walk_field_subobs): Check for NSDMI before
395         complaining about uninitialized fields.
397         * pt.c (tsubst_decl) [FIELD_DECL]: Use void_zero_node
398         instead of error_mark_node as a placeholder.
400 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
402         PR c++/38174
403         * call.c (add_builtin_candidate): If two pointers have a composite
404         pointer type, generate a single candidate with that type.
406 2011-10-13  Jason Merrill  <jason@redhat.com>
408         PR c++/50614
409         * cp-tree.h (VAR_TEMPL_TYPE_FIELD_OR_FUNCTION_DECL_CHECK): New.
410         (DECL_TEMPLATE_INFO): Use it.
411         * pt.c (tsubst_decl) [FIELD_DECL]: Set DECL_TEMPLATE_INFO
412         if the decl has an NSDMI.
413         * init.c (perform_member_init): Use it.
415         PR c++/50437
416         * cp-tree.h (struct tree_lambda_expr): Add closure field.
417         (LAMBDA_EXPR_CLOSURE): New.
418         * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Likewise.
419         * semantics.c (build_lambda_object): Use it instead of TREE_TYPE.
420         (begin_lambda_type, lambda_function, add_capture): Likewise.
421         (add_default_capture, lambda_expr_this_capture): Likewise.
423 2011-10-13   Diego Novillo  <dnovillo@google.com>
425         * cp-tree.h (struct language_function): Rename in_function_try_handler
426         to x_in_function_try_handler.
427         Rename in_base_initializer to x_in_base_initializer.
428         Update all users.
430 2011-10-13   Diego Novillo  <dnovillo@google.com>
432         * class.c (sorted_fields_type_new): Factor out of ...
433         (finish_struct_1): ... here.
435 2011-10-13  Jason Merrill  <jason@redhat.com>
437         PR c++/50618
438         * init.c (expand_aggr_init_1): Don't zero-initialize virtual
439         bases of a base subobject.
441 2011-10-12  Paolo Carlini  <paolo.carlini@oracle.com>
443         PR c++/50594
444         * decl.c (cxx_init_decl_processing): Add
445         __attribute__((externally_visible)) to operator new and
446         operator delete library fn.
448 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
450         * decl.c (duplicate_decls): Delete old interface with two parallel
451         arrays to hold standard builtin declarations, and replace it with
452         a function based interface that can support creating builtins on
453         the fly in the future.  Change all uses, and poison the old
454         names.  Make sure 0 is not a legitimate builtin index.
455         * except.c (build_eh_type_type): Ditto.
456         (choose_personality_routine): Ditto.
457         * semantics.c (finish_omp_atomic): Ditto.
458         (finish_omp_barrier): Ditto.
459         (finish_omp_flush): Ditto.
460         (finish_omp_taskwait): Ditto.
462 2011-10-11  Jason Merrill  <jason@redhat.com>
464         PR c++/49855
465         PR c++/49896
466         * cp-tree.def (IMPLICIT_CONV_EXPR): New.
467         * call.c (perform_implicit_conversion_flags): Build it
468         instead of NOP_EXPR.
469         * cp-objcp-common.c (cp_common_init_ts): It's typed.
470         * cxx-pretty-print.c (pp_cxx_cast_expression): Handle it.
471         (pp_cxx_expression): Likewise.
472         * error.c (dump_expr): Likewise.
473         * semantics.c (potential_constant_expression_1): Likewise.
474         * tree.c (cp_tree_equal): Likewise.
475         (cp_walk_subtrees): Likewise.
476         * pt.c (iterative_hash_template_arg): Likewise.
477         (for_each_template_parm_r): Likewise.
478         (type_dependent_expression_p): Likewise.
479         (tsubst_copy, tsubst_copy_and_build): Handle IMPLICIT_CONV_EXPR
480         and CONVERT_EXPR.
481         * cp-tree.h (IMPLICIT_CONV_EXPR_DIRECT_INIT): New.
483 2011-10-11  Paolo Carlini  <paolo.carlini@oracle.com>
485         PR c++/50611
486         * pt.c (tsubst_copy_and_build): If (complain & tf_error) is false
487         do not call unqualified_name_lookup_error.
489 2011-10-10  Paolo Carlini  <paolo.carlini@oracle.com>
491         PR c++/50660
492         * call.c (conversion_null_warnings): Don't look through references.
494 2011-10-09  Paolo Carlini  <paolo.carlini@oracle.com>
496         PR c++/38980
497         * init.c (constant_value_1): Add bool parameter.
498         (decl_constant_value_safe): Add.
499         (integral_constant_value): Adjust.
500         (decl_constant_value): Adjust.
501         * cp-tree.h (decl_constant_value_safe): Declare.
502         * typeck.c (decay_conversion): Use decl_constant_value_safe.
503         * call.c (convert_like_real): Likewise.
505 2011-10-09  Jakub Jelinek  <jakub@redhat.com>
506             Diego Novillo  <dnovillo@google.com>
508         * pt.c (reregister_specialization): Use htab_find instead of
509         htab_find_slot with INSERT.
510         (maybe_process_partial_specialization, lookup_template_class_1): Change
511         slot variable type to void ** to avoid aliasing problems.
512         (register_specialization): Likewise.  Use slot != NULL instead of
513         more expensive !optimize_specialization_lookup_p (tmpl) test.
515 2011-10-08  Paolo Carlini  <paolo.carlini@oracle.com>
517         PR c++/34927
518         * typeck2.c (abstract_virtuals_error_sfinae): Don't produce duplicate
519         inform messages in case of cloned destructor.
521 2011-10-06  Jason Merrill  <jason@redhat.com>
523         PR c++/39164
524         * decl.c (grokfndecl): Diagnose redefinition of defaulted fn.
526 2011-10-02  Jason Merrill  <jason@redhat.com>
528         * pt.c (tsubst_pack_expansion): Re-use ARGUMENT_PACK_SELECTs.
529         Change unsubstituted_packs to bool.
531         * parser.c (cp_parser_range_for): Don't try to deduce from {}
532         in a template.
534         PR c++/35722
535         Implement N2555 (expanding pack expansion to fixed parm list)
536         * pt.c (coerce_template_parms): Allow expanding a pack expansion
537         to a fixed-length argument list.
538         (unify_pack_expansion): Handle explicit args properly.
539         (unify) [TREE_VEC]: Handle pack expansions here.
540         [TYPE_ARGUMENT_PACK]: Not here.
541         (tsubst_pack_expansion): Don't try to do partial substitution.
542         (pack_deducible_p): New.
543         (fn_type_unification): Use it.
544         (find_parameter_packs_r): Take the TYPE_MAIN_VARIANT
545         of a type parameter.
546         (check_non_deducible_conversion): Split from type_unification_real.
547         (unify_one_argument): Split from type_unification_real...
548         (unify_pack_expansion): ...and here.  Drop call_args_p parm.
549         (type_unification_real, unify, more_specialized_fn): Adjust.
551         * class.c (fixed_type_or_null): Handle NSDMI.
552         * method.c (walk_field_subobs): Disable NSDMI noexcept checking
553         for now.
555 2011-09-30  Jason Merrill  <jason@redhat.com>
557         * cp-tree.h (TREE_NEGATED_INT): Remove.
558         * semantics.c (finish_unary_op_expr): Don't set it.
560 2011-09-30  Janis Johnson  <janisjo@codesourcery.com>
562         PR c++/44473
563         * mangle.c (write_type): Handle CV qualifiers for decimal classes.
565 2011-09-26   Andi Kleen <ak@linux.intel.com>
567         * repo.c (finish_repo): Use HOST_WIDE_INT_PRINT_HEX_PURE.
569 2011-09-28  Paolo Carlini  <paolo.carlini@oracle.com>
571         PR c++/45278
572         * typeck.c (cp_build_binary_op): With -Wextra, warn for ordered
573         comparison of pointer with zero.
575 2011-09-27  Paolo Carlini  <paolo.carlini@oracle.com>
577         PR c++/31489
578         * parser.c (cp_parser_elaborated_type_specifier): For RECORD_TYPE,
579         set CLASSTYPE_DECLARED_CLASS.
581 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
583         * decl.c (duplicate_decls): If compatible stpcpy prototype
584         is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
586 2011-09-26  Jason Merrill  <jason@redhat.com>
588         PR c++/45012
589         * pt.c (tsubst_copy_and_build) [CONST_DECL]: Don't pull out
590         constant value if we're still in a template.
592         PR c++/46105
593         * typeck.c (structural_comptypes): Ignore cv-quals on typename scope.
595         PR c++/50508
596         * semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal
597         rather than ==.
599 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
601         PR c++/45487
602         * error.c (dump_template_bindings): Separate bindings with semicolons
603         instead of commas.
605 2011-09-26  Jason Merrill  <jason@redhat.com>
607         PR c++/50512
608         * call.c (compare_ics): Only consider rvaluedness_matches_p
609         if the target type is the same or it too differs in rvalueness.
611         PR c++/50523
612         * call.c (implicit_conversion): Mask out inappropriate LOOKUP
613         flags at the top of the function.
615         * pt.c (tsubst_copy) [PARM_DECL]: Handle 'this' in NSDMI.
617 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
619         * pt.c (convert_nontype_argument): Handle NULLPTR_TYPE.
621 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
623         PR c++/26747
624         * cp-gimplify.c (get_bc_label): Remove obsolete diagnostics.
626 2011-09-25  Jason Merrill  <jason@redhat.com>
628         * parser.c (inject_this_parameter): Split out from
629         cp_parser_late_return_type_opt.
630         (cp_parser_class_specifier_1): Use it for NSDMIs.
631         * tree.c (bot_replace): Replace NSDMI 'this' with real 'this'.
633 2011-09-24  Jason Merrill  <jason@redhat.com>
635         * except.c (expr_noexcept_p): Split out from finish_noexcept_expr.
636         * cp-tree.h: Declare it.
637         * method.c (walk_field_subobs): Use it.
639         * init.c (perform_member_init): Instantiate NSDMI here.
640         * pt.c (tsubst_decl) [FIELD_DECL]: Not here.
642         Handle deferred parsing of NSDMIs.
643         * parser.h (cp_unparsed_functions_entry): Add nsdmis field.
644         * parser.c (unparsed_nsdmis, cp_parser_save_nsdmi): New.
645         (cp_parser_late_parse_one_default_arg): Split out from
646         cp_parser_late_parsing_default_args.
647         (cp_parser_late_parsing_nsdmi): New.
648         (push_unparsed_function_queues): Set it.
649         (cp_parser_parameter_declaration): Save the '=' token.
650         (cp_parser_template_parameter): Likewise.
651         (cp_parser_default_argument): Call cp_parser_initializer
652         rather than cp_parser_initializer_clause.
653         (cp_parser_class_specifier_1): Parse unparsed_nsdmis.
654         (cp_parser_member_declaration): Handle nsdmis.
655         * decl2.c (grokfield): Handle DEFAULT_ARG for a function.
657         Implement C++11 non-static data member initializers.
658         * cp-tree.h (enum cpp_warn_str): Add CPP0X_NSDMI.
659         * error.c (maybe_warn_cpp0x): Handle it.
660         * call.c (convert_like_real) [ck_user]: Don't complain about
661         using an explicit constructor for direct-initialization.
662         * class.c (check_field_decl): Fix ancient typo.
663         (check_field_decls): NSDMIs make the default ctor non-trivial.
664         * decl.c (cp_finish_decl): Record NSDMI.
665         (grokdeclarator): Allow NSDMI.
666         * decl2.c (grokfield): Allow NSDMI.  Correct LOOKUP flags.
667         * init.c (perform_member_init): Use NSDMI.
668         * method.c (walk_field_subobs): Check for NSDMI.
669         * parser.c (cp_parser_member_declaration): Parse { } init.
670         * semantics.c (register_constexpr_fundef): Don't talk about
671         a return statement in a constexpr constructor.
672         (cxx_eval_call_expression): Check DECL_INITIAL instead of
673         DECL_SAVED_TREE.
675 2011-09-24  Paolo Carlini  <paolo.carlini@oracle.com>
677         PR c++/44267
678         * class.c (build_base_path): Add a tsubst_flags_t parameter.
679         (convert_to_base): Adjust call.
680         * typeck.c (build_class_member_access_expr,
681         get_member_function_from_ptrfunc, build_static_cast_1): Likewise.
682         * init.c (dfs_initialize_vtbl_ptrs, emit_mem_initializers): Likewise.
683         * method.c (do_build_copy_constructor, do_build_copy_assign): Likewise.
684         * rtti.c (build_dynamic_cast_1): Likewise.
685         * typeck2.c (build_scoped_ref, build_m_component_ref): Likewise.
686         * call.c (build_over_call, build_special_member_call): Likewise.
687         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
688         build_up_reference): Likewise.
689         * cp-tree.h (build_base_path): Adjust declaration.
691 2011-09-23  Jason Merrill  <jason@redhat.com>
693         Core 253 - allow const objects with no initializer or
694         user-provided default constructor if the defaulted constructor
695         initializes all the subobjects.
696         PR c++/20039
697         PR c++/42844
698         * class.c (default_init_uninitialized_part): New.
699         * cp-tree.h: Declare it.
700         * decl.c (check_for_uninitialized_const_var): Use it.
701         * init.c (perform_member_init): Likewise.
702         (build_new_1): Likewise.
703         * method.c (walk_field_subobs): Likewise.
705 2011-09-23  Paolo Carlini  <paolo.carlini@oracle.com>
707         PR c++/50258
708         * decl.c (check_static_variable_definition): Allow in-class
709         initialization of static data member of non-integral type in
710         permissive mode.
712 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
714         PR c++/50491
715         * semantics.c (potential_constant_expression_1): Handle USING_DECL.
717 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
719         PR c++/50371
720         * pt.c (invalid_nontype_parm_type_p): Handle NULLPTR_TYPE.
722 2011-09-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
723             Paolo Carlini  <paolo.carlini@oracle.com>
725         PR c++/50344
726         * friend.c (make_friend_class): cv-qualification is ok in a
727         friend declaration.
729 2011-09-21  Paolo Carlini  <paolo.carlini@oracle.com>
731         PR c++/50454
732         * decl.c (grokdeclarator): Consistently handle both __int128
733         and unsigned __int128 with -pedantic; suppress diagnostic in
734         system headers.
736 2011-09-20  Jason Merrill  <jason@redhat.com>
738         * cp-tree.h (DECL_TEMPLOID_INSTANTIATION): New.
739         (DECL_GENERATED_P): New.
740         * class.c (finalize_literal_type_property): Use them.
741         * semantics.c (is_instantiation_of_constexpr): Likewise.
742         (register_constexpr_fundef): Likewise.
744         * call.c (convert_default_arg): Avoid redundant copy.
745         * tree.c (bot_manip): Copy everything.
747 2011-09-20 Roberto Agostino Vitillo <ravitillo@lbl.gov>
749         * call.c (build_new_method_call_1): Use non-virtual lookup
750         for final virtual functions.
752 2011-09-16  Jason Merrill  <jason@redhat.com>
754         PR c++/50424
755         * call.c (set_flags_from_callee): Split out from build_call_a.
756         * cp-tree.h: Declare it.
757         * tree.c (bot_manip): Call it.
759 2011-09-15  Jason Merrill  <jason@redhat.com>
761         PR c++/50365
762         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
763         for clearing current_class_ptr, too.
765 2011-09-14   Diego Novillo  <dnovillo@google.com>
767         * name-lookup.c (lookup_arg_dependent): Use conditional
768         timevars.
769         * decl.c (xref_tag): Likewise.
771 2011-09-14  Paolo Carlini  <paolo.carlini@oracle.com>
773         PR c++/50391
774         * pt.c (regenerate_decl_from_template): Don't pass an error_mark_node
775         to build_exception_variant.
777 2011-09-13  Dodji Seketeli  <dodji@redhat.com>
779         PR c++/48320
780         * pt.c (template_parameter_pack_p): Support TEMPLATE_PARM_INDEX
781         nodes.  Add a comment.
782         (arg_from_parm_pack_p):  New static function, factorized out from
783         tsubst_pack_expansion and extended to support non-type parameter
784         packs represented with TEMPLATE_PARM_INDEX nodes.
785         (tsubst_pack_expansion): Use arg_from_parm_pack_p.
787 2011-09-12  Jason Merrill  <jason@redhat.com>
789         * pt.c (type_unification_real): Fix handling of DEDUCE_CONV
790         with no deducible template parameters.
791         * call.c (rejection_reason_code): Add rr_template_conversion.
792         (print_z_candidate): Handle it.
793         (template_conversion_rejection): New.
794         (build_user_type_conversion_1): Use it.
796         * call.c (merge_conversion_sequences): Set bad_p and user_conv_p
797         on all of the second conversion sequence.
798         (build_user_type_conversion_1): Set bad_p on the ck_user conv.
799         (convert_like_real): Handle bad ck_ref_bind with user_conv_p in the
800         first section.  Fix loop logic.
801         (initialize_reference): Call convert_like for diagnostics when
802         we have a (bad) conversion.
804         * call.c (convert_class_to_reference)
805         (convert_class_to_reference_1): Remove.
806         (reference_binding): Use build_user_type_conversion_1 instead.
808         * call.c (initialize_reference): Add flags parm.
809         * decl.c (grok_reference_init): Likewise.
810         (check_initializer): Pass it.
811         * typeck.c (convert_for_initialization): Likewise.
812         * cp-tree.h: Adjust.
814         * cp-tree.h (LOOKUP_NO_RVAL_BIND): New.
815         * call.c (conditional_conversion): Use it.
816         (reference_binding): Fix handling of xvalues.
818 2011-09-09  Jason Merrill  <jason@redhat.com>
820         * call.c (implicit_conversion): Check BRACE_ENCLOSED_INITIALIZER_P
821         before forcing instantiation.
823 2011-09-08  Paolo Carlini  <paolo.carlini@oracle.com>
825         PR c++/50324
826         * typeck2.c (digest_init_r): Call complete_type_or_maybe_complain
827         instead of complete_type_or_else.
829 2011-09-08  Dodji Seketeli  <dodji@redhat.com>
831         PR c++/33255 - Support -Wunused-local-typedefs warning
832         * name-lookup.c (pushdecl_maybe_friend_1): Use the new
833         record_locally_defined_typedef.
834         * decl.c (finish_function): Use the new
835         maybe_warn_unused_local_typedefs.
836         (grokfield): Use the new record_locally_defined_typedef.
837         * parser.c (lookup_name): Use the new maybe_record_typedef_use.
839 2011-09-07  Paolo Carlini  <paolo.carlini@oracle.com>
841         PR c++/50309
842         * decl.c (grokdeclarator): Check u.function.exception_specification
843         for error_mark_node.
845 2011-09-07  Jason Merrill  <jason@redhat.com>
847         PR c++/50298
848         * parser.c (cp_parser_member_declaration): Don't require a constant
849         rvalue here in C++0x.
851         * pt.c (type_unification_real): Correct complain arg for tsubsting
852         default template args.
854         * pt.c (tsubst_aggr_type): Check TYPE_P before tsubsting.
856 2011-09-06  Jason Merrill  <jason@redhat.com>
858         PR c++/50296
859         * semantics.c (register_constexpr_fundef): Call is_valid_constexpr_fn.
860         (cx_check_missing_mem_inits): Handle bases and empty trivial members.
861         (validate_constexpr_fundecl): Remove.
862         * decl.c (start_preparsed_function): Don't call it.
863         * cp-tree.h: Don't declare it.
865 2011-09-04  Jason Merrill  <jason@redhat.com>
867         PR c++/49267
868         * call.c (reference_binding): Don't set is_lvalue for an rvalue
869         reference rfrom.
871         PR c++/49267
872         PR c++/49458
873         DR 1328
874         * call.c (reference_binding): Set rvaluedness_matches_p properly
875         for reference to function conversion ops.
876         (compare_ics): Adjust.
878         * class.c (trivial_default_constructor_is_constexpr): Rename from
879         synthesized_default_constructor_is_constexpr.
880         (type_has_constexpr_default_constructor): Adjust.
881         (add_implicitly_declared_members): Call it instead.
882         (explain_non_literal_class): Explain about non-constexpr default ctor.
883         * cp-tree.h: Adjust.
884         * method.c (synthesized_method_walk): Adjust.
885         * semantics.c (explain_invalid_constexpr_fn): Handle defaulted
886         functions, too.
888         PR c++/50248
889         Core 1358
890         * init.c (perform_member_init): Don't diagnose missing inits here.
891         (emit_mem_initializers): Or here.
892         * method.c (process_subob_fn): Don't instantiate constexpr ctors.
893         * semantics.c (cx_check_missing_mem_inits): New.
894         (explain_invalid_constexpr_fn): Call it.
895         (register_constexpr_fundef): Likewise.  Leave
896         DECL_DECLARED_CONSTEXPR_P set when the body is unsuitable.
897         (cxx_eval_call_expression): Adjust diagnostics.
898         (cxx_eval_constant_expression): Catch use of 'this' in a constructor.
900 2011-08-30  Jason Merrill  <jason@redhat.com>
902         PR c++/50084
903         * cp-tree.h (cp_decl_specifier_seq): Rename user_defined_type_p
904         to type_definition_p.
905         * parser.c (cp_parser_set_decl_spec_type): Likewise.
906         * decl.c (grokdeclarator): Check it.
908         PR c++/50089
909         * semantics.c (finish_id_expression): Use
910         current_nonlambda_class_type for qualified-ids.
912         PR c++/50114
913         * decl.c (poplevel): Disable for scope compatibility hack
914         in C++11 mode.
916         PR c++/50220
917         * semantics.c (add_capture): Call complete_type for copy.
919         PR c++/50234
920         * semantics.c (cxx_eval_component_reference): Handle
921         value-initialization for omitted initializers.
923 2011-08-29  Jason Merrill  <jason@redhat.com>
925         PR c++/50224
926         * semantics.c (finish_id_expression): Mark captured variables used.
928 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
929             Jason Merrill  <jason@redhat.com>
931         PR c++/50207
932         * class.c (finish_struct_1): Complain if the first field is
933         artificial.
935 2011-08-29  Jason Merrill  <jason@redhat.com>
937         PR c++/50209
938         Core DR 994
939         * parser.c (cp_parser_default_argument): Use
940         cp_parser_initializer_clause.
941         (cp_parser_late_parsing_default_args): Likewise.
943 2011-08-26  Jason Merrill  <jason@redhat.com>
945         Core DR 342
946         PR c++/48582
947         * pt.c (check_valid_ptrmem_cst_expr): A null member pointer value
948         is valid in C++11.
949         (convert_nontype_argument): Likewise.  Implicitly convert nullptr
950         and do constant folding.
951         * mangle.c (write_template_arg_literal): Mangle null member
952         pointer values as 0.
953         * call.c (null_member_pointer_value_p): New.
954         * cp-tree.h: Declare it.
956 2011-08-25  Jason Merrill  <jason@redhat.com>
958         * call.c (convert_like_real): Remove redundant complain checks.
960         PR c++/50157
961         * call.c (convert_like_real): Exit early if bad and !tf_error.
963 2011-08-23  Jason Merrill  <jason@redhat.com>
965         * typeck2.c (build_functional_cast): Don't try to avoid calling
966         build_value_init.
967         * pt.c (instantiate_class_template_1): Don't copy TYPE_HAS_* flags.
969 2011-08-23  Jason Merrill  <jason@redhat.com>
971         PR c++/49045
972         Core 1321
973         * tree.c (dependent_name): New.
974         (cp_tree_equal): Two calls with the same dependent name are
975         equivalent even if the overload sets are different.
977 2011-08-23  Jason Merrill  <jason@redhat.com>
979         * tree.c (build_target_expr): Set TREE_CONSTANT on
980         literal TARGET_EXPR if the value is constant.
981         * typeck2.c (build_functional_cast): Don't set it here.
983 2011-08-23  Jason Merrill  <jason@redhat.com>
985         Core 903 (partial)
986         * call.c (null_ptr_cst_p): Only 0 qualifies in C++11.
988 2011-08-23  Jason Merrill  <jason@redhat.com>
990         Core 975
991         * decl.c (cxx_init_decl_processing): Initialize
992         dependent_lambda_return_type_node.
993         * cp-tree.h (cp_tree_index): Add CPTI_DEPENDENT_LAMBDA_RETURN_TYPE.
994         (dependent_lambda_return_type_node): Define.
995         (DECLTYPE_FOR_LAMBDA_RETURN): Remove.
996         * semantics.c (lambda_return_type): Handle overloaded function.
997         Use dependent_lambda_return_type_node instead of
998         DECLTYPE_FOR_LAMBDA_RETURN.
999         (apply_lambda_return_type): Don't check dependent_type_p.
1000         * pt.c (tsubst_copy_and_build): Handle lambda return type deduction.
1001         (instantiate_class_template_1): Likewise.
1002         (tsubst): Don't use DECLTYPE_FOR_LAMBDA_RETURN.
1003         * mangle.c (write_type): Likewise.
1004         * typeck.c (structural_comptypes): Likewise.
1005         (check_return_expr): Handle dependent_lambda_return_type_node.
1007 2011-08-23  Jason Merrill  <jason@redhat.com>
1009         PR c++/50024
1010         * semantics.c (maybe_constant_value): Don't try to fold { }.
1011         * pt.c (build_non_dependent_expr): Don't wrap { }.
1012         * init.c (build_value_init): Allow scalar value-init in templates.
1014 2011-08-23  Jason Merrill  <jason@redhat.com>
1016         * semantics.c (potential_constant_expression_1): Allow 'this'.
1018 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
1020         PR c++/50158
1021         * typeck.c (cp_build_modify_expr): Call mark_rvalue_use on rhs
1022         if it has side-effects and needs to be preevaluated.
1024 2011-08-23  Siddhesh Poyarekar  <siddhesh.poyarekar@gmail.com>
1026         PR c++/50055
1027         * except.c (begin_eh_spec_block): Build EH_SPEC block on the
1028         same line as the function.
1030 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
1032         PR c++/46862
1033         * class.c (finish_struct_1): If TYPE_TRANSPARENT_AGGR is set on a type
1034         which doesn't have any fields, clear it and diagnose.
1036 2011-08-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1037             Marc Glisse  <marc.glisse@normalesup.org>
1039         PR libstdc++-v3/1773
1040         * mangle.c (decl_mangling_context): Call
1041         targetm.cxx.decl_mangling_context.
1042         (write_unscoped_name): Use decl_mangling_context.
1044 2011-08-18  Dodji Seketeli  <dodji@redhat.com>
1046         PR c++/45625
1047         * pt.c (parameter_of_template_p): Handle comparison with DECLs of
1048         template parameters as created by process_template_parm.
1050 2011-08-16  Jason Merrill  <jason@redhat.com>
1052         PR c++/50086
1053         * pt.c (unify_pack_expansion): Correct overloaded unification
1054         logic.
1056         * pt.c (instantiate_class_template_1): If DECL_PRESERVE_P is set
1057         on a member function or static data member, call mark_used.
1059         PR c++/50054
1060         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
1061         init_list_type_node.
1063 2011-08-13  Jason Merrill  <jason@redhat.com>
1065         PR c++/50075
1066         * name-lookup.c (local_bindings_p): New.
1067         * name-lookup.h: Declare it.
1068         * lex.c (unqualified_name_lookup_error): Use it.
1070         PR c++/50059
1071         * error.c (dump_expr): Handle MODIFY_EXPR properly.
1073         * decl.c (grok_reference_init): Handle constexpr here.
1074         * call.c (initialize_reference): Not here.
1076 2011-08-12  David Li  <davidxl@google.com>
1078         * class.c (update_vtable_entry_for_fn): Set
1079         LOST_PRIMARY bit properly.
1081 2011-08-12  Jason Merrill  <jason@redhat.com>
1083         PR c++/50034
1084         * call.c (convert_arg_to_ellipsis): force_rvalue only in
1085         potentially evaluated context.
1087 2011-08-12  Richard Guenther  <rguenther@suse.de>
1089         * call.c (build_over_call): Instead of memcpy use an
1090         assignment of two MEM_REFs.
1092 2011-08-11  Romain Geissler  <romain.geissler@gmail.com>
1093             Brian Hackett  <bhackett1024@gmail.com>
1095         * decl.c (cp_finish_decl): Invoke callbacks on finish_decl event.
1097 2011-08-10  Richard Guenther  <rguenther@suse.de>
1099         * call.c (build_over_call): Call memcpy unconditionally.
1101 2011-08-08  Jason Merrill  <jason@redhat.com>
1103         PR c++/50020
1104         * semantics.c (finish_call_expr): Don't look at 'this' if we
1105         had an explicit object argument.
1107         PR c++/50011
1108         * typeck2.c (check_narrowing): Fix integer logic.
1110 2011-08-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1112         * Make-lang.in (g++$(exeext)): Add $(EXTRA_GCC_LIBS).
1114 2011-08-05  Jason Merrill  <jason@redhat.com>
1116         PR c++/48993
1117         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Sorry
1118         on 'this' in a constructor.
1120         PR c++/49921
1121         * semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p.
1123         PR c++/49669
1124         * init.c (perform_member_init): Handle invalid array initializer.
1126         PR c++/49988
1127         * semantics.c (cxx_eval_array_reference): Handle failure to
1128         reduce the array operand to something we can work with.
1130 2011-08-05  Gabriel Charette  <gchare@google.com>
1132         * decl.c (finish_function): Remove unecessary line 0 hack.
1134 2011-08-05  Jason Merrill  <jason@redhat.com>
1136         PR c++/47453
1137         * typeck.c (build_x_compound_expr_from_list): Also complain
1138         about ({...}).
1140         PR c++/49812
1141         * typeck.c (cp_build_unary_op) [POSTINCREMENT_EXPR]: Strip cv-quals.
1143         PR c++/49983
1144         * parser.c (cp_parser_range_for): Only do auto deduction in
1145         template if the range is non-dependent.
1147         * init.c (perform_member_init): Always build_aggr_init
1148         for a class member with an explicit mem-initializer.
1150         * pt.c (unify) [TEMPLATE_TYPE_PARM]: Allow VLA for C++0x 'auto'.
1152 2011-08-04  Jakub Jelinek  <jakub@redhat.com>
1154         PR middle-end/49905
1155         * decl.c (cxx_init_decl_processing): Add alloc_size (1) attribute
1156         for operator new and operator new [].  Call init_attributes.
1158 2011-08-02  Jason Merrill  <jason@redhat.com>
1160         PR c++/43886
1161         * parser.c (cp_parser_lambda_body): Clear local_variables_forbidden_p.
1163         PR c++/49577
1164         * typeck2.c (check_narrowing): Check unsigned mismatch.
1165         * semantics.c (finish_compound_literal): check_narrowing.
1167         PR c++/49593
1168         * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR.
1170         PR c++/49803
1171         * init.c (sort_mem_initializers): Initialize uses_unions_p here.
1172         (build_field_list): Not here.
1174         PR c++/49834
1175         * parser.c (build_range_temp): Split out from...
1176         (cp_convert_range_for): ...here.
1177         (do_range_for_auto_deduction): New.
1178         (cp_parser_range_for): Use it.
1180 2011-08-02  Jakub Jelinek  <jakub@redhat.com>
1182         * cp-tree.h (finish_omp_atomic): Adjust prototype.
1183         (cxx_omp_const_qual_no_mutable): New prototype.
1184         (finish_omp_taskyield): New prototype.
1185         * parser.c (cp_parser_omp_atomic): (cp_parser_omp_atomic): Handle
1186         parsing OpenMP 3.1 atomics.  Adjust finish_omp_atomic caller.
1187         (cp_parser_omp_clause_name): Handle final and mergeable clauses.
1188         (cp_parser_omp_clause_final, cp_parser_omp_clause_mergeable): New
1189         functions.
1190         (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FINAL
1191         and PRAGMA_OMP_CLAUSE_MERGEABLE.
1192         (OMP_TASK_CLAUSE_MASK): Allow final and mergeable clauses.
1193         (cp_parser_omp_taskyield): New function.
1194         (cp_parser_pragma): Handle PRAGMA_OMP_TASKYIELD.
1195         (cp_parser_omp_clause_reduction): Handle min and max.
1196         * pt.c (tsubst_expr) <case OMP_ATOMIC>: Handle OpenMP 3.1 atomics.
1197         (tsubst_omp_clauses): Handle OMP_CLAUSE_FINAL and
1198         OMP_CLAUSE_MERGEABLE.
1199         * semantics.c (finish_omp_atomic): Add OPCODE, V, LHS1 and RHS1
1200         arguments.  Handle OpenMP 3.1 atomics.  Adjust c_finish_omp_atomic
1201         caller.
1202         (finish_omp_clauses): Don't complain about const qualified
1203         predetermined vars and static data members in firstprivate clause.
1204         Handle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE. Handle MIN_EXPR
1205         and MAX_EXPR.
1206         (finish_omp_taskyield): New function.
1207         * cp-gimplify.c (cxx_omp_const_qual_no_mutable): New function.
1208         (cxx_omp_predetermined_sharing): Use it.
1210 2011-08-02  Jason Merrill  <jason@redhat.com>
1212         * call.c (build_call_a): Also check at_function_scope_p.
1214 2011-08-01  Jason Merrill  <jason@redhat.com>
1216         PR c++/49932
1217         * mangle.c (write_prefix): Handle decltype.
1219         PR c++/49924
1220         * semantics.c (cxx_eval_vec_init_1): Fix logic.
1222         PR c++/49813
1223         * semantics.c (potential_constant_expression_1): Allow any builtin.
1224         (morally_constexpr_builtin_function_p): Remove.
1226 2011-07-29  Jason Merrill  <jason@redhat.com>
1228         PR c++/49867
1229         * parser.c (cp_parser_lambda_expression): Also clear in_statement
1230         and in_switch_statement_p.
1231         (cp_parser_class_specifier): Likewise.
1233 2011-07-28  Jason Merrill  <jason@redhat.com>
1235         PR c++/49808
1236         * pt.c (tsubst) [TEMPLATE_PARM_INDEX]: Call convert_from_reference.
1237         (convert_nontype_argument, tsubst_template_arg): Handle its output.
1239 2011-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
1241         PR c++/49813
1242         * semantics.c (potential_constant_expression_1):  Handle FMA_EXPR.
1244 2011-07-27  Jeffrey Yasskin  <jyasskin@google.com>
1246         * pt.c (build_template_decl): Copy the function_decl's
1247         source location to the new template_decl.
1249 2011-07-26  Paolo Carlini  <paolo.carlini@oracle.com>
1251         PR c++/49776
1252         * typeck.c (cp_build_modify_expr): Check digest_init return value
1253         for error_mark_node.
1255 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
1257         PR bootstrap/49845
1258         * parser.c (cp_parser_perform_range_for_lookup): Always assign *being
1259         and *end before returning.
1261 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
1263         PR c++/49838
1264         * parser.c (cp_parser_perform_range_for_lookup): Early return if
1265         error_operand_p (range).
1267 2011-07-23  Jason Merrill  <jason@redhat.com>
1269         PR c++/49823
1270         * parser.c (cp_parser_qualifying_entity): Handle templates.
1272 2011-07-22  Jason Merrill  <jason@redhat.com>
1274         PR c++/49793
1275         * typeck2.c (check_narrowing): Downgrade permerror to pedwarn.
1276         Make conditional on -Wnarrowing.
1278 2011-07-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1280         Warn about the use of final/override in non-c++0x mode, and
1281         add __final for non-c++0x mode.
1282         * cp-tree.h (cpp0x_warn_str): Add CPP0X_OVERRIDE_CONTROLS.
1283         * error.c (maybe_warn_cpp0x): Adjust.
1284         * parser.c (cp_parser_virt_specifier_seq_opt): Use it. Add
1285         '__final' as a non-c++0x alternative for 'final'.
1287 2011-07-22  Jason Merrill  <jason@redhat.com>
1288             Mark Glisse  <marc.glisse@normalesup.org>
1290         PR c++/30112
1291         * decl.c (cp_finish_decl): Apply pragma redefine_extname in
1292         other namespaces as well.
1293         * name-lookup.c (c_linkage_bindings): Define.
1294         (lookup_extern_c_fun_in_all_ns): Rename from
1295         lookup_extern_c_fun_binding_in_all_ns.  Return tree.
1296         (pushdecl_maybe_friend_1): Adjust.  Copy DECL_ASSEMBLER_NAME.
1298 2011-07-20  Jason Merrill  <jason@redhat.com>
1300         * parser.c (cp_parser_initializer_list): Handle C99 .id= and [N]=
1301         designated initializer syntax.
1302         * decl.c (check_array_designated_initializer): Add index parm.
1303         (maybe_deduce_size_from_array_init): Pass it.
1304         (reshape_init_array_1): Likewise.
1306         PR c++/6709 (DR 743)
1307         PR c++/42603 (DR 950)
1308         * parser.c (token_is_decltype, cp_lexer_next_token_is_decltype): New.
1309         (cp_parser_nested_name_specifier_opt): Allow decltype.
1310         (cp_parser_qualifying_entity): Likewise.
1311         (cp_parser_decltype): Replace source tokens with CPP_DECLTYPE.
1312         (cp_parser_simple_type_specifier): Handle decltype as scope.
1313         (cp_parser_base_specifier): Allow decltype.
1314         (cp_parser_base_clause): Don't crash on null base.
1315         * parser.h (CPP_KEYWORD, CPP_TEMPLATE_ID): Move to c-common.h.
1316         (CPP_NESTED_NAME_SPECIFIER, N_CP_TTYPES): Likewise.
1318 2011-07-19  Jason Merrill  <jason@redhat.com>
1320         PR c++/49785
1321         * pt.c (coerce_template_parms): Handle non-pack after pack.
1323 2011-07-19  Richard Guenther  <rguenther@suse.de>
1325         * call.c (build_special_member_call): Use fold_build_pointer_plus.
1326         * class.c (build_base_path): Likewise.
1327         (convert_to_base_statically): Likewise.
1328         (dfs_accumulate_vtbl_inits): Likewise.
1329         * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
1330         * except.c (expand_start_catch_block): Likewise.
1331         * init.c (expand_virtual_init): Likewise.
1332         (build_new_1): Likewise.
1333         (build_vec_delete_1): Likewise.
1334         (build_vec_delete): Likewise.
1335         * rtti.c (build_headof): Likewise.
1336         (tinfo_base_init): Likewise.
1337         * typeck.c (get_member_function_from_ptrfunc): Likewise.
1338         (cp_build_addr_expr_1): Likewise.
1339         * typeck2.c (build_m_component_ref): Likewise.
1341 2011-07-18  Martin Jambor  <mjambor@suse.cz>
1343         * parser.c (cp_parser_parameter_declaration_list): Initialize
1344         parenthesized_p.
1346 2011-07-16  Jason Merrill  <jason@redhat.com>
1348         * pt.c (tinst_level_tick, last_template_error_tick): Replace with
1349         last_error_tinst_level.
1350         (push_tinst_level, pop_tinst_level): Adjust.
1351         (problematic_instantiation_changed): Adjust.
1352         (record_last_problematic_instantiation): Adjust.
1353         * error.c (cp_print_error_function): Don't print
1354         current_function_decl if we're in a template instantiation context.
1355         (print_instantiation_full_context): Always print first line.
1357 2011-07-16  Nathan Froyd  <froydnj@codesourcery.com>
1358             Jason Merrill  <jason@redhat.com>
1360         PR c++/45329
1361         PR c++/48934
1362         * cp-tree.h (fn_type_unification): Add `bool' parameter.
1363         * pt.c (enum template_base_result): Define.
1364         (unify_success, unify_unknown): Define.
1365         (unify_parameter_deduction_failure): Define.
1366         (unify_invalid, unify_cv_qual_mismatch, unify_type_mismatch): Define.
1367         (unify_parameter_pack_mismatch): Define.
1368         (unify_parameter_pack_inconsistent): Define.
1369         (unify_ptrmem_cst_mismatch, unify_vla_arg): Define.
1370         (unify_expression_unequal, unify_inconsistency): Define.
1371         (unify_method_type_error, unify_arity): Likewise.
1372         (unify_too_many_parameters, unify_too_few_parameters): Define.
1373         (unify_arg_conversion, unify_no_common_base): Define.
1374         (unify_illformed_ptrmem_cst_expr): Define.
1375         (unify_substitution_failure): Define.
1376         (unify_inconsistent_template_template_parameters): Define.
1377         (unify_template_deduction_failure): Define.
1378         (unify_template_argument_mismatch): Define.
1379         (unify_overload_resolution_failure): Define.
1380         (comp_template_args_with_info): New function, split out from...
1381         (comp_template_args): ...here.  Call it.
1382         (deduction_tsubst_fntype): Add `complain' parameter'.  Pass it
1383         to tsubst.
1384         (unify): Add `explain_p' parameter.  Pass to all relevant calls.
1385         Call above status functions when appropriate.
1386         (resolve_overloaded_unification, try_one_overload): Likewise.
1387         (type_unification, type_unification_real): Likewise.
1388         (unify_pack_expansion): Likewise.
1389         (get_template_base, try_class_unification): Likewise.
1390         (get_bindings, more_specialized_fn): Pass false to unification
1391         calls.
1392         (get_class_bindings, do_auto_deduction): Likewise.
1393         (convert_nontype_argument): Likewise.
1394         (fn_type_unification): Likewise.  Pass tf_warning_or_error if
1395         explain_p.
1396         (get_template_base): Add `explain_p' parameter and pass it to
1397         try_class_unification.  Return an enum template_base_result.
1398         * class.c (resolve_address_of_overloaded_function): Pass false to
1399         fn_type_unification.
1400         * call.c (enum rejection_reason_code): Add new codes.
1401         (struct rejection_reason): Add template_unification field.
1402         Add template_instantiation field.
1403         (template_unification_rejection): Define.
1404         (template_unification_error_rejection): Define.
1405         (template_instantiation_rejection): Define.
1406         (invalid_copy_with_fn_template_rejection): Define.
1407         (add_template_candidate): Pass false to unify.
1408         Provide more rejection reasons when possible.
1409         (print_template_unification_rejection): Define.
1410         (print_arity_rejection): Define, split out from...
1411         (print_z_candidate): ...here.  Add cases for new rejection
1412         reasons.
1414 2011-07-15  Jason Merrill  <jason@redhat.com>
1416         * Make-lang.in (check-g++-strict-gc): New.
1417         (cp/except.o): Depend on gt-cp-except.h
1418         * except.c: Include gt-cp-except.h.
1419         * config-lang.in (gtfiles): Add cp/except.c.
1420         * decl2.c (mark_used): Adjust constexpr condition, set
1421         function_depth around template instantiation.
1422         * parser.c (cp_parser_lambda_body): Set function_depth.
1423         * semantics.c (maybe_add_lambda_conv_op): Likewise.
1425         PR testsuite/49741
1426         * Make-lang.in (check-c++0x): Use --extra_opts instead of--tool_opts.
1428 2011-07-13  Jason Merrill  <jason@redhat.com>
1430         * Make-lang.in (check-c++0x): New.
1432 2011-07-13  Richard Sandiford  <richard.sandiford@linaro.org>
1434         * typeck2.c (split_nonconstant_init_1): Pass the initializer directly,
1435         rather than a pointer to it.  Return true if the whole of the value
1436         was initialized by the generated statements.  Use
1437         complete_ctor_at_level_p instead of count_type_elements.
1439 2011-07-12   Diego Novillo  <dnovillo@google.com>
1441         * name-lookup.h (cp_binding_level): Rename from cxx_scope.
1442         Update all users.
1443         (struct cp_binding_level): Fix indentation.
1445 2011-07-11  Jason Merrill  <jason@redhat.com>
1447         PR c++/49672
1448         * pt.c (extract_fnparm_pack): Split out from...
1449         (make_fnparm_pack): ...here.
1450         (instantiate_decl): Handle non-pack parms after a pack.
1451         * semantics.c (maybe_add_lambda_conv_op): Don't in a template.
1453         * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p.
1455         PR c++/44609
1456         * cp-tree.h (struct tinst_level): Add errors field.
1457         * pt.c (neglectable_inst_p, limit_bad_template_recurson): New.
1458         (push_tinst_level): Don't start another decl in that case.
1459         (reopen_tinst_level): Adjust errors field.
1460         * decl2.c (cp_write_global_declarations): Don't complain about
1461         undefined inline if its template was defined.
1462         * mangle.c (mangle_decl_string): Handle failure from push_tinst_level.
1464 2011-07-10  Jason Merrill  <jason@redhat.com>
1466         PR c++/49691
1467         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
1468         rather than current_class_type to determine whether to set 'this'.
1469         (cp_parser_direct_declarator): Pass -1 to quals if member_p is false.
1470         (cp_parser_init_declarator): Pass down member_p.
1472 2011-07-09  Jason Merrill  <jason@redhat.com>
1474         * tree.c (build_vec_init_elt): Strip TARGET_EXPR.
1476 2011-07-08  Jason Merrill  <jason@redhat.com>
1478         PR c++/45437
1479         * typeck.c (cp_build_modify_expr): Preevaluate RHS.
1481         * method.c (use_thunk): Use cgraph_add_to_same_comdat_group.
1482         * optimize.c (maybe_clone_body): Likewise.
1483         * semantics.c (maybe_add_lambda_conv_op): Likewise.
1485         PR c++/45603
1486         * decl.c (expand_static_init): Don't get confused by user
1487         declaration of __cxa_guard_acquire.
1489         * typeck.c (cp_apply_type_quals_to_decl): Don't check
1490         COMPLETE_TYPE_P either.
1492         PR c++/49673
1493         * typeck.c (cp_apply_type_quals_to_decl): Don't check
1494         TYPE_NEEDS_CONSTRUCTING.
1496 2011-07-07  Jason Merrill  <jason@redhat.com>
1498         PR c++/49663
1499         * pt.c (push_deduction_access_scope): Preserve
1500         processing_template_decl across push_to_top_level.
1501         And revert:
1502         * class.c (pushclass): Accept NULL argument.
1503         (popclass): Deal with popping null class.
1504         * pt.c (push_access_scope, pop_access_scope): Use them rather than
1505         push_to_top_level/pop_from_top_level.
1506         * name-lookup.c (lookup_name_real_1): Check current_class_type.
1508 2011-07-07  Jakub Jelinek  <jakub@redhat.com>
1510         PR c/49644
1511         * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
1512         one non-complex and one complex argument, call save_expr on both
1513         operands.
1515 2011-07-06  Jason Merrill  <jason@redhat.com>
1517         PR c++/49353
1518         * semantics.c (expand_or_defer_fn_1): Clear DECL_EXTERNAL
1519         on kept inlines.
1521         PR c++/49568
1522         * method.c (make_thunk, use_thunk): Copy DECL_COMDAT.
1524 2011-07-05  Jason Merrill  <jason@redhat.com>
1526         PR c++/48157
1527         * pt.c (tsubst_qualified_id): Preserve TEMPLATE_ID_EXPR in
1528         partial instantiation.
1530         PR c++/49598
1531         * semantics.c (finish_id_expression): convert_from_reference.
1533 2011-07-05  Richard Guenther  <rguenther@suse.de>
1535         * decl.c (cxx_init_decl_processing): Defer building common
1536         tree nodes to c_common_nodes_and_builtins.
1538 2011-07-04  Jason Merrill  <jason@redhat.com>
1540         DR 1207
1541         PR c++/49589
1542         * mangle.c (write_expression): Handle 'this'.
1543         * parser.c (cp_parser_postfix_dot_deref_expression): Allow
1544         incomplete *this.
1545         * semantics.c (potential_constant_expression_1): Check that
1546         DECL_CONTEXT is set on 'this'.
1548         * error.c (dump_template_bindings): Don't print typenames
1549         for a partial instantiation.
1550         (dump_function_decl): If we aren't printing function arguments,
1551         print template arguments as <args> rather than [with ...].
1552         (dump_expr): Don't print return type or template header.
1553         [BASELINK]: Use BASELINK_FUNCTIONS rather than get_first_fn.
1554         * pt.c (dependent_template_arg_p): Handle null arg.
1556         * error.c (type_to_string): Avoid redundant akas.
1558 2011-07-01  Jonathan Wakely  <jwakely.gcc@gmail.com>
1560         PR c++/49605
1561         * init.c (build_delete): Only warn for sfk_deleting_destructor.
1563 2011-07-01  Jakub Jelinek  <jakub@redhat.com>
1565         * Make-lang.in (cp/decl.o): Depend on pointer-set.h.
1566         (cp/class.o): Likewise.
1567         (cp/error.o): Likewise.
1568         (cp/name-lookup.o): Likewise.
1569         (cp/decl2.o): Likewise.  Don't depend on $(POINTER_SET_H).
1571 2011-07-01  Jason Merrill  <jason@redhat.com>
1573         PR c++/48261
1574         * pt.c (lookup_template_function): Handle non-function.
1576         PR c++/48593
1577         * pt.c (tsubst_qualified_id): Check PTRMEM_OK_P.
1578         * tree.c (build_qualified_name): Set PTRMEM_OK_P.
1579         * semantics.c (finish_parenthesized_expr): Clear PTRMEM_OK_P on
1580         SCOPE_REF, too.
1581         * cp-tree.h (PTRMEM_OK_P): Apply to SCOPE_REF, too.
1582         (QUALIFIED_NAME_IS_TEMPLATE): Switch to lang flag 1.
1584         PR c++/48883
1585         PR c++/49609
1586         * pt.c (resolve_nondeduced_context): Call mark_used.
1588         PR c++/49085
1589         * semantics.c (finish_offsetof): Complain about incomplete type.
1591 2011-06-30  Jason Merrill  <jason@redhat.com>
1593         PR c++/49387
1594         * rtti.c (get_tinfo_decl): Call complete_type.
1596         PR c++/49569
1597         * method.c (implicitly_declare_fn): Set DECL_PARM_LEVEL and
1598         DECL_PARM_INDEX on rhs parm.
1600         * pt.c (iterative_hash_template_arg): Use cp_tree_operand_length.
1602         PR c++/49355
1603         * tree.c (stabilize_init): Handle aggregate initialization.
1605         PR c++/48481
1606         * name-lookup.c (struct arg_lookup): Add fn_set.
1607         (add_function): Check it.
1608         (lookup_arg_dependent_1): Initialize it.
1610 2011-06-29  Jason Merrill  <jason@redhat.com>
1612         PR c++/49216
1613         * init.c (build_new_1): Pass {} down to build_vec_init.
1614         (build_vec_init): Handle it.
1616         DR 1207
1617         PR c++/49003
1618         * cp-tree.h (struct saved_scope): Add x_current_class_ptr,
1619         x_current_class_ref.
1620         (current_class_ptr, current_class_ref): Use them.
1621         * decl.c (build_this_parm): Handle getting the class type.
1622         * parser.c (cp_parser_late_return_type_opt): Set up 'this'
1623         for use within the trailing return type.
1625         * pt.c (tsubst_decl) [VAR_DECL]: In unevaluated operand,
1626         don't tsubst DECL_INITIAL unless our type use auto.
1628         PR c++/49520
1629         * semantics.c (constexpr_fn_retval): Handle CLEANUP_POINT_EXPR here.
1630         (massage_constexpr_body): Not here.
1632         PR c++/49554
1633         * semantics.c (lambda_proxy_type): New.
1634         (build_capture_proxy): Use it.
1635         * cp-tree.h (DECLTYPE_FOR_LAMBDA_PROXY): New.
1636         * pt.c (tsubst) [DECLTYPE_TYPE]: Use them.
1638         PR c++/45923
1639         * class.c (explain_non_literal_class): New.
1640         (finalize_literal_type_property): Call it.
1641         * cp-tree.h: Declare it.
1642         * semantics.c (ensure_literal_type_for_constexpr_object): Call it.
1643         (is_valid_constexpr_fn): Likewise.
1644         (massage_constexpr_body): Split out from...
1645         (register_constexpr_fundef): ...here.
1646         (is_instantiation_of_constexpr): New.
1647         (expand_or_defer_fn_1): Leave DECL_SAVED_TREE alone in that case.
1648         (explain_invalid_constexpr_fn): New.
1649         (cxx_eval_call_expression): Call it.
1650         (potential_constant_expression_1): Likewise.  Avoid redundant errors.
1651         * method.c (process_subob_fn): Diagnose non-constexpr.
1652         (walk_field_subobs): Likewise.
1653         (synthesized_method_walk): Don't shortcut if we want diagnostics.
1654         (explain_implicit_non_constexpr): New.
1655         (defaulted_late_check): Use it.
1656         * call.c (build_cxx_call): Remember location.
1658         * method.c (maybe_explain_implicit_delete): Use pointer_set
1659         instead of htab.
1661         * class.c (finalize_literal_type_property): Update conditions.
1662         * method.c (defaulted_late_check): Set TYPE_HAS_CONSTEXPR_CTOR.
1664         * tree.c (build_vec_init_expr): Don't add TARGET_EXPR.
1665         * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR.
1666         * semantics.c (cxx_eval_vec_init_1): Correct type.
1668         * init.c (build_value_init): Decide whether or not to zero-initialize
1669         based on user-providedness of default ctor, not any ctor.
1670         (build_value_init_noctor): Adjust assert.
1672         DR 990
1673         * call.c (convert_like_real) [ck_user]: Handle value-initialization.
1674         (build_new_method_call_1): Likewise.
1675         * init.c (expand_default_init): Handle direct list-initialization
1676         of aggregates.
1678 2011-06-27  Jakub Jelinek  <jakub@redhat.com>
1680         * cp-tree.h (union lang_tree_node): Use it in chain_next expression.
1682 2011-06-26  Jason Merrill  <jason@redhat.com>
1684         PR c++/49528
1685         * semantics.c (potential_constant_expression_1): Check
1686         for non-literality rather than cleanup.
1687         (cxx_eval_constant_expression): Likewise.
1689         PR c++/49528
1690         * semantics.c (potential_constant_expression_1): A TARGET_EXPR
1691         with a cleanup isn't constant.
1692         (cxx_eval_constant_expression): Likewise.
1693         * init.c (expand_default_init): Use maybe_constant_init.
1695 2011-06-24  Jakub Jelinek  <jakub@redhat.com>
1697         PR c++/46400
1698         * cp-tree.h (union lang_tree_node): Use TYPE_NEXT_VARIANT
1699         instead of TYPE_CHAIN for chain_next for types.
1701 2011-06-23  Gabriel Charette  <gchare@google.com>
1703         * name-lookup.h (cp_binding_level): Removed unused
1704         member names_size. Update all users.
1706 2011-06-23  Jason Merrill  <jason@redhat.com>
1708         * typeck2.c (build_functional_cast): Strip cv-quals for value init.
1709         * init.c (build_zero_init_1): Not here.
1711         PR c++/35255
1712         * pt.c (resolve_overloaded_unification): Fix DR 115 handling.
1714 2011-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
1716         PR c++/44625
1717         * decl2.c (build_anon_union_vars): Early return error_mark_node
1718         for a nested anonymous struct.
1720 2011-06-23  Jason Merrill  <jason@redhat.com>
1722         PR c++/49507
1723         * decl2.c (mark_used): Don't call synthesize_method for
1724         functions defaulted outside the class.
1726         * optimize.c (maybe_clone_body): Set linkage flags before
1727         cgraph_same_body_alias.
1729         PR c++/49440
1730         * class.c (set_linkage_according_to_type): Hand off to
1731         determine_visibility.
1733         PR c++/49395
1734         * init.c (build_zero_init_1): Strip cv-quals from scalar types.
1736         PR c++/36435
1737         * pt.c (most_specialized_instantiation): Do check return types.
1739 2011-06-22  Jason Merrill  <jason@redhat.com>
1741         PR c++/49260
1742         * call.c (build_call_a): Set cp_function_chain->can_throw here.
1743         (build_cxx_call): Not here.
1745 2011-06-21  Jason Merrill  <jason@redhat.com>
1747         PR c++/49172
1748         * decl.c (cp_finish_decl): Adjust init_const_expr_p for refs.
1749         (grokdeclarator): constexpr doesn't apply const for refs.
1750         * parser.c (cp_parser_initializer_clause): Don't call
1751         maybe_constant_value here.
1752         * call.c (initialize_reference): Handle constexpr.
1754         PR c++/49482
1755         * semantics.c (maybe_add_lambda_conv_op): Call mark_exp_read for
1756         static fn parameters.
1758         * call.c (add_builtin_candidates): Use cv_unqualified rather than
1759         TYPE_MAIN_VARIANT.
1760         * pt.c (tsubst_arg_types): Likewise.
1761         * except.c (build_throw): Use cv_unqualified.
1763         PR c++/49418
1764         * call.c (cxx_type_promotes_to): Don't strip cv-quals.
1765         * semantics.c (lambda_return_type): Strip them here.
1767 2011-06-21  Andrew MacLeod  <amacleod@redhat.com>
1769         * semantics.c: Add sync_ or SYNC__ to builtin names.
1771 2011-06-20  Jason Merrill  <jason@redhat.com>
1773         PR c++/49216
1774         * init.c (build_vec_init): Don't try to use a CONSTRUCTOR when
1775         base is a pointer.
1776         * typeck2.c (process_init_constructor_array): Use {} for classes,
1777         too.
1778         * call.c (convert_like_real): Handle substitution failure.
1780         PR c++/48138
1781         * pt.c (canonicalize_type_argument): New.
1782         (convert_template_argument, unify): Use it.
1784         PR c++/47080
1785         * call.c (rejection_reason_code): Add rr_explicit_conversion.
1786         (print_z_candidate): Handle it.
1787         (explicit_conversion_rejection): New.
1788         (build_user_type_conversion_1): Reject an explicit conversion
1789         function that requires more than a qualification conversion.
1791         PR c++/47635
1792         * decl.c (grokdeclarator): Don't set ctype to an ENUMERAL_TYPE.
1794         PR c++/48138
1795         * tree.c (strip_typedefs): Use build_aligned_type.
1797         PR c++/49205
1798         * call.c (sufficient_parms_p): Allow parameter packs too.
1800         PR c++/43321
1801         * semantics.c (describable_type): Remove.
1802         * cp-tree.h: Likewise.
1803         * decl.c (cp_finish_decl): Don't call it.
1804         * init.c (build_new): Likewise.
1805         * parser.c (cp_parser_omp_for_loop): Likewise.
1806         * pt.c (tsubst_decl): Likewise.
1807         (do_auto_deduction): If we fail in a template, try again
1808         at instantiation time.
1810         PR c++/43831
1811         * parser.c (cp_parser_lambda_introducer): Complain about redundant
1812         captures.
1813         * semantics.c (add_capture): Likewise.
1814         (register_capture_members): Clear IDENTIFIER_MARKED.
1816 2011-06-17  Jason Merrill  <jason@redhat.com>
1818         PR c++/49458
1819         * call.c (convert_class_to_reference_1): Allow binding function
1820         lvalue to rvalue reference.
1822         PR c++/43912
1823         Generate proxy VAR_DECLs for better lambda debug info.
1824         * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): Add lambda operator().
1825         (LAMBDA_EXPR_PENDING_PROXIES): New.
1826         (struct tree_lambda_expr): Add pending_proxies.
1827         * name-lookup.c (pushdecl_maybe_friend_1): Handle capture shadowing.
1828         (qualify_lookup): Use is_lambda_ignored_entity.
1829         * parser.c (cp_parser_lambda_expression): Don't adjust field names.
1830         Call insert_pending_capture_proxies.
1831         (cp_parser_lambda_introducer): Use this_identifier.
1832         (cp_parser_lambda_declarator_opt): Call the object parameter
1833         of the op() "__closure" instead of "this".
1834         (cp_parser_lambda_body): Call build_capture_proxy.
1835         * semantics.c (build_capture_proxy, is_lambda_ignored_entity): New.
1836         (insert_pending_capture_proxies, insert_capture_proxy): New.
1837         (is_normal_capture_proxy, is_capture_proxy): New.
1838         (add_capture): Add __ to field names here, return capture proxy.
1839         (add_default_capture): Use this_identifier, adjust to expect
1840         add_capture to return a capture proxy.
1841         (outer_lambda_capture_p, thisify_lambda_field): Remove.
1842         (finish_id_expression, lambda_expr_this_capture): Adjust.
1843         (build_lambda_expr): Initialize LAMBDA_EXPR_PENDING_PROXIES.
1844         * pt.c (tsubst_copy_and_build): Check that LAMBDA_EXPR_PENDING_PROXIES
1845         is null.
1847         * name-lookup.c (pushdecl_maybe_friend_1): Do check for shadowing
1848         of artificial locals.
1850         * parser.c (cp_parser_lambda_expression): Clear
1851         LAMBDA_EXPR_THIS_CAPTURE after parsing.
1852         * pt.c (tsubst_copy_and_build): Make sure it isn't set.
1854         * cp-tree.h (struct tree_lambda_expr): Change common to typed.
1855         Move non-pointers to end of struct.
1857         * pt.c (tsubst_decl): Handle DECL_VALUE_EXPR on reference.
1858         * decl.c (check_initializer): Handle DECL_VALUE_EXPR_P.
1860         * semantics.c (finish_non_static_data_member): Preserve dereference
1861         in template.
1863 2011-06-16  Jason Merrill  <jason@redhat.com>
1865         PR c++/44160
1866         * parser.c (cp_parser_lambda_body): Share code between
1867         simple and complex cases instead of using cp_parser_function_body.
1869         PR c++/45378
1870         * decl.c (check_initializer): Check narrowing.
1872         PR c++/49229
1873         * pt.c (tsubst_decl) [FUNCTION_DECL]: Handle substitution failure.
1875         PR c++/49251
1876         * semantics.c (finish_id_expression): Mark even dependent
1877         variables as used.
1879         PR c++/49420
1880         * error.c (dump_template_argument): Don't try to omit default
1881         template args from an argument pack.
1883 2011-06-15  H.J. Lu  <hongjiu.lu@intel.com>
1885         PR c++/49412
1886         * decl.c (get_dso_handle_node): Mark __dso_handle hidden if
1887         assembler supports hidden visibility.
1889 2011-06-14  Jason Merrill  <jason@redhat.com>
1891         PR c++/49107
1892         * cp-tree.h (DEFERRED_NOEXCEPT_SPEC_P): Handle overload.
1893         * method.c (defaulted_late_check): Only maybe_instantiate_noexcept
1894         if the declaration had an exception-specifier.
1895         (process_subob_fn): Don't maybe_instantiate_noexcept.
1896         * pt.c (maybe_instantiate_noexcept): Handle overload.
1897         * typeck2.c (nothrow_spec_p_uninst): New.
1898         (merge_exception_specifiers): Add 'fn' parm.  Build up overload.
1899         * typeck.c (merge_types): Adjust.
1901         * pt.c (deduction_tsubst_fntype): Don't save input_location.
1902         (maybe_instantiate_noexcept): Likewise.
1904 2011-06-14  Joseph Myers  <joseph@codesourcery.com>
1906         * Make-lang.in (cp/method.o): Update dependencies.
1907         * method.c: Include common/common-target.h.
1908         (use_thunk): Use targetm_common.have_named_sections.
1910 2011-06-14  Steve Ellcey  <sje@cup.hp.com>
1912         * decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
1914 2011-06-14  Jason Merrill  <jason@redhat.com>
1916         * error.c (type_to_string): Print typedef-stripped version too.
1918         PR c++/49117
1919         * call.c (perform_implicit_conversion_flags): Print source type as
1920         well as expression.
1922         PR c++/49389
1923         * typeck2.c (build_m_component_ref): Preserve rvalueness.
1925         PR c++/49369
1926         * class.c (build_base_path): Fix cv-quals in unevaluated context.
1928         PR c++/49290
1929         * semantics.c (cxx_fold_indirect_ref): Local, more permissive copy
1930         of fold_indirect_ref_1.
1931         (cxx_eval_indirect_ref): Use it.
1933 2011-06-11  Jan Hubicka  <jh@suse.cz>
1935         * decl2.c (cp_write_global_declarations): Process aliases; look trhough
1936         same body aliases.
1938 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
1940         PR c++/41769
1941         * decl.c (grokdeclarator): Reject operator names in parameters.
1943 2011-06-10  Jan Hubicka  <jh@suse.cz>
1945         * decl2.c (clear_decl_external): New functoin.
1946         (cp_write_global_declarations): Use it.
1948 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
1950         * cp-tree.h (error_operand_p): Remove.
1952 2011-06-09  David Krauss  <potswa@mac.com>
1954         PR c++/49118
1955         * typeck2.c (build_x_arrow): Push fake template context
1956         to produce diagnostic on acyclic endless operator-> drill-down.
1957         * call.c (build_new_op): Change Boolean overload status
1958         value to a pointer to the overload function.
1959         * cp-tree.h: Likewise.
1960         * typeck.c: Likewise.
1961         * parser.c: Likewise.
1962         * decl2.c: Likewise.
1963         * pt.c: Likewise.
1965 2011-06-09  Jason Merrill  <jason@redhat.com>
1967         * semantics.c (maybe_constant_value): Handle overflowed input.
1968         (non_const_var_error): Handle non-constant DECL_INITIAL.
1970         * pt.c (build_non_dependent_expr): Use fold_non_dependent_expr_sfinae.
1972         * parser.c (cp_parser_constant_expression): Just return the
1973         non-constant expression.
1975         * semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR.
1977 2011-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
1979         PR c++/29003
1980         * decl.c (grokdeclarator): Reject operator names in typedefs.
1982 2011-06-08  Jason Merrill  <jason@redhat.com>
1984         PR c++/49107
1985         * cp-tree.def (DEFERRED_NOEXCEPT): New.
1986         * cp-tree.h (struct tree_deferred_noexcept): New.
1987         (DEFERRED_NOEXCEPT_PATTERN, DEFERRED_NOEXCEPT_ARGS): New.
1988         (DEFERRED_NOEXCEPT_SPEC_P): New.
1989         (enum cp_tree_node_structure_enum): Add TS_CP_DEFERRED_NOEXCEPT.
1990         (union lang_tree_node): Add tree_deferred_noexcept.
1991         (maybe_instantiate_noexcept): Declare.
1992         * cp-objcp-common.c (cp_tree_size): Handle DEFERRED_NOEXCEPT.
1993         * error.c (dump_exception_spec): Likewise.
1994         * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
1995         * ptree.c (cxx_print_xnode): Likewise.
1996         * tree.c (cp_tree_equal): Likewise.
1997         * decl.c (cp_tree_node_structure): Likewise.
1998         (duplicate_decls): Call maybe_instantiate_noexcept.
1999         * except.c (build_noexcept_spec): Handle DEFERRED_NOEXCEPT.
2000         (nothrow_spec_p, type_noexcept_p, type_throw_all_p): Check
2001         DEFERRED_NOEXCEPT_SPEC_P.
2002         * typeck2.c (merge_exception_specifiers): Likewise.
2003         * decl2.c (mark_used): Call maybe_instantiate_noexcept.
2004         * method.c (process_subob_fn, defaulted_late_check): Likewise.
2005         * pt.c (tsubst_exception_specification): Add defer_ok parm.
2006         Build DEFERRED_NOEXCEPT.
2007         (maybe_instantiate_noexcept): New.
2008         (tsubst, regenerate_decl_from_template, instantiate_decl): Adjust.
2009         * search.c (check_final_overrider): Call maybe_instantiate_noexcept.
2011         * semantics.c (potential_constant_expression_1): Handle destructor
2012         call.
2014 2011-06-08  Jakub Jelinek  <jakub@redhat.com>
2016         * cp-tree.h (struct tinst_level): Add chain_next GTY
2017         markup.
2019 2011-06-08  Jason Merrill  <jason@redhat.com>
2021         PR c++/49322
2022         * pt.c (deduction_tsubst_fntype): Don't free the tinst entry
2023         if a pending_template entry is pointing at it.
2025 2011-06-07  Jason Merrill  <jason@redhat.com>
2027         PR c++/48969
2028         PR c++/44175
2029         * error.c (subst_to_string): New.
2030         (cp_printer): Use it for 'S'.
2031         (print_instantiation_partial_context_line): Handle subst context.
2032         * pt.c (push_tinst_level): Handle subst context.
2033         (deduction_tsubst_fntype): Don't track specific substitutions.
2034         Use push_tinst_level.
2036         * pt.c (deduction_tsubst_fntype): Use push_deduction_access_scope.
2037         (fn_type_unification): Don't call push_deduction_access_scope here.
2039 2011-06-06  Jason Merrill  <jason@redhat.com>
2041         PR c++/48780
2042         * typeck.c (perform_integral_promotions): Don't promote scoped enums.
2043         * call.c (convert_arg_to_ellipsis): Promote them here in old ABI.
2045 2011-06-06  Nicola Pero  <nicola.pero@meta-innovation.com>,
2047         PR obj-c++/48275
2048         * parser.c (cp_parser_objc_at_property_declaration): Allow setter
2049         and getter names to use all the allowed method names.
2051 2011-06-06  Jason Merrill  <jason@redhat.com>
2053         PR c++/49298
2054         * semantics.c (potential_constant_expression_1): Handle FIELD_DECL.
2056         PR objc++/49221
2057         * decl.c (cp_finish_decl): Check DECL_FUNCTION_SCOPE_P rather than
2058         at_function_scope_p.
2060         PR c++/49134
2061         * tree.c (build_target_expr): Deal with ARM ABI tweaks.
2063 2011-06-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
2065         * init.c (build_delete): Warn when deleting type with non-virtual
2066         destructor.
2068 2011-06-03  Jakub Jelinek  <jakub@redhat.com>
2070         PR c++/49276
2071         * mangle.c (write_nested_name): Use CP_DECL_CONTEXT instead of
2072         DECL_CONTEXT.
2074 2011-06-01  Jason Merrill  <jason@redhat.com>
2076         * pt.c (build_non_dependent_expr): Remove special handling of
2077         REFERENCE_REF_P.
2079         PR c++/44175
2080         * pt.c (template_args_equal): Handle one arg being NULL_TREE.
2081         (deduction_tsubst_fntype): Handle excessive non-infinite recursion.
2083         PR c++/49253
2084         * typeck2.c (build_x_arrow): Don't use build_min_nt.
2086 2010-05-31  Fabien Chêne  <fabien@gcc.gnu.org>
2088         PR c++/48010
2089         * name-lookup.c (supplement_binding_1): If the old binding was a
2090         type name, also check that the DECL actually refers to the same
2091         type or is not a type.
2093 2011-05-31  Jason Merrill  <jason@redhat.com>
2095         PR c++/44870
2096         * tree.c (lvalue_kind): Recurse on NON_DEPENDENT_EXPR.  Handle
2097         ARROW_EXPR, TYPEID_EXPR, and arbitrary class-valued expressions.
2098         (build_min_non_dep): Preserve reference refs.
2099         (build_min_non_dep_call_vec): Likewise
2101 2011-05-30  Jakub Jelinek  <jakub@redhat.com>
2103         PR c++/49223
2104         * semantics.c (finish_omp_clauses): Call require_complete_type
2105         even for copyin/copyprivate clauses.  Only call
2106         cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P.
2108 2011-05-28  Jason Merrill  <jason@redhat.com>
2110         PR c++/46124
2111         * parser.c (cp_parser_lambda_expression): Improve error recovery.
2112         (cp_parser_lambda_declarator_opt): Likewise.  Return bool.
2114 2011-05-27  Jason Merrill  <jason@redhat.com>
2116         PR c++/47277
2117         * parser.c (cp_parser_pseudo_destructor_name): Commit to parse
2118         after we see the ~.
2120         * mangle.c (mangle_decl_string): Make sure we don't try to mangle
2121         templates.
2123         PR c++/47049
2124         * semantics.c (maybe_add_lambda_conv_op): Fix COMDAT sharing.
2125         * decl.c (start_preparsed_function): Don't call comdat_linkage for
2126         a template.
2128         PR c++/47132
2129         * mangle.c (write_expression): Handle MODOP_EXPR.
2131         PR c++/47277
2132         * parser.c (cp_parser_unqualified_id): Don't check
2133         constructor_name_p for enums.
2135         PR c++/47687
2136         * pt.c (dependent_type_p_r): Avoid infinite recursion.
2138         PR c++/48284
2139         * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot
2140         with INDIRECT_REF of REFERENCE_TYPE.
2142         PR c++/49181
2143         * pt.c (get_mostly_instantiated_function_type): Use push_access_scope.
2145 2011-05-27  Nathan Froyd  <froydnj@codesourcery.com>
2147         * cp-tree.h (building_stmt_tree): Delete.
2148         * decl.c (save_function_data): Tweak initializer for x_cur_stmt_list.
2149         (build_aggr_init_full_exprs): Call building_stmt_list_p
2150         instead of building_stmt_tree.
2151         (initialize_local_var): Likewise.
2152         (finish_function): Likewise.
2153         * decl2.c (finish_anon_union): Likewise.
2154         * init.c (begin_init_stmts): Likewise.
2155         (finish_init_stmts): Likewise.
2156         (expand_aggr_init_1): Likewise.
2157         * name-lookup.c (do_local_using_decl): Likewise.
2158         (do_namespace_alias): Likewise.
2159         (do_using_directive): Likewise.
2160         (cp_emit_debug_info_for_using): Likewise.
2161         * semantics.c (add_stmt): Assert that stmt_list_stack is non-empty.
2163 2011-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
2165         PR c++/42056
2166         * typeck2.c (build_functional_cast): Complain early for invalid uses
2167         of 'auto' and set type to error_mark_node.
2169 2011-05-26  Jason Merrill  <jason@redhat.com>
2171         PR c++/47721
2172         * parser.c (cp_parser_member_declaration): Allow friend T.
2173         * friend.c (make_friend_class): Ignore non-classes.
2174         * pt.c (instantiate_class_template_1): Handle TEMPLATE_TYPE_PARM.
2176         DR 1004
2177         * pt.c (convert_template_argument): Don't complain about using
2178         injected-class-name as template template argument.
2180         PR c++/47956
2181         * decl.c (check_static_variable_definition): Now static.
2182         (cp_finish_decl): Call it here.
2183         (grokdeclarator): Not here.
2184         * pt.c (instantiate_class_template_1): Or here.
2185         * cp-tree.h: Don't declare it.
2187 2011-05-26  Janis Johnson  <janis187@us.ibm.com>
2188             Nathan Froyd  <froydnj@codesourcery.com>
2190         PR c++/2288
2191         PR c++/18770
2192         * name-lookup.h (enum scope_kind): Add sk_cond.
2193         * name-lookup.c (pushdecl_maybe_friend): Get scope of shadowed local.
2194         Detect and report error for redeclaration from for-init or if
2195         or switch condition.
2196         (begin_scope): Handle sk_cond.
2197         * semantics.c (begin_if_stmt): Use sk_cond.
2198         (begin switch_stmt): Ditto.
2200 2011-05-26  Jason Merrill  <jason@redhat.com>
2202         PR c++/48211
2203         * name-lookup.h (cp_class_binding): Make base a pointer.
2204         * name-lookup.c (new_class_binding): Adjust.
2205         (poplevel_class): Adjust.
2207         PR c++/48424
2208         * decl.c (grokparms): Function parameter packs don't need to
2209         go at the end.
2210         * pt.c (type_unification_real): But they aren't deduced otherwise.
2212 2011-05-25  Jason Merrill  <jason@redhat.com>
2214         PR c++/48536
2215         * decl.c (build_enumerator): If incremented enumerator won't fit in
2216         previous integral type, find one it will fit in.
2218         PR c++/48599
2219         * decl.c (create_array_type_for_decl): Complain about array of auto.
2221         PR c++/44994
2222         PR c++/49156
2223         * error.c (dump_template_bindings): Set processing_template_decl
2224         for a partial instantiation.
2226         PR c++/45401
2227         * decl.c (grokdeclarator): Don't change type when adding rvalue ref
2228         to another reference type.
2230         PR c++/44311
2231         * decl.c (case_conversion): New.
2232         (finish_case_label): Use it.
2234         * ptree.c (cxx_print_xnode): Handle ARGUMENT_PACK_SELECT.
2236         PR c++/45698
2237         * pt.c (dependent_template_arg_p): See through ARGUMENT_PACK_SELECT.
2239         PR c++/46005
2240         * decl.c (grokdeclarator): Complain about auto typedef.
2242         PR c++/46245
2243         * decl.c (grokdeclarator): Complain later for auto parameter.
2244         * pt.c (splice_late_return_type): Handle use in a template
2245         type-parameter.
2247         PR c++/46696
2248         * typeck.c (cp_build_modify_expr): Check DECL_DEFAULTED_FN.
2250         PR c++/47184
2251         * parser.c (cp_parser_parameter_declaration): Recognize
2252         list-initialization.
2253         (cp_parser_direct_declarator): Check for the closing
2254         paren before parsing definitely.
2256         PR c++/48935
2257         * parser.c (cp_parser_constructor_declarator_p): Don't check
2258         constructor_name_p for enums.
2259         (cp_parser_diagnose_invalid_type_name): Correct error message.
2261         PR c++/45418
2262         * init.c (perform_member_init): Handle list-initialization
2263         of array of non-trivial class type.
2265         PR c++/45080
2266         * pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op.
2267         * semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P.
2269         PR c++/48292
2270         * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of
2271         function parameter pack.
2272         (tsubst_pack_expansion): Likewise.
2274         * cp-objcp-common.c (cp_common_init_ts): TYPE_ARGUMENT_PACK has
2275         TS_COMMON.
2277 2011-05-25  Jakub Jelinek  <jakub@redhat.com>
2279         * cp-objcp-common.c (cp_common_init_ts): Mark CTOR_INITIALIZER
2280         as TS_TYPED.
2282         PR c++/49136
2283         * semantics.c (cxx_eval_bit_field_ref): Handle the
2284         case when BIT_FIELD_REF doesn't cover only a single field.
2286 2011-05-24  Jason Merrill  <jason@redhat.com>
2288         PR c++/49042
2289         * pt.c (get_mostly_instantiated_function_type): Use
2290         push_deferring_access_checks rather than set flag_access_control.
2292 2011-05-24  Nicola Pero  <nicola.pero@meta-innovation.com>,
2294         * parser.c (cp_parser_objc_class_ivars): Deal gracefully with a
2295         syntax error in declaring an ObjC instance variable.
2297 2011-05-24  Jason Merrill  <jason@redhat.com>
2299         PR c++/48884
2300         * class.c (pushclass): Accept NULL argument.
2301         (popclass): Deal with popping null class.
2302         * pt.c (push_access_scope, pop_access_scope): Use them rather than
2303         push_to_top_level/pop_from_top_level.
2304         (push_deduction_access_scope, pop_defarg_context): New.
2305         (fn_type_unification): Use them.
2306         * name-lookup.c (lookup_name_real_1): Check current_class_type.
2308 2011-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
2310         * decl.c (grokdeclarator): Use current_class_name.
2312 2011-05-24  Joseph Myers  <joseph@codesourcery.com>
2314         * Make-lang.in (GXX_OBJS): Remove prefix.o.
2315         (g++$(exeext)): Use libcommon-target.a.
2316         (CXX_C_OBJS): Remove prefix.o.
2318 2011-05-23  Jason Merrill  <jason@redhat.com>
2320         * pt.c (tsubst_copy_and_build): Use current_class_name.
2322         PR c++/49102
2323         * call.c (convert_arg_to_ellipsis): Call force_rvalue.
2325         PR c++/49105
2326         * typeck.c (cp_build_c_cast): Don't strip cv-quals when
2327         converting to reference.
2328         (build_static_cast_1): Update for glvalues.
2330         PR c++/49105
2331         * typeck.c (build_const_cast_1): Handle rvalue references.
2333         PR c++/47263
2334         * decl.c (use_eh_spec_block): Do use an EH spec block for a
2335         lambda op().
2337         PR c++/49058
2338         * call.c (splice_viable): Be strict in templates.
2340         PR c++/47336
2341         * error.c (dump_template_bindings): Suppress access control.
2343         PR c++/47544
2344         * pt.c (instantiate_decl): Handle =default.
2346         PR c++/48617
2347         * pt.c (invalid_nontype_parm_type_p): Allow DECLTYPE_TYPE.
2349 2011-05-23  Nathan Froyd  <froydnj@codesourcery.com>
2351         * call.c (build_over_call): Tweak call to check_function_arguments.
2352         * typeck.c (cp_build_function_call_vec): Likewise.
2354 2011-05-23  Jonathan Wakely  <jwakely.gcc@gmail.com>
2356         PR c++/18016
2357         * init.c (perform_member_init): Check for self-initialization.
2359 2011-05-22  Jason Merrill  <jason@redhat.com>
2361         PR c++/48647
2362         * typeck.c (composite_pointer_type_r): Return error_mark_node
2363         on error in SFINAE context.
2365 2011-05-20  Jason Merrill  <jason@redhat.com>
2367         PR c++/48945
2368         * decl.c (grokdeclarator): Don't add set const function-cv-qual
2369         for constexpr fns to memfn_quals, just add it to the type.
2370         (revert_static_member_fn): Don't complain about quals.
2371         (check_static_quals): New.
2372         (grokfndecl): Call it.
2373         (start_preparsed_function): Don't call revert_static_member_fn.
2375         PR c++/48945
2376         * decl.c (revert_static_member_fn): Ignore const on constexpr fn.
2378         PR c++/48780
2379         * cvt.c (type_promotes_to): Don't promote scoped enums.
2381         PR c++/49066
2382         * decl.c (duplicate_decls): Preserve DECL_DELETED_FN.
2384         PR c++/48873
2385         * tree.c (stabilize_expr): Fix typo.
2387         DR 1073
2388         PR c++/49082
2389         * typeck.c (comp_except_specs): noexcept(false) is not compatible
2390         with throw(type-list).
2391         * typeck2.c (merge_exception_specifiers): noexcept(false)
2392         beats any more limited specification.
2394         PR c++/24163
2395         PR c++/29131
2396         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating
2397         unqualified lookup.
2398         * semantics.c (perform_koenig_lookup): Add complain parm.
2399         * cp-tree.h: Adjust.
2400         * parser.c (cp_parser_postfix_expression): Adjust.
2401         (cp_parser_perform_range_for_lookup): Adjust.
2403 2011-05-20  Jason Merrill  <jason@redhat.com>
2405         * semantics.c (finish_call_expr): SET_EXPR_LOCATION.
2407 2011-05-20  Joseph Myers  <joseph@codesourcery.com>
2409         * Make-lang.in (GXX_OBJS): Remove intl.o and version.o.
2411 2011-05-19  Jakub Jelinek  <jakub@redhat.com>
2413         PR c++/49043
2414         * decl.c (check_omp_return): Stop searching on sk_function_parms.
2416         PR c++/48869
2417         * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument,
2418         pass it down to locate_fn_flags.
2419         * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes.
2420         * semantics.c (cxx_omp_create_clause_info): Adjust callers.
2421         * cp-gimplify.c: Include splay-tree.h.
2422         (splay_tree_compare_decl_uid, omp_var_to_track,
2423         omp_cxx_notice_variable): New functions.
2424         (struct cp_genericize_omp_taskreg): New type.
2425         (struct cp_genericize_data): Add omp_ctx field.
2426         (cp_genericize_r): Attempt to determine implicitly determined
2427         firstprivate class type variables.
2428         (cp_genericize): Clear omp_ctx.
2429         * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H).
2431 2011-05-18  Jason Merrill  <jason@redhat.com>
2433         PR c++/48948
2434         PR c++/49015
2435         * class.c (finalize_literal_type_property): Do check
2436         for constexpr member functions of non-literal class.
2437         (finish_struct): Don't call check_deferred_constexpr_decls.
2438         * cp-tree.h: Don't declare it.
2439         (DECL_DEFERRED_CONSTEXPR_CHECK): Remove.
2440         * decl.c (grok_special_member_properties): Don't check it
2441         (grokfnedcl): Don't call validate_constexpr_fundecl.
2442         (start_preparsed_function): Do call it.
2443         * pt.c (tsubst_decl): Don't call it.
2444         (instantiate_class_template_1): Don't call
2445         check_deferred_constexpr_decls.
2446         * semantics.c (literal_type_p): Check for any incompleteness.
2447         (ensure_literal_type_for_constexpr_object): Likewise.
2448         (is_valid_constexpr_fn): Revert deferral changes.
2449         (validate_constexpr_fundecl): Likewise.
2450         (register_constexpr_fundef): Likewise.
2451         (check_deferred_constexpr_decls): Remove.
2453 2011-05-16  Jason Merrill  <jason@redhat.com>
2455         PR c++/48969
2456         * pt.c (deduction_tsubst_fntype): Use a VEC initially.
2458 2011-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
2460         * cxx-pretty-print.c: Update comment.
2461         * semantics.c (trait_expr_value, finish_trait_expr):
2462         Reorder the cases.
2463         * parser.c (cp_parser_primary_expression): Likewise.
2465 2011-05-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
2467         PR c++/48994
2468         * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
2470 2011-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
2472         Implement final on class.
2473         * class.c (check_bases): Diagnose derivation from a final class.
2474         * cp-tree.h (lang_type_class): Add is_final and adjust dummy.
2475         (CLASSTYPE_FINAL): New.
2476         * parser.c (cp_parser_class_head): Parse class-virt-specifier, set
2477         CLASSTYPE_FINAL.
2478         * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL.
2480 2011-05-13  Jason Merrill  <jason@redhat.com>
2482         PR c++/48969
2483         * pt.c (deduction_tsubst_fntype): New.
2484         (fn_type_unification): Use it.
2485         (init_template_processing): Initialize hash table.
2486         (print_template_statistics): Print hash table stats.
2488         * call.c (build_op_call): Use timevar_cond_start/stop.
2489         (build_user_type_conversion): Likewise.
2491 2011-05-12  Jason Merrill  <jason@redhat.com>
2493         * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New.
2494         * semantics.c (validate_constexpr_fundecl): Set it.
2495         (check_deferred_constexpr_decls): Clear it.
2496         (register_constexpr_fundef): Make sure it isn't set.
2497         * decl.c (grok_special_member_properties): Check it.
2499 2011-05-11  Jason Merrill  <jason@redhat.com>
2501         PR c++/48948
2502         * semantics.c (validate_constexpr_fundecl): Defer checking if
2503         an argument type is being defined.
2504         (is_valid_constexpr_fn): Add defer_ok parm.
2505         (cxx_eval_call_expression): Adjust.
2506         (check_deferred_constexpr_decls): New.
2507         (literal_type_p): Make sure type isn't being defined.
2508         (ensure_literal_type_for_constexpr_object): Handle type being defined.
2509         * cp-tree.h: Declare check_deferred_constexpr_decls.
2510         * decl.c (grokfndecl): Call validate_constexpr_fundecl here.
2511         (start_preparsed_function, cp_finish_decl): Not here.
2512         * class.c (finalize_literal_type_property): Don't call
2513         validate_constexpr_fundecl.
2514         (finish_struct): Call check_deferred_constexpr_decls.
2515         * pt.c (tsubst_decl): Call validate_constexpr_fundecl.
2516         (instantiate_class_template): Call check_deferred_constexpr_decls.
2518         * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO
2519         rather than DECL_TEMPLATE_INSTANTIATION.
2520         (cxx_eval_call_expression): Likewise.
2522         * semantics.c (register_constexpr_fundef): Add to hash table here.
2523         (validate_constexpr_fundecl): Not here.
2525         * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once.
2527         * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p,
2528         do call maybe_constant_value in C++0x mode.
2529         * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL.
2531         PR c++/48745
2532         * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR.
2534 2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>
2536         * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
2537         TYPE_VALUES_RAW.
2538         (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
2539         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
2540         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
2542 2011-05-10  Jason Merrill  <jason@redhat.com>
2544         PR c++/48930
2545         * class.c (type_build_ctor_call): New.
2546         * cp-tree.h: Declare it.
2547         * decl.c (check_initializer): Use it instead of
2548         TYPE_NEEDS_CONSTRUCTING.
2549         * init.c (build_value_init, build_value_init_noctor): Likewise.
2550         (perform_member_init, expand_aggr_init_1, build_new_1): Likewise.
2551         (build_vec_init): Likewise.
2552         * typeck2.c (process_init_constructor_array): Likewise.
2553         (process_init_constructor_record): Likewise.
2555         PR c++/48736
2556         * pt.c (tsubst_copy_and_build): Handle substitution of a pack
2557         expansion producing another expansion.
2559 2011-05-10  Ville Voutilainen  <ville.voutilainen@gmail.com>
2561         Fixes for override/final.
2562         * class.c (check_for_override): Diagnose final on a nonvirtual
2563         member function, diagnose override for a virtual with no matching
2564         override. Don't fiddle around with DECL_VINDEX.
2566 2011-05-10  Nathan Froyd  <froydnj@codesourcery.com>
2568         * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand.
2569         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2570         * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new
2571         operand of EXPR_PACK_EXPANSION.
2572         (cp_tree_operand_length): Declare.
2573         * tree.c (cp_tree_operand_length): Define.
2574         (cp_tree_equal): Call it.
2575         * pt.c (value_dependent_expr_P): Likewise.
2576         * mangle.c (write_expression): Likewise.
2578 2011-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
2580         PR c++/48737
2581         PR c++/48744
2582         * decl.c (reshape_init): Take a complain parameter and do
2583         not call error if tf_error is not set.
2584         (check_initializer, reshape_init_r, reshape_init_array,
2585         reshape_init_array_1, reshape_init_vector, reshape_init_class):
2586         Adjust.
2587         * typeck2.c (digest_init_r): Take a complain parameter and
2588         pass it to convert_for_initialization.
2589         (digest_init, digest_init_flags, process_init_constructor_array,
2590         process_init_constructor_record, process_init_constructor_union,
2591         process_init_constructor, digest_init_r): Adjust.
2592         * init.c (expand_default_init, build_new_1): Likewise.
2593         * typeck.c (cp_build_modify_expr): Likewise.
2594         * decl2.c (grokfield): Likewise.
2595         * call.c (convert_like_real, convert_default_arg): Likewise.
2596         * semantics.c (finish_compound_literal): Pass complain to
2597         reshape_init and digest_init.
2598         * cp-tree.h: Adjust declarations.
2600 2011-05-07  Fabien Chêne  <fabien@gcc.gnu.org>
2602         PR c++/48859
2603         * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the
2604         recursion if there is user defined constructor.
2606 2011-05-09  Jason Merrill  <jason@redhat.com>
2608         PR c++/34772
2609         * decl.c (initialize_local_var): Use DECL_INITIAL for simple
2610         initialization.
2612 2011-05-08  Ville Voutilainen  <ville.voutilainen@gmail.com>
2614         Implement final/override for member functions.
2615         * class.c (check_for_override): Check for DECL_OVERRIDE_P.
2616         * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New.
2617         (cp_virt_specifiers, enum virt_specifier): New.
2618         * decl.c (set_virt_specifiers): New.
2619         (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields.
2620         * parser.c (make_call_declarator): add virt-specifiers parameter.
2621         (cp_parser_lambda_declarator_opt): Adjust.
2622         (cp_parser_direct_declarator): Likewise.
2623         (cp_parser_virt_specifier_seq_opt): New.
2624         * search.c (check_final_overrider): Diagnose attempts to override
2625         a final member function.
2627 2011-05-09  Dodji Seketeli  <dodji@redhat.com>
2629         PR c++/48574
2630         * class.c (fixed_type_or_null): Use type_dependent_p_push to test
2631         if the instance has a dependent initializer.
2633 2011-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
2635         PR c++/48816
2636         * cxx-pretty-print.c (pp_cxx_template_declaration): Remove
2637         effectively unused variable.
2639 2011-05-07  Eric Botcazou  <ebotcazou@adacore.com>
2641         * name-lookup.h (global_bindings_p): Adjust prototype.
2642         * name-lookup.c (global_bindings_p): Return bool.
2644 2011-05-06  Jason Merrill  <jason@redhat.com>
2646         * decl.c (stabilize_save_expr_r): Set *walk_subtrees as
2647         appropriate.
2649         PR c++/48909
2650         * semantics.c (cxx_eval_conditional_expression): Check
2651         integer_zerop instead.
2652         (potential_constant_expression_1): Likewise.
2654         PR c++/48911
2655         * semantics.c (cxx_eval_array_reference): Handle implicit
2656         initializers.
2658 2011-05-06  Nathan Froyd  <froydnj@codesourcery.com>
2660         * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions.
2661         * call.c (standard_conversion): Call class_of_this_parm.
2662         * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise.
2663         (pp_cxx_direct_abstract_declarator): Likewise.
2664         * decl2.c (change_return_type): Likewise.
2665         (cp_reconstruct_complex_type): Likewise.
2666         * error.c (dump_type_suffix, dump_function_decl): Likewise.
2667         * mangle.c (write_function_type): Likewise.
2668         * pt.c (unify): Likewise.
2669         * typeck.c (merge_types, type_memfn_quals): Likewise.
2670         * decl.c (build_this_parm): Call type_of_this_parm.
2672 2011-05-06  Dodji Seketeli  <dodji@redhat.com>
2674         PR c++/48838
2675         * cp-tree.h (non_static_member_function_p): Declare new function.
2676         * tree.c (non_static_member_function_p): Define it.
2677         * semantics.c (finish_call_expr): Use it.
2679 2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>
2681         * decl.c (finish_case_label): Omit the loc argument to
2682         build_case_label.
2684 2011-05-05  Jason Merrill  <jason@redhat.com>
2686         * cp-tree.h (REFERENCE_REF_P): Just check the type.
2687         * cvt.c (convert_from_reference): Adjust.
2688         * pt.c (build_non_dependent_expr): Adjust.
2689         * semantics.c (finish_offsetof): Adjust.
2690         * tree.c (lvalue_kind): Use it.
2692         PR c++/48873
2693         * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
2695 2011-05-05  Eric Botcazou  <ebotcazou@adacore.com>
2697         * decl.c (start_preparsed_function): Do not set
2698         dont_save_pending_sizes_p.
2700 2011-05-05  Joseph Myers  <joseph@codesourcery.com>
2702         * parser.c (cp_parser_objc_method_definition_list): Update call to
2703         objc_start_method_definition.
2705 2011-05-04  Jason Merrill  <jason@redhat.com>
2707         PR c++/48749
2708         * class.c (resolves_to_fixed_type_p): Don't look closely
2709         in templates.
2711 2011-05-03  Paolo Carlini  <paolo.carlini@oracle.com>
2713         PR c++/28501
2714         * call.c (add_builtin_candidate): Handle REALPART_EXPR and
2715         IMAGPART_EXPR.
2717 2011-05-02  Lawrence Crowl  <crowl@google.com>
2719         * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
2720         (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
2721         Change TV_NAME_LOOKUP to start/stop.
2722         (define_label): Refactor timevar calls out to a wrapper function.
2723         Change TV_NAME_LOOKUP to start/stop.
2724         (xref_tag): Likewise.
2725         (lookup_label): Refactor timevar calls out to a wrapper function.
2726         Change TV_NAME_LOOKUP to start_cond/stop_cond.
2728         * pt.c: (instantiate_class_template): Add a wrapper to push/pop new
2729         TV_TEMPLATE_INST.
2730         (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
2731         (lookup_template_class): Refactor timevar calls out to a wrapper
2732         function.  Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
2733         (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
2735         * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
2736         (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
2737         (push_namespace): Likewise.
2738         (pop_nested_namespace): Likewise.
2739         (pushdecl_namespace_level): Likewise.
2740         (store_class_bindings): Likewise.
2741         (push_to_top_level): Likewise.
2742         (identifier_type_value): Refactor timevar calls out to a wrapper
2743         function.  Change TV_NAME_LOOKUP to start/stop.
2744         (find_binding): Likewise.
2745         (push_using_decl): Likewise.
2746         (lookup_arg_dependent): Likewise.
2747         (push_using_directive): Likewise.
2748         (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
2749         to plain code.  Change TV_NAME_LOOKUP to start/stop.
2750         (lookup_type_current_level): Likewise.  Refactor inner return to
2751         break.
2752         (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
2753         code.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
2754         (pushdecl_top_level_1): Likewise.
2755         (lookup_using_namespace): Likewise.
2756         (pushdecl_with_scope): Refactor timevar calls out to a wrapper
2757         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
2758         (push_overloaded_decl): Likewise.
2759         (push_class_level_binding): Likewise.
2760         (namespace_binding): Likewise.
2761         (set_namespace_binding): Likewise.
2762         (supplement_binding): Likewise.
2763         (unqualified_namespace_lookup): Likewise.
2764         (lookup_name_real): Likewise.
2765         (lookup_type_scope): Likewise.
2766         (namespace_ancestor): Likewise.
2767         (lookup_name_innermost_nonclass_level): Likewise.
2768         (pushtag): Likewise.
2769         (pop_from_top_level): Likewise.
2770         (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
2771         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Wrap long
2772         lines.
2773         (add_using_namespace): Refactor timevar calls out to a wrapper
2774         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Bypass
2775         wrapper on call to self.
2777         * decl2.c: (cp_write_global_declarations):  Add start/stop of
2778         new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
2779         Remove push/pop calls to TV_VARCONST.
2781         * parser.c: Add include of "timevar.h".
2782         (cp_parser_explicit_instantiation): Add push/pop calls to
2783         TV_TEMPLATE_INST.
2784         (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
2785         (cp_parser_class_specifier): Add wrapper to add push/pop calls to
2786         TV_PARSE_STRUCT.
2787         (cp_parser_function_definition_from_specifiers_and_declarator): Add
2788         push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
2789         (cp_parser_late_parsing_for_member):  Add push/pop calls to
2790         new TV_PARSE_INMETH.
2792         * call.c: Add include of "timevar.h".
2793         (convert_class_to_reference): Wrap and add push/pop calls to 
2794         TV_OVERLOAD.
2795         (build_op_call): Likewise.
2796         (build_conditional_expr): Likewise.
2797         (build_new_op): Likewise.
2798         (build_new_method_call): Likewise.
2799         (build_user_type_conversion): Reorganize to single return and add
2800         push/pop calls to TV_OVERLOAD.
2801         (perform_overload_resolution): Likewise.
2803         * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
2805 2011-05-02  Jason Merrill  <jason@redhat.com>
2807         * tree.c (build_vec_init_expr): Take complain parm.
2808         (build_vec_init_elt): Likewise.  Free arg vector.
2809         (diagnose_non_constexpr_vec_init, build_array_copy): Adjust.
2810         * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK.
2811         (VEC_INIT_EXPR_INIT): Likewise.
2812         Adjust build_vec_init_expr declaration.
2813         * init.c (perform_member_init): Adjust.
2815         Revert:
2816         PR c++/40975
2817         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
2818         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
2819         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
2820         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
2821         (build_vec_init_elt): Don't expect an array type.
2822         (build_array_copy): Adjust.
2823         * init.c (perform_member_init): Adjust.
2824         (build_new_1): Use build_vec_init_expr.
2826         PR c++/48834
2827         * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS.
2828         Protect an explicit target.
2830         PR c++/48446
2831         * decl.c (stabilize_save_expr_r, stabilize_vla_size): New.
2832         (compute_array_index_type): Revert earlier 48446 changes.
2833         (grokdeclarator): Use stabilize_vla_size.
2835 2011-05-02  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
2836             Eric Botcazou <ebotcazou@adacore.com>
2838         * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE
2839         instead of inappropriate zero values.
2841 2011-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
2843         PR c++/47969
2844         * decl.c (compute_array_index_type): Check build_expr_type_conversion
2845         return value for NULL_TREE.
2847 2011-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
2849         PR c++/48606
2850         * init.c (perform_member_init): Check build_value_init return
2851         value for error_mark_node.
2853 2011-04-29  Diego Novillo  <dnovillo@google.com>
2854             Le-Chun Wu  <lcwu@google.com>
2856         * call.c (conversion_null_warnings): Also handle assignments
2857         when warning about NULL conversions.
2859 2011-04-29  Le-Chun Wu  <lcwu@google.com>
2861         * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
2862         * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
2863         (build_over_call): Use it to determine whether to emit a NULL
2864         warning for template function instantiations.
2865         (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
2866         EXPLICIT_TARGS is set.
2868 2011-04-29  Nicola Pero  <nicola.pero@meta-innovation.com>,
2869             Mike Stump <mikestump@comcast.net>
2871         * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only
2872         in maintainer mode.  Use the --output-file option of gperf instead
2873         of > to prevent creating an empty cp/cfns.h when gperf is not
2874         available.
2876 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2878         PR c++/48798
2879         * semantics.c (finish_base_specifier): cv-qualified base class
2880         is fine, per DR 484.
2882 2011-04-28  Dodji Seketeli  <dodji@redhat.com>
2884         PR c++/48656
2885         * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
2886         considering call expressions involving a member function.
2888 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2890         PR c++/48530
2891         * tree.c (build_cplus_new): Check build_target_expr return
2892         value for error_mark_node.
2894 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2896         PR c++/48771
2897         * semantics.c (literal_type_p): Reference types are literal types,
2898         per the FDIS.
2899         (valid_type_in_constexpr_fundecl_p): Remove.
2900         (is_valid_constexpr_fn): Adjust.
2902 2011-04-27  Jason Merrill  <jason@redhat.com>
2904         PR libstdc++/48760
2905         Implement list-initialization of _Complex.
2906         * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
2907         (check_initializer): Likewise.
2908         * call.c (build_complex_conv): New.
2909         (implicit_conversion): Call it.
2910         (convert_like_real): Handle it.
2911         * typeck2.c (check_narrowing): Handle it.
2913         * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
2914         decide whether to delete.
2915         (build_vec_init): Pass sfk_complete_destructor.
2917         PR c++/40975
2918         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
2919         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
2920         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
2921         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
2922         (build_vec_init_elt): Don't expect an array type.
2923         (build_array_copy): Adjust.
2924         * init.c (perform_member_init): Adjust.
2925         (build_new_1): Use build_vec_init_expr.
2927         * class.c (resolve_address_of_overloaded_function): Don't
2928         change OVERLOAD to TREE_LIST.
2929         * pt.c (print_candidates_1): Remove nonsensical assert.
2931         PR c++/48046
2932         * parser.c (cp_parser_diagnose_invalid_type_name): Commit
2933         to tentative parse sooner.
2935 2011-04-26  Jason Merrill  <jason@redhat.com>
2937         PR c++/42687
2938         * parser.c (cp_parser_primary_expression): Set *idk to
2939         CP_ID_KIND_NONE for a parenthesized identifier.
2941         * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
2942         (cxx_print_identifier): Correct indentation.
2944         PR c++/48530
2945         * decl.c (cxx_maybe_build_cleanup): Add complain parm.
2946         * tree.c (force_target_expr): Add complain parm.
2947         (build_target_expr_with_type): Likewise.
2948         (get_target_expr_sfinae): Split out.
2949         (build_vec_init_expr, bot_manip): Adjust.
2950         * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
2951         (build_delete, build_dtor_call): Likewise.
2952         (perform_direct_initialization_if_possible): Adjust.
2953         (build_vec_init): Handle error return.
2954         * cvt.c (force_rvalue): Add complain parm.
2955         Call build_special_member_call directly.
2956         * decl2.c (delete_sanity): Add complain parm.
2957         (build_cleanup): Adjust.
2958         * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
2959         * semantics.c (finish_stmt_expr_expr): Adjust.
2960         (finish_compound_literal): Adjust.
2961         * parser.c (cp_parser_delete_expression): Adjust.
2962         * typeck2.c (build_functional_cast): Adjust.
2963         * cp-tree.h: Adjust.
2965 2011-04-26  Martin Jambor  <mjambor@suse.cz>
2967         * class.c (cp_fold_obj_type_ref): Remove.
2968         * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
2970 2011-04-25  Paolo Carlini  <paolo.carlini@oracle.com>
2972         * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
2973         * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
2974         (UNDERLYING_TYPE_TYPE): Add.
2975         * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
2976         as TS_COMMON.
2977         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
2978         cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
2979         (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
2980         * semantics.c (finish_underlying_type): New.
2981         * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
2982         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
2983         * cxx-pretty-print.c (p_cxx_type_id): Likewise.
2984         * tree.c (cp_walk_subtrees): Likewise.
2985         * pt.c (for_each_template_parm_r, tsubst, unify,
2986         dependent_type_p_r): Likewise.
2987         * mangle.c (write_type): Sorry for __underlying_type.
2989 2011-04-25  Jason Merrill  <jason@redhat.com>
2991         PR c++/48707
2992         * decl.c (type_dependent_init_p): New.
2993         (cp_finish_decl): Check it.
2994         * pt.c (any_type_dependent_elements_p): New.
2995         * cp-tree.h: Declare it.
2997 2011-04-20  Jason Merrill  <jason@redhat.com>
2999         * semantics.c (finish_compound_literal): Don't put an array
3000         with a dtor in a static variable.
3002         * call.c (build_over_call): Handle trivial dtor.
3004         * search.c (lookup_fnfields_slot): Call complete_type.
3006         PR c++/48594
3007         * decl2.c (build_offset_ref_call_from_tree): Move
3008         non-dependency of object outside condition.
3010         PR c++/48657
3011         * decl.c (cp_finish_decl): Simplify template handling.
3013 2011-04-20  Jim Meyering  <meyering@redhat.com>
3015         * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
3017 2011-04-19  Jason Merrill  <jason@redhat.com>
3019         PR c++/46304
3020         * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
3022         PR c++/45267
3023         * decl.c (duplicate_decls): Keep always_inline attribute
3024         in sync with DECL_DISREGARD_INLINE_LIMITS.
3026 2011-04-18  Jason Merrill  <jason@redhat.com>
3028         PR c++/48569
3029         * typeck2.c (build_functional_cast): Handle VOID_TYPE.
3031         PR c++/48537
3032         * init.c (build_value_init): Handle UNION_TYPE the same.
3034 2011-04-18  Jakub Jelinek  <jakub@redhat.com>
3036         PR c++/48632
3037         * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
3038         for type dependent pointers.
3040 2011-04-18  Jim Meyering  <meyering@redhat.com>
3042         * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
3044 2011-04-17  Jan Hubicka  <jh@suse.cz>
3046         * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
3047         gotos.
3049 2011-04-17  Jason Merrill  <jason@redhat.com>
3051         PR c++/48531
3052         * typeck2.c (build_functional_cast): Disallow array type.
3054         * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
3056 2011-04-17  Jan Hubicka  <jh@suse.cz>
3058         * class.c (cp_fold_obj_type_ref): Drop vtable_method.
3060 2011-04-15  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
3062         Implement N3271
3063         * parser.c (cp_convert_range_for): Split into
3064         cp_parser_perform_range_for_lookup.
3065         (cp_parser_perform_range_for_lookup): New.
3066         (cp_parser_range_for_member_function): New.
3067         (cp_parser_for_init_statement): Correct error message.
3068         * semantics.c (finish_call_expr): Accept COMPONENT_REF.
3070 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
3072         * parser.c (cp_parser_objc_protocol_declaration): Updated for
3073         change from objc_declare_protocols() to objc_declare_protocol().
3075 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3077         PR objc++/48479
3078         * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
3079         and return immediately.
3081 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3083         * cp-tree.def (SWITCH_STMT): Add an extra operand.
3084         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
3085         * cp-tree.h (SWITCH_STMT_SCOPE): Define.
3086         * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
3087         (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
3089 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3091         * cp-tree.def (IF_STMT): Add an extra operand.
3092         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
3093         * cp-tree.h (IF_SCOPE): Define.
3094         * semantics.c (begin_if_stmt): Pass scope to build_stmt.
3095         (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
3097 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3099         * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
3100         * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
3101         * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
3102         * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
3103         Use FOR_SCOPE instead of TREE_CHAIN.
3104         (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
3105         (finish_for_stmt): Likewise.
3107 2011-04-14  Jason Merrill  <jason@redhat.com>
3109         * parser.c (cp_parser_postfix_expression): Fix flags passed to
3110         build_new_method_call.
3111         * semantics.c (finish_call_expr): Likewise.
3113         PR c++/48531
3114         * init.c (build_value_init_noctor): Check complain consistently.
3116         PR c++/48557
3117         * typeck.c (cp_build_binary_op): Don't decay void operands.
3119         PR c++/48446
3120         * decl.c (compute_array_index_type): Use get_temp_regvar instead
3121         of variable_size.
3122         * init.c (get_temp_regvar): No longer static.
3123         * cp-tree.h: Declare it.
3125 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
3127         * parser.c (cp_parser_objc_class_declaration): Updated for change
3128         in objc_declare_class().
3130 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3132         * decl.c (poplevel): Use block_chainon.
3134 2011-04-13  Jason Merrill  <jason@redhat.com>
3136         PR c++/48594
3137         * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
3138         or pointer to (non-member) function.
3140 2011-04-13  Jakub Jelinek  <jakub@redhat.com>
3142         PR c++/48570
3143         * semantics.c (cxx_eval_array_reference): Handle reading from
3144         wchar_t, char16_t and char32_t STRING_CST.
3146 2011-04-13  Dodji Seketeli  <dodji@redhat.com>
3148         PR c++/48574
3149         * class.c (fixed_type_or_null): We cannot determine the dynamic
3150         type of a reference variable if its initializer is dependent.
3152 2011-04-13  Jason Merrill  <jason@redhat.com>
3154         PR c++/48581
3155         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
3156         unqualified lookup failing if we're still in a template.
3158 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
3160         * cp-lang.c (cp_init_ts): Call cp_common_init_ts.  Move
3161         tree_contains_struct initialization to...
3162         * cp-objcp-common.c (cp_common_init_ts): ...here.  Use MARK_*
3163         macros.
3164         * cp-objcp-common.h (cp_common_init_ts): Declare.
3165         * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
3166         calling TREE_CHAIN.
3168 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
3170         * parser.c (cp_parser_objc_message_expression): Updated call
3171         to objc_build_message_expr.
3173 2011-04-12  Martin Jambor  <mjambor@suse.cz>
3175         * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
3176         cgraph_get_create_node.
3177         * decl2.c (cp_write_global_declarations): Call cgraph_get_node
3178         instead of cgraph_get_create_node.
3179         * method.c (make_alias_for_thunk): Call cgraph_get_node
3180         instead of cgraph_get_create_node, assert it returns non-NULL.
3181         (use_thunk): Likewise.
3182         * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
3183         when flag_syntax_only is not set.  Call cgraph_get_node instead of
3184         cgraph_get_create_node.
3185         (maybe_clone_body): Call cgraph_get_node instead of
3186         cgraph_get_create_node.
3188 2011-04-12  Martin Jambor  <mjambor@suse.cz>
3190         * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
3191         instead of cgraph_node.
3192         * decl2.c (cxx_callgraph_analyze_expr): Likewise.
3193         (cp_write_global_declarations): Likewise.
3194         * optimize.c (maybe_clone_body): Likewise.
3195         * semantics.c (maybe_add_lambda_conv_op): Likewise.
3196         * mangle.c (mangle_decl): Likewise.
3197         * method.c (make_alias_for_thunk): Likewise.
3198         (use_thunk): Likewise.
3200 2011-04-11  Jason Merrill  <jason@redhat.com>
3202         PR c++/48535
3203         * decl.c (cp_complete_array_type_or_error): New.
3204         * semantics.c (finish_compound_literal): Use it.
3205         * cp-tree.h: Declare it.
3207         PR c++/48535
3208         * semantics.c (finish_compound_literal): Handle references.
3210         PR c++/48535
3211         * semantics.c (finish_compound_literal): Take complain parm.
3212         (build_lambda_object): Adjust.
3213         * cp-tree.h: Adjust.
3214         * call.c (convert_like_real): Adjust.
3215         * decl.c (check_initializer): Adjust.
3216         * parser.c (cp_parser_postfix_expression): Adjust.
3217         (cp_parser_functional_cast): Adjust.
3218         * pt.c (tsubst_copy_and_build): Adjust.
3219         * typeck2.c (process_init_constructor_record): Adjust.
3221         PR c++/48534
3222         * cvt.c (ocp_convert): Use build_nop to convert to underlying type
3223         of scoped enum.
3225         PR c++/48523
3226         * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
3227         than cp_build_indirect_ref.
3229         PR c++/48457, Core 1238
3230         * call.c (reference_binding): Allow rvalue reference to bind to
3231         function lvalue.
3232         * tree.c (lvalue_kind): Functions are always lvalues.
3234 2011-04-07  Jason Merrill  <jason@redhat.com>
3236         PR c++/48500
3237         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
3238         arguments even if we don't know the function.
3240         PR c++/48481
3241         * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
3242         at the end of the chain.
3243         * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
3244         (iterative_hash_template_arg): Likewise.
3246         PR c++/48481
3247         * cp-tree.h (OVL_ARG_DEPENDENT): New.
3248         * name-lookup.c (add_function): Set it.
3249         * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
3251         PR c++/48481
3252         * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
3253         Release unused vector.
3255         PR c++/48451
3256         * pt.c (fn_type_unification): Don't clear incomplete pack flag.
3257         (type_unification_real): Clear it here instead.
3259         PR c++/48468
3260         * except.c (build_noexcept_spec): Propagate error_mark_node.
3261         (finish_noexcept_expr): Likewise.
3263         PR c++/48452
3264         * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
3265         in SFINAE context.
3267         PR c++/48450
3268         * call.c (resolve_args): Take complain.
3269         (build_new_function_call, build_operator_new_call): Pass it.
3270         (build_op_call, build_new_op, build_new_method_call): Pass it.
3272         PR c++/48450
3273         * typeck.c (check_for_casting_away_constness): Take complain.
3274         (build_static_cast_1, build_reinterpret_cast_1): Pass it.
3275         (build_const_cast_1): Pass it.  Take full complain parm.
3276         (build_const_cast, cp_build_c_cast): Adjust.
3278         * tree.c (build_aggr_init_expr): Always return error_mark_node
3279         on abstract violation.
3281         PR c++/48450
3282         * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
3283         (bot_manip): Adjust.
3284         * cp-tree.h: Adjust.
3285         * call.c (convert_like_real, build_cxx_call): Adjust.
3286         (perform_direct_initialization_if_possible): Adjust.
3287         * cvt.c (ocp_convert): Adjust.
3288         * init.c (build_value_init): Adjust.
3289         * semantics.c (maybe_add_lambda_conv_op): Adjust.
3290         * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
3291         * typeck2.c (build_functional_cast): Adjust.
3293         * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
3294         level.
3295         (perform_member_init): Not here.
3296         * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
3297         case to templates.
3298         (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
3300         PR c++/48449
3301         * typeck2.c (build_functional_cast): Check complain consistently.
3302         Use build_value_init and abstract_virtuals_error_sfinae.
3303         (abstract_virtuals_error_sfinae): Split out.
3304         * cp-tree.h: Declare it.
3305         * init.c (build_new_1): Use it.
3306         (build_value_init_noctor): Handle FUNCTION_TYPE.
3308         * semantics.c (finish_decltype_type): Simplify handling of unknown
3309         type.
3311         * semantics.c (finish_decltype_type): Add complain parm.
3312         * cp-tree.h: Adjust.
3313         * parser.c (cp_parser_decltype): Adjust.
3314         * pt.c (tsubst): Adjust.
3316         PR c++/48450
3317         * cvt.c (ocp_convert): Handle converting scoped enum to bool.
3319 2011-03-31  Jason Merrill  <jason@redhat.com>
3321         PR c++/48277
3322         * semantics.c (finish_call_expr): Remove assert.
3324         PR c++/48280
3325         * method.c (defaultable_fn_check): Templates are not defaultable.
3327         * parser.c (cp_parser_init_declarator): Avoid redundant
3328         cp_finish_decl for member declarations.
3330 2011-03-30  Jason Merrill  <jason@redhat.com>
3332         PR c++/48212
3333         * semantics.c (non_const_var_error): Just return if DECL_INITIAL
3334         is error_mark_node.
3336 2011-03-30  Jason Merrill  <jason@redhat.com>
3338         PR c++/48369
3339         * semantics.c (potential_constant_expression_1): Handle
3340         UNORDERED_EXPR and ORDERED_EXPR.
3342         PR c++/48281
3343         * semantics.c (finish_compound_literal): Do put static/constant
3344         arrays in static variables.
3346         * call.c (convert_like_real) [ck_list]: Build up the
3347         initializer_list object directly.
3348         * decl.c (build_init_list_var_init): Adjust.
3350         * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
3351         * decl.c (reshape_init_array_1): Likewise.
3353 2011-03-29  Jason Merrill  <jason@redhat.com>
3355         PR c++/48265
3356         * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
3357         the variable is constant before looking at its initializer.
3359         PR c++/48319
3360         * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
3362         PR c++/48089
3363         * semantics.c (potential_constant_expression_1): Change error about
3364         use of *this in constructor into sorry.
3366         PR c++/48296
3367         * decl.c (cp_finish_decl): Defer validation of constexpr member
3368         functions.
3369         * class.c (finalize_literal_type_property): Validate them here.
3370         * semantics.c (is_valid_constexpr_fn): Don't check completeness.
3372         * semantics.c (is_valid_constexpr_fn): Specify input location.
3374 2011-03-28  Jason Merrill  <jason@redhat.com>
3376         PR c++/48313
3377         * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
3378         from overloaded function.
3380         Core 1232
3381         * call.c (build_array_conv): New.
3382         (implicit_conversion): Use it.
3384         * call.c (reference_binding): Allow direct binding to an array
3385         rvalue.
3387         Core 898
3388         * parser.c (cp_parser_compound_statement): Add function_body parm.
3389         Complain about non-body compound-stmt in constexpr fn.
3390         (cp_parser_primary_expression, cp_parser_statement): Adjust.
3391         (cp_parser_implicitly_scoped_statement): Adjust.
3392         (cp_parser_function_body, cp_parser_try_block): Adjust.
3393         (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
3394         (cp_parser_objc_try_catch_finally_statement): Adjust.
3396         Core 898
3397         * semantics.c (constexpr_fn_retval): New.  Allow using-declaration
3398         and using-definition.
3399         (register_constexpr_fundef): Call it.
3401         * except.c (build_noexcept_spec): Call cxx_constant_value after
3402         converting to bool.
3404 2011-03-25  Kai Tietz  <ktietz@redhat.com>
3406         * lex.c (interface_strcmp): Handle dos-paths.
3407         (handle_pragma_implementation): Use filename_cmp instead of
3408         strcmp.
3409         (in_main_input_context): Likewise.
3411 2011-03-25  Jason Merrill  <jason@redhat.com>
3413         Core 1135
3414         * method.c (defaulted_late_check): Check for exception spec mismatch.
3415         (defaultable_fn_check): Allow exception spec and virtual.
3416         * class.c (check_for_override): A virtual dtor is non-trivial.
3418         PR c++/48289
3419         * pt.c (build_non_dependent_expr): Keep dereferences outside the
3420         NON_DEPENDENT_EXPR.
3422 2011-03-25  Kai Tietz  <ktietz@redhat.com>
3424         * decl.c (decls_match): Replace target hook
3425         call of comp_type_attributes by version in tree.c file.
3426         * search.c (check_final_overrider): Likewise.
3427         * typeck.c (structural_comptypes): Likewise.
3429 2011-03-21  Kai Tietz  <ktietz@redhat.com>
3431         PR target/12171
3432         * cxx-pretty-print.c (pp_cxx_ptr_operator):
3433         Display allowed attributes for function pointer types.
3434         * error.c (dump_type_prefix): Likewise.
3436         * tree.c (cxx_attribute_table): Adjust table.
3438 2011-03-18  Jason Merrill  <jason@redhat.com>
3440         PR c++/48162
3441         * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
3443         PR c++/48118
3444         * call.c (build_over_call): Don't skip ck_rvalue.
3446 2011-03-17  Jason Merrill  <jason@redhat.com>
3448         PR c++/47504
3449         * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
3450         the conversion set TREE_OVERFLOW.
3452         Core 1212
3453         * semantics.c (finish_decltype_type): Return T&& for xvalue.
3454         * typeck.c (unlowered_expr_type): Preserve cv-quals.
3456         PR c++/48166
3457         * decl.c (revert_static_member_fn): Strip function-cv-quals.
3459 2011-03-16  Jason Merrill  <jason@redhat.com>
3461         PR c++/48089
3462         * semantics.c (potential_constant_expression_1): Don't allow *this
3463         in a constructor.
3464         (register_constexpr_fundef): Use potential_rvalue_constant_expression.
3466         PR c++/47301
3467         * decl.c (compute_array_index_type): Don't bother trying to deal
3468         with literal classes in ABI v1.
3470         PR c++/46336
3471         * decl.c (duplicate_decls): Return NULL_TREE for clashing
3472         C functions.
3474         PR c++/47570
3475         * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
3476         use the generic binary expression handling.
3478 2011-03-16  Diego Novillo  <dnovillo@google.com>
3480         * Make-lang.in (CXX_PARSER_H): New.
3481         (cp/parser.o): Add dependency on CXX_PARSER_H.
3482         Add dependency on tree-pretty-print.h
3483         (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
3484         * cp-lang.c: Include parser.h.
3485         * parser.c: Include parser.h.
3486         (struct cp_token): Add bitfield purged_p.
3487         Update all users.
3488         Move to parser.h.
3489         (CPP_PURGED): Remove.  Update all users.
3490         (struct cp_lexer): Change field buffer to be a VEC of cp_token.
3491         Remove field buffer_length.
3492         Update all users.
3493         Move to parser.h.
3494         (struct tree_check): Move to parser.h.
3495         (cp_token_position): Likewise.
3496         (struct cp_token_cache): Likewise.
3497         (CPP_KEYWORD): Likewise.
3498         (CPP_TEMPLATE_ID): Likewise.
3499         (CPP_NESTED_NAME_SPECIFIER): Likewise.
3500         (N_CP_TTYPES): Likewise.
3501         (enum cp_parser_status_kind): Likewise.
3502         (struct cp_parser_context): Likewise.
3503         (struct cp_default_arg_entry_d): Likewise.
3504         (struct cp_unparsed_functions_entry_d): Likewise.
3505         (struct cp_parser): Likewise.
3506         (cp_lexer_dump_tokens): New.
3507         (cp_lexer_debug_tokens): New.
3508         (cp_lexer_finished_p): New.
3509         (cp_lexer_alloc): Factor out of cp_lexer_new_main.
3510         (cp_lexer_new_main): Re-write main lexing loop to push
3511         tokens into the new VEC buffer.
3512         (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
3513         Do not abort if the token type is not recognized, just print
3514         its code.
3515         * parser.h: New file.
3516         * config-lang.in (gtfiles): Add cp/parser.h.
3518 2011-03-16  Jason Merrill  <jason@redhat.com>
3520         Core 1148
3521         * typeck.c (check_return_expr): Fix conditions for setting
3522         LOOKUP_PREFER_RVALUE.
3524         * call.c (build_over_call): Remove require_complete_type_sfinae call.
3526         PR c++/48132
3527         * decl.c (check_array_designated_initializer): Allow integer index.
3528         (reshape_init_array_1): Set index on the elements.
3530 2011-03-16  Jason Merrill  <jason@redhat.com>
3532         PR c++/48113
3533         * typeck.c (convert_for_initialization): Use
3534         perform_implicit_conversion_flags.
3535         * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
3536         rvaluedness_matches_p on ck_rvalue.
3537         (convert_like_real) [ck_rvalue]: And restore it here.
3539         PR c++/48115
3540         * call.c (convert_arg_to_ellipsis): Handle incomplete type.
3542 2011-03-16  Jason Merrill  <jason@redhat.com>
3544         * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
3545         committed to this tentative parse.
3547         PR c++/47999
3548         * semantics.c (finish_call_expr): Preserve reference semantics
3549         in templates.
3551         * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
3553 2011-03-16  Jakub Jelinek  <jakub@redhat.com>
3555         * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
3556         DECL_LANG_SPECIFIC is NULL.
3558 2011-03-15  Jason Merrill  <jason@redhat.com>
3560         Core 1074
3561         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
3562         check value_dependent_expression_p on the operand.
3564         * semantics.c (push_cx_call_context): Return bool.
3565         (cxx_eval_call_expression): Handle excess depth.
3567         Core 1191
3568         * method.c (synthesized_method_walk): Cleanups don't affect the
3569         triviality of a constructor, but do affect deletion and exception
3570         specification.
3572 2011-03-15  Rodrigo Rivas Costa  <rodrigorivascosta@gmail.com>
3574         * decl2.c (cp_check_const_attributes): New.
3575         (cplus_decl_attributes): Call cp_check_const_attributes.
3577 2011-03-15  Jason Merrill  <jason@redhat.com>
3579         PR c++/34758
3580         * call.c (convert_default_arg): Use DECL_ORIGIN of fn.  Check for
3581         recursion first.
3582         (push_defarg_context, pop_defarg_context): New.
3583         * parser.c (cp_parser_late_parsing_default_args): Use them.
3584         * cp-tree.h: Declare them.
3586 2011-03-11  Dodji Seketeli  <dodji@redhat.com>
3588         * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
3589         the argument of the indirection operator should not be dependent.
3590         Fix the comment.
3592 2011-03-11  Jason Merrill  <jason@redhat.com>
3594         PR c++/47125
3595         * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
3597         PR c++/47144
3598         * parser.c (cp_parser_template_type_arg): Set
3599         type_definition_forbidden_message.
3601         PR c++/47808
3602         * decl.c (compute_array_index_type): Discard folding
3603         if it didn't produce a constant.
3605 2011-03-11  Jakub Jelinek  <jakub@redhat.com>
3607         PR c++/48035
3608         * init.c (build_zero_init_1): Extracted from build_zero_init.
3609         Add FIELD_SIZE argument, if non-NULL and field bit_position
3610         as not smaller than that, don't add that field's initializer.
3611         Pass DECL_SIZE as last argument to build_zero_init_1
3612         for DECL_FIELD_IS_BASE fields.
3613         (build_zero_init): Use build_zero_init_1.
3615 2011-03-10  Jason Merrill  <jason@redhat.com>
3617         PR c++/48029
3618         * pt.c (iterative_hash_template_arg): Remove special case for
3619         ARRAY_TYPE.
3621         PR c++/47198
3622         * parser.c (cp_parser_single_declaration): Just return if
3623         cp_parser_parse_and_diagnose_invalid_type_name complained.
3625 2011-03-09  Jason Merrill  <jason@redhat.com>
3627         PR c++/44629
3628         * pt.c (unify): An unresolved overload is a nondeduced context.
3630 2011-03-09  Martin Jambor  <mjambor@suse.cz>
3632         PR tree-optimization/47714
3633         * method.c (use_thunk): Clear addressable flag of thunk arguments.
3635 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
3637         PR c++/47705
3638         * pt.c (convert_nontype_argument): Only call decay_conversion on
3639         arrays.
3641 2011-03-08  Jason Merrill  <jason@redhat.com>
3643         PR c++/47488
3644         * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
3646         PR c++/47705
3647         * pt.c (convert_nontype_argument): Don't crash on non-pointer
3648         argument to pointer parameter.
3650         PR c++/45651
3651         * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
3652         !TREE_PUBLIC decls.
3654 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
3656         PR c++/47957
3657         * name-lookup.c (binding_to_template_parms_of_scope_p): Only
3658         consider scopes of primary template definitions.  Adjust comments.
3660 2011-03-07  Jason Merrill  <jason@redhat.com>
3662         PR c++/48003
3663         * pt.c (convert_nontype_argument): Fix -fpermissive allowing
3664         integer overflow.
3665         * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
3667         PR c++/48015
3668         * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
3670         PR c++/48008
3671         * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
3672         (write_CV_qualifiers_for_type): Not here.
3674 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
3676         * lang-specs.h: Match -save-temps* instead of -save-temps.
3678 2011-03-05  Jason Merrill  <jason@redhat.com>
3680         * mangle.c (write_expression): Change ABI v6 to v5.
3681         (write_type): Likewise.
3683 2011-03-04  Jan Hubicka  <jh@suse.cz>
3685         PR lto/47497
3686         * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
3687         and cgraph_add_thunk.
3688         * method.c (make_alias_for_thunk, use_thunk): Likewise.
3689         * mangle.c (mangle_decl): Likewise.
3691 2011-03-04  Jason Merrill  <jason@redhat.com>
3693         PR c++/47971
3694         * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
3695         (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
3697         PR c++/46220
3698         * search.c (check_final_overrider): Allow pointer to same incomplete
3699         class type with different cv-quals.
3701 2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
3703         PR c++/47974
3704         * pt.c (tsubst_template_args): Check argument t for error_mark_node.
3706 2011-03-03  Jason Merrill  <jason@redhat.com>
3708         PR c++/47950
3709         * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
3711 2011-03-02  Jason Merrill  <jason@redhat.com>
3713         PR c++/47950
3714         * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
3716         PR c++/47774
3717         * tree.c (build_vec_init_elt): Split out from...
3718         (build_vec_init_expr): ...here.
3719         (diagnose_non_constexpr_vec_init): New fn.
3720         * semantics.c (potential_constant_expression_1): Use it.
3721         * cp-tree.h: Declare it.
3723 2011-03-01  Jason Merrill  <jason@redhat.com>
3725         PR c++/46159
3726         * parser.c (cp_parser_primary_expression): Don't warn about a
3727         failed tentative parse.
3729         PR c++/47200
3730         * semantics.c (cxx_bind_parameters_in_call): Don't call
3731         adjust_temp_type on non-constant args.
3733         PR c++/47851
3734         * call.c (standard_conversion): Provide requested cv-quals on
3735         class rvalue conversion.
3737         PR c++/46282
3738         * decl2.c (grokbitfield): Handle type-dependent width.
3740 2011-02-28  Jason Merrill  <jason@redhat.com>
3742         PR c++/47873
3743         * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
3744         after checking for a non-thunk.
3746 2011-02-26  Jason Merrill  <jason@redhat.com>
3748         PR c++/47904
3749         * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
3750         * pt.c (iterative_hash_template_arg): And hash it.
3752         PR c++/47897
3753         * semantics.c (non_const_var_error): Split out from...
3754         (cxx_eval_constant_expression): ...here.
3755         (potential_constant_expression_1) [VAR_DECL]: Use it.
3756         Allow dependent variables.
3758 2011-02-24  Jason Merrill  <jason@redhat.com>
3760         * parser.c (cp_parser_constant_expression): Set
3761         non_integral_constant_expression correctly for C++0x too.
3762         (cp_parser_static_assert): Allow non-constant expression.
3763         (cp_parser_direct_declarator): Expect non_constant_p to be set
3764         properly for C++0x.
3765         * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
3766         * semantics.c (maybe_constant_value): Check type_unknown_p too.
3767         (potential_rvalue_constant_expression): New.
3768         (require_potential_rvalue_constant_expression): New.
3770 2011-02-23  Jason Merrill  <jason@redhat.com>
3772         * cp-tree.h (DECL_PARM_LEVEL): New.
3773         (struct lang_decl_parm): Add level field.
3774         * name-lookup.c (function_parm_depth): New fn.
3775         * name-lookup.h: Declare it.
3776         * parser.c (cp_parser_parameter_declaration_list): Use it.
3777         * mangle.c (struct globals): Add parm_depth field.
3778         (write_bare_function_type): Adjust it.
3779         (write_expression): Include the level delta in PARM_DECL mangling
3780         for abi >= 6.
3782         * semantics.c (finish_decltype_type): Remove shortcut for decltype
3783         of id-expression.
3784         * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
3786 2011-02-23  Nathan Froyd  <froydnj@codesourcery.com>
3788         PR c++/46868
3789         * parser.c (cp_parser_class_specifier): Require a closing brace
3790         to attempt error recovery.
3792 2011-02-23  Jakub Jelinek  <jakub@redhat.com>
3794         PR c++/47833
3795         * pt.c (struct pending_template): Add chain_next GTY option.
3796         * decl.c (struct named_label_use_entry): Likewise.
3798 2011-02-22  Paolo Carlini  <paolo.carlini@oracle.com>
3800         PR c++/47242
3801         * semantics.c (build_lambda_object): Bail out if a field is
3802         error_mark_node.
3804 2011-02-22  Dodji Seketeli  <dodji@redhat.com>
3806         PR c++/47666
3807         * class.c (dfs_declare_virt_assop_and_dtor)
3808         (declare_virt_assop_and_dtor): New static functions.
3809         (add_implicitly_declared_members): Use
3810         declare_virt_assop_and_dtor.
3812 2011-02-21  Jason Merrill  <jason@redhat.com>
3814         PR c++/47207
3815         * decl2.c (decl_constant_var_p): A constexpr var needs an
3816         initializer to be constant.
3817         * semantics.c (cxx_eval_constant_expression): Complain about
3818         constexpr var used in its own initializer.
3819         * call.c (set_up_extended_ref_temp): Set
3820         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
3822 2011-02-20  Jason Merrill  <jason@redhat.com>
3824         PR c++/47199
3825         * semantics.c (cxx_eval_call_expression): Call
3826         cxx_eval_constant_expression in trivial shortcut.
3828         PR c++/46831
3829         * call.c (convert_class_to_reference): Don't try to set up a
3830         second conv sequence for non-viable candidates.
3832         PR c++/47703
3833         * error.c (location_of): Handle non-tagged types.
3835         PR c++/46472
3836         * method.c (process_subob_fn): Instantiate constexpr templates.
3837         * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
3839 2011-02-20  Dodji Seketeli  <dodji@redhat.com>
3841         PR c++/46394
3842         * pt.c (tsubst_pack_expansion): do not use
3843         cp_tree_equal/same_type_p to detect an expansion of a parameter
3844         pack.
3846 2011-02-19  Jason Merrill  <jason@redhat.com>
3848         PR c++/47503
3849         * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
3851 2011-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
3853         PR c++/47795
3854         * semantics.c (finish_non_static_data_member): Early return if
3855         object is error_mark_node.
3857 2011-02-18  Dodji Seketeli  <dodji@redhat.com>
3859         PR c++/47208
3860         * pt.c (do_auto_deduction): Do not mention error_mark_node in
3861         diagnostics.
3862         * semantics.c (finish_id_expression): Do not pass erroneous decl
3863         to decl_constant_var_p.
3865 2011-02-17  Jakub Jelinek  <jakub@redhat.com>
3867         PR c++/47783
3868         * cvt.c (convert_from_reference): Call mark_exp_read.
3870 2011-02-11  Dodji Seketeli  <dodji@redhat.com>
3872         PR c++/47172
3873         * pt.c (finish_call_expr): Consider a call expression that has a
3874         dependent "this" pointer as being dependent.  Add comments.
3875         (dependent_type_p, type_dependent_expression_p): Update comments.
3877 2011-02-16  Dodji Seketeli  <dodji@redhat.com>
3879         PR c++/47326
3880         * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
3881         expansion arguments are not evaluated.
3883 2011-02-16  Jakub Jelinek  <jakub@redhat.com>
3885         PR c++/47704
3886         * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
3887         instead of TYPE_LANG_FLAG_3.
3888         * pt.c (lookup_template_class): Copy over
3889         ENUM_FIXED_UNDERLYING_TYPE_P.
3891 2011-02-15  Jason Merrill  <jason@redhat.com>
3893         PR c++/46807
3894         * method.c (synthesized_method_walk): Always exit early for
3895         trivial fn in C++98 mode.
3897 2011-02-14  Jason Merrill  <jason@redhat.com>
3899         PR c++/47482
3900         * parser.c (cp_parser_enumerator_definition): Call
3901         fold_non_dependent_expr.
3903 2011-02-09  Jason Merrill  <jason@redhat.com>
3905         * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
3906         * semantics.c (finish_fname): Only return the name if we're in
3907         a function.
3909         * decl.c (build_enumerator): Don't perform integral promotions on
3910         non-integral constants.
3912         * cvt.c (convert_to_void): Handle null op1.
3914         * class.c (type_has_constexpr_default_constructor): Make sure the
3915         caller stripped an enclosing array.
3916         * init.c (perform_member_init): Strip arrays before calling it.
3918         PR c++/47511
3919         * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
3921 2011-02-03  Dodji Seketeli  <dodji@redhat.com>
3923         PR c++/47398
3924         * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
3925         template parameters in account.
3927 2011-02-03  Nathan Froyd  <froydnj@codesourcery.com>
3929         PR c++/46890
3930         * parser.c (cp_parser_class_specifier): Fix setting of
3931         want_semicolon.
3933 2011-01-31  Jakub Jelinek  <jakub@redhat.com>
3935         PR c++/47416
3936         * semantics.c (build_data_member_initialization): Handle
3937         STATEMENT_LIST always instead of just for CLEANUP_BODY.
3939 2011-01-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3941         * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
3942         LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
3944 2011-01-29  Dodji Seketeli  <dodji@redhat.com>
3946         PR c++/47311
3947         * cp-tree.h (fixup_template_parms): Declare.
3948         * pt.c (end_template_parm_list): Do not fixup template parms here.
3949         (fixup_template_parms): Remove static. Fix typo in the
3950         comments. Remove useless code statement.
3951         (fixup_template_parm): For a template template parameter, fixup
3952         its attributes before fixing up its type.
3953         * parser.c
3954         (cp_parser_template_declaration_after_export): After parsing
3955         template parameters fixup their types.
3957 2011-01-26  Jakub Jelinek  <jakub@redhat.com>
3959         PR c++/47476
3960         * semantics.c (potential_constant_expression_1): Handle
3961         TRUTH_XOR_EXPR.
3963 2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
3965         PR c++/43601
3966         * semantics.c (expand_or_defer_fn_1): Handle it.
3967         * decl2.c (decl_needed_p): Likewise.
3969 2011-01-21  Jason Merrill  <jason@redhat.com>
3971         PR c++/47041
3972         * semantics.c (build_constexpr_constructor_member_initializers):
3973         Handle trivial copy.
3975 2011-01-21  Jakub Jelinek  <jakub@redhat.com>
3977         PR c++/47388
3978         * semantics.c (begin_for_stmt): If -fno-for-scope, don't
3979         assume init must be NULL if scope is NULL.
3980         (begin_range_for_stmt): Likewise.
3982 2011-01-21  Jason Merrill  <jason@redhat.com>
3984         PR c++/46552
3985         * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
3987         PR c++/46977
3988         * semantics.c (potential_constant_expression_1): Split out from
3989         potential_constant_expression.  Add want_rval parm.  Handle
3990         template expression forms.  Don't enforce restriction on address
3991         of automatic variable here.  Add a couple of diagnostics that
3992         had been missing.
3993         (require_potential_constant_expression): New entry point.
3994         (build_data_member_initialization, register_constexpr_fundef): Adjust.
3995         (maybe_constant_value): Check potential_constant_expression.
3996         * pt.c (fold_non_dependent_expr_sfinae): Likewise.
3997         * tree.c (build_vec_init_expr): Adjust.
3999 2011-01-19  Jakub Jelinek  <jakub@redhat.com>
4001         PR c++/47303
4002         * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
4003         or DECL_EXTERNAL.
4005 2011-01-17  Jason Merrill  <jason@redhat.com>
4007         PR c++/47067
4008         * semantics.c (base_field_constructor_elt): New fn.
4009         (cxx_eval_bare_aggregate): Use it.
4010         (build_data_member_initialization): Leave COMPONENT_REF for
4011         vfield inits.
4013 2011-01-14  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
4015         * parser.c (cp_parser_range_for): Remove the "unused variable" warning
4016         workaround.
4018 2011-01-15  Giovanni Funchal  <gafunchal@gmail.com>
4019             Jonathan Wakely  <jwakely.gcc@gmail.com>
4021         PR c++/33558
4022         * decl.c (grokdeclarator): Reject mutable reference members.
4024 2011-01-14  Jason Merrill  <jason@redhat.com>
4026         PR c++/47289
4027         * pt.c (coerce_template_parms): Fix error recovery.
4029         PR c++/46903
4030         * typeck2.c (check_narrowing): Only check arithmetic types.
4032         PR c++/46688
4033         * tree.c (build_vec_init_expr): Handle flexible array
4034         properly.
4036 2011-01-13  Kai Tietz  <kai.tietz@onevision.com>
4038         PR c++/47213
4039         * cp-tree.h (CLASSTYPE_VISIBILITY): Use
4040         TYPE_MAIN_DECL instead of TYPE_NAME.
4041         (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
4042         * decl2.c (determine_visibility): Add check
4043         of CLASS_TYPE_P for underlying_type.
4045 2011-01-12  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
4047         * cp-tree.h (begin_for_scope): New prototype.
4048         (begin_for_stmt): Update prototype.
4049         (begin_range_for_stmt): Update prototype.
4050         * init.c (build_vec_init): Update call to begin_for_stmt.
4051         * parser.c (cp_parser_for): New.
4052         (cp_parser_c_for): Add three new parameters.
4053         (cp_parser_range_for): Likewise. Most parsing code removed.
4054         (cp_parser_iteration_statement): Call cp_parser_for instead of
4055         cp_parser_c_for and cp_parser_range_for.
4056         (cp_parser_for_init_statement): Add new parameter and return type.
4057         (cp_parser_block_declaration): Update call to
4058         cp_parser_simple_declaration.
4059         (cp_parser_simple_declaration): Add new parameter.
4060         Update call to cp_parser_init_declarator.
4061         (cp_parser_init_declarator): Add new parameter.
4062         * pt.c (tsubst_expr): Update call to begin_for_stmt.
4063         * semantics.c (begin_for_scope): New.
4064         (begin_for_stmt): Add two new parameters.
4065         (begin_range_for_stmt): Likewise.
4067 2011-01-12  Nicola Pero  <nicola.pero@meta-innovation.com>
4069         * parser.c (cp_parser_objc_at_property_declaration): Improved
4070         error message.
4072 2011-01-11  Dodji Seketeli  <dodji@redhat.com>
4074         PR debug/46955
4075         * cp-lang.c (get_template_innermost_arguments_folded)
4076         (get_template_argument_pack_elems_folded)
4077         (template_arg_needs_folding, fold_cplus_constants): New static
4078         functions.
4079         (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
4080         get_template_innermost_arguments_folded.
4081         (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
4082         get_template_argument_pack_elems_folded.
4084 2011-01-11  Jason Merrill  <jason@redhat.com>
4086         PR c++/46658
4087         * init.c (build_new_1): Handle value-init in templates differently.
4089         PR c++/45520
4090         * tree.c (maybe_dummy_object): Check current_class_ref against
4091         context, not current_class_type.
4093 2011-01-08  Nicola Pero  <nicola.pero@meta-innovation.com>
4095         PR objc/47078
4096         * parser.c (cp_parser_objc_typename): If the type is unknown, for
4097         error recovery purposes behave as if it was not specified so that
4098         the default type is used.
4100 2011-01-07  Jakub Jelinek  <jakub@redhat.com>
4102         PR c++/47022
4103         * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
4104         for the second build_x_va_arg argument.
4106 2011-01-05  Tom Tromey  <tromey@redhat.com>
4108         * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
4109         (lvalue_or_else): Likewise.
4111 2011-01-01  Kai Tietz  <kai.tietz@onevision.com>
4113         PR target/38662
4114         * tree.c (cxx_type_hash_eq):
4115         Allow METHOD_TYPE, too.
4118 Copyright (C) 2011 Free Software Foundation, Inc.
4120 Copying and distribution of this file, with or without modification,
4121 are permitted in any medium without royalty provided the copyright
4122 notice and this notice are preserved.