PR c++/51458
[official-gcc.git] / gcc / cp / ChangeLog
blob59538669fdeff2a741e7f6f3a923951d96baca2a
1 2011-12-15  Jason Merrill  <jason@redhat.com>
3         PR c++/51458
4         * decl.c (has_designator_problem): New.
5         (reshape_init_r): Check for improper use of
6         designated initializers.
8 2011-12-15  Jakub Jelinek  <jakub@redhat.com>
10         PR c++/51463
11         * decl.c (grokdeclarator): Set DECL_INITIAL of decl
12         to error_mark_node to disallow NSDMI if declspecs->storage_class
13         is sc_static.
14         * parser.c (cp_parser_late_parse_one_default_arg): Return early
15         if default_arg is error_mark_node.
17         PR c/51360
18         * semantics.c (finish_omp_clauses): For OMP_CLAUSE_NUM_THREADS_EXPR
19         and OMP_CLAUSE_SCHEDULE_CHUNK_EXPR call mark_rvalue_use.
21 2011-12-15  Dodji Seketeli  <dodji@redhat.com>
23         PR c++/51473
24         * decl.c (check_tag_decl): Error out on auto specifier with no
25         declarator.
27 2011-12-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
29         PR libstdc++/51365
30         * cp-tree.h (CPTK_IS_FINAL): Add.
31         * parser.c (cp_parser_translation_unit): Handle RID_IS_FINAL.
32         (cp_parser_primary_expression, cp_parser_trait_expr): Likewise.
33         * semantics.c (trait_expr_value, finish_trait_expr): Handle
34         CPTK_IS_FINAL.
35         * cxx-pretty-print.c (pp_cxx_trait_expression): Likewise.
37 2011-12-14  Jason Merrill  <jason@redhat.com>
39         PR c++/51554
40         * semantics.c (cxx_eval_indirect_ref): Fix sanity check.
42         PR c++/51248
43         * decl.c (copy_type_enum): Also update variants.
44         (finish_enum): Allow variants of complete enums.
46 2011-12-14  Dodji Seketeli  <dodji@redhat.com>
48         PR c++/51475
49         * call.c (struct conversion)<u.next>: Update comment.
50         (next_conversion): New static function.
51         (convert_like_real): Use it.
53         PR c++/51476
54         * pt.c (convert_nontype_argument): Don't call maybe_constant_value
55         for PTRMEM_CST nodes.
57 2011-12-13  Jason Merrill  <jason@redhat.com>
59         PR c++/51406
60         PR c++/51161
61         * typeck.c (build_static_cast_1): Fix cast of lvalue to
62         base rvalue reference.
64 2011-12-13  Paolo Carlini  <paolo.carlini@oracle.com>
66         PR c++/51464
67         * semantics.c (begin_lambda_type): Check begin_class_definition return
68         value for error_mark_node.
69         * parser.c (cp_parser_lambda_expression): Check begin_lambda_type
70         return value for error_mark_node.
72 2011-12-13  Fabien Chêne  <fabien@gcc.gnu.org>
74         PR c++/14258
75         * cp-tree.h (USING_DECL_TYPENAME_P): New macro.
76         * parser.c (cp_parser_nonclass_name): Handle using declarations
77         that refer to a dependent type.
78         (cp_parser_using_declaration): Set USING_DECL_TYPENAME_P to 1 if
79         the using declaration refers to a dependent type.
81 2011-12-12  Jakub Jelinek  <jakub@redhat.com>
83         PR c++/51496
84         * parser.c (cp_parser_omp_for_loop): When determining whether
85         to use cp_parser_omp_for_incr or cp_parser_expression and when
86         calling cp_parser_omp_for_incr, use real_decl instead of decl.
88 2011-12-12  Torvald Riegel  <triegel@redhat.com>
90         * semantics.c (finish_transaction_stmt, build_transaction_expr):
91         Accept new noexcept parameter and handle it.
92         * cp-tree.h (finish_transaction_stmt, build_transaction_expr): Adapt
93         declarations.
94         * parser.c (cp_parser_exception_specification_opt): Extract
95         noexcept-specification parsing to ...
96         (cp_parser_noexcept_specification_opt): ...here.  Allow for parsing
97         non-constexpr noexcept arguments.
98         (cp_parser_transaction, cp_parser_transaction_expression): Parse
99         and handle noexcept-specifications.
100         (cp_parser_function_transaction): Adapt to finish_transaction_stmt
101         change.
102         * pt.c (tsubst_expr): Adapt to new noexcept parameters when
103         building transactions.
105 2011-12-12  Torvald Riegel  <triegel@redhat.com>
107         * cp-tree.def (MUST_NOT_THROW_EXPR): Add condition parameter.
108         * cp-tree.h (MUST_NOT_THROW_COND): New.
109         (build_must_not_throw_expr): Declare.
110         * dump.c (cp_dump_tree): Dump MUST_NOT_THROW_EXPR condition.
111         * except.c (build_must_not_throw_expr): New.
112         (initialize_handler_parm): Use it.
113         (begin_eh_spec_block, wrap_cleanups_r): Adapt to condition.
114         * pt.c (tsubst_expr): Handle MUST_NOT_THROW_EXPR.
116 2011-12-12  Richard Guenther  <rguenther@suse.de>
118         PR lto/51262
119         * tree.c (cp_free_lang_data): No longer clear anonymous names.
121 2011-12-09  Jason Merrill  <jason@redhat.com>
123         PR c++/51151
124         * call.c (perform_implicit_conversion_flags): Remove earlier kludge.
125         * parser.c (cp_parser_omp_for_loop): Use cp_parser_omp_for_incr
126         in templates even if decl isn't type-dependent.
128 2011-12-09  Dodji Seketeli  <dodji@redhat.com>
130         PR c++/51289
131         * cp-tree.h (TYPE_TEMPLATE_INFO): Rewrite this accessor macro to
132         better support aliased types.
133         (TYPE_ALIAS_P): Don't crash on TYPE_NAME nodes that are not
134         TYPE_DECL.
135         * pt.c (find_parameter_packs_r): Handle types aliases.
136         (push_template_decl_real): Check for bare parameter packs in the
137         underlying type of an alias template.
139 2011-12-08  Jason Merrill  <jason@redhat.com>
141         PR c++/51318
142         * typeck.c (build_x_conditional_expr): Restrict glvalue games to C++11.
144         PR c++/51459
145         * pt.c (tsubst_expr) [DECL_EXPR]: Handle capture proxies properly.
146         * semantics.c (insert_capture_proxy): No longer static.
147         * cp-tree.h: Declare it.
149 2011-12-07  Jakub Jelinek  <jakub@redhat.com>
151         PR c++/51401
152         * decl.c (grokdeclarator): Error for auto on non-static data members.
154         PR c++/51429
155         * typeck2.c (cxx_incomplete_type_diagnostic): Don't
156         ICE if TREE_OPERAND (value, 1) is overloaded.
158         PR c++/51229
159         * decl.c (reshape_init_class): Complain if d->cur->index is
160         INTEGER_CST.
161         * parser.c (cp_parser_initializer_list): If cp_parser_parse_definitely
162         fails, clear designator.
164         PR c++/51369
165         * init.c (build_value_init): Allow array types even when
166         processing_template_decl.
168 2011-12-07  Ed Smith-Rowland <3dw4rd@verizon.net>
170         PR c++/51420
171         * parser.c (lookup_literal_operator): Check that declaration is an
172         overloaded function.
174 2011-12-06  Jakub Jelinek  <jakub@redhat.com>
176         PR c++/51430
177         * pt.c (tsubst_decl): Don't call strip_array_domain on
178         error_mark_node.
180 2011-12-06  Paolo Carlini  <paolo.carlini@oracle.com>
182         PR c++/51431
183         * init.c (build_value_init): Check build_aggr_init_expr return
184         value for error_mark_node.
186 2011-12-06  Dodji Seketeli  <dodji@redhat.com>
188         PR c++/51427
189         * parser.c (cp_parser_check_class_key): Add note about earlier
190         declaration.
192 2011-12-05  Fabien Chêne  <fabien@gcc.gnu.org>
194         PR c++/51319
195         * semantics.c (finish_id_expression): Strip using declarations
196         early in the function.
198 2011-12-05  Paolo Carlini  <paolo.carlini@oracle.com>
200         PR c++/51399
201         * init.c (perform_member_init): Early return if init is error_mark_node.
203 2011-12-05  Paolo Carlini  <paolo.carlini@oracle.com>
205         PR c++/51414
206         * semantics.c (finish_underlying_type): Use %qT, not %qE for the
207         error message.
209 2011-12-05  Jason Merrill  <jason@redhat.com>
211         * init.c (expand_default_init): Unshare args in ctor delegation.
213 2011-12-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
214             Pedro Lamarão  <pedro.lamarao@gmail.com>
216         Implement C++11 delegating constructors.
217         * cp-tree.h (enum cpp0x_warn_str): Add CPP0X_DELEGATING_CTORS.
218         * error.c (maybe_warn_cpp0x): Adjust.
219         * parser.c (cp_parser_mem_initializer_list): Use it.  Diagnose
220         multiple initializers if a delegating initializer is present.
221         * call.c (build_special_member_call): Convert an assert into an if.
222         * init.c (perform_target_ctor): New.
223         (emit_mem_initializers): Use it.
224         (expand_member_init, expand_default_init): Adjust.
226 2011-12-05  Paolo Carlini  <paolo.carlini@oracle.com>
228         PR c++/51404
229         * typeck2.c (build_functional_cast): Early return error_mark_node
230         for invalid uses of 'auto'.
231         * parser.c (cp_parser_direct_declarator): When
232         cp_parser_constant_expression returns error do not produce further
233         diagnostic for the bound.
235 2011-12-03  Paolo Carlini  <paolo.carlini@oracle.com>
237         PR c++/51313
238         * call.c (null_ptr_cst_p): STRIP_NOPS in c++11 mode too.
240 2011-12-01  Jason Merrill  <jason@redhat.com>
242         * call.c (build_new_method_call_1): Handle aggregate initialization.
243         * tree.c (stabilize_init): Handle CONSTRUCTOR.
245 2011-12-01  Paolo Carlini  <paolo.carlini@oracle.com>
247         PR c++/51326
248         * call.c (build_user_type_conversion_1): Early return NULL if
249         expr is NULL_TREE.
251 2011-12-01  Paolo Carlini  <paolo.carlini@oracle.com>
253         PR c++/51367
254         * pt.c (unify_inconsistency): Use either %qT or %qE depending on
255         whether parm is a type or non-type parameter.
257 2011-11-30  Jason Merrill  <jason@redhat.com>
259         PR c++/51009
260         * name-lookup.c (push_to_top_level): Set stmts_are_full_exprs_p.
261         * decl.c (build_aggr_init_full_exprs): Just assert that it's true.
262         (check_initializer): Here too.
264 2011-11-30  Paolo Carlini  <paolo.carlini@oracle.com>
266         PR c++/51299
267         * rtti.c (ifnonnull): Use nullptr_node.
268         (build_dynamic_cast_1): Call cp_truthvalue_conversion instead
269         of c_common_truthvalue_conversion.
271 2011-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
273         PR c++/51227
274         * pt.c (instantiate_class_template_1): If lambda_function (type)
275         is NULL_TREE do not instantiate_decl.
277 2011-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
279         PR c++/51290
280         * class.c (build_base_path): For the null pointer check use
281         nullptr_node instead of integer_zero_node.
283 2011-11-22  Dodji Seketeli  <dodji@redhat.com>
285         PR c++/51145
286         * decl.c (check_elaborated_type_specifier): Gracefully handle
287         error_mark_node.  Accept bound template template parameters.
288         Update diagnostics for alias template specializations.  Update
289         comment.
290         * parser.c (cp_parser_elaborated_type_specifier): Use
291         check_elaborated_type_specifier for simple-template-ids as well.
293 2011-11-22  Paolo Carlini  <paolo.carlini@oracle.com>
295         PR c++/51265
296         * semantics.c (finish_decltype_type): Handle PTRMEM_CST.
298 2011-11-22  Dodji Seketeli  <dodji@redhat.com>
300         PR c++/51143
301         * parser.c (cp_parser_alias_declaration): Don't allow type
302         definition in templates.
304 2011-11-22  Paolo Carlini  <paolo.carlini@oracle.com>
306         PR c++/51196
307         * typeck.c (cp_build_binary_op, [case EQ_EXPR]): For targets having
308         TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_delta, do here
309         the -Wzero-as-null-pointer-constant warning for pmf == 0.
311 2011-11-21  Torvald Riegel  <triegel@redhat.com>
313         * pt.c (tsubst_copy_and_build): Handle TRANSACTION_EXPR.
315 2011-11-21  Ed Smith-Rowland  <3dw4rd@verizon.net>
317         PR c++/50958
318         * parser.c (lookup_literal_operator): New.
319         (cp_parser_userdef_char_literal): Use it.
320         (cp_parser_userdef_numeric_literal): Use it.
321         (cp_parser_userdef_string_literal): Use lookup_name.
323 2011-11-20  Jason Merrill  <jason@redhat.com>
325         * pt.c (tsubst_pack_expansion): Fix SFINAE.
327         PR c++/48322
328         * cp-tree.h (PACK_EXPANSION_EXTRA_ARGS): New.
329         * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand for it.
330         * pt.c (tsubst_pack_expansion): Set and use it.
331         (iterative_hash_template_arg): Hash it.
332         (template_args_equal): Compare it.
333         (comp_template_args_with_info): Handle nulls.
334         * tree.c (cp_walk_subtrees): Walk it.
335         * typeck.c (structural_comptypes): Compare it.
336         * ptree.c (cxx_print_type): Print it.
338         * pt.c (type_unification_real): Set input_location
339         during default arg instantiation.
341 2011-11-20  Paolo Carlini  <paolo.carlini@oracle.com>
343         PR c++/51230
344         * pt.c (unify_inconsistency): Handle non-type parameters better.
345         * error.c (dump_expr): Handle TEMPLATE_TEMPLATE_PARM.
347 2011-11-20  Dodji Seketeli  <dodji@redhat.com>
349         PR c++/51194
350         * pt.c (lookup_template_class_1): Go out early if the type of the
351         template is error_mark_node.
353 2011-11-19  Paolo Carlini  <paolo.carlini@oracle.com>
355         PR c++/51216
356         * semantics.c (potential_constant_expression_1): Handle IF_STMT,
357         DO_STMT, FOR_STMT, and WHILE_STMT.
359 2011-11-18  Fabien Chêne  <fabien@gcc.gnu.org>
361         PR c++/51188
362         * search.c (lookup_field_1): Handle USING_DECLs for the storted
363         case.
365 2011-11-18  Paolo Carlini  <paolo.carlini@oracle.com>
367         PR c++/51150
368         * pt.c (tsubst_copy_and_build): Handle FIX_TRUNC_EXPR.
370 2011-11-18  Dodji Seketeli  <dodji@redhat.com>
372         PR c++/51191
373         * pt.c (primary_template_instantiation_p): Don't forget to
374         consider alias declarations.
376 2011-11-17  Jason Merrill  <jason@redhat.com>
378         PR c++/51186
379         * decl.c (grokdeclarator): Improve C++98 trailing return diagnostic.
381         N3203
382         * class.c (add_implicitly_declared_members): Update move
383         conditions.
385         PR c++/51137
386         * class.c (build_base_path): Don't do calculation in templates.
388 2011-11-15  Torvald Riegel  <triegel@redhat.com>
390         * parser.c (cp_parser_transaction_expression): Require parentheses
391         when parsing transaction expressions.
393 2011-11-14  Ed Smith-Rowland  <3dw4rd@verizon.net>
395         PR c++/51107
396         * typeck.c (check_literal_operator_args): Add processing_specialization
397         to check for void template fn. Test for exact arity for non-template fn.
399 2011-11-14  Fabien Chêne  <fabien@gcc.gnu.org>
401         PR c++/6936
402         PR c++/25994
403         PR c++/26256
404         PR c++/30195
405         * search.c (lookup_field_1): Look through USING_DECL.
406         (lookup_field_r): Call lookup_fnfields_slot instead of
407         lookup_fnfields_1.
408         * semantics.c (finish_member_declaration): Remove the check that
409         prevents USING_DECLs from being verified by
410         pushdecl_class_level. Call add_method for using declarations that
411         designates functions if the using declaration is in a template
412         class. Set DECL_IGNORED_P on class-scope using declarations.
413         * typeck.c (build_class_member_access_expr): Handle USING_DECLs.
414         * class.c (check_field_decls): Keep using declarations.
415         (add_method): Remove two diagnostics about conflicting using
416         declarations.
417         * parser.c (cp_parser_nonclass_name): Handle USING_DECLs.
418         * decl.c (start_enum): Call xref_tag whenever possible.
419         * cp-tree.h (strip_using_decl): Declare, and reident the previous
420         function.
421         * name-lookup.c (strip_using_decl): New function.
422         (supplement_binding_1): Call strip_using_decl on decl and
423         bval. Perform most of the checks with USING_DECLs stripped.  Also
424         check that the target decl and the target bval does not refer to
425         the same declaration. Allow pushing an enum multiple times in a
426         template class. Adjustment to diagnose using redeclarations. Call
427         diagnose_name_conflict.
428         (push_class_level_binding): Call strip_using_decl on decl and
429         bval. Perform most of the checks with USING_DECLs stripped. Return
430         true if both decl and bval refer to USING_DECLs and are dependent.
431         (diagnose_name_conflict): New function.
433 2011-11-12  Jason Merrill  <jason@redhat.com>
435         PR c++/986
436         * call.c (set_up_extended_ref_temp): Warn about references
437         bound to non-static reference members.
438         * init.c (perform_member_init): Pass in the member.
440         PR c++/51060
441         * cp-gimplify.c (cp_gimplify_expr): Leave clobbers alone.
443 2011-11-11  Ed Smith-Rowland  <3dw4rd@verizon.net>
445         PR c++/50976
446         * typeck.c (check_literal_operator_args): Reorganize test for string
447         operators so size_t search depends on finding string first.
449 2011-11-10  Jason Merrill  <jason@redhat.com>
451         PR c++/50372
452         * pt.c (convert_nontype_argument_function): Allow decls with
453         internal linkage in C++11.
454         (convert_nontype_argument): Likewise.
456         PR c++/50973
457         * decl2.c (mark_used): Defer synthesis of virtual functions.
458         * method.c (use_thunk): Make sure the target function has
459         DECL_INTERFACE_KNOWN.
461         PR c++/51079, DR 495
462         * call.c (joust): Check the second conversion sequence
463         before checking templates.
465 2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>
467         PR c++/50837
468         * pt.c (tsubst_copy_and_build) [IDENTIFIER_NODE]: In C++11 mode
469         pass allow_non_integral_constant_expression_p = true to
470         finish_id_expression.
472 2011-11-09  Jason Merrill  <jason@redhat.com>
474         PR c++/50972
475         * pt.c (maybe_instantiate_noexcept): Check the return value of
476         push_tinst_level.
478         PR c++/51046
479         * parser.c (cp_parser_range_for): check_for_bare_parameter_packs.
481         PR c++/51029
482         * class.c (build_base_path): Don't ICE in fold_non_dependent_expr.
484         * Make-lang.in (check_g++_parallelize): Add dg-torture.exp.
485         (check-c++0x): Obsolete.
487         * pt.c (invalid_nontype_parm_type_p): Avoid printing "<type error>".
489         * pt.c (convert_nontype_argument): Only integral arguments
490         get early folding.
492         * parser.c (cp_parser_alias_declaration): Don't do semantic
493         processing if parsing failed.
495 2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>
497         PR c++/51045
498         * init.c (build_new_1, build_vec_delete_1, build_delete):
499         Use nullptr_node.
501 2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>
503         PR c++/51047
504         * search.c (lookup_member): Change to take also a tsubst_flags_t
505         parameter.
506         (lookup_field, lookup_fnfields): Adjust calls.
507         * typeck.c (lookup_destructor, finish_class_member_access_expr,
508         build_ptrmemfunc_access_expr): Likewise.
509         * class.c (handle_using_decl, maybe_note_name_used_in_class):
510         Likewise.
511         * pt.c (resolve_typename_type): Likewise.
512         * semantics.c (lambda_function): Likewise.
513         * parser.c (cp_parser_perform_range_for_lookup,
514         cp_parser_lookup_name): Likewise.
515         * friend.c (make_friend_class): Likewise.
516         * name-lookup.c (pushdecl_maybe_friend_1, get_class_binding,
517         do_class_using_decl, lookup_qualified_name): Likewise.
518         * cp-tree.h (lookup_member): Adjust declaration.
520 2011-11-09  Dodji Seketeli  <dodji@redhat.com>
522         PR c++/51043
523         * cp-tree.h (TYPE_ALIAS_P, TYPE_TEMPLATE_INFO): Don't crash on
524         NULL TYPE_NAME.
526         PR c++/51027
527         * parser.c (cp_parser_alias_declaration): Require ';' at the end
528         of the declaration.
530 2011-11-09  Dodji Seketeli  <dodji@redhat.com>
532         PR debug/51032
533         * decl2.c (check_member_template): Accept alias templates and ...
534         * parser.c (cp_parser_alias_declaration): ... use it here.
536 2011-11-08  Jason Merrill  <jason@redhat.com>
538         PR c++/50835
539         * typeck.c (build_x_conditional_expr): Preserve lvalue/xvalueness.
540         * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Return clk_ordinary
541         in C++98.
543 2011-11-08  Richard Guenther  <rguenther@suse.de>
545         PR middle-end/51010
546         * error.c (dump_expr): Handle SSA_NAMEs.
548 2011-11-07  Richard Henderson  <rth@redhat.com>
549             Aldy Hernandez  <aldyh@redhat.com>
550             Torvald Riegel  <triegel@redhat.com>
552         Merged from transactional-memory.
554         * call.c (build_new_function_call): Call tm_malloc_replacement.
555         * class.c (check_bases): Compute transaction attributes for the
556         class based on its base classes.
557         (look_for_tm_attr_overrides, set_one_vmethod_tm_attributes,
558         set_method_tm_attributes): New.
559         (finish_struct_1): Call set_method_tm_attributes.
560         * cp-tree.h (begin_transaction_stmt, finish_transaction_stmt,
561         build_transaction_expr): Declare.
562         (TRANSACTION_EXPR_IS_STMT): New.
563         * decl.c (push_cp_library_fn): Set attribute to transaction_safe.
564         * except.c (do_get_exception_ptr): Apply transaction_pure.
565         (do_begin_catch): Mark _ITM_cxa_begin_catch transaction_pure and
566         record as transactional-memory wrapper.
567         (do_end_catch): Similarly for _ITM_cxa_end_catch.
568         (do_allocate_exception): Similarly for _ITM_cxa_allocate_exception.
569         (build_throw): Similarly for _ITM_cxa_throw. Make __cxa_rethrow pure.
570         * parser.h (struct cp_parser): Add in_transaction flag.
571         * parser.c (enum non_integral_constant): Add NIC_TRANSACTION.
572         (cp_parser_non_integral_constant_expression): Handle NIC_TRANSACTION.
573         (enum required_token): Add transaction tokens.
574         (cp_parser_transaction, cp_parser_transaction_expression,
575         cp_parser_function_transaction, cp_parser_transaction_cancel,
576         cp_parser_txn_attribute_opt): New.
577         (cp_parser_unary_expression): Handle RID_TRANSACTION*.
578         (cp_parser_statement, cp_parser_function_definition_after_declarator,
579         cp_parser_token_starts_function_definition_p): Same.
580         (cp_parser_required_error): Handle RT_TRANSACTION*.
581         * pt.c (tsubst_expr): Handle TRANSACTION_EXPR.
582         * semantics.c (begin_transaction_stmt, finish_transaction_stmt,
583         build_transaction_expr): New.
585 2011-11-08  Dodji Seketeli  <dodji@redhat.com>
587         Fix context handling of alias-declaration
588         * decl.c (start_decl): Update comment.
589         * error.c (dump_alias_template_specialization): Dump the context
590         of the specialization.
591         * parser.c (cp_parser_alias_declaration): Call pop_scope on the
592         pushed scope yielded by start_decl.
594 2011-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
596         PR c++/50864
597         * parser.c (cp_parser_postfix_dot_deref_expression): Reject invalid
598         uses of '->' and '.' as postfix-expression in namespace scope.
600 2011-11-07  Jason Merrill  <jason@redhat.com>
602         PR c++/50848
603         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't crash
604         if lookup finds a non-function.
606         PR c++/50863
607         * parser.c (cp_parser_initializer_list): Parse C99
608         array designators tentatively.
610         PR c++/50870
611         * pt.c (tsubst_copy): Handle NAMESPACE_DECL.
612         (tsubst_copy_and_build) [COMPONENT_REF]: Handle a still-dependent
613         object.
615 2011-11-07  Paolo Carlini  <paolo.carlini@oracle.com>
617         * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
618         call in case COMPONENT_REF.
620 2011-11-07  Jason Merrill  <jason@redhat.com>
621             Dodji Seketeli  <dodji@redhat.com>
623         Support C++11 alias-declaration
624         PR c++/45114
625         * cp-tree.h (TYPE_DECL_ALIAS_P, TYPE_ALIAS_P)
626         (DECL_TYPE_TEMPLATE_P, DECL_ALIAS_TEMPLATE_P): New accessor
627         macros.
628         (TYPE_TEMPLATE_INFO): Get template info of an alias template
629         specializations from its TYPE_DECL.
630         (SET_TYPE_TEMPLATE_INFO): Set template info of alias template
631         specializations into its TYPE_DECL.
632         (DECL_CLASS_TEMPLATE_P): Re-write using the new
633         DECL_TYPE_TEMPLATE_P.
634         (enum cp_decl_spec): Add new ds_alias enumerator.
635         (alias_type_or_template_p, alias_template_specialization_p):
636         Declare new functions.
637         * parser.c (cp_parser_alias_declaration): New static function.
638         (cp_parser_check_decl_spec): Add "using" name for the `alias'
639         declspec.
640         (cp_parser_type_name): Update comment.  Support simple-template-id
641         representing alias template specializations in c++0x mode.
642         (cp_parser_qualifying_entity): Update comment.  Use
643         cp_parser_type_name.
644         (cp_parser_block_declaration): Handle alias-declaration in c++11.
645         Update comment.
646         (cp_parser_template_id): Handle specializations of alias
647         templates.
648         (cp_parser_member_declaration): Add alias-declaration production
649         to comment.  Support alias-declarations.
650         (cp_parser_template_declaration_after_export): Handle alias
651         templates in c++11.
652         * decl.c (make_typename_type, make_unbound_class_template): Accept
653         alias templates.
654         (grokdeclarator): Set TYPE_DECL_ALIAS_P on alias
655         declarations.
656         * decl2.c (grokfield): Move template creation after setting up the
657         TYPE_DECL of the alias, so that the TEMPLATE_DECL of the alias
658         template actually carries the right type-id of the alias
659         declaration.
660         * pt.c (alias_type_or_template_p)
661         (alias_template_specialization_p): Define new public functions.
662         (maybe_process_partial_specialization): Reject partial
663         specializations of alias templates.
664         (primary_template_instantiation_p): Consider alias template
665         instantiations.
666         (push_template_decl_real): Assert that TYPE_DECLs of alias
667         templates are different from those of class template.  Store
668         template info onto the TYPE_DECL of the alias template.
669         (convert_template_argument): Strip aliases from template
670         arguments.
671         (lookup_template_class_1): Handle the creation of the
672         specialization of an alias template.
673         (tsubst_decl): Create a substituted copy of the TYPE_DECL of an
674         member alias template.
675         (tsubst): Handle substituting into the type of an alias template.
676         Handle substituting UNBOUND_CLASS_TEMPLATE into
677         BOUND_TEMPLATE_TEMPLATE_PARM.
678         (do_type_instantiation): Better diagnostics when trying to
679         explicitely instantiate a non-class template.
680         * search.c (lookup_field_1, lookup_field_r): Support looking up
681         alias templates.
682         * semantics.c (finish_template_type): For instantiations of alias
683         templates, return the TYPE_DECL of the actual alias and not the
684         one of the aliased type.
685         * error.c (dump_alias_template_specialization): New static
686         function.
687         (dump_type): Handle printing of alias templates and their
688         specializations.  templates.
689         (dump_aggr_type): For specialization of alias templates, fetch
690         arguments from the right place.
691         (dump_decl): Print an alias-declaration like `using decl = type;'
692         (dump_template_decl):  Support printing of alias templates.
694 2011-11-07  Jason Merrill  <jason@redhat.com>
696         PR c++/35688
697         * decl2.c (constrain_visibility): Return void.  Add tmpl parm
698         which gives the constraint priority over an attribute.
699         (constrain_visibility_for_template, determine_visibility): Adjust.
700         * pt.c (instantiate_class_template_1): Call determine_visibility.
702         PR c++/33255
703         * decl.c (save_function_data): Clear local_typedefs.
705         * decl.c (cp_finish_decl): Only make_tree_vector if we're calling
706         check_initializer.
708 2011-11-06  Jason Merrill  <jason@redhat.com>
710         PR c++/35688
711         * decl2.c (constrain_visibility): Check decl_has_visibility_attr
712         rather than DECL_VISIBILITY_SPECIFIED.
714 2011-11-06  Paolo Carlini  <paolo.carlini@oracle.com>
716         PR c++/47695
717         * decl2.c (mark_used): Early return false after error or sorry.
718         * cp-tree.h (mark_used): Adjust declaration.
719         * semantics.c (finish_id_expression): Check mark_used return value.
721 2011-11-05  Jason Merrill  <jason@redhat.com>
723         PR c++/48370
724         * decl.c (cp_finish_decl): Mostly revert previous change.
726 2011-11-04  Jason Merrill  <jason@redhat.com>
728         PR c++/26714
729         * init.c (perform_member_init): Strip TARGET_EXPR around NSDMI.
730         Do temporary lifetime extension.
732         PR c++/48370
733         * decl.c (cp_finish_decl): Run cleanups in the right order.
735 2011-11-04  Eric Botcazou  <ebotcazou@adacore.com>
737         PR c++/50608
738         * semantics.c (finish_offsetof): Adjust call to fold_offsetof.
739         * typeck.c (cp_build_addr_expr_1): Call fold_offsetof_1.
741 2011-11-04  Paolo Carlini  <paolo.carlini@oracle.com>
743         * typeck.c (build_indirect_ref): Use ATTRIBUTE_UNUSED.
744         * mangle.c (write_unnamed_type_name): Likewise.
746 2011-11-04  Magnus Fromreide  <magfr@lysator.liu.se>
748         * parser.c (cp_parser_enumerator_list): Do not warn about
749         trailing commas in C++0x mode.
751 2011-11-04  Olivier Goffart  <olivier@woboq.com>
752             Jason Merrill  <jason@redhat.com>
754         PR c++/50965
755         * class.c (check_field_decls): NSDMI makes a class non-aggregate.
757 2011-11-04  Paolo Carlini  <paolo.carlini@oracle.com>
759         PR c++/48420
760         * call.c (conversion_null_warnings): For 'false' to NULL pointer,
761         just check that TREE_TYPE (expr) is a BOOLEAN_TYPE.
763 2011-11-04  Ed Smith-Rowland  <3dw4rd@verizon.net>
765         PR c++/50941
766         * parser.c (cp_parser_userdef_string_literal): Fix string length.
768 2011-11-04  Jason Merrill  <jason@redhat.com>
770         PR c++/48370
771         * call.c (extend_ref_init_temps, extend_ref_init_temps_1): New.
772         (set_up_extended_ref_temp): Use it.  Change cleanup parm to VEC.
773         (initialize_reference): Just call convert_like.
774         * decl.c (grok_reference_init): Just call initialize_reference.
775         (build_init_list_var_init): Remove.
776         (check_initializer): Change cleanup parm to VEC.  Handle references
777         like other types.  Call perform_implicit_conversion instead
778         of build_init_list_var_init.  Don't use build_aggr_init for
779         aggregate initialization of arrays.
780         (cp_finish_decl): Change cleanup to VEC.
781         * typeck2.c (store_init_value): Call extend_ref_init_temps.
782         Use build_vec_init for non-constant arrays.
783         * init.c (expand_aggr_init_1): Adjust.
784         (build_vec_init): Avoid re-converting an initializer
785         that's already digested.
786         * mangle.c (mangle_ref_init_variable): Add a discriminator.
787         * cp-tree.h: Adjust.
788         * typeck.c (convert_for_initialization): Adjust.
789         * decl2.c (maybe_emit_vtables): Adjust.
791 2011-11-02  Jason Merrill  <jason@redhat.com>
793         PR c++/50930
794         * init.c (build_aggr_init): Don't set LOOKUP_ONLYCONVERTING
795         if the initializer has TARGET_EXPR_DIRECT_INIT_P.
796         (expand_default_init): An initializer with TARGET_EXPR_DIRECT_INIT_P
797         or TARGET_EXPR_LIST_INIT_P doesn't need more processing.
798         * tree.c (bot_manip): Propagate TARGET_EXPR_IMPLICIT_P,
799         TARGET_EXPR_LIST_INIT_P, TARGET_EXPR_DIRECT_INIT_P.
800         * call.c (convert_like_real): Set TARGET_EXPR_DIRECT_INIT_P
801         as appropriate on list-value-initialization.
803         * parser.c (cp_parser_decl_specifier_seq): Change "C++0x" to
804         "C++11" in warnings.
805         (cp_lexer_get_preprocessor_token): Likewise.
806         (cp_parser_binary_expression): Likewise.
808 2011-11-02  Paolo Carlini  <paolo.carlini@oracle.com>
810         PR c++/50810
811         * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
812         (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
813         * decl.c (check_initializer): Likewise.
814         * semantics.c (finish_compound_literal): Likewise.
816 2011-11-02  Paolo Carlini  <paolo.carlini@oracle.com>
818         PR c++/50956
819         * typeck.c (build_const_cast_1): Fix -Wcast-qual for false
820         comp_ptr_ttypes_const.
822 2011-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
824         * Make-lang.in (g++spec.o): Pass SHLIB instead of SHLIB_LINK.
826 2011-11-01  Paolo Carlini  <paolo.carlini@oracle.com>
828         PR c++/44277
829         * cvt.c (cp_convert_to_pointer): Warn for zero as null pointer
830         constant.
831         * typeck.c (cp_truthvalue_conversion): Handle pointers and member
832         function pointers under c_inhibit_evaluation_warnings; use
833         nullptr_node for data member pointers.
834         (cp_build_binary_op): Tweak, just forward to cp_convert op1,
835         either a nullptr_node or an integer_zero_node.
836         (build_ptrmemfunc): Use nullptr_node.
837         * init.c (build_zero_init_1): Likewise.
839 2011-11-01  Jason Merrill  <jason@redhat.com>
841         PR c++/50500
842         DR 1082
843         * search.c (lookup_fnfields_idx_nolazy): Split out from...
844         (lookup_fnfields_1): ...here.
845         (lookup_fnfields_slot_nolazy): Use it.
846         * cp-tree.h: Declare it.
847         * class.c (type_has_move_assign): Use it.
848         (type_has_user_declared_move_assign): Likewise.
850 2011-10-31  Jason Merrill  <jason@redhat.com>
852         PR c++/50920
853         * class.c (check_field_decl): Change c++0x in diags to c++11.
854         * error.c (maybe_warn_cpp0x): Likewise.
855         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
856         * pt.c (check_default_tmpl_args): Likewise.
858 2011-10-31   Diego Novillo  <dnovillo@google.com>
860         * mangle.c (get_mangled_id): Factor from ...
861         (mangle_decl): ... here.
862         Call get_mangled_id.
864 2011-10-25  Gerald Pfeifer  <gerald@pfeifer.com>
866         * NEWS (GCC 2.95): Refer to GNU/Linux instead of Linux.
867         (EGCS 1.0): Ditto.
869 2011-10-29  Paolo Carlini  <paolo.carlini@oracle.com>
871         PR c++/50901
872         * call.c (build_new_op_1): Handle ABS_EXPR together with the
873         other unary EXPR.
875 2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
877         Revert:
878         2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
880         PR c++/50864
881         * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
882         call in case COMPONENT_REF.
884 2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
886         * pt.c (unify_pack_expansion): Initialize bad_old_arg and bad_new_arg.
888 2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
890         PR c++/50864
891         * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
892         call in case COMPONENT_REF.
894 2011-10-27  Jason Merrill  <jason@redhat.com>
896         * semantics.c (cxx_eval_outermost_constant_expr): Check
897         cp_has_mutable_p.
898         (cxx_eval_component_reference): Check DECL_MUTABLE_P.
900 2011-10-27  Roberto Agostino Vitillo  <ravitillo@lbl.gov>
902         PR c++/30066
903         * decl2.c (determine_hidden_inline): New function.
904         (determine_visibility): fvisibility-inlines-hidden affects inline
905         functions.
907 2011-10-27  Dodji Seketeli  <dodji@redhat.com>
909         * cp-tree.h (DECL_DECLARES_TYPE_P): Fix comment.
911 2011-10-26  Jason Merrill  <jason@redhat.com>
913         * typeck.c (check_literal_operator_args): Avoid building types.
915 2011-10-26  Ed Smith-Rowland  <3dw4rd@verizon.net>
917         Implement C++11 user-defined literals.
918         * cp-objcp-common.c: (cp_tree_size) Return size of USERDEF_LITERAL tree.
919         * cp-tree.h: (UDLIT_OP_*, UDLIT_OPER_P): Literal operator
920         name tools. New tree code for user-defined literals.
921         * cxx-pretty-print.h: (pp_cxx_userdef_literal) New.
922         * cxx-pretty-print.c: (pp_cxx_userdef_literal) New.
923         (pp_cxx_primary_expression, pp_cxx_expression): Use it.
924         * decl.c: (cp_tree_node_structure): Return new tree code.
925         (duplicate_decls): Check for raw vs. template operator conflicts.
926         (grokfndecl, grokdeclarator): New checks for literal operators.
927         * error.c: (dump_expr): Warn about user-defined literals
928         in C++98 mode. (dump_function_name): Pretty printing.
929         * mangle.c: (write_literal_operator_name): New.
930         (write_unqualified_id, write_unqualified_name): Use it.
931         * parser.c: (cp_parser_operator): Handle operator"".
932         (cp_parser_userdef_char_literal, cp_parser_userdef_numeric_literal,
933         cp_parser_userdef_string_literal): New.
934         (cp_parser_primary_expression): Handle new user-defined literal tokens
935         with new functions.
936         * semantics.c: (potential_constant_expression_1): Add
937         user-defined literals.
938         * typeck.c (check_raw_literal_operator,
939         check_literal_operator_args): New.
941 2011-10-26  Paolo Carlini  <paolo.carlini@oracle.com>
943         * typeck.c (cp_build_addr_expr_1): Use BASELINK_P.
944         * class.c (instantiate_type): Likewise.
945         * pt.c (convert_nontype_argument_function, uses_template_parms,
946         tsubst_copy, resolve_nondeduced_context, type_dependent_expression_p):
947         Likewise.
948         * semantics.c (finish_decltype_type): Likewise.
949         * decl2.c (mark_used): Likewise.
950         * name-lookup.c (arg_assoc): Likewise.
952 2011-10-26  Paolo Carlini  <paolo.carlini@oracle.com>
954         PR c++/50870
955         * typeck.c (non_reference): Pass NULL_TREE through.
957 2011-10-25  Jason Merrill  <jason@redhat.com>
959         PR c++/50866
960         PR c++/41449
961         * semantics.c (maybe_cleanup_point_expr_void): No longer static.
962         * typeck2.c (split_nonconstant_init_1): Use it.
963         * cp-tree.h: Declare it.
964         * decl.c (wrap_cleanups_r): Stop at CLEANUP_POINT_EXPR.
966         PR c++/49996
967         * tree.c (stabilize_init): Stabilize scalar elements of a
968         CONSTRUCTOR, too.
970 2011-10-25  Paolo Carlini  <paolo.carlini@oracle.com>
972         PR c++/50858
973         * typeck.c (composite_pointer_type_r): Check return value of
974         composite_pointer_type_r for error_mark_node.
976 2011-10-25  Paolo Carlini  <paolo.carlini@oracle.com>
978         PR c++/50861
979         * pt.c (tsubst_copy_and_build): Check return value of
980         tsubst_copy_and_build for error_mark_node.
982 2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
984         PR c++/50841
985         Revert:
986         2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
988         PR c++/50810
989         * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
990         (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
991         * decl.c (check_initializer): Likewise.
992         * semantics.c (finish_compound_literal): Likewise.
994 2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
996         PR c++/50810
997         * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
998         (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
999         * decl.c (check_initializer): Likewise.
1000         * semantics.c (finish_compound_literal): Likewise.
1002 2011-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
1004         PR c++/45385
1005         * init.c (build_vec_init): Early return error_mark_node if
1006         maxindex is -1.
1008 2011-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
1010         PR c++/31423
1011         * typeck2.c (cxx_incomplete_type_diagnostic): Improve error message
1012         for invalid use of member function.
1014 2011-10-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
1016         PR c++/50811
1017         * parser.c (cp_parser_class_head): Parse virt-specifiers
1018         regardless of whether an id is present
1020 2011-10-20  Jason Merrill  <jason@redhat.com>
1022         PR c++/41449
1023         * typeck2.c (split_nonconstant_init_1): Handle EH cleanup of
1024         initialized subobjects.
1026 2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>
1028         PR c++/13657
1029         * class.c (instantiate_type): Fix error message.
1031 2011-10-19  Jason Merrill  <jason@redhat.com>
1033         PR c++/50793
1034         * tree.c (bot_manip): Propagate AGGR_INIT_ZERO_FIRST.
1036 2011-10-19  Roland Stigge  <stigge@antcom.de>
1038         PR translation/49704
1039         * semantics.c (potential_constant_expression_1): Use "AST" instead of
1040         "ast" in sorry message.
1042 2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>
1044         PR c++/38761
1045         PR c++/40872
1046         * decl.c (duplicate_decls, make_typename_type, grokdeclarator): Use
1047         G_() in error message strings to facilitate translation.
1048         * semantics.c (finish_id_expression): Likewise.
1049         * parser.c (cp_parser_nested_name_specifier_opt,
1050         cp_parser_parameter_declaration): Likewise.
1052 2011-10-18  Jason Merrill  <jason@redhat.com>
1054         PR c++/50531
1055         * pt.c (instantiate_decl): Recognize when a function defaulted
1056         outside the class is already instantiated.
1058         PR c++/50742
1059         * decl.c (check_previous_goto_1): Handle using-decl.
1061 2011-10-18  Jason Merrill  <jason@redhat.com>
1063         PR c++/50500
1064         DR 1082
1065         * class.c (type_has_user_declared_move_constructor): New.
1066         (type_has_user_declared_move_assign): New.
1067         (add_implicitly_declared_members): Add lazy copy ops
1068         even if there's a move.
1069         * method.c (lazily_declare_fn): Delete implicit copies
1070         if there's a move.
1071         (maybe_explain_implicit_delete): Explain this.  Use inform rather
1072         than error.
1073         * cp-tree.h: Declare new fns.
1075 2011-10-18   Diego Novillo  <dnovillo@google.com>
1077         * parser.c: Remove ENABLE_CHECKING markers around debugging
1078         routines.
1079         (cp_lexer_dump_tokens): Add arguments START_TOKEN and CURR_TOKEN.
1080         Make static
1081         When printing CURR_TOKEN surround it in [[ ]].
1082         Start printing at START_TOKEN.
1083         Update all users.
1084         (cp_debug_print_tree_if_set): New.
1085         (cp_debug_print_context): New.
1086         (cp_debug_print_context_stack): New.
1087         (cp_debug_print_flag): New.
1088         (cp_debug_print_unparsed_function): New.
1089         (cp_debug_print_unparsed_queues): New.
1090         (cp_debug_parser_tokens): New.
1091         (cp_debug_parser): New.
1092         (cp_lexer_start_debugging): Set cp_lexer_debug_stream to stderr.
1093         (cp_lexer_stop_debugging): Set cp_lexer_debug_stream to NULL.
1094         * parser.h (cp_lexer_dump_tokens): Remove declaration.
1095         (cp_debug_parser): Declare.
1097 2011-10-17  Michael Spertus  <mike_spertus@symantec.com>
1099         * cp-tree.def: Add BASES as a new tree code.
1100         * cp-tree.h (enum cp_trait_kind): Add CPTK_BASES, CPTK_DIRECT_BASES.
1101         (BASES_TYPE, BASES_DIRECT): Define.
1102         (calculate_bases, finish_bases, calculate_direct_bases): Declare.
1103         * parser.c (cp_parser_trait_expr, cp_parser_template_argument_list,
1104         (cp_parser_simple_type_specifier, cp_parser_save_nsdmi): Use them.
1105         * pt.c (find_parameter_packs_r, tsubst_pack_expansion): Likewise.
1106         * semantics.c (calculate_bases, finish_bases, calculate_direct_bases,
1107         dfs_calculate_bases_pre, dfs_calculate_bases_post,
1108         calculate_bases_helper): Define.
1110 2011-10-17  Jason Merrill  <jason@redhat.com>
1112         PR c++/50736
1113         * parser.c (cp_parser_lambda_introducer): Check for more
1114         invalid captures.
1116 2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
1118         PR c++/44524
1119         * typeck.c (build_class_member_access_expr): Provide a better error
1120         message for X.Y where X is a pointer to class type.
1121         (finish_class_member_access_expr): Likewise.
1123 2011-10-15  Tom Tromey  <tromey@redhat.com>
1124             Dodji Seketeli  <dodji@redhat.com>
1126         * error.c (cp_diagnostic_starter): Pass the relevant location to
1127         diagnostic_report_current_module.
1128         (cp_diagnostic_finalizer): Call virt_loc_aware_diagnostic_finalizer.
1130 2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
1132         PR c++/48489
1133         * typeck.c (finish_class_member_access_expr): Fix error call
1134         for TREE_CODE (access_path) == TREE_BINFO.
1136 2011-10-15  Paolo Carlini  <paolo.carlini@oracle.com>
1138         PR c++/50732
1139         * semantics.c (finish_trait_expr): Do not try to instantiate the
1140         the base type of an __is_base_of trait.
1141         (check_trait_type): Return a tree; use complete_type_or_else.
1143 2011-10-14  Jason Merrill  <jason@redhat.com>
1145         PR c++/50563
1146         * parser.c (cp_parser_cache_group): Handle end==CPP_COMMA.
1147         (cp_parser_save_nsdmi): Pass it.
1149         PR c++/50707
1150         * method.c (walk_field_subobs): Check for NSDMI before
1151         complaining about uninitialized fields.
1153         * pt.c (tsubst_decl) [FIELD_DECL]: Use void_zero_node
1154         instead of error_mark_node as a placeholder.
1156 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
1158         PR c++/38174
1159         * call.c (add_builtin_candidate): If two pointers have a composite
1160         pointer type, generate a single candidate with that type.
1162 2011-10-13  Jason Merrill  <jason@redhat.com>
1164         PR c++/50614
1165         * cp-tree.h (VAR_TEMPL_TYPE_FIELD_OR_FUNCTION_DECL_CHECK): New.
1166         (DECL_TEMPLATE_INFO): Use it.
1167         * pt.c (tsubst_decl) [FIELD_DECL]: Set DECL_TEMPLATE_INFO
1168         if the decl has an NSDMI.
1169         * init.c (perform_member_init): Use it.
1171         PR c++/50437
1172         * cp-tree.h (struct tree_lambda_expr): Add closure field.
1173         (LAMBDA_EXPR_CLOSURE): New.
1174         * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Likewise.
1175         * semantics.c (build_lambda_object): Use it instead of TREE_TYPE.
1176         (begin_lambda_type, lambda_function, add_capture): Likewise.
1177         (add_default_capture, lambda_expr_this_capture): Likewise.
1179 2011-10-13   Diego Novillo  <dnovillo@google.com>
1181         * cp-tree.h (struct language_function): Rename in_function_try_handler
1182         to x_in_function_try_handler.
1183         Rename in_base_initializer to x_in_base_initializer.
1184         Update all users.
1186 2011-10-13   Diego Novillo  <dnovillo@google.com>
1188         * class.c (sorted_fields_type_new): Factor out of ...
1189         (finish_struct_1): ... here.
1191 2011-10-13  Jason Merrill  <jason@redhat.com>
1193         PR c++/50618
1194         * init.c (expand_aggr_init_1): Don't zero-initialize virtual
1195         bases of a base subobject.
1197 2011-10-12  Paolo Carlini  <paolo.carlini@oracle.com>
1199         PR c++/50594
1200         * decl.c (cxx_init_decl_processing): Add
1201         __attribute__((externally_visible)) to operator new and
1202         operator delete library fn.
1204 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
1206         * decl.c (duplicate_decls): Delete old interface with two parallel
1207         arrays to hold standard builtin declarations, and replace it with
1208         a function based interface that can support creating builtins on
1209         the fly in the future.  Change all uses, and poison the old
1210         names.  Make sure 0 is not a legitimate builtin index.
1211         * except.c (build_eh_type_type): Ditto.
1212         (choose_personality_routine): Ditto.
1213         * semantics.c (finish_omp_atomic): Ditto.
1214         (finish_omp_barrier): Ditto.
1215         (finish_omp_flush): Ditto.
1216         (finish_omp_taskwait): Ditto.
1218 2011-10-11  Jason Merrill  <jason@redhat.com>
1220         PR c++/49855
1221         PR c++/49896
1222         * cp-tree.def (IMPLICIT_CONV_EXPR): New.
1223         * call.c (perform_implicit_conversion_flags): Build it
1224         instead of NOP_EXPR.
1225         * cp-objcp-common.c (cp_common_init_ts): It's typed.
1226         * cxx-pretty-print.c (pp_cxx_cast_expression): Handle it.
1227         (pp_cxx_expression): Likewise.
1228         * error.c (dump_expr): Likewise.
1229         * semantics.c (potential_constant_expression_1): Likewise.
1230         * tree.c (cp_tree_equal): Likewise.
1231         (cp_walk_subtrees): Likewise.
1232         * pt.c (iterative_hash_template_arg): Likewise.
1233         (for_each_template_parm_r): Likewise.
1234         (type_dependent_expression_p): Likewise.
1235         (tsubst_copy, tsubst_copy_and_build): Handle IMPLICIT_CONV_EXPR
1236         and CONVERT_EXPR.
1237         * cp-tree.h (IMPLICIT_CONV_EXPR_DIRECT_INIT): New.
1239 2011-10-11  Paolo Carlini  <paolo.carlini@oracle.com>
1241         PR c++/50611
1242         * pt.c (tsubst_copy_and_build): If (complain & tf_error) is false
1243         do not call unqualified_name_lookup_error.
1245 2011-10-10  Paolo Carlini  <paolo.carlini@oracle.com>
1247         PR c++/50660
1248         * call.c (conversion_null_warnings): Don't look through references.
1250 2011-10-09  Paolo Carlini  <paolo.carlini@oracle.com>
1252         PR c++/38980
1253         * init.c (constant_value_1): Add bool parameter.
1254         (decl_constant_value_safe): Add.
1255         (integral_constant_value): Adjust.
1256         (decl_constant_value): Adjust.
1257         * cp-tree.h (decl_constant_value_safe): Declare.
1258         * typeck.c (decay_conversion): Use decl_constant_value_safe.
1259         * call.c (convert_like_real): Likewise.
1261 2011-10-09  Jakub Jelinek  <jakub@redhat.com>
1262             Diego Novillo  <dnovillo@google.com>
1264         * pt.c (reregister_specialization): Use htab_find instead of
1265         htab_find_slot with INSERT.
1266         (maybe_process_partial_specialization, lookup_template_class_1): Change
1267         slot variable type to void ** to avoid aliasing problems.
1268         (register_specialization): Likewise.  Use slot != NULL instead of
1269         more expensive !optimize_specialization_lookup_p (tmpl) test.
1271 2011-10-08  Paolo Carlini  <paolo.carlini@oracle.com>
1273         PR c++/34927
1274         * typeck2.c (abstract_virtuals_error_sfinae): Don't produce duplicate
1275         inform messages in case of cloned destructor.
1277 2011-10-06  Jason Merrill  <jason@redhat.com>
1279         PR c++/39164
1280         * decl.c (grokfndecl): Diagnose redefinition of defaulted fn.
1282 2011-10-02  Jason Merrill  <jason@redhat.com>
1284         * pt.c (tsubst_pack_expansion): Re-use ARGUMENT_PACK_SELECTs.
1285         Change unsubstituted_packs to bool.
1287         * parser.c (cp_parser_range_for): Don't try to deduce from {}
1288         in a template.
1290         PR c++/35722
1291         Implement N2555 (expanding pack expansion to fixed parm list)
1292         * pt.c (coerce_template_parms): Allow expanding a pack expansion
1293         to a fixed-length argument list.
1294         (unify_pack_expansion): Handle explicit args properly.
1295         (unify) [TREE_VEC]: Handle pack expansions here.
1296         [TYPE_ARGUMENT_PACK]: Not here.
1297         (tsubst_pack_expansion): Don't try to do partial substitution.
1298         (pack_deducible_p): New.
1299         (fn_type_unification): Use it.
1300         (find_parameter_packs_r): Take the TYPE_MAIN_VARIANT
1301         of a type parameter.
1302         (check_non_deducible_conversion): Split from type_unification_real.
1303         (unify_one_argument): Split from type_unification_real...
1304         (unify_pack_expansion): ...and here.  Drop call_args_p parm.
1305         (type_unification_real, unify, more_specialized_fn): Adjust.
1307         * class.c (fixed_type_or_null): Handle NSDMI.
1308         * method.c (walk_field_subobs): Disable NSDMI noexcept checking
1309         for now.
1311 2011-09-30  Jason Merrill  <jason@redhat.com>
1313         * cp-tree.h (TREE_NEGATED_INT): Remove.
1314         * semantics.c (finish_unary_op_expr): Don't set it.
1316 2011-09-30  Janis Johnson  <janisjo@codesourcery.com>
1318         PR c++/44473
1319         * mangle.c (write_type): Handle CV qualifiers for decimal classes.
1321 2011-09-26   Andi Kleen <ak@linux.intel.com>
1323         * repo.c (finish_repo): Use HOST_WIDE_INT_PRINT_HEX_PURE.
1325 2011-09-28  Paolo Carlini  <paolo.carlini@oracle.com>
1327         PR c++/45278
1328         * typeck.c (cp_build_binary_op): With -Wextra, warn for ordered
1329         comparison of pointer with zero.
1331 2011-09-27  Paolo Carlini  <paolo.carlini@oracle.com>
1333         PR c++/31489
1334         * parser.c (cp_parser_elaborated_type_specifier): For RECORD_TYPE,
1335         set CLASSTYPE_DECLARED_CLASS.
1337 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
1339         * decl.c (duplicate_decls): If compatible stpcpy prototype
1340         is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
1342 2011-09-26  Jason Merrill  <jason@redhat.com>
1344         PR c++/45012
1345         * pt.c (tsubst_copy_and_build) [CONST_DECL]: Don't pull out
1346         constant value if we're still in a template.
1348         PR c++/46105
1349         * typeck.c (structural_comptypes): Ignore cv-quals on typename scope.
1351         PR c++/50508
1352         * semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal
1353         rather than ==.
1355 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
1357         PR c++/45487
1358         * error.c (dump_template_bindings): Separate bindings with semicolons
1359         instead of commas.
1361 2011-09-26  Jason Merrill  <jason@redhat.com>
1363         PR c++/50512
1364         * call.c (compare_ics): Only consider rvaluedness_matches_p
1365         if the target type is the same or it too differs in rvalueness.
1367         PR c++/50523
1368         * call.c (implicit_conversion): Mask out inappropriate LOOKUP
1369         flags at the top of the function.
1371         * pt.c (tsubst_copy) [PARM_DECL]: Handle 'this' in NSDMI.
1373 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
1375         * pt.c (convert_nontype_argument): Handle NULLPTR_TYPE.
1377 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
1379         PR c++/26747
1380         * cp-gimplify.c (get_bc_label): Remove obsolete diagnostics.
1382 2011-09-25  Jason Merrill  <jason@redhat.com>
1384         * parser.c (inject_this_parameter): Split out from
1385         cp_parser_late_return_type_opt.
1386         (cp_parser_class_specifier_1): Use it for NSDMIs.
1387         * tree.c (bot_replace): Replace NSDMI 'this' with real 'this'.
1389 2011-09-24  Jason Merrill  <jason@redhat.com>
1391         * except.c (expr_noexcept_p): Split out from finish_noexcept_expr.
1392         * cp-tree.h: Declare it.
1393         * method.c (walk_field_subobs): Use it.
1395         * init.c (perform_member_init): Instantiate NSDMI here.
1396         * pt.c (tsubst_decl) [FIELD_DECL]: Not here.
1398         Handle deferred parsing of NSDMIs.
1399         * parser.h (cp_unparsed_functions_entry): Add nsdmis field.
1400         * parser.c (unparsed_nsdmis, cp_parser_save_nsdmi): New.
1401         (cp_parser_late_parse_one_default_arg): Split out from
1402         cp_parser_late_parsing_default_args.
1403         (cp_parser_late_parsing_nsdmi): New.
1404         (push_unparsed_function_queues): Set it.
1405         (cp_parser_parameter_declaration): Save the '=' token.
1406         (cp_parser_template_parameter): Likewise.
1407         (cp_parser_default_argument): Call cp_parser_initializer
1408         rather than cp_parser_initializer_clause.
1409         (cp_parser_class_specifier_1): Parse unparsed_nsdmis.
1410         (cp_parser_member_declaration): Handle nsdmis.
1411         * decl2.c (grokfield): Handle DEFAULT_ARG for a function.
1413         Implement C++11 non-static data member initializers.
1414         * cp-tree.h (enum cpp_warn_str): Add CPP0X_NSDMI.
1415         * error.c (maybe_warn_cpp0x): Handle it.
1416         * call.c (convert_like_real) [ck_user]: Don't complain about
1417         using an explicit constructor for direct-initialization.
1418         * class.c (check_field_decl): Fix ancient typo.
1419         (check_field_decls): NSDMIs make the default ctor non-trivial.
1420         * decl.c (cp_finish_decl): Record NSDMI.
1421         (grokdeclarator): Allow NSDMI.
1422         * decl2.c (grokfield): Allow NSDMI.  Correct LOOKUP flags.
1423         * init.c (perform_member_init): Use NSDMI.
1424         * method.c (walk_field_subobs): Check for NSDMI.
1425         * parser.c (cp_parser_member_declaration): Parse { } init.
1426         * semantics.c (register_constexpr_fundef): Don't talk about
1427         a return statement in a constexpr constructor.
1428         (cxx_eval_call_expression): Check DECL_INITIAL instead of
1429         DECL_SAVED_TREE.
1431 2011-09-24  Paolo Carlini  <paolo.carlini@oracle.com>
1433         PR c++/44267
1434         * class.c (build_base_path): Add a tsubst_flags_t parameter.
1435         (convert_to_base): Adjust call.
1436         * typeck.c (build_class_member_access_expr,
1437         get_member_function_from_ptrfunc, build_static_cast_1): Likewise.
1438         * init.c (dfs_initialize_vtbl_ptrs, emit_mem_initializers): Likewise.
1439         * method.c (do_build_copy_constructor, do_build_copy_assign): Likewise.
1440         * rtti.c (build_dynamic_cast_1): Likewise.
1441         * typeck2.c (build_scoped_ref, build_m_component_ref): Likewise.
1442         * call.c (build_over_call, build_special_member_call): Likewise.
1443         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
1444         build_up_reference): Likewise.
1445         * cp-tree.h (build_base_path): Adjust declaration.
1447 2011-09-23  Jason Merrill  <jason@redhat.com>
1449         Core 253 - allow const objects with no initializer or
1450         user-provided default constructor if the defaulted constructor
1451         initializes all the subobjects.
1452         PR c++/20039
1453         PR c++/42844
1454         * class.c (default_init_uninitialized_part): New.
1455         * cp-tree.h: Declare it.
1456         * decl.c (check_for_uninitialized_const_var): Use it.
1457         * init.c (perform_member_init): Likewise.
1458         (build_new_1): Likewise.
1459         * method.c (walk_field_subobs): Likewise.
1461 2011-09-23  Paolo Carlini  <paolo.carlini@oracle.com>
1463         PR c++/50258
1464         * decl.c (check_static_variable_definition): Allow in-class
1465         initialization of static data member of non-integral type in
1466         permissive mode.
1468 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
1470         PR c++/50491
1471         * semantics.c (potential_constant_expression_1): Handle USING_DECL.
1473 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
1475         PR c++/50371
1476         * pt.c (invalid_nontype_parm_type_p): Handle NULLPTR_TYPE.
1478 2011-09-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
1479             Paolo Carlini  <paolo.carlini@oracle.com>
1481         PR c++/50344
1482         * friend.c (make_friend_class): cv-qualification is ok in a
1483         friend declaration.
1485 2011-09-21  Paolo Carlini  <paolo.carlini@oracle.com>
1487         PR c++/50454
1488         * decl.c (grokdeclarator): Consistently handle both __int128
1489         and unsigned __int128 with -pedantic; suppress diagnostic in
1490         system headers.
1492 2011-09-20  Jason Merrill  <jason@redhat.com>
1494         * cp-tree.h (DECL_TEMPLOID_INSTANTIATION): New.
1495         (DECL_GENERATED_P): New.
1496         * class.c (finalize_literal_type_property): Use them.
1497         * semantics.c (is_instantiation_of_constexpr): Likewise.
1498         (register_constexpr_fundef): Likewise.
1500         * call.c (convert_default_arg): Avoid redundant copy.
1501         * tree.c (bot_manip): Copy everything.
1503 2011-09-20 Roberto Agostino Vitillo <ravitillo@lbl.gov>
1505         * call.c (build_new_method_call_1): Use non-virtual lookup
1506         for final virtual functions.
1508 2011-09-16  Jason Merrill  <jason@redhat.com>
1510         PR c++/50424
1511         * call.c (set_flags_from_callee): Split out from build_call_a.
1512         * cp-tree.h: Declare it.
1513         * tree.c (bot_manip): Call it.
1515 2011-09-15  Jason Merrill  <jason@redhat.com>
1517         PR c++/50365
1518         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
1519         for clearing current_class_ptr, too.
1521 2011-09-14   Diego Novillo  <dnovillo@google.com>
1523         * name-lookup.c (lookup_arg_dependent): Use conditional
1524         timevars.
1525         * decl.c (xref_tag): Likewise.
1527 2011-09-14  Paolo Carlini  <paolo.carlini@oracle.com>
1529         PR c++/50391
1530         * pt.c (regenerate_decl_from_template): Don't pass an error_mark_node
1531         to build_exception_variant.
1533 2011-09-13  Dodji Seketeli  <dodji@redhat.com>
1535         PR c++/48320
1536         * pt.c (template_parameter_pack_p): Support TEMPLATE_PARM_INDEX
1537         nodes.  Add a comment.
1538         (arg_from_parm_pack_p):  New static function, factorized out from
1539         tsubst_pack_expansion and extended to support non-type parameter
1540         packs represented with TEMPLATE_PARM_INDEX nodes.
1541         (tsubst_pack_expansion): Use arg_from_parm_pack_p.
1543 2011-09-12  Jason Merrill  <jason@redhat.com>
1545         * pt.c (type_unification_real): Fix handling of DEDUCE_CONV
1546         with no deducible template parameters.
1547         * call.c (rejection_reason_code): Add rr_template_conversion.
1548         (print_z_candidate): Handle it.
1549         (template_conversion_rejection): New.
1550         (build_user_type_conversion_1): Use it.
1552         * call.c (merge_conversion_sequences): Set bad_p and user_conv_p
1553         on all of the second conversion sequence.
1554         (build_user_type_conversion_1): Set bad_p on the ck_user conv.
1555         (convert_like_real): Handle bad ck_ref_bind with user_conv_p in the
1556         first section.  Fix loop logic.
1557         (initialize_reference): Call convert_like for diagnostics when
1558         we have a (bad) conversion.
1560         * call.c (convert_class_to_reference)
1561         (convert_class_to_reference_1): Remove.
1562         (reference_binding): Use build_user_type_conversion_1 instead.
1564         * call.c (initialize_reference): Add flags parm.
1565         * decl.c (grok_reference_init): Likewise.
1566         (check_initializer): Pass it.
1567         * typeck.c (convert_for_initialization): Likewise.
1568         * cp-tree.h: Adjust.
1570         * cp-tree.h (LOOKUP_NO_RVAL_BIND): New.
1571         * call.c (conditional_conversion): Use it.
1572         (reference_binding): Fix handling of xvalues.
1574 2011-09-09  Jason Merrill  <jason@redhat.com>
1576         * call.c (implicit_conversion): Check BRACE_ENCLOSED_INITIALIZER_P
1577         before forcing instantiation.
1579 2011-09-08  Paolo Carlini  <paolo.carlini@oracle.com>
1581         PR c++/50324
1582         * typeck2.c (digest_init_r): Call complete_type_or_maybe_complain
1583         instead of complete_type_or_else.
1585 2011-09-08  Dodji Seketeli  <dodji@redhat.com>
1587         PR c++/33255 - Support -Wunused-local-typedefs warning
1588         * name-lookup.c (pushdecl_maybe_friend_1): Use the new
1589         record_locally_defined_typedef.
1590         * decl.c (finish_function): Use the new
1591         maybe_warn_unused_local_typedefs.
1592         (grokfield): Use the new record_locally_defined_typedef.
1593         * parser.c (lookup_name): Use the new maybe_record_typedef_use.
1595 2011-09-07  Paolo Carlini  <paolo.carlini@oracle.com>
1597         PR c++/50309
1598         * decl.c (grokdeclarator): Check u.function.exception_specification
1599         for error_mark_node.
1601 2011-09-07  Jason Merrill  <jason@redhat.com>
1603         PR c++/50298
1604         * parser.c (cp_parser_member_declaration): Don't require a constant
1605         rvalue here in C++0x.
1607         * pt.c (type_unification_real): Correct complain arg for tsubsting
1608         default template args.
1610         * pt.c (tsubst_aggr_type): Check TYPE_P before tsubsting.
1612 2011-09-06  Jason Merrill  <jason@redhat.com>
1614         PR c++/50296
1615         * semantics.c (register_constexpr_fundef): Call is_valid_constexpr_fn.
1616         (cx_check_missing_mem_inits): Handle bases and empty trivial members.
1617         (validate_constexpr_fundecl): Remove.
1618         * decl.c (start_preparsed_function): Don't call it.
1619         * cp-tree.h: Don't declare it.
1621 2011-09-04  Jason Merrill  <jason@redhat.com>
1623         PR c++/49267
1624         * call.c (reference_binding): Don't set is_lvalue for an rvalue
1625         reference rfrom.
1627         PR c++/49267
1628         PR c++/49458
1629         DR 1328
1630         * call.c (reference_binding): Set rvaluedness_matches_p properly
1631         for reference to function conversion ops.
1632         (compare_ics): Adjust.
1634         * class.c (trivial_default_constructor_is_constexpr): Rename from
1635         synthesized_default_constructor_is_constexpr.
1636         (type_has_constexpr_default_constructor): Adjust.
1637         (add_implicitly_declared_members): Call it instead.
1638         (explain_non_literal_class): Explain about non-constexpr default ctor.
1639         * cp-tree.h: Adjust.
1640         * method.c (synthesized_method_walk): Adjust.
1641         * semantics.c (explain_invalid_constexpr_fn): Handle defaulted
1642         functions, too.
1644         PR c++/50248
1645         Core 1358
1646         * init.c (perform_member_init): Don't diagnose missing inits here.
1647         (emit_mem_initializers): Or here.
1648         * method.c (process_subob_fn): Don't instantiate constexpr ctors.
1649         * semantics.c (cx_check_missing_mem_inits): New.
1650         (explain_invalid_constexpr_fn): Call it.
1651         (register_constexpr_fundef): Likewise.  Leave
1652         DECL_DECLARED_CONSTEXPR_P set when the body is unsuitable.
1653         (cxx_eval_call_expression): Adjust diagnostics.
1654         (cxx_eval_constant_expression): Catch use of 'this' in a constructor.
1656 2011-08-30  Jason Merrill  <jason@redhat.com>
1658         PR c++/50084
1659         * cp-tree.h (cp_decl_specifier_seq): Rename user_defined_type_p
1660         to type_definition_p.
1661         * parser.c (cp_parser_set_decl_spec_type): Likewise.
1662         * decl.c (grokdeclarator): Check it.
1664         PR c++/50089
1665         * semantics.c (finish_id_expression): Use
1666         current_nonlambda_class_type for qualified-ids.
1668         PR c++/50114
1669         * decl.c (poplevel): Disable for scope compatibility hack
1670         in C++11 mode.
1672         PR c++/50220
1673         * semantics.c (add_capture): Call complete_type for copy.
1675         PR c++/50234
1676         * semantics.c (cxx_eval_component_reference): Handle
1677         value-initialization for omitted initializers.
1679 2011-08-29  Jason Merrill  <jason@redhat.com>
1681         PR c++/50224
1682         * semantics.c (finish_id_expression): Mark captured variables used.
1684 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
1685             Jason Merrill  <jason@redhat.com>
1687         PR c++/50207
1688         * class.c (finish_struct_1): Complain if the first field is
1689         artificial.
1691 2011-08-29  Jason Merrill  <jason@redhat.com>
1693         PR c++/50209
1694         Core DR 994
1695         * parser.c (cp_parser_default_argument): Use
1696         cp_parser_initializer_clause.
1697         (cp_parser_late_parsing_default_args): Likewise.
1699 2011-08-26  Jason Merrill  <jason@redhat.com>
1701         Core DR 342
1702         PR c++/48582
1703         * pt.c (check_valid_ptrmem_cst_expr): A null member pointer value
1704         is valid in C++11.
1705         (convert_nontype_argument): Likewise.  Implicitly convert nullptr
1706         and do constant folding.
1707         * mangle.c (write_template_arg_literal): Mangle null member
1708         pointer values as 0.
1709         * call.c (null_member_pointer_value_p): New.
1710         * cp-tree.h: Declare it.
1712 2011-08-25  Jason Merrill  <jason@redhat.com>
1714         * call.c (convert_like_real): Remove redundant complain checks.
1716         PR c++/50157
1717         * call.c (convert_like_real): Exit early if bad and !tf_error.
1719 2011-08-23  Jason Merrill  <jason@redhat.com>
1721         * typeck2.c (build_functional_cast): Don't try to avoid calling
1722         build_value_init.
1723         * pt.c (instantiate_class_template_1): Don't copy TYPE_HAS_* flags.
1725 2011-08-23  Jason Merrill  <jason@redhat.com>
1727         PR c++/49045
1728         Core 1321
1729         * tree.c (dependent_name): New.
1730         (cp_tree_equal): Two calls with the same dependent name are
1731         equivalent even if the overload sets are different.
1733 2011-08-23  Jason Merrill  <jason@redhat.com>
1735         * tree.c (build_target_expr): Set TREE_CONSTANT on
1736         literal TARGET_EXPR if the value is constant.
1737         * typeck2.c (build_functional_cast): Don't set it here.
1739 2011-08-23  Jason Merrill  <jason@redhat.com>
1741         Core 903 (partial)
1742         * call.c (null_ptr_cst_p): Only 0 qualifies in C++11.
1744 2011-08-23  Jason Merrill  <jason@redhat.com>
1746         Core 975
1747         * decl.c (cxx_init_decl_processing): Initialize
1748         dependent_lambda_return_type_node.
1749         * cp-tree.h (cp_tree_index): Add CPTI_DEPENDENT_LAMBDA_RETURN_TYPE.
1750         (dependent_lambda_return_type_node): Define.
1751         (DECLTYPE_FOR_LAMBDA_RETURN): Remove.
1752         * semantics.c (lambda_return_type): Handle overloaded function.
1753         Use dependent_lambda_return_type_node instead of
1754         DECLTYPE_FOR_LAMBDA_RETURN.
1755         (apply_lambda_return_type): Don't check dependent_type_p.
1756         * pt.c (tsubst_copy_and_build): Handle lambda return type deduction.
1757         (instantiate_class_template_1): Likewise.
1758         (tsubst): Don't use DECLTYPE_FOR_LAMBDA_RETURN.
1759         * mangle.c (write_type): Likewise.
1760         * typeck.c (structural_comptypes): Likewise.
1761         (check_return_expr): Handle dependent_lambda_return_type_node.
1763 2011-08-23  Jason Merrill  <jason@redhat.com>
1765         PR c++/50024
1766         * semantics.c (maybe_constant_value): Don't try to fold { }.
1767         * pt.c (build_non_dependent_expr): Don't wrap { }.
1768         * init.c (build_value_init): Allow scalar value-init in templates.
1770 2011-08-23  Jason Merrill  <jason@redhat.com>
1772         * semantics.c (potential_constant_expression_1): Allow 'this'.
1774 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
1776         PR c++/50158
1777         * typeck.c (cp_build_modify_expr): Call mark_rvalue_use on rhs
1778         if it has side-effects and needs to be preevaluated.
1780 2011-08-23  Siddhesh Poyarekar  <siddhesh.poyarekar@gmail.com>
1782         PR c++/50055
1783         * except.c (begin_eh_spec_block): Build EH_SPEC block on the
1784         same line as the function.
1786 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
1788         PR c++/46862
1789         * class.c (finish_struct_1): If TYPE_TRANSPARENT_AGGR is set on a type
1790         which doesn't have any fields, clear it and diagnose.
1792 2011-08-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1793             Marc Glisse  <marc.glisse@normalesup.org>
1795         PR libstdc++-v3/1773
1796         * mangle.c (decl_mangling_context): Call
1797         targetm.cxx.decl_mangling_context.
1798         (write_unscoped_name): Use decl_mangling_context.
1800 2011-08-18  Dodji Seketeli  <dodji@redhat.com>
1802         PR c++/45625
1803         * pt.c (parameter_of_template_p): Handle comparison with DECLs of
1804         template parameters as created by process_template_parm.
1806 2011-08-16  Jason Merrill  <jason@redhat.com>
1808         PR c++/50086
1809         * pt.c (unify_pack_expansion): Correct overloaded unification
1810         logic.
1812         * pt.c (instantiate_class_template_1): If DECL_PRESERVE_P is set
1813         on a member function or static data member, call mark_used.
1815         PR c++/50054
1816         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
1817         init_list_type_node.
1819 2011-08-13  Jason Merrill  <jason@redhat.com>
1821         PR c++/50075
1822         * name-lookup.c (local_bindings_p): New.
1823         * name-lookup.h: Declare it.
1824         * lex.c (unqualified_name_lookup_error): Use it.
1826         PR c++/50059
1827         * error.c (dump_expr): Handle MODIFY_EXPR properly.
1829         * decl.c (grok_reference_init): Handle constexpr here.
1830         * call.c (initialize_reference): Not here.
1832 2011-08-12  David Li  <davidxl@google.com>
1834         * class.c (update_vtable_entry_for_fn): Set
1835         LOST_PRIMARY bit properly.
1837 2011-08-12  Jason Merrill  <jason@redhat.com>
1839         PR c++/50034
1840         * call.c (convert_arg_to_ellipsis): force_rvalue only in
1841         potentially evaluated context.
1843 2011-08-12  Richard Guenther  <rguenther@suse.de>
1845         * call.c (build_over_call): Instead of memcpy use an
1846         assignment of two MEM_REFs.
1848 2011-08-11  Romain Geissler  <romain.geissler@gmail.com>
1849             Brian Hackett  <bhackett1024@gmail.com>
1851         * decl.c (cp_finish_decl): Invoke callbacks on finish_decl event.
1853 2011-08-10  Richard Guenther  <rguenther@suse.de>
1855         * call.c (build_over_call): Call memcpy unconditionally.
1857 2011-08-08  Jason Merrill  <jason@redhat.com>
1859         PR c++/50020
1860         * semantics.c (finish_call_expr): Don't look at 'this' if we
1861         had an explicit object argument.
1863         PR c++/50011
1864         * typeck2.c (check_narrowing): Fix integer logic.
1866 2011-08-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1868         * Make-lang.in (g++$(exeext)): Add $(EXTRA_GCC_LIBS).
1870 2011-08-05  Jason Merrill  <jason@redhat.com>
1872         PR c++/48993
1873         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Sorry
1874         on 'this' in a constructor.
1876         PR c++/49921
1877         * semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p.
1879         PR c++/49669
1880         * init.c (perform_member_init): Handle invalid array initializer.
1882         PR c++/49988
1883         * semantics.c (cxx_eval_array_reference): Handle failure to
1884         reduce the array operand to something we can work with.
1886 2011-08-05  Gabriel Charette  <gchare@google.com>
1888         * decl.c (finish_function): Remove unecessary line 0 hack.
1890 2011-08-05  Jason Merrill  <jason@redhat.com>
1892         PR c++/47453
1893         * typeck.c (build_x_compound_expr_from_list): Also complain
1894         about ({...}).
1896         PR c++/49812
1897         * typeck.c (cp_build_unary_op) [POSTINCREMENT_EXPR]: Strip cv-quals.
1899         PR c++/49983
1900         * parser.c (cp_parser_range_for): Only do auto deduction in
1901         template if the range is non-dependent.
1903         * init.c (perform_member_init): Always build_aggr_init
1904         for a class member with an explicit mem-initializer.
1906         * pt.c (unify) [TEMPLATE_TYPE_PARM]: Allow VLA for C++0x 'auto'.
1908 2011-08-04  Jakub Jelinek  <jakub@redhat.com>
1910         PR middle-end/49905
1911         * decl.c (cxx_init_decl_processing): Add alloc_size (1) attribute
1912         for operator new and operator new [].  Call init_attributes.
1914 2011-08-02  Jason Merrill  <jason@redhat.com>
1916         PR c++/43886
1917         * parser.c (cp_parser_lambda_body): Clear local_variables_forbidden_p.
1919         PR c++/49577
1920         * typeck2.c (check_narrowing): Check unsigned mismatch.
1921         * semantics.c (finish_compound_literal): check_narrowing.
1923         PR c++/49593
1924         * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR.
1926         PR c++/49803
1927         * init.c (sort_mem_initializers): Initialize uses_unions_p here.
1928         (build_field_list): Not here.
1930         PR c++/49834
1931         * parser.c (build_range_temp): Split out from...
1932         (cp_convert_range_for): ...here.
1933         (do_range_for_auto_deduction): New.
1934         (cp_parser_range_for): Use it.
1936 2011-08-02  Jakub Jelinek  <jakub@redhat.com>
1938         * cp-tree.h (finish_omp_atomic): Adjust prototype.
1939         (cxx_omp_const_qual_no_mutable): New prototype.
1940         (finish_omp_taskyield): New prototype.
1941         * parser.c (cp_parser_omp_atomic): (cp_parser_omp_atomic): Handle
1942         parsing OpenMP 3.1 atomics.  Adjust finish_omp_atomic caller.
1943         (cp_parser_omp_clause_name): Handle final and mergeable clauses.
1944         (cp_parser_omp_clause_final, cp_parser_omp_clause_mergeable): New
1945         functions.
1946         (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FINAL
1947         and PRAGMA_OMP_CLAUSE_MERGEABLE.
1948         (OMP_TASK_CLAUSE_MASK): Allow final and mergeable clauses.
1949         (cp_parser_omp_taskyield): New function.
1950         (cp_parser_pragma): Handle PRAGMA_OMP_TASKYIELD.
1951         (cp_parser_omp_clause_reduction): Handle min and max.
1952         * pt.c (tsubst_expr) <case OMP_ATOMIC>: Handle OpenMP 3.1 atomics.
1953         (tsubst_omp_clauses): Handle OMP_CLAUSE_FINAL and
1954         OMP_CLAUSE_MERGEABLE.
1955         * semantics.c (finish_omp_atomic): Add OPCODE, V, LHS1 and RHS1
1956         arguments.  Handle OpenMP 3.1 atomics.  Adjust c_finish_omp_atomic
1957         caller.
1958         (finish_omp_clauses): Don't complain about const qualified
1959         predetermined vars and static data members in firstprivate clause.
1960         Handle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE. Handle MIN_EXPR
1961         and MAX_EXPR.
1962         (finish_omp_taskyield): New function.
1963         * cp-gimplify.c (cxx_omp_const_qual_no_mutable): New function.
1964         (cxx_omp_predetermined_sharing): Use it.
1966 2011-08-02  Jason Merrill  <jason@redhat.com>
1968         * call.c (build_call_a): Also check at_function_scope_p.
1970 2011-08-01  Jason Merrill  <jason@redhat.com>
1972         PR c++/49932
1973         * mangle.c (write_prefix): Handle decltype.
1975         PR c++/49924
1976         * semantics.c (cxx_eval_vec_init_1): Fix logic.
1978         PR c++/49813
1979         * semantics.c (potential_constant_expression_1): Allow any builtin.
1980         (morally_constexpr_builtin_function_p): Remove.
1982 2011-07-29  Jason Merrill  <jason@redhat.com>
1984         PR c++/49867
1985         * parser.c (cp_parser_lambda_expression): Also clear in_statement
1986         and in_switch_statement_p.
1987         (cp_parser_class_specifier): Likewise.
1989 2011-07-28  Jason Merrill  <jason@redhat.com>
1991         PR c++/49808
1992         * pt.c (tsubst) [TEMPLATE_PARM_INDEX]: Call convert_from_reference.
1993         (convert_nontype_argument, tsubst_template_arg): Handle its output.
1995 2011-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
1997         PR c++/49813
1998         * semantics.c (potential_constant_expression_1):  Handle FMA_EXPR.
2000 2011-07-27  Jeffrey Yasskin  <jyasskin@google.com>
2002         * pt.c (build_template_decl): Copy the function_decl's
2003         source location to the new template_decl.
2005 2011-07-26  Paolo Carlini  <paolo.carlini@oracle.com>
2007         PR c++/49776
2008         * typeck.c (cp_build_modify_expr): Check digest_init return value
2009         for error_mark_node.
2011 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
2013         PR bootstrap/49845
2014         * parser.c (cp_parser_perform_range_for_lookup): Always assign *being
2015         and *end before returning.
2017 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
2019         PR c++/49838
2020         * parser.c (cp_parser_perform_range_for_lookup): Early return if
2021         error_operand_p (range).
2023 2011-07-23  Jason Merrill  <jason@redhat.com>
2025         PR c++/49823
2026         * parser.c (cp_parser_qualifying_entity): Handle templates.
2028 2011-07-22  Jason Merrill  <jason@redhat.com>
2030         PR c++/49793
2031         * typeck2.c (check_narrowing): Downgrade permerror to pedwarn.
2032         Make conditional on -Wnarrowing.
2034 2011-07-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
2036         Warn about the use of final/override in non-c++0x mode, and
2037         add __final for non-c++0x mode.
2038         * cp-tree.h (cpp0x_warn_str): Add CPP0X_OVERRIDE_CONTROLS.
2039         * error.c (maybe_warn_cpp0x): Adjust.
2040         * parser.c (cp_parser_virt_specifier_seq_opt): Use it. Add
2041         '__final' as a non-c++0x alternative for 'final'.
2043 2011-07-22  Jason Merrill  <jason@redhat.com>
2044             Mark Glisse  <marc.glisse@normalesup.org>
2046         PR c++/30112
2047         * decl.c (cp_finish_decl): Apply pragma redefine_extname in
2048         other namespaces as well.
2049         * name-lookup.c (c_linkage_bindings): Define.
2050         (lookup_extern_c_fun_in_all_ns): Rename from
2051         lookup_extern_c_fun_binding_in_all_ns.  Return tree.
2052         (pushdecl_maybe_friend_1): Adjust.  Copy DECL_ASSEMBLER_NAME.
2054 2011-07-20  Jason Merrill  <jason@redhat.com>
2056         * parser.c (cp_parser_initializer_list): Handle C99 .id= and [N]=
2057         designated initializer syntax.
2058         * decl.c (check_array_designated_initializer): Add index parm.
2059         (maybe_deduce_size_from_array_init): Pass it.
2060         (reshape_init_array_1): Likewise.
2062         PR c++/6709 (DR 743)
2063         PR c++/42603 (DR 950)
2064         * parser.c (token_is_decltype, cp_lexer_next_token_is_decltype): New.
2065         (cp_parser_nested_name_specifier_opt): Allow decltype.
2066         (cp_parser_qualifying_entity): Likewise.
2067         (cp_parser_decltype): Replace source tokens with CPP_DECLTYPE.
2068         (cp_parser_simple_type_specifier): Handle decltype as scope.
2069         (cp_parser_base_specifier): Allow decltype.
2070         (cp_parser_base_clause): Don't crash on null base.
2071         * parser.h (CPP_KEYWORD, CPP_TEMPLATE_ID): Move to c-common.h.
2072         (CPP_NESTED_NAME_SPECIFIER, N_CP_TTYPES): Likewise.
2074 2011-07-19  Jason Merrill  <jason@redhat.com>
2076         PR c++/49785
2077         * pt.c (coerce_template_parms): Handle non-pack after pack.
2079 2011-07-19  Richard Guenther  <rguenther@suse.de>
2081         * call.c (build_special_member_call): Use fold_build_pointer_plus.
2082         * class.c (build_base_path): Likewise.
2083         (convert_to_base_statically): Likewise.
2084         (dfs_accumulate_vtbl_inits): Likewise.
2085         * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
2086         * except.c (expand_start_catch_block): Likewise.
2087         * init.c (expand_virtual_init): Likewise.
2088         (build_new_1): Likewise.
2089         (build_vec_delete_1): Likewise.
2090         (build_vec_delete): Likewise.
2091         * rtti.c (build_headof): Likewise.
2092         (tinfo_base_init): Likewise.
2093         * typeck.c (get_member_function_from_ptrfunc): Likewise.
2094         (cp_build_addr_expr_1): Likewise.
2095         * typeck2.c (build_m_component_ref): Likewise.
2097 2011-07-18  Martin Jambor  <mjambor@suse.cz>
2099         * parser.c (cp_parser_parameter_declaration_list): Initialize
2100         parenthesized_p.
2102 2011-07-16  Jason Merrill  <jason@redhat.com>
2104         * pt.c (tinst_level_tick, last_template_error_tick): Replace with
2105         last_error_tinst_level.
2106         (push_tinst_level, pop_tinst_level): Adjust.
2107         (problematic_instantiation_changed): Adjust.
2108         (record_last_problematic_instantiation): Adjust.
2109         * error.c (cp_print_error_function): Don't print
2110         current_function_decl if we're in a template instantiation context.
2111         (print_instantiation_full_context): Always print first line.
2113 2011-07-16  Nathan Froyd  <froydnj@codesourcery.com>
2114             Jason Merrill  <jason@redhat.com>
2116         PR c++/45329
2117         PR c++/48934
2118         * cp-tree.h (fn_type_unification): Add `bool' parameter.
2119         * pt.c (enum template_base_result): Define.
2120         (unify_success, unify_unknown): Define.
2121         (unify_parameter_deduction_failure): Define.
2122         (unify_invalid, unify_cv_qual_mismatch, unify_type_mismatch): Define.
2123         (unify_parameter_pack_mismatch): Define.
2124         (unify_parameter_pack_inconsistent): Define.
2125         (unify_ptrmem_cst_mismatch, unify_vla_arg): Define.
2126         (unify_expression_unequal, unify_inconsistency): Define.
2127         (unify_method_type_error, unify_arity): Likewise.
2128         (unify_too_many_parameters, unify_too_few_parameters): Define.
2129         (unify_arg_conversion, unify_no_common_base): Define.
2130         (unify_illformed_ptrmem_cst_expr): Define.
2131         (unify_substitution_failure): Define.
2132         (unify_inconsistent_template_template_parameters): Define.
2133         (unify_template_deduction_failure): Define.
2134         (unify_template_argument_mismatch): Define.
2135         (unify_overload_resolution_failure): Define.
2136         (comp_template_args_with_info): New function, split out from...
2137         (comp_template_args): ...here.  Call it.
2138         (deduction_tsubst_fntype): Add `complain' parameter'.  Pass it
2139         to tsubst.
2140         (unify): Add `explain_p' parameter.  Pass to all relevant calls.
2141         Call above status functions when appropriate.
2142         (resolve_overloaded_unification, try_one_overload): Likewise.
2143         (type_unification, type_unification_real): Likewise.
2144         (unify_pack_expansion): Likewise.
2145         (get_template_base, try_class_unification): Likewise.
2146         (get_bindings, more_specialized_fn): Pass false to unification
2147         calls.
2148         (get_class_bindings, do_auto_deduction): Likewise.
2149         (convert_nontype_argument): Likewise.
2150         (fn_type_unification): Likewise.  Pass tf_warning_or_error if
2151         explain_p.
2152         (get_template_base): Add `explain_p' parameter and pass it to
2153         try_class_unification.  Return an enum template_base_result.
2154         * class.c (resolve_address_of_overloaded_function): Pass false to
2155         fn_type_unification.
2156         * call.c (enum rejection_reason_code): Add new codes.
2157         (struct rejection_reason): Add template_unification field.
2158         Add template_instantiation field.
2159         (template_unification_rejection): Define.
2160         (template_unification_error_rejection): Define.
2161         (template_instantiation_rejection): Define.
2162         (invalid_copy_with_fn_template_rejection): Define.
2163         (add_template_candidate): Pass false to unify.
2164         Provide more rejection reasons when possible.
2165         (print_template_unification_rejection): Define.
2166         (print_arity_rejection): Define, split out from...
2167         (print_z_candidate): ...here.  Add cases for new rejection
2168         reasons.
2170 2011-07-15  Jason Merrill  <jason@redhat.com>
2172         * Make-lang.in (check-g++-strict-gc): New.
2173         (cp/except.o): Depend on gt-cp-except.h
2174         * except.c: Include gt-cp-except.h.
2175         * config-lang.in (gtfiles): Add cp/except.c.
2176         * decl2.c (mark_used): Adjust constexpr condition, set
2177         function_depth around template instantiation.
2178         * parser.c (cp_parser_lambda_body): Set function_depth.
2179         * semantics.c (maybe_add_lambda_conv_op): Likewise.
2181         PR testsuite/49741
2182         * Make-lang.in (check-c++0x): Use --extra_opts instead of--tool_opts.
2184 2011-07-13  Jason Merrill  <jason@redhat.com>
2186         * Make-lang.in (check-c++0x): New.
2188 2011-07-13  Richard Sandiford  <richard.sandiford@linaro.org>
2190         * typeck2.c (split_nonconstant_init_1): Pass the initializer directly,
2191         rather than a pointer to it.  Return true if the whole of the value
2192         was initialized by the generated statements.  Use
2193         complete_ctor_at_level_p instead of count_type_elements.
2195 2011-07-12   Diego Novillo  <dnovillo@google.com>
2197         * name-lookup.h (cp_binding_level): Rename from cxx_scope.
2198         Update all users.
2199         (struct cp_binding_level): Fix indentation.
2201 2011-07-11  Jason Merrill  <jason@redhat.com>
2203         PR c++/49672
2204         * pt.c (extract_fnparm_pack): Split out from...
2205         (make_fnparm_pack): ...here.
2206         (instantiate_decl): Handle non-pack parms after a pack.
2207         * semantics.c (maybe_add_lambda_conv_op): Don't in a template.
2209         * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p.
2211         PR c++/44609
2212         * cp-tree.h (struct tinst_level): Add errors field.
2213         * pt.c (neglectable_inst_p, limit_bad_template_recurson): New.
2214         (push_tinst_level): Don't start another decl in that case.
2215         (reopen_tinst_level): Adjust errors field.
2216         * decl2.c (cp_write_global_declarations): Don't complain about
2217         undefined inline if its template was defined.
2218         * mangle.c (mangle_decl_string): Handle failure from push_tinst_level.
2220 2011-07-10  Jason Merrill  <jason@redhat.com>
2222         PR c++/49691
2223         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
2224         rather than current_class_type to determine whether to set 'this'.
2225         (cp_parser_direct_declarator): Pass -1 to quals if member_p is false.
2226         (cp_parser_init_declarator): Pass down member_p.
2228 2011-07-09  Jason Merrill  <jason@redhat.com>
2230         * tree.c (build_vec_init_elt): Strip TARGET_EXPR.
2232 2011-07-08  Jason Merrill  <jason@redhat.com>
2234         PR c++/45437
2235         * typeck.c (cp_build_modify_expr): Preevaluate RHS.
2237         * method.c (use_thunk): Use cgraph_add_to_same_comdat_group.
2238         * optimize.c (maybe_clone_body): Likewise.
2239         * semantics.c (maybe_add_lambda_conv_op): Likewise.
2241         PR c++/45603
2242         * decl.c (expand_static_init): Don't get confused by user
2243         declaration of __cxa_guard_acquire.
2245         * typeck.c (cp_apply_type_quals_to_decl): Don't check
2246         COMPLETE_TYPE_P either.
2248         PR c++/49673
2249         * typeck.c (cp_apply_type_quals_to_decl): Don't check
2250         TYPE_NEEDS_CONSTRUCTING.
2252 2011-07-07  Jason Merrill  <jason@redhat.com>
2254         PR c++/49663
2255         * pt.c (push_deduction_access_scope): Preserve
2256         processing_template_decl across push_to_top_level.
2257         And revert:
2258         * class.c (pushclass): Accept NULL argument.
2259         (popclass): Deal with popping null class.
2260         * pt.c (push_access_scope, pop_access_scope): Use them rather than
2261         push_to_top_level/pop_from_top_level.
2262         * name-lookup.c (lookup_name_real_1): Check current_class_type.
2264 2011-07-07  Jakub Jelinek  <jakub@redhat.com>
2266         PR c/49644
2267         * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
2268         one non-complex and one complex argument, call save_expr on both
2269         operands.
2271 2011-07-06  Jason Merrill  <jason@redhat.com>
2273         PR c++/49353
2274         * semantics.c (expand_or_defer_fn_1): Clear DECL_EXTERNAL
2275         on kept inlines.
2277         PR c++/49568
2278         * method.c (make_thunk, use_thunk): Copy DECL_COMDAT.
2280 2011-07-05  Jason Merrill  <jason@redhat.com>
2282         PR c++/48157
2283         * pt.c (tsubst_qualified_id): Preserve TEMPLATE_ID_EXPR in
2284         partial instantiation.
2286         PR c++/49598
2287         * semantics.c (finish_id_expression): convert_from_reference.
2289 2011-07-05  Richard Guenther  <rguenther@suse.de>
2291         * decl.c (cxx_init_decl_processing): Defer building common
2292         tree nodes to c_common_nodes_and_builtins.
2294 2011-07-04  Jason Merrill  <jason@redhat.com>
2296         DR 1207
2297         PR c++/49589
2298         * mangle.c (write_expression): Handle 'this'.
2299         * parser.c (cp_parser_postfix_dot_deref_expression): Allow
2300         incomplete *this.
2301         * semantics.c (potential_constant_expression_1): Check that
2302         DECL_CONTEXT is set on 'this'.
2304         * error.c (dump_template_bindings): Don't print typenames
2305         for a partial instantiation.
2306         (dump_function_decl): If we aren't printing function arguments,
2307         print template arguments as <args> rather than [with ...].
2308         (dump_expr): Don't print return type or template header.
2309         [BASELINK]: Use BASELINK_FUNCTIONS rather than get_first_fn.
2310         * pt.c (dependent_template_arg_p): Handle null arg.
2312         * error.c (type_to_string): Avoid redundant akas.
2314 2011-07-01  Jonathan Wakely  <jwakely.gcc@gmail.com>
2316         PR c++/49605
2317         * init.c (build_delete): Only warn for sfk_deleting_destructor.
2319 2011-07-01  Jakub Jelinek  <jakub@redhat.com>
2321         * Make-lang.in (cp/decl.o): Depend on pointer-set.h.
2322         (cp/class.o): Likewise.
2323         (cp/error.o): Likewise.
2324         (cp/name-lookup.o): Likewise.
2325         (cp/decl2.o): Likewise.  Don't depend on $(POINTER_SET_H).
2327 2011-07-01  Jason Merrill  <jason@redhat.com>
2329         PR c++/48261
2330         * pt.c (lookup_template_function): Handle non-function.
2332         PR c++/48593
2333         * pt.c (tsubst_qualified_id): Check PTRMEM_OK_P.
2334         * tree.c (build_qualified_name): Set PTRMEM_OK_P.
2335         * semantics.c (finish_parenthesized_expr): Clear PTRMEM_OK_P on
2336         SCOPE_REF, too.
2337         * cp-tree.h (PTRMEM_OK_P): Apply to SCOPE_REF, too.
2338         (QUALIFIED_NAME_IS_TEMPLATE): Switch to lang flag 1.
2340         PR c++/48883
2341         PR c++/49609
2342         * pt.c (resolve_nondeduced_context): Call mark_used.
2344         PR c++/49085
2345         * semantics.c (finish_offsetof): Complain about incomplete type.
2347 2011-06-30  Jason Merrill  <jason@redhat.com>
2349         PR c++/49387
2350         * rtti.c (get_tinfo_decl): Call complete_type.
2352         PR c++/49569
2353         * method.c (implicitly_declare_fn): Set DECL_PARM_LEVEL and
2354         DECL_PARM_INDEX on rhs parm.
2356         * pt.c (iterative_hash_template_arg): Use cp_tree_operand_length.
2358         PR c++/49355
2359         * tree.c (stabilize_init): Handle aggregate initialization.
2361         PR c++/48481
2362         * name-lookup.c (struct arg_lookup): Add fn_set.
2363         (add_function): Check it.
2364         (lookup_arg_dependent_1): Initialize it.
2366 2011-06-29  Jason Merrill  <jason@redhat.com>
2368         PR c++/49216
2369         * init.c (build_new_1): Pass {} down to build_vec_init.
2370         (build_vec_init): Handle it.
2372         DR 1207
2373         PR c++/49003
2374         * cp-tree.h (struct saved_scope): Add x_current_class_ptr,
2375         x_current_class_ref.
2376         (current_class_ptr, current_class_ref): Use them.
2377         * decl.c (build_this_parm): Handle getting the class type.
2378         * parser.c (cp_parser_late_return_type_opt): Set up 'this'
2379         for use within the trailing return type.
2381         * pt.c (tsubst_decl) [VAR_DECL]: In unevaluated operand,
2382         don't tsubst DECL_INITIAL unless our type use auto.
2384         PR c++/49520
2385         * semantics.c (constexpr_fn_retval): Handle CLEANUP_POINT_EXPR here.
2386         (massage_constexpr_body): Not here.
2388         PR c++/49554
2389         * semantics.c (lambda_proxy_type): New.
2390         (build_capture_proxy): Use it.
2391         * cp-tree.h (DECLTYPE_FOR_LAMBDA_PROXY): New.
2392         * pt.c (tsubst) [DECLTYPE_TYPE]: Use them.
2394         PR c++/45923
2395         * class.c (explain_non_literal_class): New.
2396         (finalize_literal_type_property): Call it.
2397         * cp-tree.h: Declare it.
2398         * semantics.c (ensure_literal_type_for_constexpr_object): Call it.
2399         (is_valid_constexpr_fn): Likewise.
2400         (massage_constexpr_body): Split out from...
2401         (register_constexpr_fundef): ...here.
2402         (is_instantiation_of_constexpr): New.
2403         (expand_or_defer_fn_1): Leave DECL_SAVED_TREE alone in that case.
2404         (explain_invalid_constexpr_fn): New.
2405         (cxx_eval_call_expression): Call it.
2406         (potential_constant_expression_1): Likewise.  Avoid redundant errors.
2407         * method.c (process_subob_fn): Diagnose non-constexpr.
2408         (walk_field_subobs): Likewise.
2409         (synthesized_method_walk): Don't shortcut if we want diagnostics.
2410         (explain_implicit_non_constexpr): New.
2411         (defaulted_late_check): Use it.
2412         * call.c (build_cxx_call): Remember location.
2414         * method.c (maybe_explain_implicit_delete): Use pointer_set
2415         instead of htab.
2417         * class.c (finalize_literal_type_property): Update conditions.
2418         * method.c (defaulted_late_check): Set TYPE_HAS_CONSTEXPR_CTOR.
2420         * tree.c (build_vec_init_expr): Don't add TARGET_EXPR.
2421         * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR.
2422         * semantics.c (cxx_eval_vec_init_1): Correct type.
2424         * init.c (build_value_init): Decide whether or not to zero-initialize
2425         based on user-providedness of default ctor, not any ctor.
2426         (build_value_init_noctor): Adjust assert.
2428         DR 990
2429         * call.c (convert_like_real) [ck_user]: Handle value-initialization.
2430         (build_new_method_call_1): Likewise.
2431         * init.c (expand_default_init): Handle direct list-initialization
2432         of aggregates.
2434 2011-06-27  Jakub Jelinek  <jakub@redhat.com>
2436         * cp-tree.h (union lang_tree_node): Use it in chain_next expression.
2438 2011-06-26  Jason Merrill  <jason@redhat.com>
2440         PR c++/49528
2441         * semantics.c (potential_constant_expression_1): Check
2442         for non-literality rather than cleanup.
2443         (cxx_eval_constant_expression): Likewise.
2445         PR c++/49528
2446         * semantics.c (potential_constant_expression_1): A TARGET_EXPR
2447         with a cleanup isn't constant.
2448         (cxx_eval_constant_expression): Likewise.
2449         * init.c (expand_default_init): Use maybe_constant_init.
2451 2011-06-24  Jakub Jelinek  <jakub@redhat.com>
2453         PR c++/46400
2454         * cp-tree.h (union lang_tree_node): Use TYPE_NEXT_VARIANT
2455         instead of TYPE_CHAIN for chain_next for types.
2457 2011-06-23  Gabriel Charette  <gchare@google.com>
2459         * name-lookup.h (cp_binding_level): Removed unused
2460         member names_size. Update all users.
2462 2011-06-23  Jason Merrill  <jason@redhat.com>
2464         * typeck2.c (build_functional_cast): Strip cv-quals for value init.
2465         * init.c (build_zero_init_1): Not here.
2467         PR c++/35255
2468         * pt.c (resolve_overloaded_unification): Fix DR 115 handling.
2470 2011-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
2472         PR c++/44625
2473         * decl2.c (build_anon_union_vars): Early return error_mark_node
2474         for a nested anonymous struct.
2476 2011-06-23  Jason Merrill  <jason@redhat.com>
2478         PR c++/49507
2479         * decl2.c (mark_used): Don't call synthesize_method for
2480         functions defaulted outside the class.
2482         * optimize.c (maybe_clone_body): Set linkage flags before
2483         cgraph_same_body_alias.
2485         PR c++/49440
2486         * class.c (set_linkage_according_to_type): Hand off to
2487         determine_visibility.
2489         PR c++/49395
2490         * init.c (build_zero_init_1): Strip cv-quals from scalar types.
2492         PR c++/36435
2493         * pt.c (most_specialized_instantiation): Do check return types.
2495 2011-06-22  Jason Merrill  <jason@redhat.com>
2497         PR c++/49260
2498         * call.c (build_call_a): Set cp_function_chain->can_throw here.
2499         (build_cxx_call): Not here.
2501 2011-06-21  Jason Merrill  <jason@redhat.com>
2503         PR c++/49172
2504         * decl.c (cp_finish_decl): Adjust init_const_expr_p for refs.
2505         (grokdeclarator): constexpr doesn't apply const for refs.
2506         * parser.c (cp_parser_initializer_clause): Don't call
2507         maybe_constant_value here.
2508         * call.c (initialize_reference): Handle constexpr.
2510         PR c++/49482
2511         * semantics.c (maybe_add_lambda_conv_op): Call mark_exp_read for
2512         static fn parameters.
2514         * call.c (add_builtin_candidates): Use cv_unqualified rather than
2515         TYPE_MAIN_VARIANT.
2516         * pt.c (tsubst_arg_types): Likewise.
2517         * except.c (build_throw): Use cv_unqualified.
2519         PR c++/49418
2520         * call.c (cxx_type_promotes_to): Don't strip cv-quals.
2521         * semantics.c (lambda_return_type): Strip them here.
2523 2011-06-21  Andrew MacLeod  <amacleod@redhat.com>
2525         * semantics.c: Add sync_ or SYNC__ to builtin names.
2527 2011-06-20  Jason Merrill  <jason@redhat.com>
2529         PR c++/49216
2530         * init.c (build_vec_init): Don't try to use a CONSTRUCTOR when
2531         base is a pointer.
2532         * typeck2.c (process_init_constructor_array): Use {} for classes,
2533         too.
2534         * call.c (convert_like_real): Handle substitution failure.
2536         PR c++/48138
2537         * pt.c (canonicalize_type_argument): New.
2538         (convert_template_argument, unify): Use it.
2540         PR c++/47080
2541         * call.c (rejection_reason_code): Add rr_explicit_conversion.
2542         (print_z_candidate): Handle it.
2543         (explicit_conversion_rejection): New.
2544         (build_user_type_conversion_1): Reject an explicit conversion
2545         function that requires more than a qualification conversion.
2547         PR c++/47635
2548         * decl.c (grokdeclarator): Don't set ctype to an ENUMERAL_TYPE.
2550         PR c++/48138
2551         * tree.c (strip_typedefs): Use build_aligned_type.
2553         PR c++/49205
2554         * call.c (sufficient_parms_p): Allow parameter packs too.
2556         PR c++/43321
2557         * semantics.c (describable_type): Remove.
2558         * cp-tree.h: Likewise.
2559         * decl.c (cp_finish_decl): Don't call it.
2560         * init.c (build_new): Likewise.
2561         * parser.c (cp_parser_omp_for_loop): Likewise.
2562         * pt.c (tsubst_decl): Likewise.
2563         (do_auto_deduction): If we fail in a template, try again
2564         at instantiation time.
2566         PR c++/43831
2567         * parser.c (cp_parser_lambda_introducer): Complain about redundant
2568         captures.
2569         * semantics.c (add_capture): Likewise.
2570         (register_capture_members): Clear IDENTIFIER_MARKED.
2572 2011-06-17  Jason Merrill  <jason@redhat.com>
2574         PR c++/49458
2575         * call.c (convert_class_to_reference_1): Allow binding function
2576         lvalue to rvalue reference.
2578         PR c++/43912
2579         Generate proxy VAR_DECLs for better lambda debug info.
2580         * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): Add lambda operator().
2581         (LAMBDA_EXPR_PENDING_PROXIES): New.
2582         (struct tree_lambda_expr): Add pending_proxies.
2583         * name-lookup.c (pushdecl_maybe_friend_1): Handle capture shadowing.
2584         (qualify_lookup): Use is_lambda_ignored_entity.
2585         * parser.c (cp_parser_lambda_expression): Don't adjust field names.
2586         Call insert_pending_capture_proxies.
2587         (cp_parser_lambda_introducer): Use this_identifier.
2588         (cp_parser_lambda_declarator_opt): Call the object parameter
2589         of the op() "__closure" instead of "this".
2590         (cp_parser_lambda_body): Call build_capture_proxy.
2591         * semantics.c (build_capture_proxy, is_lambda_ignored_entity): New.
2592         (insert_pending_capture_proxies, insert_capture_proxy): New.
2593         (is_normal_capture_proxy, is_capture_proxy): New.
2594         (add_capture): Add __ to field names here, return capture proxy.
2595         (add_default_capture): Use this_identifier, adjust to expect
2596         add_capture to return a capture proxy.
2597         (outer_lambda_capture_p, thisify_lambda_field): Remove.
2598         (finish_id_expression, lambda_expr_this_capture): Adjust.
2599         (build_lambda_expr): Initialize LAMBDA_EXPR_PENDING_PROXIES.
2600         * pt.c (tsubst_copy_and_build): Check that LAMBDA_EXPR_PENDING_PROXIES
2601         is null.
2603         * name-lookup.c (pushdecl_maybe_friend_1): Do check for shadowing
2604         of artificial locals.
2606         * parser.c (cp_parser_lambda_expression): Clear
2607         LAMBDA_EXPR_THIS_CAPTURE after parsing.
2608         * pt.c (tsubst_copy_and_build): Make sure it isn't set.
2610         * cp-tree.h (struct tree_lambda_expr): Change common to typed.
2611         Move non-pointers to end of struct.
2613         * pt.c (tsubst_decl): Handle DECL_VALUE_EXPR on reference.
2614         * decl.c (check_initializer): Handle DECL_VALUE_EXPR_P.
2616         * semantics.c (finish_non_static_data_member): Preserve dereference
2617         in template.
2619 2011-06-16  Jason Merrill  <jason@redhat.com>
2621         PR c++/44160
2622         * parser.c (cp_parser_lambda_body): Share code between
2623         simple and complex cases instead of using cp_parser_function_body.
2625         PR c++/45378
2626         * decl.c (check_initializer): Check narrowing.
2628         PR c++/49229
2629         * pt.c (tsubst_decl) [FUNCTION_DECL]: Handle substitution failure.
2631         PR c++/49251
2632         * semantics.c (finish_id_expression): Mark even dependent
2633         variables as used.
2635         PR c++/49420
2636         * error.c (dump_template_argument): Don't try to omit default
2637         template args from an argument pack.
2639 2011-06-15  H.J. Lu  <hongjiu.lu@intel.com>
2641         PR c++/49412
2642         * decl.c (get_dso_handle_node): Mark __dso_handle hidden if
2643         assembler supports hidden visibility.
2645 2011-06-14  Jason Merrill  <jason@redhat.com>
2647         PR c++/49107
2648         * cp-tree.h (DEFERRED_NOEXCEPT_SPEC_P): Handle overload.
2649         * method.c (defaulted_late_check): Only maybe_instantiate_noexcept
2650         if the declaration had an exception-specifier.
2651         (process_subob_fn): Don't maybe_instantiate_noexcept.
2652         * pt.c (maybe_instantiate_noexcept): Handle overload.
2653         * typeck2.c (nothrow_spec_p_uninst): New.
2654         (merge_exception_specifiers): Add 'fn' parm.  Build up overload.
2655         * typeck.c (merge_types): Adjust.
2657         * pt.c (deduction_tsubst_fntype): Don't save input_location.
2658         (maybe_instantiate_noexcept): Likewise.
2660 2011-06-14  Joseph Myers  <joseph@codesourcery.com>
2662         * Make-lang.in (cp/method.o): Update dependencies.
2663         * method.c: Include common/common-target.h.
2664         (use_thunk): Use targetm_common.have_named_sections.
2666 2011-06-14  Steve Ellcey  <sje@cup.hp.com>
2668         * decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
2670 2011-06-14  Jason Merrill  <jason@redhat.com>
2672         * error.c (type_to_string): Print typedef-stripped version too.
2674         PR c++/49117
2675         * call.c (perform_implicit_conversion_flags): Print source type as
2676         well as expression.
2678         PR c++/49389
2679         * typeck2.c (build_m_component_ref): Preserve rvalueness.
2681         PR c++/49369
2682         * class.c (build_base_path): Fix cv-quals in unevaluated context.
2684         PR c++/49290
2685         * semantics.c (cxx_fold_indirect_ref): Local, more permissive copy
2686         of fold_indirect_ref_1.
2687         (cxx_eval_indirect_ref): Use it.
2689 2011-06-11  Jan Hubicka  <jh@suse.cz>
2691         * decl2.c (cp_write_global_declarations): Process aliases; look trhough
2692         same body aliases.
2694 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
2696         PR c++/41769
2697         * decl.c (grokdeclarator): Reject operator names in parameters.
2699 2011-06-10  Jan Hubicka  <jh@suse.cz>
2701         * decl2.c (clear_decl_external): New functoin.
2702         (cp_write_global_declarations): Use it.
2704 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
2706         * cp-tree.h (error_operand_p): Remove.
2708 2011-06-09  David Krauss  <potswa@mac.com>
2710         PR c++/49118
2711         * typeck2.c (build_x_arrow): Push fake template context
2712         to produce diagnostic on acyclic endless operator-> drill-down.
2713         * call.c (build_new_op): Change Boolean overload status
2714         value to a pointer to the overload function.
2715         * cp-tree.h: Likewise.
2716         * typeck.c: Likewise.
2717         * parser.c: Likewise.
2718         * decl2.c: Likewise.
2719         * pt.c: Likewise.
2721 2011-06-09  Jason Merrill  <jason@redhat.com>
2723         * semantics.c (maybe_constant_value): Handle overflowed input.
2724         (non_const_var_error): Handle non-constant DECL_INITIAL.
2726         * pt.c (build_non_dependent_expr): Use fold_non_dependent_expr_sfinae.
2728         * parser.c (cp_parser_constant_expression): Just return the
2729         non-constant expression.
2731         * semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR.
2733 2011-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
2735         PR c++/29003
2736         * decl.c (grokdeclarator): Reject operator names in typedefs.
2738 2011-06-08  Jason Merrill  <jason@redhat.com>
2740         PR c++/49107
2741         * cp-tree.def (DEFERRED_NOEXCEPT): New.
2742         * cp-tree.h (struct tree_deferred_noexcept): New.
2743         (DEFERRED_NOEXCEPT_PATTERN, DEFERRED_NOEXCEPT_ARGS): New.
2744         (DEFERRED_NOEXCEPT_SPEC_P): New.
2745         (enum cp_tree_node_structure_enum): Add TS_CP_DEFERRED_NOEXCEPT.
2746         (union lang_tree_node): Add tree_deferred_noexcept.
2747         (maybe_instantiate_noexcept): Declare.
2748         * cp-objcp-common.c (cp_tree_size): Handle DEFERRED_NOEXCEPT.
2749         * error.c (dump_exception_spec): Likewise.
2750         * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
2751         * ptree.c (cxx_print_xnode): Likewise.
2752         * tree.c (cp_tree_equal): Likewise.
2753         * decl.c (cp_tree_node_structure): Likewise.
2754         (duplicate_decls): Call maybe_instantiate_noexcept.
2755         * except.c (build_noexcept_spec): Handle DEFERRED_NOEXCEPT.
2756         (nothrow_spec_p, type_noexcept_p, type_throw_all_p): Check
2757         DEFERRED_NOEXCEPT_SPEC_P.
2758         * typeck2.c (merge_exception_specifiers): Likewise.
2759         * decl2.c (mark_used): Call maybe_instantiate_noexcept.
2760         * method.c (process_subob_fn, defaulted_late_check): Likewise.
2761         * pt.c (tsubst_exception_specification): Add defer_ok parm.
2762         Build DEFERRED_NOEXCEPT.
2763         (maybe_instantiate_noexcept): New.
2764         (tsubst, regenerate_decl_from_template, instantiate_decl): Adjust.
2765         * search.c (check_final_overrider): Call maybe_instantiate_noexcept.
2767         * semantics.c (potential_constant_expression_1): Handle destructor
2768         call.
2770 2011-06-08  Jakub Jelinek  <jakub@redhat.com>
2772         * cp-tree.h (struct tinst_level): Add chain_next GTY
2773         markup.
2775 2011-06-08  Jason Merrill  <jason@redhat.com>
2777         PR c++/49322
2778         * pt.c (deduction_tsubst_fntype): Don't free the tinst entry
2779         if a pending_template entry is pointing at it.
2781 2011-06-07  Jason Merrill  <jason@redhat.com>
2783         PR c++/48969
2784         PR c++/44175
2785         * error.c (subst_to_string): New.
2786         (cp_printer): Use it for 'S'.
2787         (print_instantiation_partial_context_line): Handle subst context.
2788         * pt.c (push_tinst_level): Handle subst context.
2789         (deduction_tsubst_fntype): Don't track specific substitutions.
2790         Use push_tinst_level.
2792         * pt.c (deduction_tsubst_fntype): Use push_deduction_access_scope.
2793         (fn_type_unification): Don't call push_deduction_access_scope here.
2795 2011-06-06  Jason Merrill  <jason@redhat.com>
2797         PR c++/48780
2798         * typeck.c (perform_integral_promotions): Don't promote scoped enums.
2799         * call.c (convert_arg_to_ellipsis): Promote them here in old ABI.
2801 2011-06-06  Nicola Pero  <nicola.pero@meta-innovation.com>,
2803         PR obj-c++/48275
2804         * parser.c (cp_parser_objc_at_property_declaration): Allow setter
2805         and getter names to use all the allowed method names.
2807 2011-06-06  Jason Merrill  <jason@redhat.com>
2809         PR c++/49298
2810         * semantics.c (potential_constant_expression_1): Handle FIELD_DECL.
2812         PR objc++/49221
2813         * decl.c (cp_finish_decl): Check DECL_FUNCTION_SCOPE_P rather than
2814         at_function_scope_p.
2816         PR c++/49134
2817         * tree.c (build_target_expr): Deal with ARM ABI tweaks.
2819 2011-06-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
2821         * init.c (build_delete): Warn when deleting type with non-virtual
2822         destructor.
2824 2011-06-03  Jakub Jelinek  <jakub@redhat.com>
2826         PR c++/49276
2827         * mangle.c (write_nested_name): Use CP_DECL_CONTEXT instead of
2828         DECL_CONTEXT.
2830 2011-06-01  Jason Merrill  <jason@redhat.com>
2832         * pt.c (build_non_dependent_expr): Remove special handling of
2833         REFERENCE_REF_P.
2835         PR c++/44175
2836         * pt.c (template_args_equal): Handle one arg being NULL_TREE.
2837         (deduction_tsubst_fntype): Handle excessive non-infinite recursion.
2839         PR c++/49253
2840         * typeck2.c (build_x_arrow): Don't use build_min_nt.
2842 2010-05-31  Fabien Chêne  <fabien@gcc.gnu.org>
2844         PR c++/48010
2845         * name-lookup.c (supplement_binding_1): If the old binding was a
2846         type name, also check that the DECL actually refers to the same
2847         type or is not a type.
2849 2011-05-31  Jason Merrill  <jason@redhat.com>
2851         PR c++/44870
2852         * tree.c (lvalue_kind): Recurse on NON_DEPENDENT_EXPR.  Handle
2853         ARROW_EXPR, TYPEID_EXPR, and arbitrary class-valued expressions.
2854         (build_min_non_dep): Preserve reference refs.
2855         (build_min_non_dep_call_vec): Likewise
2857 2011-05-30  Jakub Jelinek  <jakub@redhat.com>
2859         PR c++/49223
2860         * semantics.c (finish_omp_clauses): Call require_complete_type
2861         even for copyin/copyprivate clauses.  Only call
2862         cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P.
2864 2011-05-28  Jason Merrill  <jason@redhat.com>
2866         PR c++/46124
2867         * parser.c (cp_parser_lambda_expression): Improve error recovery.
2868         (cp_parser_lambda_declarator_opt): Likewise.  Return bool.
2870 2011-05-27  Jason Merrill  <jason@redhat.com>
2872         PR c++/47277
2873         * parser.c (cp_parser_pseudo_destructor_name): Commit to parse
2874         after we see the ~.
2876         * mangle.c (mangle_decl_string): Make sure we don't try to mangle
2877         templates.
2879         PR c++/47049
2880         * semantics.c (maybe_add_lambda_conv_op): Fix COMDAT sharing.
2881         * decl.c (start_preparsed_function): Don't call comdat_linkage for
2882         a template.
2884         PR c++/47132
2885         * mangle.c (write_expression): Handle MODOP_EXPR.
2887         PR c++/47277
2888         * parser.c (cp_parser_unqualified_id): Don't check
2889         constructor_name_p for enums.
2891         PR c++/47687
2892         * pt.c (dependent_type_p_r): Avoid infinite recursion.
2894         PR c++/48284
2895         * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot
2896         with INDIRECT_REF of REFERENCE_TYPE.
2898         PR c++/49181
2899         * pt.c (get_mostly_instantiated_function_type): Use push_access_scope.
2901 2011-05-27  Nathan Froyd  <froydnj@codesourcery.com>
2903         * cp-tree.h (building_stmt_tree): Delete.
2904         * decl.c (save_function_data): Tweak initializer for x_cur_stmt_list.
2905         (build_aggr_init_full_exprs): Call building_stmt_list_p
2906         instead of building_stmt_tree.
2907         (initialize_local_var): Likewise.
2908         (finish_function): Likewise.
2909         * decl2.c (finish_anon_union): Likewise.
2910         * init.c (begin_init_stmts): Likewise.
2911         (finish_init_stmts): Likewise.
2912         (expand_aggr_init_1): Likewise.
2913         * name-lookup.c (do_local_using_decl): Likewise.
2914         (do_namespace_alias): Likewise.
2915         (do_using_directive): Likewise.
2916         (cp_emit_debug_info_for_using): Likewise.
2917         * semantics.c (add_stmt): Assert that stmt_list_stack is non-empty.
2919 2011-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
2921         PR c++/42056
2922         * typeck2.c (build_functional_cast): Complain early for invalid uses
2923         of 'auto' and set type to error_mark_node.
2925 2011-05-26  Jason Merrill  <jason@redhat.com>
2927         PR c++/47721
2928         * parser.c (cp_parser_member_declaration): Allow friend T.
2929         * friend.c (make_friend_class): Ignore non-classes.
2930         * pt.c (instantiate_class_template_1): Handle TEMPLATE_TYPE_PARM.
2932         DR 1004
2933         * pt.c (convert_template_argument): Don't complain about using
2934         injected-class-name as template template argument.
2936         PR c++/47956
2937         * decl.c (check_static_variable_definition): Now static.
2938         (cp_finish_decl): Call it here.
2939         (grokdeclarator): Not here.
2940         * pt.c (instantiate_class_template_1): Or here.
2941         * cp-tree.h: Don't declare it.
2943 2011-05-26  Janis Johnson  <janis187@us.ibm.com>
2944             Nathan Froyd  <froydnj@codesourcery.com>
2946         PR c++/2288
2947         PR c++/18770
2948         * name-lookup.h (enum scope_kind): Add sk_cond.
2949         * name-lookup.c (pushdecl_maybe_friend): Get scope of shadowed local.
2950         Detect and report error for redeclaration from for-init or if
2951         or switch condition.
2952         (begin_scope): Handle sk_cond.
2953         * semantics.c (begin_if_stmt): Use sk_cond.
2954         (begin switch_stmt): Ditto.
2956 2011-05-26  Jason Merrill  <jason@redhat.com>
2958         PR c++/48211
2959         * name-lookup.h (cp_class_binding): Make base a pointer.
2960         * name-lookup.c (new_class_binding): Adjust.
2961         (poplevel_class): Adjust.
2963         PR c++/48424
2964         * decl.c (grokparms): Function parameter packs don't need to
2965         go at the end.
2966         * pt.c (type_unification_real): But they aren't deduced otherwise.
2968 2011-05-25  Jason Merrill  <jason@redhat.com>
2970         PR c++/48536
2971         * decl.c (build_enumerator): If incremented enumerator won't fit in
2972         previous integral type, find one it will fit in.
2974         PR c++/48599
2975         * decl.c (create_array_type_for_decl): Complain about array of auto.
2977         PR c++/44994
2978         PR c++/49156
2979         * error.c (dump_template_bindings): Set processing_template_decl
2980         for a partial instantiation.
2982         PR c++/45401
2983         * decl.c (grokdeclarator): Don't change type when adding rvalue ref
2984         to another reference type.
2986         PR c++/44311
2987         * decl.c (case_conversion): New.
2988         (finish_case_label): Use it.
2990         * ptree.c (cxx_print_xnode): Handle ARGUMENT_PACK_SELECT.
2992         PR c++/45698
2993         * pt.c (dependent_template_arg_p): See through ARGUMENT_PACK_SELECT.
2995         PR c++/46005
2996         * decl.c (grokdeclarator): Complain about auto typedef.
2998         PR c++/46245
2999         * decl.c (grokdeclarator): Complain later for auto parameter.
3000         * pt.c (splice_late_return_type): Handle use in a template
3001         type-parameter.
3003         PR c++/46696
3004         * typeck.c (cp_build_modify_expr): Check DECL_DEFAULTED_FN.
3006         PR c++/47184
3007         * parser.c (cp_parser_parameter_declaration): Recognize
3008         list-initialization.
3009         (cp_parser_direct_declarator): Check for the closing
3010         paren before parsing definitely.
3012         PR c++/48935
3013         * parser.c (cp_parser_constructor_declarator_p): Don't check
3014         constructor_name_p for enums.
3015         (cp_parser_diagnose_invalid_type_name): Correct error message.
3017         PR c++/45418
3018         * init.c (perform_member_init): Handle list-initialization
3019         of array of non-trivial class type.
3021         PR c++/45080
3022         * pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op.
3023         * semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P.
3025         PR c++/48292
3026         * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of
3027         function parameter pack.
3028         (tsubst_pack_expansion): Likewise.
3030         * cp-objcp-common.c (cp_common_init_ts): TYPE_ARGUMENT_PACK has
3031         TS_COMMON.
3033 2011-05-25  Jakub Jelinek  <jakub@redhat.com>
3035         * cp-objcp-common.c (cp_common_init_ts): Mark CTOR_INITIALIZER
3036         as TS_TYPED.
3038         PR c++/49136
3039         * semantics.c (cxx_eval_bit_field_ref): Handle the
3040         case when BIT_FIELD_REF doesn't cover only a single field.
3042 2011-05-24  Jason Merrill  <jason@redhat.com>
3044         PR c++/49042
3045         * pt.c (get_mostly_instantiated_function_type): Use
3046         push_deferring_access_checks rather than set flag_access_control.
3048 2011-05-24  Nicola Pero  <nicola.pero@meta-innovation.com>,
3050         * parser.c (cp_parser_objc_class_ivars): Deal gracefully with a
3051         syntax error in declaring an ObjC instance variable.
3053 2011-05-24  Jason Merrill  <jason@redhat.com>
3055         PR c++/48884
3056         * class.c (pushclass): Accept NULL argument.
3057         (popclass): Deal with popping null class.
3058         * pt.c (push_access_scope, pop_access_scope): Use them rather than
3059         push_to_top_level/pop_from_top_level.
3060         (push_deduction_access_scope, pop_defarg_context): New.
3061         (fn_type_unification): Use them.
3062         * name-lookup.c (lookup_name_real_1): Check current_class_type.
3064 2011-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
3066         * decl.c (grokdeclarator): Use current_class_name.
3068 2011-05-24  Joseph Myers  <joseph@codesourcery.com>
3070         * Make-lang.in (GXX_OBJS): Remove prefix.o.
3071         (g++$(exeext)): Use libcommon-target.a.
3072         (CXX_C_OBJS): Remove prefix.o.
3074 2011-05-23  Jason Merrill  <jason@redhat.com>
3076         * pt.c (tsubst_copy_and_build): Use current_class_name.
3078         PR c++/49102
3079         * call.c (convert_arg_to_ellipsis): Call force_rvalue.
3081         PR c++/49105
3082         * typeck.c (cp_build_c_cast): Don't strip cv-quals when
3083         converting to reference.
3084         (build_static_cast_1): Update for glvalues.
3086         PR c++/49105
3087         * typeck.c (build_const_cast_1): Handle rvalue references.
3089         PR c++/47263
3090         * decl.c (use_eh_spec_block): Do use an EH spec block for a
3091         lambda op().
3093         PR c++/49058
3094         * call.c (splice_viable): Be strict in templates.
3096         PR c++/47336
3097         * error.c (dump_template_bindings): Suppress access control.
3099         PR c++/47544
3100         * pt.c (instantiate_decl): Handle =default.
3102         PR c++/48617
3103         * pt.c (invalid_nontype_parm_type_p): Allow DECLTYPE_TYPE.
3105 2011-05-23  Nathan Froyd  <froydnj@codesourcery.com>
3107         * call.c (build_over_call): Tweak call to check_function_arguments.
3108         * typeck.c (cp_build_function_call_vec): Likewise.
3110 2011-05-23  Jonathan Wakely  <jwakely.gcc@gmail.com>
3112         PR c++/18016
3113         * init.c (perform_member_init): Check for self-initialization.
3115 2011-05-22  Jason Merrill  <jason@redhat.com>
3117         PR c++/48647
3118         * typeck.c (composite_pointer_type_r): Return error_mark_node
3119         on error in SFINAE context.
3121 2011-05-20  Jason Merrill  <jason@redhat.com>
3123         PR c++/48945
3124         * decl.c (grokdeclarator): Don't add set const function-cv-qual
3125         for constexpr fns to memfn_quals, just add it to the type.
3126         (revert_static_member_fn): Don't complain about quals.
3127         (check_static_quals): New.
3128         (grokfndecl): Call it.
3129         (start_preparsed_function): Don't call revert_static_member_fn.
3131         PR c++/48945
3132         * decl.c (revert_static_member_fn): Ignore const on constexpr fn.
3134         PR c++/48780
3135         * cvt.c (type_promotes_to): Don't promote scoped enums.
3137         PR c++/49066
3138         * decl.c (duplicate_decls): Preserve DECL_DELETED_FN.
3140         PR c++/48873
3141         * tree.c (stabilize_expr): Fix typo.
3143         DR 1073
3144         PR c++/49082
3145         * typeck.c (comp_except_specs): noexcept(false) is not compatible
3146         with throw(type-list).
3147         * typeck2.c (merge_exception_specifiers): noexcept(false)
3148         beats any more limited specification.
3150         PR c++/24163
3151         PR c++/29131
3152         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating
3153         unqualified lookup.
3154         * semantics.c (perform_koenig_lookup): Add complain parm.
3155         * cp-tree.h: Adjust.
3156         * parser.c (cp_parser_postfix_expression): Adjust.
3157         (cp_parser_perform_range_for_lookup): Adjust.
3159 2011-05-20  Jason Merrill  <jason@redhat.com>
3161         * semantics.c (finish_call_expr): SET_EXPR_LOCATION.
3163 2011-05-20  Joseph Myers  <joseph@codesourcery.com>
3165         * Make-lang.in (GXX_OBJS): Remove intl.o and version.o.
3167 2011-05-19  Jakub Jelinek  <jakub@redhat.com>
3169         PR c++/49043
3170         * decl.c (check_omp_return): Stop searching on sk_function_parms.
3172         PR c++/48869
3173         * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument,
3174         pass it down to locate_fn_flags.
3175         * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes.
3176         * semantics.c (cxx_omp_create_clause_info): Adjust callers.
3177         * cp-gimplify.c: Include splay-tree.h.
3178         (splay_tree_compare_decl_uid, omp_var_to_track,
3179         omp_cxx_notice_variable): New functions.
3180         (struct cp_genericize_omp_taskreg): New type.
3181         (struct cp_genericize_data): Add omp_ctx field.
3182         (cp_genericize_r): Attempt to determine implicitly determined
3183         firstprivate class type variables.
3184         (cp_genericize): Clear omp_ctx.
3185         * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H).
3187 2011-05-18  Jason Merrill  <jason@redhat.com>
3189         PR c++/48948
3190         PR c++/49015
3191         * class.c (finalize_literal_type_property): Do check
3192         for constexpr member functions of non-literal class.
3193         (finish_struct): Don't call check_deferred_constexpr_decls.
3194         * cp-tree.h: Don't declare it.
3195         (DECL_DEFERRED_CONSTEXPR_CHECK): Remove.
3196         * decl.c (grok_special_member_properties): Don't check it
3197         (grokfnedcl): Don't call validate_constexpr_fundecl.
3198         (start_preparsed_function): Do call it.
3199         * pt.c (tsubst_decl): Don't call it.
3200         (instantiate_class_template_1): Don't call
3201         check_deferred_constexpr_decls.
3202         * semantics.c (literal_type_p): Check for any incompleteness.
3203         (ensure_literal_type_for_constexpr_object): Likewise.
3204         (is_valid_constexpr_fn): Revert deferral changes.
3205         (validate_constexpr_fundecl): Likewise.
3206         (register_constexpr_fundef): Likewise.
3207         (check_deferred_constexpr_decls): Remove.
3209 2011-05-16  Jason Merrill  <jason@redhat.com>
3211         PR c++/48969
3212         * pt.c (deduction_tsubst_fntype): Use a VEC initially.
3214 2011-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
3216         * cxx-pretty-print.c: Update comment.
3217         * semantics.c (trait_expr_value, finish_trait_expr):
3218         Reorder the cases.
3219         * parser.c (cp_parser_primary_expression): Likewise.
3221 2011-05-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
3223         PR c++/48994
3224         * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
3226 2011-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
3228         Implement final on class.
3229         * class.c (check_bases): Diagnose derivation from a final class.
3230         * cp-tree.h (lang_type_class): Add is_final and adjust dummy.
3231         (CLASSTYPE_FINAL): New.
3232         * parser.c (cp_parser_class_head): Parse class-virt-specifier, set
3233         CLASSTYPE_FINAL.
3234         * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL.
3236 2011-05-13  Jason Merrill  <jason@redhat.com>
3238         PR c++/48969
3239         * pt.c (deduction_tsubst_fntype): New.
3240         (fn_type_unification): Use it.
3241         (init_template_processing): Initialize hash table.
3242         (print_template_statistics): Print hash table stats.
3244         * call.c (build_op_call): Use timevar_cond_start/stop.
3245         (build_user_type_conversion): Likewise.
3247 2011-05-12  Jason Merrill  <jason@redhat.com>
3249         * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New.
3250         * semantics.c (validate_constexpr_fundecl): Set it.
3251         (check_deferred_constexpr_decls): Clear it.
3252         (register_constexpr_fundef): Make sure it isn't set.
3253         * decl.c (grok_special_member_properties): Check it.
3255 2011-05-11  Jason Merrill  <jason@redhat.com>
3257         PR c++/48948
3258         * semantics.c (validate_constexpr_fundecl): Defer checking if
3259         an argument type is being defined.
3260         (is_valid_constexpr_fn): Add defer_ok parm.
3261         (cxx_eval_call_expression): Adjust.
3262         (check_deferred_constexpr_decls): New.
3263         (literal_type_p): Make sure type isn't being defined.
3264         (ensure_literal_type_for_constexpr_object): Handle type being defined.
3265         * cp-tree.h: Declare check_deferred_constexpr_decls.
3266         * decl.c (grokfndecl): Call validate_constexpr_fundecl here.
3267         (start_preparsed_function, cp_finish_decl): Not here.
3268         * class.c (finalize_literal_type_property): Don't call
3269         validate_constexpr_fundecl.
3270         (finish_struct): Call check_deferred_constexpr_decls.
3271         * pt.c (tsubst_decl): Call validate_constexpr_fundecl.
3272         (instantiate_class_template): Call check_deferred_constexpr_decls.
3274         * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO
3275         rather than DECL_TEMPLATE_INSTANTIATION.
3276         (cxx_eval_call_expression): Likewise.
3278         * semantics.c (register_constexpr_fundef): Add to hash table here.
3279         (validate_constexpr_fundecl): Not here.
3281         * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once.
3283         * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p,
3284         do call maybe_constant_value in C++0x mode.
3285         * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL.
3287         PR c++/48745
3288         * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR.
3290 2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>
3292         * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
3293         TYPE_VALUES_RAW.
3294         (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
3295         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
3296         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
3298 2011-05-10  Jason Merrill  <jason@redhat.com>
3300         PR c++/48930
3301         * class.c (type_build_ctor_call): New.
3302         * cp-tree.h: Declare it.
3303         * decl.c (check_initializer): Use it instead of
3304         TYPE_NEEDS_CONSTRUCTING.
3305         * init.c (build_value_init, build_value_init_noctor): Likewise.
3306         (perform_member_init, expand_aggr_init_1, build_new_1): Likewise.
3307         (build_vec_init): Likewise.
3308         * typeck2.c (process_init_constructor_array): Likewise.
3309         (process_init_constructor_record): Likewise.
3311         PR c++/48736
3312         * pt.c (tsubst_copy_and_build): Handle substitution of a pack
3313         expansion producing another expansion.
3315 2011-05-10  Ville Voutilainen  <ville.voutilainen@gmail.com>
3317         Fixes for override/final.
3318         * class.c (check_for_override): Diagnose final on a nonvirtual
3319         member function, diagnose override for a virtual with no matching
3320         override. Don't fiddle around with DECL_VINDEX.
3322 2011-05-10  Nathan Froyd  <froydnj@codesourcery.com>
3324         * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand.
3325         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
3326         * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new
3327         operand of EXPR_PACK_EXPANSION.
3328         (cp_tree_operand_length): Declare.
3329         * tree.c (cp_tree_operand_length): Define.
3330         (cp_tree_equal): Call it.
3331         * pt.c (value_dependent_expr_P): Likewise.
3332         * mangle.c (write_expression): Likewise.
3334 2011-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
3336         PR c++/48737
3337         PR c++/48744
3338         * decl.c (reshape_init): Take a complain parameter and do
3339         not call error if tf_error is not set.
3340         (check_initializer, reshape_init_r, reshape_init_array,
3341         reshape_init_array_1, reshape_init_vector, reshape_init_class):
3342         Adjust.
3343         * typeck2.c (digest_init_r): Take a complain parameter and
3344         pass it to convert_for_initialization.
3345         (digest_init, digest_init_flags, process_init_constructor_array,
3346         process_init_constructor_record, process_init_constructor_union,
3347         process_init_constructor, digest_init_r): Adjust.
3348         * init.c (expand_default_init, build_new_1): Likewise.
3349         * typeck.c (cp_build_modify_expr): Likewise.
3350         * decl2.c (grokfield): Likewise.
3351         * call.c (convert_like_real, convert_default_arg): Likewise.
3352         * semantics.c (finish_compound_literal): Pass complain to
3353         reshape_init and digest_init.
3354         * cp-tree.h: Adjust declarations.
3356 2011-05-07  Fabien Chêne  <fabien@gcc.gnu.org>
3358         PR c++/48859
3359         * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the
3360         recursion if there is user defined constructor.
3362 2011-05-09  Jason Merrill  <jason@redhat.com>
3364         PR c++/34772
3365         * decl.c (initialize_local_var): Use DECL_INITIAL for simple
3366         initialization.
3368 2011-05-08  Ville Voutilainen  <ville.voutilainen@gmail.com>
3370         Implement final/override for member functions.
3371         * class.c (check_for_override): Check for DECL_OVERRIDE_P.
3372         * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New.
3373         (cp_virt_specifiers, enum virt_specifier): New.
3374         * decl.c (set_virt_specifiers): New.
3375         (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields.
3376         * parser.c (make_call_declarator): add virt-specifiers parameter.
3377         (cp_parser_lambda_declarator_opt): Adjust.
3378         (cp_parser_direct_declarator): Likewise.
3379         (cp_parser_virt_specifier_seq_opt): New.
3380         * search.c (check_final_overrider): Diagnose attempts to override
3381         a final member function.
3383 2011-05-09  Dodji Seketeli  <dodji@redhat.com>
3385         PR c++/48574
3386         * class.c (fixed_type_or_null): Use type_dependent_p_push to test
3387         if the instance has a dependent initializer.
3389 2011-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
3391         PR c++/48816
3392         * cxx-pretty-print.c (pp_cxx_template_declaration): Remove
3393         effectively unused variable.
3395 2011-05-07  Eric Botcazou  <ebotcazou@adacore.com>
3397         * name-lookup.h (global_bindings_p): Adjust prototype.
3398         * name-lookup.c (global_bindings_p): Return bool.
3400 2011-05-06  Jason Merrill  <jason@redhat.com>
3402         * decl.c (stabilize_save_expr_r): Set *walk_subtrees as
3403         appropriate.
3405         PR c++/48909
3406         * semantics.c (cxx_eval_conditional_expression): Check
3407         integer_zerop instead.
3408         (potential_constant_expression_1): Likewise.
3410         PR c++/48911
3411         * semantics.c (cxx_eval_array_reference): Handle implicit
3412         initializers.
3414 2011-05-06  Nathan Froyd  <froydnj@codesourcery.com>
3416         * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions.
3417         * call.c (standard_conversion): Call class_of_this_parm.
3418         * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise.
3419         (pp_cxx_direct_abstract_declarator): Likewise.
3420         * decl2.c (change_return_type): Likewise.
3421         (cp_reconstruct_complex_type): Likewise.
3422         * error.c (dump_type_suffix, dump_function_decl): Likewise.
3423         * mangle.c (write_function_type): Likewise.
3424         * pt.c (unify): Likewise.
3425         * typeck.c (merge_types, type_memfn_quals): Likewise.
3426         * decl.c (build_this_parm): Call type_of_this_parm.
3428 2011-05-06  Dodji Seketeli  <dodji@redhat.com>
3430         PR c++/48838
3431         * cp-tree.h (non_static_member_function_p): Declare new function.
3432         * tree.c (non_static_member_function_p): Define it.
3433         * semantics.c (finish_call_expr): Use it.
3435 2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>
3437         * decl.c (finish_case_label): Omit the loc argument to
3438         build_case_label.
3440 2011-05-05  Jason Merrill  <jason@redhat.com>
3442         * cp-tree.h (REFERENCE_REF_P): Just check the type.
3443         * cvt.c (convert_from_reference): Adjust.
3444         * pt.c (build_non_dependent_expr): Adjust.
3445         * semantics.c (finish_offsetof): Adjust.
3446         * tree.c (lvalue_kind): Use it.
3448         PR c++/48873
3449         * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
3451 2011-05-05  Eric Botcazou  <ebotcazou@adacore.com>
3453         * decl.c (start_preparsed_function): Do not set
3454         dont_save_pending_sizes_p.
3456 2011-05-05  Joseph Myers  <joseph@codesourcery.com>
3458         * parser.c (cp_parser_objc_method_definition_list): Update call to
3459         objc_start_method_definition.
3461 2011-05-04  Jason Merrill  <jason@redhat.com>
3463         PR c++/48749
3464         * class.c (resolves_to_fixed_type_p): Don't look closely
3465         in templates.
3467 2011-05-03  Paolo Carlini  <paolo.carlini@oracle.com>
3469         PR c++/28501
3470         * call.c (add_builtin_candidate): Handle REALPART_EXPR and
3471         IMAGPART_EXPR.
3473 2011-05-02  Lawrence Crowl  <crowl@google.com>
3475         * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
3476         (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
3477         Change TV_NAME_LOOKUP to start/stop.
3478         (define_label): Refactor timevar calls out to a wrapper function.
3479         Change TV_NAME_LOOKUP to start/stop.
3480         (xref_tag): Likewise.
3481         (lookup_label): Refactor timevar calls out to a wrapper function.
3482         Change TV_NAME_LOOKUP to start_cond/stop_cond.
3484         * pt.c: (instantiate_class_template): Add a wrapper to push/pop new
3485         TV_TEMPLATE_INST.
3486         (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
3487         (lookup_template_class): Refactor timevar calls out to a wrapper
3488         function.  Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
3489         (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
3491         * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
3492         (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
3493         (push_namespace): Likewise.
3494         (pop_nested_namespace): Likewise.
3495         (pushdecl_namespace_level): Likewise.
3496         (store_class_bindings): Likewise.
3497         (push_to_top_level): Likewise.
3498         (identifier_type_value): Refactor timevar calls out to a wrapper
3499         function.  Change TV_NAME_LOOKUP to start/stop.
3500         (find_binding): Likewise.
3501         (push_using_decl): Likewise.
3502         (lookup_arg_dependent): Likewise.
3503         (push_using_directive): Likewise.
3504         (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
3505         to plain code.  Change TV_NAME_LOOKUP to start/stop.
3506         (lookup_type_current_level): Likewise.  Refactor inner return to
3507         break.
3508         (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
3509         code.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
3510         (pushdecl_top_level_1): Likewise.
3511         (lookup_using_namespace): Likewise.
3512         (pushdecl_with_scope): Refactor timevar calls out to a wrapper
3513         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
3514         (push_overloaded_decl): Likewise.
3515         (push_class_level_binding): Likewise.
3516         (namespace_binding): Likewise.
3517         (set_namespace_binding): Likewise.
3518         (supplement_binding): Likewise.
3519         (unqualified_namespace_lookup): Likewise.
3520         (lookup_name_real): Likewise.
3521         (lookup_type_scope): Likewise.
3522         (namespace_ancestor): Likewise.
3523         (lookup_name_innermost_nonclass_level): Likewise.
3524         (pushtag): Likewise.
3525         (pop_from_top_level): Likewise.
3526         (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
3527         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Wrap long
3528         lines.
3529         (add_using_namespace): Refactor timevar calls out to a wrapper
3530         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Bypass
3531         wrapper on call to self.
3533         * decl2.c: (cp_write_global_declarations):  Add start/stop of
3534         new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
3535         Remove push/pop calls to TV_VARCONST.
3537         * parser.c: Add include of "timevar.h".
3538         (cp_parser_explicit_instantiation): Add push/pop calls to
3539         TV_TEMPLATE_INST.
3540         (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
3541         (cp_parser_class_specifier): Add wrapper to add push/pop calls to
3542         TV_PARSE_STRUCT.
3543         (cp_parser_function_definition_from_specifiers_and_declarator): Add
3544         push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
3545         (cp_parser_late_parsing_for_member):  Add push/pop calls to
3546         new TV_PARSE_INMETH.
3548         * call.c: Add include of "timevar.h".
3549         (convert_class_to_reference): Wrap and add push/pop calls to 
3550         TV_OVERLOAD.
3551         (build_op_call): Likewise.
3552         (build_conditional_expr): Likewise.
3553         (build_new_op): Likewise.
3554         (build_new_method_call): Likewise.
3555         (build_user_type_conversion): Reorganize to single return and add
3556         push/pop calls to TV_OVERLOAD.
3557         (perform_overload_resolution): Likewise.
3559         * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
3561 2011-05-02  Jason Merrill  <jason@redhat.com>
3563         * tree.c (build_vec_init_expr): Take complain parm.
3564         (build_vec_init_elt): Likewise.  Free arg vector.
3565         (diagnose_non_constexpr_vec_init, build_array_copy): Adjust.
3566         * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK.
3567         (VEC_INIT_EXPR_INIT): Likewise.
3568         Adjust build_vec_init_expr declaration.
3569         * init.c (perform_member_init): Adjust.
3571         Revert:
3572         PR c++/40975
3573         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
3574         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
3575         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
3576         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
3577         (build_vec_init_elt): Don't expect an array type.
3578         (build_array_copy): Adjust.
3579         * init.c (perform_member_init): Adjust.
3580         (build_new_1): Use build_vec_init_expr.
3582         PR c++/48834
3583         * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS.
3584         Protect an explicit target.
3586         PR c++/48446
3587         * decl.c (stabilize_save_expr_r, stabilize_vla_size): New.
3588         (compute_array_index_type): Revert earlier 48446 changes.
3589         (grokdeclarator): Use stabilize_vla_size.
3591 2011-05-02  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
3592             Eric Botcazou <ebotcazou@adacore.com>
3594         * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE
3595         instead of inappropriate zero values.
3597 2011-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
3599         PR c++/47969
3600         * decl.c (compute_array_index_type): Check build_expr_type_conversion
3601         return value for NULL_TREE.
3603 2011-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
3605         PR c++/48606
3606         * init.c (perform_member_init): Check build_value_init return
3607         value for error_mark_node.
3609 2011-04-29  Diego Novillo  <dnovillo@google.com>
3610             Le-Chun Wu  <lcwu@google.com>
3612         * call.c (conversion_null_warnings): Also handle assignments
3613         when warning about NULL conversions.
3615 2011-04-29  Le-Chun Wu  <lcwu@google.com>
3617         * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
3618         * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
3619         (build_over_call): Use it to determine whether to emit a NULL
3620         warning for template function instantiations.
3621         (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
3622         EXPLICIT_TARGS is set.
3624 2011-04-29  Nicola Pero  <nicola.pero@meta-innovation.com>,
3625             Mike Stump <mikestump@comcast.net>
3627         * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only
3628         in maintainer mode.  Use the --output-file option of gperf instead
3629         of > to prevent creating an empty cp/cfns.h when gperf is not
3630         available.
3632 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
3634         PR c++/48798
3635         * semantics.c (finish_base_specifier): cv-qualified base class
3636         is fine, per DR 484.
3638 2011-04-28  Dodji Seketeli  <dodji@redhat.com>
3640         PR c++/48656
3641         * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
3642         considering call expressions involving a member function.
3644 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
3646         PR c++/48530
3647         * tree.c (build_cplus_new): Check build_target_expr return
3648         value for error_mark_node.
3650 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
3652         PR c++/48771
3653         * semantics.c (literal_type_p): Reference types are literal types,
3654         per the FDIS.
3655         (valid_type_in_constexpr_fundecl_p): Remove.
3656         (is_valid_constexpr_fn): Adjust.
3658 2011-04-27  Jason Merrill  <jason@redhat.com>
3660         PR libstdc++/48760
3661         Implement list-initialization of _Complex.
3662         * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
3663         (check_initializer): Likewise.
3664         * call.c (build_complex_conv): New.
3665         (implicit_conversion): Call it.
3666         (convert_like_real): Handle it.
3667         * typeck2.c (check_narrowing): Handle it.
3669         * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
3670         decide whether to delete.
3671         (build_vec_init): Pass sfk_complete_destructor.
3673         PR c++/40975
3674         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
3675         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
3676         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
3677         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
3678         (build_vec_init_elt): Don't expect an array type.
3679         (build_array_copy): Adjust.
3680         * init.c (perform_member_init): Adjust.
3681         (build_new_1): Use build_vec_init_expr.
3683         * class.c (resolve_address_of_overloaded_function): Don't
3684         change OVERLOAD to TREE_LIST.
3685         * pt.c (print_candidates_1): Remove nonsensical assert.
3687         PR c++/48046
3688         * parser.c (cp_parser_diagnose_invalid_type_name): Commit
3689         to tentative parse sooner.
3691 2011-04-26  Jason Merrill  <jason@redhat.com>
3693         PR c++/42687
3694         * parser.c (cp_parser_primary_expression): Set *idk to
3695         CP_ID_KIND_NONE for a parenthesized identifier.
3697         * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
3698         (cxx_print_identifier): Correct indentation.
3700         PR c++/48530
3701         * decl.c (cxx_maybe_build_cleanup): Add complain parm.
3702         * tree.c (force_target_expr): Add complain parm.
3703         (build_target_expr_with_type): Likewise.
3704         (get_target_expr_sfinae): Split out.
3705         (build_vec_init_expr, bot_manip): Adjust.
3706         * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
3707         (build_delete, build_dtor_call): Likewise.
3708         (perform_direct_initialization_if_possible): Adjust.
3709         (build_vec_init): Handle error return.
3710         * cvt.c (force_rvalue): Add complain parm.
3711         Call build_special_member_call directly.
3712         * decl2.c (delete_sanity): Add complain parm.
3713         (build_cleanup): Adjust.
3714         * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
3715         * semantics.c (finish_stmt_expr_expr): Adjust.
3716         (finish_compound_literal): Adjust.
3717         * parser.c (cp_parser_delete_expression): Adjust.
3718         * typeck2.c (build_functional_cast): Adjust.
3719         * cp-tree.h: Adjust.
3721 2011-04-26  Martin Jambor  <mjambor@suse.cz>
3723         * class.c (cp_fold_obj_type_ref): Remove.
3724         * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
3726 2011-04-25  Paolo Carlini  <paolo.carlini@oracle.com>
3728         * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
3729         * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
3730         (UNDERLYING_TYPE_TYPE): Add.
3731         * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
3732         as TS_COMMON.
3733         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
3734         cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
3735         (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
3736         * semantics.c (finish_underlying_type): New.
3737         * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
3738         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
3739         * cxx-pretty-print.c (p_cxx_type_id): Likewise.
3740         * tree.c (cp_walk_subtrees): Likewise.
3741         * pt.c (for_each_template_parm_r, tsubst, unify,
3742         dependent_type_p_r): Likewise.
3743         * mangle.c (write_type): Sorry for __underlying_type.
3745 2011-04-25  Jason Merrill  <jason@redhat.com>
3747         PR c++/48707
3748         * decl.c (type_dependent_init_p): New.
3749         (cp_finish_decl): Check it.
3750         * pt.c (any_type_dependent_elements_p): New.
3751         * cp-tree.h: Declare it.
3753 2011-04-20  Jason Merrill  <jason@redhat.com>
3755         * semantics.c (finish_compound_literal): Don't put an array
3756         with a dtor in a static variable.
3758         * call.c (build_over_call): Handle trivial dtor.
3760         * search.c (lookup_fnfields_slot): Call complete_type.
3762         PR c++/48594
3763         * decl2.c (build_offset_ref_call_from_tree): Move
3764         non-dependency of object outside condition.
3766         PR c++/48657
3767         * decl.c (cp_finish_decl): Simplify template handling.
3769 2011-04-20  Jim Meyering  <meyering@redhat.com>
3771         * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
3773 2011-04-19  Jason Merrill  <jason@redhat.com>
3775         PR c++/46304
3776         * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
3778         PR c++/45267
3779         * decl.c (duplicate_decls): Keep always_inline attribute
3780         in sync with DECL_DISREGARD_INLINE_LIMITS.
3782 2011-04-18  Jason Merrill  <jason@redhat.com>
3784         PR c++/48569
3785         * typeck2.c (build_functional_cast): Handle VOID_TYPE.
3787         PR c++/48537
3788         * init.c (build_value_init): Handle UNION_TYPE the same.
3790 2011-04-18  Jakub Jelinek  <jakub@redhat.com>
3792         PR c++/48632
3793         * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
3794         for type dependent pointers.
3796 2011-04-18  Jim Meyering  <meyering@redhat.com>
3798         * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
3800 2011-04-17  Jan Hubicka  <jh@suse.cz>
3802         * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
3803         gotos.
3805 2011-04-17  Jason Merrill  <jason@redhat.com>
3807         PR c++/48531
3808         * typeck2.c (build_functional_cast): Disallow array type.
3810         * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
3812 2011-04-17  Jan Hubicka  <jh@suse.cz>
3814         * class.c (cp_fold_obj_type_ref): Drop vtable_method.
3816 2011-04-15  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
3818         Implement N3271
3819         * parser.c (cp_convert_range_for): Split into
3820         cp_parser_perform_range_for_lookup.
3821         (cp_parser_perform_range_for_lookup): New.
3822         (cp_parser_range_for_member_function): New.
3823         (cp_parser_for_init_statement): Correct error message.
3824         * semantics.c (finish_call_expr): Accept COMPONENT_REF.
3826 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
3828         * parser.c (cp_parser_objc_protocol_declaration): Updated for
3829         change from objc_declare_protocols() to objc_declare_protocol().
3831 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3833         PR objc++/48479
3834         * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
3835         and return immediately.
3837 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3839         * cp-tree.def (SWITCH_STMT): Add an extra operand.
3840         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
3841         * cp-tree.h (SWITCH_STMT_SCOPE): Define.
3842         * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
3843         (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
3845 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3847         * cp-tree.def (IF_STMT): Add an extra operand.
3848         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
3849         * cp-tree.h (IF_SCOPE): Define.
3850         * semantics.c (begin_if_stmt): Pass scope to build_stmt.
3851         (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
3853 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3855         * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
3856         * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
3857         * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
3858         * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
3859         Use FOR_SCOPE instead of TREE_CHAIN.
3860         (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
3861         (finish_for_stmt): Likewise.
3863 2011-04-14  Jason Merrill  <jason@redhat.com>
3865         * parser.c (cp_parser_postfix_expression): Fix flags passed to
3866         build_new_method_call.
3867         * semantics.c (finish_call_expr): Likewise.
3869         PR c++/48531
3870         * init.c (build_value_init_noctor): Check complain consistently.
3872         PR c++/48557
3873         * typeck.c (cp_build_binary_op): Don't decay void operands.
3875         PR c++/48446
3876         * decl.c (compute_array_index_type): Use get_temp_regvar instead
3877         of variable_size.
3878         * init.c (get_temp_regvar): No longer static.
3879         * cp-tree.h: Declare it.
3881 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
3883         * parser.c (cp_parser_objc_class_declaration): Updated for change
3884         in objc_declare_class().
3886 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3888         * decl.c (poplevel): Use block_chainon.
3890 2011-04-13  Jason Merrill  <jason@redhat.com>
3892         PR c++/48594
3893         * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
3894         or pointer to (non-member) function.
3896 2011-04-13  Jakub Jelinek  <jakub@redhat.com>
3898         PR c++/48570
3899         * semantics.c (cxx_eval_array_reference): Handle reading from
3900         wchar_t, char16_t and char32_t STRING_CST.
3902 2011-04-13  Dodji Seketeli  <dodji@redhat.com>
3904         PR c++/48574
3905         * class.c (fixed_type_or_null): We cannot determine the dynamic
3906         type of a reference variable if its initializer is dependent.
3908 2011-04-13  Jason Merrill  <jason@redhat.com>
3910         PR c++/48581
3911         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
3912         unqualified lookup failing if we're still in a template.
3914 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
3916         * cp-lang.c (cp_init_ts): Call cp_common_init_ts.  Move
3917         tree_contains_struct initialization to...
3918         * cp-objcp-common.c (cp_common_init_ts): ...here.  Use MARK_*
3919         macros.
3920         * cp-objcp-common.h (cp_common_init_ts): Declare.
3921         * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
3922         calling TREE_CHAIN.
3924 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
3926         * parser.c (cp_parser_objc_message_expression): Updated call
3927         to objc_build_message_expr.
3929 2011-04-12  Martin Jambor  <mjambor@suse.cz>
3931         * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
3932         cgraph_get_create_node.
3933         * decl2.c (cp_write_global_declarations): Call cgraph_get_node
3934         instead of cgraph_get_create_node.
3935         * method.c (make_alias_for_thunk): Call cgraph_get_node
3936         instead of cgraph_get_create_node, assert it returns non-NULL.
3937         (use_thunk): Likewise.
3938         * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
3939         when flag_syntax_only is not set.  Call cgraph_get_node instead of
3940         cgraph_get_create_node.
3941         (maybe_clone_body): Call cgraph_get_node instead of
3942         cgraph_get_create_node.
3944 2011-04-12  Martin Jambor  <mjambor@suse.cz>
3946         * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
3947         instead of cgraph_node.
3948         * decl2.c (cxx_callgraph_analyze_expr): Likewise.
3949         (cp_write_global_declarations): Likewise.
3950         * optimize.c (maybe_clone_body): Likewise.
3951         * semantics.c (maybe_add_lambda_conv_op): Likewise.
3952         * mangle.c (mangle_decl): Likewise.
3953         * method.c (make_alias_for_thunk): Likewise.
3954         (use_thunk): Likewise.
3956 2011-04-11  Jason Merrill  <jason@redhat.com>
3958         PR c++/48535
3959         * decl.c (cp_complete_array_type_or_error): New.
3960         * semantics.c (finish_compound_literal): Use it.
3961         * cp-tree.h: Declare it.
3963         PR c++/48535
3964         * semantics.c (finish_compound_literal): Handle references.
3966         PR c++/48535
3967         * semantics.c (finish_compound_literal): Take complain parm.
3968         (build_lambda_object): Adjust.
3969         * cp-tree.h: Adjust.
3970         * call.c (convert_like_real): Adjust.
3971         * decl.c (check_initializer): Adjust.
3972         * parser.c (cp_parser_postfix_expression): Adjust.
3973         (cp_parser_functional_cast): Adjust.
3974         * pt.c (tsubst_copy_and_build): Adjust.
3975         * typeck2.c (process_init_constructor_record): Adjust.
3977         PR c++/48534
3978         * cvt.c (ocp_convert): Use build_nop to convert to underlying type
3979         of scoped enum.
3981         PR c++/48523
3982         * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
3983         than cp_build_indirect_ref.
3985         PR c++/48457, Core 1238
3986         * call.c (reference_binding): Allow rvalue reference to bind to
3987         function lvalue.
3988         * tree.c (lvalue_kind): Functions are always lvalues.
3990 2011-04-07  Jason Merrill  <jason@redhat.com>
3992         PR c++/48500
3993         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
3994         arguments even if we don't know the function.
3996         PR c++/48481
3997         * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
3998         at the end of the chain.
3999         * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
4000         (iterative_hash_template_arg): Likewise.
4002         PR c++/48481
4003         * cp-tree.h (OVL_ARG_DEPENDENT): New.
4004         * name-lookup.c (add_function): Set it.
4005         * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
4007         PR c++/48481
4008         * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
4009         Release unused vector.
4011         PR c++/48451
4012         * pt.c (fn_type_unification): Don't clear incomplete pack flag.
4013         (type_unification_real): Clear it here instead.
4015         PR c++/48468
4016         * except.c (build_noexcept_spec): Propagate error_mark_node.
4017         (finish_noexcept_expr): Likewise.
4019         PR c++/48452
4020         * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
4021         in SFINAE context.
4023         PR c++/48450
4024         * call.c (resolve_args): Take complain.
4025         (build_new_function_call, build_operator_new_call): Pass it.
4026         (build_op_call, build_new_op, build_new_method_call): Pass it.
4028         PR c++/48450
4029         * typeck.c (check_for_casting_away_constness): Take complain.
4030         (build_static_cast_1, build_reinterpret_cast_1): Pass it.
4031         (build_const_cast_1): Pass it.  Take full complain parm.
4032         (build_const_cast, cp_build_c_cast): Adjust.
4034         * tree.c (build_aggr_init_expr): Always return error_mark_node
4035         on abstract violation.
4037         PR c++/48450
4038         * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
4039         (bot_manip): Adjust.
4040         * cp-tree.h: Adjust.
4041         * call.c (convert_like_real, build_cxx_call): Adjust.
4042         (perform_direct_initialization_if_possible): Adjust.
4043         * cvt.c (ocp_convert): Adjust.
4044         * init.c (build_value_init): Adjust.
4045         * semantics.c (maybe_add_lambda_conv_op): Adjust.
4046         * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
4047         * typeck2.c (build_functional_cast): Adjust.
4049         * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
4050         level.
4051         (perform_member_init): Not here.
4052         * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
4053         case to templates.
4054         (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
4056         PR c++/48449
4057         * typeck2.c (build_functional_cast): Check complain consistently.
4058         Use build_value_init and abstract_virtuals_error_sfinae.
4059         (abstract_virtuals_error_sfinae): Split out.
4060         * cp-tree.h: Declare it.
4061         * init.c (build_new_1): Use it.
4062         (build_value_init_noctor): Handle FUNCTION_TYPE.
4064         * semantics.c (finish_decltype_type): Simplify handling of unknown
4065         type.
4067         * semantics.c (finish_decltype_type): Add complain parm.
4068         * cp-tree.h: Adjust.
4069         * parser.c (cp_parser_decltype): Adjust.
4070         * pt.c (tsubst): Adjust.
4072         PR c++/48450
4073         * cvt.c (ocp_convert): Handle converting scoped enum to bool.
4075 2011-03-31  Jason Merrill  <jason@redhat.com>
4077         PR c++/48277
4078         * semantics.c (finish_call_expr): Remove assert.
4080         PR c++/48280
4081         * method.c (defaultable_fn_check): Templates are not defaultable.
4083         * parser.c (cp_parser_init_declarator): Avoid redundant
4084         cp_finish_decl for member declarations.
4086 2011-03-30  Jason Merrill  <jason@redhat.com>
4088         PR c++/48212
4089         * semantics.c (non_const_var_error): Just return if DECL_INITIAL
4090         is error_mark_node.
4092 2011-03-30  Jason Merrill  <jason@redhat.com>
4094         PR c++/48369
4095         * semantics.c (potential_constant_expression_1): Handle
4096         UNORDERED_EXPR and ORDERED_EXPR.
4098         PR c++/48281
4099         * semantics.c (finish_compound_literal): Do put static/constant
4100         arrays in static variables.
4102         * call.c (convert_like_real) [ck_list]: Build up the
4103         initializer_list object directly.
4104         * decl.c (build_init_list_var_init): Adjust.
4106         * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
4107         * decl.c (reshape_init_array_1): Likewise.
4109 2011-03-29  Jason Merrill  <jason@redhat.com>
4111         PR c++/48265
4112         * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
4113         the variable is constant before looking at its initializer.
4115         PR c++/48319
4116         * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
4118         PR c++/48089
4119         * semantics.c (potential_constant_expression_1): Change error about
4120         use of *this in constructor into sorry.
4122         PR c++/48296
4123         * decl.c (cp_finish_decl): Defer validation of constexpr member
4124         functions.
4125         * class.c (finalize_literal_type_property): Validate them here.
4126         * semantics.c (is_valid_constexpr_fn): Don't check completeness.
4128         * semantics.c (is_valid_constexpr_fn): Specify input location.
4130 2011-03-28  Jason Merrill  <jason@redhat.com>
4132         PR c++/48313
4133         * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
4134         from overloaded function.
4136         Core 1232
4137         * call.c (build_array_conv): New.
4138         (implicit_conversion): Use it.
4140         * call.c (reference_binding): Allow direct binding to an array
4141         rvalue.
4143         Core 898
4144         * parser.c (cp_parser_compound_statement): Add function_body parm.
4145         Complain about non-body compound-stmt in constexpr fn.
4146         (cp_parser_primary_expression, cp_parser_statement): Adjust.
4147         (cp_parser_implicitly_scoped_statement): Adjust.
4148         (cp_parser_function_body, cp_parser_try_block): Adjust.
4149         (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
4150         (cp_parser_objc_try_catch_finally_statement): Adjust.
4152         Core 898
4153         * semantics.c (constexpr_fn_retval): New.  Allow using-declaration
4154         and using-definition.
4155         (register_constexpr_fundef): Call it.
4157         * except.c (build_noexcept_spec): Call cxx_constant_value after
4158         converting to bool.
4160 2011-03-25  Kai Tietz  <ktietz@redhat.com>
4162         * lex.c (interface_strcmp): Handle dos-paths.
4163         (handle_pragma_implementation): Use filename_cmp instead of
4164         strcmp.
4165         (in_main_input_context): Likewise.
4167 2011-03-25  Jason Merrill  <jason@redhat.com>
4169         Core 1135
4170         * method.c (defaulted_late_check): Check for exception spec mismatch.
4171         (defaultable_fn_check): Allow exception spec and virtual.
4172         * class.c (check_for_override): A virtual dtor is non-trivial.
4174         PR c++/48289
4175         * pt.c (build_non_dependent_expr): Keep dereferences outside the
4176         NON_DEPENDENT_EXPR.
4178 2011-03-25  Kai Tietz  <ktietz@redhat.com>
4180         * decl.c (decls_match): Replace target hook
4181         call of comp_type_attributes by version in tree.c file.
4182         * search.c (check_final_overrider): Likewise.
4183         * typeck.c (structural_comptypes): Likewise.
4185 2011-03-21  Kai Tietz  <ktietz@redhat.com>
4187         PR target/12171
4188         * cxx-pretty-print.c (pp_cxx_ptr_operator):
4189         Display allowed attributes for function pointer types.
4190         * error.c (dump_type_prefix): Likewise.
4192         * tree.c (cxx_attribute_table): Adjust table.
4194 2011-03-18  Jason Merrill  <jason@redhat.com>
4196         PR c++/48162
4197         * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
4199         PR c++/48118
4200         * call.c (build_over_call): Don't skip ck_rvalue.
4202 2011-03-17  Jason Merrill  <jason@redhat.com>
4204         PR c++/47504
4205         * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
4206         the conversion set TREE_OVERFLOW.
4208         Core 1212
4209         * semantics.c (finish_decltype_type): Return T&& for xvalue.
4210         * typeck.c (unlowered_expr_type): Preserve cv-quals.
4212         PR c++/48166
4213         * decl.c (revert_static_member_fn): Strip function-cv-quals.
4215 2011-03-16  Jason Merrill  <jason@redhat.com>
4217         PR c++/48089
4218         * semantics.c (potential_constant_expression_1): Don't allow *this
4219         in a constructor.
4220         (register_constexpr_fundef): Use potential_rvalue_constant_expression.
4222         PR c++/47301
4223         * decl.c (compute_array_index_type): Don't bother trying to deal
4224         with literal classes in ABI v1.
4226         PR c++/46336
4227         * decl.c (duplicate_decls): Return NULL_TREE for clashing
4228         C functions.
4230         PR c++/47570
4231         * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
4232         use the generic binary expression handling.
4234 2011-03-16  Diego Novillo  <dnovillo@google.com>
4236         * Make-lang.in (CXX_PARSER_H): New.
4237         (cp/parser.o): Add dependency on CXX_PARSER_H.
4238         Add dependency on tree-pretty-print.h
4239         (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
4240         * cp-lang.c: Include parser.h.
4241         * parser.c: Include parser.h.
4242         (struct cp_token): Add bitfield purged_p.
4243         Update all users.
4244         Move to parser.h.
4245         (CPP_PURGED): Remove.  Update all users.
4246         (struct cp_lexer): Change field buffer to be a VEC of cp_token.
4247         Remove field buffer_length.
4248         Update all users.
4249         Move to parser.h.
4250         (struct tree_check): Move to parser.h.
4251         (cp_token_position): Likewise.
4252         (struct cp_token_cache): Likewise.
4253         (CPP_KEYWORD): Likewise.
4254         (CPP_TEMPLATE_ID): Likewise.
4255         (CPP_NESTED_NAME_SPECIFIER): Likewise.
4256         (N_CP_TTYPES): Likewise.
4257         (enum cp_parser_status_kind): Likewise.
4258         (struct cp_parser_context): Likewise.
4259         (struct cp_default_arg_entry_d): Likewise.
4260         (struct cp_unparsed_functions_entry_d): Likewise.
4261         (struct cp_parser): Likewise.
4262         (cp_lexer_dump_tokens): New.
4263         (cp_lexer_debug_tokens): New.
4264         (cp_lexer_finished_p): New.
4265         (cp_lexer_alloc): Factor out of cp_lexer_new_main.
4266         (cp_lexer_new_main): Re-write main lexing loop to push
4267         tokens into the new VEC buffer.
4268         (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
4269         Do not abort if the token type is not recognized, just print
4270         its code.
4271         * parser.h: New file.
4272         * config-lang.in (gtfiles): Add cp/parser.h.
4274 2011-03-16  Jason Merrill  <jason@redhat.com>
4276         Core 1148
4277         * typeck.c (check_return_expr): Fix conditions for setting
4278         LOOKUP_PREFER_RVALUE.
4280         * call.c (build_over_call): Remove require_complete_type_sfinae call.
4282         PR c++/48132
4283         * decl.c (check_array_designated_initializer): Allow integer index.
4284         (reshape_init_array_1): Set index on the elements.
4286 2011-03-16  Jason Merrill  <jason@redhat.com>
4288         PR c++/48113
4289         * typeck.c (convert_for_initialization): Use
4290         perform_implicit_conversion_flags.
4291         * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
4292         rvaluedness_matches_p on ck_rvalue.
4293         (convert_like_real) [ck_rvalue]: And restore it here.
4295         PR c++/48115
4296         * call.c (convert_arg_to_ellipsis): Handle incomplete type.
4298 2011-03-16  Jason Merrill  <jason@redhat.com>
4300         * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
4301         committed to this tentative parse.
4303         PR c++/47999
4304         * semantics.c (finish_call_expr): Preserve reference semantics
4305         in templates.
4307         * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
4309 2011-03-16  Jakub Jelinek  <jakub@redhat.com>
4311         * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
4312         DECL_LANG_SPECIFIC is NULL.
4314 2011-03-15  Jason Merrill  <jason@redhat.com>
4316         Core 1074
4317         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
4318         check value_dependent_expression_p on the operand.
4320         * semantics.c (push_cx_call_context): Return bool.
4321         (cxx_eval_call_expression): Handle excess depth.
4323         Core 1191
4324         * method.c (synthesized_method_walk): Cleanups don't affect the
4325         triviality of a constructor, but do affect deletion and exception
4326         specification.
4328 2011-03-15  Rodrigo Rivas Costa  <rodrigorivascosta@gmail.com>
4330         * decl2.c (cp_check_const_attributes): New.
4331         (cplus_decl_attributes): Call cp_check_const_attributes.
4333 2011-03-15  Jason Merrill  <jason@redhat.com>
4335         PR c++/34758
4336         * call.c (convert_default_arg): Use DECL_ORIGIN of fn.  Check for
4337         recursion first.
4338         (push_defarg_context, pop_defarg_context): New.
4339         * parser.c (cp_parser_late_parsing_default_args): Use them.
4340         * cp-tree.h: Declare them.
4342 2011-03-11  Dodji Seketeli  <dodji@redhat.com>
4344         * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
4345         the argument of the indirection operator should not be dependent.
4346         Fix the comment.
4348 2011-03-11  Jason Merrill  <jason@redhat.com>
4350         PR c++/47125
4351         * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
4353         PR c++/47144
4354         * parser.c (cp_parser_template_type_arg): Set
4355         type_definition_forbidden_message.
4357         PR c++/47808
4358         * decl.c (compute_array_index_type): Discard folding
4359         if it didn't produce a constant.
4361 2011-03-11  Jakub Jelinek  <jakub@redhat.com>
4363         PR c++/48035
4364         * init.c (build_zero_init_1): Extracted from build_zero_init.
4365         Add FIELD_SIZE argument, if non-NULL and field bit_position
4366         as not smaller than that, don't add that field's initializer.
4367         Pass DECL_SIZE as last argument to build_zero_init_1
4368         for DECL_FIELD_IS_BASE fields.
4369         (build_zero_init): Use build_zero_init_1.
4371 2011-03-10  Jason Merrill  <jason@redhat.com>
4373         PR c++/48029
4374         * pt.c (iterative_hash_template_arg): Remove special case for
4375         ARRAY_TYPE.
4377         PR c++/47198
4378         * parser.c (cp_parser_single_declaration): Just return if
4379         cp_parser_parse_and_diagnose_invalid_type_name complained.
4381 2011-03-09  Jason Merrill  <jason@redhat.com>
4383         PR c++/44629
4384         * pt.c (unify): An unresolved overload is a nondeduced context.
4386 2011-03-09  Martin Jambor  <mjambor@suse.cz>
4388         PR tree-optimization/47714
4389         * method.c (use_thunk): Clear addressable flag of thunk arguments.
4391 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
4393         PR c++/47705
4394         * pt.c (convert_nontype_argument): Only call decay_conversion on
4395         arrays.
4397 2011-03-08  Jason Merrill  <jason@redhat.com>
4399         PR c++/47488
4400         * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
4402         PR c++/47705
4403         * pt.c (convert_nontype_argument): Don't crash on non-pointer
4404         argument to pointer parameter.
4406         PR c++/45651
4407         * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
4408         !TREE_PUBLIC decls.
4410 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
4412         PR c++/47957
4413         * name-lookup.c (binding_to_template_parms_of_scope_p): Only
4414         consider scopes of primary template definitions.  Adjust comments.
4416 2011-03-07  Jason Merrill  <jason@redhat.com>
4418         PR c++/48003
4419         * pt.c (convert_nontype_argument): Fix -fpermissive allowing
4420         integer overflow.
4421         * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
4423         PR c++/48015
4424         * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
4426         PR c++/48008
4427         * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
4428         (write_CV_qualifiers_for_type): Not here.
4430 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
4432         * lang-specs.h: Match -save-temps* instead of -save-temps.
4434 2011-03-05  Jason Merrill  <jason@redhat.com>
4436         * mangle.c (write_expression): Change ABI v6 to v5.
4437         (write_type): Likewise.
4439 2011-03-04  Jan Hubicka  <jh@suse.cz>
4441         PR lto/47497
4442         * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
4443         and cgraph_add_thunk.
4444         * method.c (make_alias_for_thunk, use_thunk): Likewise.
4445         * mangle.c (mangle_decl): Likewise.
4447 2011-03-04  Jason Merrill  <jason@redhat.com>
4449         PR c++/47971
4450         * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
4451         (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
4453         PR c++/46220
4454         * search.c (check_final_overrider): Allow pointer to same incomplete
4455         class type with different cv-quals.
4457 2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
4459         PR c++/47974
4460         * pt.c (tsubst_template_args): Check argument t for error_mark_node.
4462 2011-03-03  Jason Merrill  <jason@redhat.com>
4464         PR c++/47950
4465         * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
4467 2011-03-02  Jason Merrill  <jason@redhat.com>
4469         PR c++/47950
4470         * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
4472         PR c++/47774
4473         * tree.c (build_vec_init_elt): Split out from...
4474         (build_vec_init_expr): ...here.
4475         (diagnose_non_constexpr_vec_init): New fn.
4476         * semantics.c (potential_constant_expression_1): Use it.
4477         * cp-tree.h: Declare it.
4479 2011-03-01  Jason Merrill  <jason@redhat.com>
4481         PR c++/46159
4482         * parser.c (cp_parser_primary_expression): Don't warn about a
4483         failed tentative parse.
4485         PR c++/47200
4486         * semantics.c (cxx_bind_parameters_in_call): Don't call
4487         adjust_temp_type on non-constant args.
4489         PR c++/47851
4490         * call.c (standard_conversion): Provide requested cv-quals on
4491         class rvalue conversion.
4493         PR c++/46282
4494         * decl2.c (grokbitfield): Handle type-dependent width.
4496 2011-02-28  Jason Merrill  <jason@redhat.com>
4498         PR c++/47873
4499         * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
4500         after checking for a non-thunk.
4502 2011-02-26  Jason Merrill  <jason@redhat.com>
4504         PR c++/47904
4505         * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
4506         * pt.c (iterative_hash_template_arg): And hash it.
4508         PR c++/47897
4509         * semantics.c (non_const_var_error): Split out from...
4510         (cxx_eval_constant_expression): ...here.
4511         (potential_constant_expression_1) [VAR_DECL]: Use it.
4512         Allow dependent variables.
4514 2011-02-24  Jason Merrill  <jason@redhat.com>
4516         * parser.c (cp_parser_constant_expression): Set
4517         non_integral_constant_expression correctly for C++0x too.
4518         (cp_parser_static_assert): Allow non-constant expression.
4519         (cp_parser_direct_declarator): Expect non_constant_p to be set
4520         properly for C++0x.
4521         * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
4522         * semantics.c (maybe_constant_value): Check type_unknown_p too.
4523         (potential_rvalue_constant_expression): New.
4524         (require_potential_rvalue_constant_expression): New.
4526 2011-02-23  Jason Merrill  <jason@redhat.com>
4528         * cp-tree.h (DECL_PARM_LEVEL): New.
4529         (struct lang_decl_parm): Add level field.
4530         * name-lookup.c (function_parm_depth): New fn.
4531         * name-lookup.h: Declare it.
4532         * parser.c (cp_parser_parameter_declaration_list): Use it.
4533         * mangle.c (struct globals): Add parm_depth field.
4534         (write_bare_function_type): Adjust it.
4535         (write_expression): Include the level delta in PARM_DECL mangling
4536         for abi >= 6.
4538         * semantics.c (finish_decltype_type): Remove shortcut for decltype
4539         of id-expression.
4540         * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
4542 2011-02-23  Nathan Froyd  <froydnj@codesourcery.com>
4544         PR c++/46868
4545         * parser.c (cp_parser_class_specifier): Require a closing brace
4546         to attempt error recovery.
4548 2011-02-23  Jakub Jelinek  <jakub@redhat.com>
4550         PR c++/47833
4551         * pt.c (struct pending_template): Add chain_next GTY option.
4552         * decl.c (struct named_label_use_entry): Likewise.
4554 2011-02-22  Paolo Carlini  <paolo.carlini@oracle.com>
4556         PR c++/47242
4557         * semantics.c (build_lambda_object): Bail out if a field is
4558         error_mark_node.
4560 2011-02-22  Dodji Seketeli  <dodji@redhat.com>
4562         PR c++/47666
4563         * class.c (dfs_declare_virt_assop_and_dtor)
4564         (declare_virt_assop_and_dtor): New static functions.
4565         (add_implicitly_declared_members): Use
4566         declare_virt_assop_and_dtor.
4568 2011-02-21  Jason Merrill  <jason@redhat.com>
4570         PR c++/47207
4571         * decl2.c (decl_constant_var_p): A constexpr var needs an
4572         initializer to be constant.
4573         * semantics.c (cxx_eval_constant_expression): Complain about
4574         constexpr var used in its own initializer.
4575         * call.c (set_up_extended_ref_temp): Set
4576         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
4578 2011-02-20  Jason Merrill  <jason@redhat.com>
4580         PR c++/47199
4581         * semantics.c (cxx_eval_call_expression): Call
4582         cxx_eval_constant_expression in trivial shortcut.
4584         PR c++/46831
4585         * call.c (convert_class_to_reference): Don't try to set up a
4586         second conv sequence for non-viable candidates.
4588         PR c++/47703
4589         * error.c (location_of): Handle non-tagged types.
4591         PR c++/46472
4592         * method.c (process_subob_fn): Instantiate constexpr templates.
4593         * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
4595 2011-02-20  Dodji Seketeli  <dodji@redhat.com>
4597         PR c++/46394
4598         * pt.c (tsubst_pack_expansion): do not use
4599         cp_tree_equal/same_type_p to detect an expansion of a parameter
4600         pack.
4602 2011-02-19  Jason Merrill  <jason@redhat.com>
4604         PR c++/47503
4605         * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
4607 2011-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
4609         PR c++/47795
4610         * semantics.c (finish_non_static_data_member): Early return if
4611         object is error_mark_node.
4613 2011-02-18  Dodji Seketeli  <dodji@redhat.com>
4615         PR c++/47208
4616         * pt.c (do_auto_deduction): Do not mention error_mark_node in
4617         diagnostics.
4618         * semantics.c (finish_id_expression): Do not pass erroneous decl
4619         to decl_constant_var_p.
4621 2011-02-17  Jakub Jelinek  <jakub@redhat.com>
4623         PR c++/47783
4624         * cvt.c (convert_from_reference): Call mark_exp_read.
4626 2011-02-11  Dodji Seketeli  <dodji@redhat.com>
4628         PR c++/47172
4629         * pt.c (finish_call_expr): Consider a call expression that has a
4630         dependent "this" pointer as being dependent.  Add comments.
4631         (dependent_type_p, type_dependent_expression_p): Update comments.
4633 2011-02-16  Dodji Seketeli  <dodji@redhat.com>
4635         PR c++/47326
4636         * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
4637         expansion arguments are not evaluated.
4639 2011-02-16  Jakub Jelinek  <jakub@redhat.com>
4641         PR c++/47704
4642         * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
4643         instead of TYPE_LANG_FLAG_3.
4644         * pt.c (lookup_template_class): Copy over
4645         ENUM_FIXED_UNDERLYING_TYPE_P.
4647 2011-02-15  Jason Merrill  <jason@redhat.com>
4649         PR c++/46807
4650         * method.c (synthesized_method_walk): Always exit early for
4651         trivial fn in C++98 mode.
4653 2011-02-14  Jason Merrill  <jason@redhat.com>
4655         PR c++/47482
4656         * parser.c (cp_parser_enumerator_definition): Call
4657         fold_non_dependent_expr.
4659 2011-02-09  Jason Merrill  <jason@redhat.com>
4661         * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
4662         * semantics.c (finish_fname): Only return the name if we're in
4663         a function.
4665         * decl.c (build_enumerator): Don't perform integral promotions on
4666         non-integral constants.
4668         * cvt.c (convert_to_void): Handle null op1.
4670         * class.c (type_has_constexpr_default_constructor): Make sure the
4671         caller stripped an enclosing array.
4672         * init.c (perform_member_init): Strip arrays before calling it.
4674         PR c++/47511
4675         * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
4677 2011-02-03  Dodji Seketeli  <dodji@redhat.com>
4679         PR c++/47398
4680         * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
4681         template parameters in account.
4683 2011-02-03  Nathan Froyd  <froydnj@codesourcery.com>
4685         PR c++/46890
4686         * parser.c (cp_parser_class_specifier): Fix setting of
4687         want_semicolon.
4689 2011-01-31  Jakub Jelinek  <jakub@redhat.com>
4691         PR c++/47416
4692         * semantics.c (build_data_member_initialization): Handle
4693         STATEMENT_LIST always instead of just for CLEANUP_BODY.
4695 2011-01-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4697         * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
4698         LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
4700 2011-01-29  Dodji Seketeli  <dodji@redhat.com>
4702         PR c++/47311
4703         * cp-tree.h (fixup_template_parms): Declare.
4704         * pt.c (end_template_parm_list): Do not fixup template parms here.
4705         (fixup_template_parms): Remove static. Fix typo in the
4706         comments. Remove useless code statement.
4707         (fixup_template_parm): For a template template parameter, fixup
4708         its attributes before fixing up its type.
4709         * parser.c
4710         (cp_parser_template_declaration_after_export): After parsing
4711         template parameters fixup their types.
4713 2011-01-26  Jakub Jelinek  <jakub@redhat.com>
4715         PR c++/47476
4716         * semantics.c (potential_constant_expression_1): Handle
4717         TRUTH_XOR_EXPR.
4719 2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
4721         PR c++/43601
4722         * semantics.c (expand_or_defer_fn_1): Handle it.
4723         * decl2.c (decl_needed_p): Likewise.
4725 2011-01-21  Jason Merrill  <jason@redhat.com>
4727         PR c++/47041
4728         * semantics.c (build_constexpr_constructor_member_initializers):
4729         Handle trivial copy.
4731 2011-01-21  Jakub Jelinek  <jakub@redhat.com>
4733         PR c++/47388
4734         * semantics.c (begin_for_stmt): If -fno-for-scope, don't
4735         assume init must be NULL if scope is NULL.
4736         (begin_range_for_stmt): Likewise.
4738 2011-01-21  Jason Merrill  <jason@redhat.com>
4740         PR c++/46552
4741         * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
4743         PR c++/46977
4744         * semantics.c (potential_constant_expression_1): Split out from
4745         potential_constant_expression.  Add want_rval parm.  Handle
4746         template expression forms.  Don't enforce restriction on address
4747         of automatic variable here.  Add a couple of diagnostics that
4748         had been missing.
4749         (require_potential_constant_expression): New entry point.
4750         (build_data_member_initialization, register_constexpr_fundef): Adjust.
4751         (maybe_constant_value): Check potential_constant_expression.
4752         * pt.c (fold_non_dependent_expr_sfinae): Likewise.
4753         * tree.c (build_vec_init_expr): Adjust.
4755 2011-01-19  Jakub Jelinek  <jakub@redhat.com>
4757         PR c++/47303
4758         * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
4759         or DECL_EXTERNAL.
4761 2011-01-17  Jason Merrill  <jason@redhat.com>
4763         PR c++/47067
4764         * semantics.c (base_field_constructor_elt): New fn.
4765         (cxx_eval_bare_aggregate): Use it.
4766         (build_data_member_initialization): Leave COMPONENT_REF for
4767         vfield inits.
4769 2011-01-14  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
4771         * parser.c (cp_parser_range_for): Remove the "unused variable" warning
4772         workaround.
4774 2011-01-15  Giovanni Funchal  <gafunchal@gmail.com>
4775             Jonathan Wakely  <jwakely.gcc@gmail.com>
4777         PR c++/33558
4778         * decl.c (grokdeclarator): Reject mutable reference members.
4780 2011-01-14  Jason Merrill  <jason@redhat.com>
4782         PR c++/47289
4783         * pt.c (coerce_template_parms): Fix error recovery.
4785         PR c++/46903
4786         * typeck2.c (check_narrowing): Only check arithmetic types.
4788         PR c++/46688
4789         * tree.c (build_vec_init_expr): Handle flexible array
4790         properly.
4792 2011-01-13  Kai Tietz  <kai.tietz@onevision.com>
4794         PR c++/47213
4795         * cp-tree.h (CLASSTYPE_VISIBILITY): Use
4796         TYPE_MAIN_DECL instead of TYPE_NAME.
4797         (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
4798         * decl2.c (determine_visibility): Add check
4799         of CLASS_TYPE_P for underlying_type.
4801 2011-01-12  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
4803         * cp-tree.h (begin_for_scope): New prototype.
4804         (begin_for_stmt): Update prototype.
4805         (begin_range_for_stmt): Update prototype.
4806         * init.c (build_vec_init): Update call to begin_for_stmt.
4807         * parser.c (cp_parser_for): New.
4808         (cp_parser_c_for): Add three new parameters.
4809         (cp_parser_range_for): Likewise. Most parsing code removed.
4810         (cp_parser_iteration_statement): Call cp_parser_for instead of
4811         cp_parser_c_for and cp_parser_range_for.
4812         (cp_parser_for_init_statement): Add new parameter and return type.
4813         (cp_parser_block_declaration): Update call to
4814         cp_parser_simple_declaration.
4815         (cp_parser_simple_declaration): Add new parameter.
4816         Update call to cp_parser_init_declarator.
4817         (cp_parser_init_declarator): Add new parameter.
4818         * pt.c (tsubst_expr): Update call to begin_for_stmt.
4819         * semantics.c (begin_for_scope): New.
4820         (begin_for_stmt): Add two new parameters.
4821         (begin_range_for_stmt): Likewise.
4823 2011-01-12  Nicola Pero  <nicola.pero@meta-innovation.com>
4825         * parser.c (cp_parser_objc_at_property_declaration): Improved
4826         error message.
4828 2011-01-11  Dodji Seketeli  <dodji@redhat.com>
4830         PR debug/46955
4831         * cp-lang.c (get_template_innermost_arguments_folded)
4832         (get_template_argument_pack_elems_folded)
4833         (template_arg_needs_folding, fold_cplus_constants): New static
4834         functions.
4835         (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
4836         get_template_innermost_arguments_folded.
4837         (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
4838         get_template_argument_pack_elems_folded.
4840 2011-01-11  Jason Merrill  <jason@redhat.com>
4842         PR c++/46658
4843         * init.c (build_new_1): Handle value-init in templates differently.
4845         PR c++/45520
4846         * tree.c (maybe_dummy_object): Check current_class_ref against
4847         context, not current_class_type.
4849 2011-01-08  Nicola Pero  <nicola.pero@meta-innovation.com>
4851         PR objc/47078
4852         * parser.c (cp_parser_objc_typename): If the type is unknown, for
4853         error recovery purposes behave as if it was not specified so that
4854         the default type is used.
4856 2011-01-07  Jakub Jelinek  <jakub@redhat.com>
4858         PR c++/47022
4859         * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
4860         for the second build_x_va_arg argument.
4862 2011-01-05  Tom Tromey  <tromey@redhat.com>
4864         * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
4865         (lvalue_or_else): Likewise.
4867 2011-01-01  Kai Tietz  <kai.tietz@onevision.com>
4869         PR target/38662
4870         * tree.c (cxx_type_hash_eq):
4871         Allow METHOD_TYPE, too.
4874 Copyright (C) 2011 Free Software Foundation, Inc.
4876 Copying and distribution of this file, with or without modification,
4877 are permitted in any medium without royalty provided the copyright
4878 notice and this notice are preserved.