PR c++/61661
[official-gcc.git] / gcc / cp / ChangeLog
blobef04cba5cea6a9951feff32dd5103afbe266f110
1 2014-07-10  Jason Merrill  <jason@redhat.com>
3         PR c++/61661
4         * semantics.c (reduced_constant_expression_p): Handle CONSTRUCTOR.
6         PR c++/61659
7         PR c++/61687
8         * decl2.c (mark_all_virtuals): New variable.
9         (maybe_emit_vtables): Check it instead of flag_devirtualize.
10         (cp_write_global_declarations): Set it and give helpful diagnostic
11         if it introduces errors.
12         * class.c (finish_struct_1): Check it.
13         * decl.c (grokdeclarator): Clear virtualp after 'virtual auto' error.
15 2014-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
17         PR c++/60686
18         * decl.c (grokdeclarator): Adjust error messages about 'explicit'
19         outside class declaration, in friend declaration, and neither on
20         constructor nor conversion operator.
22 2014-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
24         DR 1584
25         PR c++/57466
26         * pt.c (check_cv_quals_for_unify): Implement resolution, disregard
27         cv-qualifiers of function types.
29 2014-07-09  Andrew Sutton  <andrew.n.sutton@gmail.com>
30             Paolo Carlini  <paolo.carlini@oracle.com>
32         PR c++/59361
33         * parser.c (cp_parser_tokens_start_cast_expression): Return 0 for
34         CPP_ELLIPSIS too.
36 2014-07-07  Paolo Carlini  <paolo.carlini@oracle.com>
38         * class.c (check_for_override): Wrap the 'final' and 'override'
39         keywords in %< and %>.
41 2014-07-06  Marek Polacek  <polacek@redhat.com>
43         PR c/6940
44         * cp-tree.h (DECL_ARRAY_PARAMETER_P): Define.
45         * decl.c (grokdeclarator): Set DECL_ARRAY_PARAMETER_P.
46         * typeck.c (cxx_sizeof_expr): Warn when using sizeof on an array
47         function parameter.
49 2014-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
51         * pt.c (convert_template_argument): Use inform instead of error in
52         three places.
54 2014-06-30  Edward Smith-Rowland  <3dw4rd@verizon.net>
56         PR c++/58781
57         PR c++/60249
58         PR c++/59867
59         * parser.c (cp_parser_userdef_string_literal()): Take a tree
60         not a cp_token*. (cp_parser_string_literal(): Don't hack
61         the token stream!
63 2014-06-30  Jason Merrill  <jason@redhat.com>
65         PR c++/61659
66         PR lto/53808
67         * decl2.c (maybe_emit_vtables): Mark all vtable entries if
68         devirtualizing.
69         * init.c (build_vtbl_address): Don't mark destructor.
70         * class.c (finish_struct_1): Add all classes to keyed_classes
71         if devirtualizing.
73         PR c++/61647
74         * pt.c (type_dependent_expression_p): Check BASELINK_OPTYPE.
76         PR c++/61566
77         * mangle.c (decl_mangling_context): Look through a TEMPLATE_DECL.
79         * decl.c (build_ptrmemfunc_type): Don't give a PMF RECORD_TYPE
80         TYPE_BINFO or TYPE_LANG_SPECIFIC.
81         * cp-tree.h (TYPE_PTRMEMFUNC_FLAG): Use TYPE_LANG_FLAG_2.
82         (TYPE_PTRMEMFUNC_P): Don't expect TYPE_LANG_SPECIFIC.
83         * typeck.c (build_ptrmemfunc_access_expr): Don't use lookup_member.
84         * pt.c (unify): Also check whether the argument is a PMF.
86 2014-06-30  Paolo Carlini  <paolo.carlini@oracle.com>
88         PR c++/54891
89         * parser.c (cp_parser_tokens_start_cast_expression): In C++11
90         a '[' can also start a primary-expression.
91         (cp_parser_cast_expression): Parse a cast-expression only tentatively
92         when cp_parser_tokens_start_cast_expression returns -1.
94 2014-06-30  Jason Merrill  <jason@redhat.com>
96         PR c++/61539
97         * pt.c (unify_one_argument): Type/expression mismatch just causes
98         deduction failure.
100         * semantics.c (simplify_aggr_init_expr): Remove remnants of
101         2014-04-11 change.
103 2014-06-30  Marek Polacek  <polacek@redhat.com>
105         * cp-gimplify.c (cp_genericize): Don't instrument returns if the
106         function has no_sanitize_undefined attribute.
107         * decl.c (compute_array_index_type): Don't instrument VLAs if the
108         function has no_sanitize_undefined attribute.
110 2014-06-30  Igor Zamyatin  <igor.zamyatin@intel.com>
112         PR middle-end/57541
113         * cp-array-notation.c (expand_sec_reduce_builtin):
114         Check that bultin argument is correct.
115         * call.c (build_cxx_call): Check for 0 arguments in builtin call.
117 2014-06-28  Jonathan Wakely  <jwakely@redhat.com>
119         DR 1579
120         PR c++/58051
121         * typeck.c (check_return_expr): Lookup as an rvalue even when the
122         types aren't the same.
124 2014-06-27  Jason Merrill  <jason@redhat.com>
126         PR c++/61433
127         * error.c (dump_template_bindings): Don't tsubst in a clone.
129 2014-06-27  Paolo Carlini  <paolo.carlini@oracle.com>
131         PR c++/61614
132         * semantics.c (finish_compound_literal): Revert r204228.
134 2014-06-27  Paolo Carlini  <paolo.carlini@oracle.com>
136         * parser.c (cp_parser_compound_literal_p): New.
137         (cp_parser_postfix_expression, cp_parser_sizeof_operand): Use it.
139 2014-06-26  Jason Merrill  <jason@redhat.com>
141         * parser.c (cp_parser_for_init_statement): Change range-for error
142         to pedwarn.
144         N3994 Ranged-based for-loops: The Next Generation
145         * parser.c (cp_lexer_nth_token_is): New.
146         (cp_parser_for_init_statement): Allow "for (id : init)".
148 2014-06-26  Teresa Johnson  <tejohnson@google.com>
150         * class.c (dump_class_hierarchy): Use saved dump files.
151         (dump_vtable): Ditto.
152         (dump_vtt): Ditto.
154 2014-06-26  Adam Butcher  <adam@jessamine.co.uk>
156         PR c++/61537
157         * parser.c (cp_parser_elaborated_type_specifier): Only consider template
158         parameter lists outside of function parameter scope.
160 2014-06-25  Paolo Carlini  <paolo.carlini@oracle.com>
162         DR 178
163         PR c++/49132
164         * typeck2.c (process_init_constructor_record): Do not complain about
165         uninitialized const members, because within aggregate-initialization,
166         members without explicit initializers are value-initialized.
168 2014-06-25  Jakub Jelinek  <jakub@redhat.com>
170         * semantics.c (finish_omp_clauses): Make sure
171         OMP_CLAUSE_LINEAR_STEP has correct type.
173 2014-06-24  Jan Hubicka  <hubicka@ucw.cz>
175         * class.c (check_methods, create_vtable_ptr, determine_key_method,
176         add_vcall_offset_vtbl_entries_1): Guard VINDEX checks by
177         FUNCTION_DECL check.
178         * cp-tree.h (lang_decl_ns): Add ns_using and ns_users.
179         (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): Use lang_decl_ns.
180         (DECL_NAMESPACE_ASSOCIATIONS): Use DECL_INITIAL.
181         (DECL_TEMPLATE_INSTANTIATIONS): Use DECL_SIZE_UNIT.
183 2014-06-24  Paolo Carlini  <paolo.carlini@oracle.com>
185         PR c++/33972
186         * decl.c (grokdeclarator): Do not early check for operator-function-id
187         as non-function.
189 2014-06-24  Trevor Saunders  <tsaunders@mozilla.com>
191         * class.c, semantics.c, tree.c, vtable-class-hierarchy.c:
192         Adjust.
194 2014-06-24  Jakub Jelinek  <jakub@redhat.com>
196         * parser.c (cp_parser_omp_for_loop): For
197         #pragma omp parallel for simd move lastprivate clause from parallel
198         to for rather than simd.
200 2014-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
202         DR 577
203         PR c++/33101
204         * decl.c (grokparms): Accept a single parameter of type 'void'.
206 2014-06-20  Jason Merrill  <jason@redhat.com>
208         PR c++/59296
209         * call.c (add_function_candidate): Avoid special 'this' handling
210         if we have a ref-qualifier.
212         PR c++/61556
213         * call.c (build_over_call): Call build_this in template path.
215 2014-06-19  Jason Merrill  <jason@redhat.com>
217         PR c++/59296
218         * call.c (add_function_candidate): Also set LOOKUP_NO_TEMP_BIND.
220 2014-06-18  Jason Merrill  <jason@redhat.com>
222         PR c++/59296
223         * call.c (add_function_candidate): Set LOOKUP_NO_RVAL_BIND for
224         ref-qualifier handling.
226         PR c++/61507
227         * pt.c (resolve_overloaded_unification): Preserve
228         ARGUMENT_PACK_EXPLICIT_ARGS.
230 2014-06-18  Jakub Jelinek  <jakub@redhat.com>
232         * cp-gimplify.c (cxx_omp_finish_clause): Add a gimple_seq *
233         argument.
234         * cp-tree.h (cxx_omp_finish_clause): Adjust prototype.
236 2014-06-17  Jason Merrill  <jason@redhat.com>
238         PR c++/60605
239         * pt.c (check_default_tmpl_args): Check DECL_LOCAL_FUNCTION_P.
241 2014-06-15  Jason Merrill  <jason@redhat.com>
243         PR c++/61488
244         * pt.c (check_valid_ptrmem_cst_expr): Fix for template context.
246         PR c++/61500
247         * tree.c (lvalue_kind): Handle MEMBER_REF and DOTSTAR_EXPR.
249 2014-06-15  Jan Hubicka  <hubicka@ucw.cz>
251         * decl.c (grokvardecl): Fix pasto in previous patch.
253 2014-06-15  Jan Hubicka  <hubicka@ucw.cz>
255         * decl.c (duplicate_decls): Use set_decl_tls_model.
256         (grokdeclarator): Likewise.
257         * semantics.c (finish_id_expression): Check TLS only for
258         static variables.
259         (finish_omp_threadprivate): Use decl_default_tls_model.
260         * decl2.c (get_guard): Likewise.
261         * call.c (make_temporary_var_for_ref_to_temp): Likewise.
263 2014-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
265         PR c++/33101
266         * decl.c (grokparms): Improve error message about void parameters.
267         * error.c (type_to_string): Fix aka cut off code.
269 2014-06-12  Jason Merrill  <jason@redhat.com>
271         * call.c (convert_arg_to_ellipsis): Use abi_version_crosses.
272         * cvt.c (type_promotes_to): Likewise.
273         * mangle.c (write_type, write_expression): Likewise.
274         (write_name, write_template_arg): Likewise.
275         (mangle_decl): Make alias based on flag_abi_compat_version.
276         Emit -Wabi warning here.
277         (finish_mangling_internal): Not here.  Drop warn parm.
278         (finish_mangling_get_identifier, finish_mangling): Adjust.
279         (mangle_type_string, mangle_special_for_type): Adjust.
280         (mangle_ctor_vtbl_for_type, mangle_thunk): Adjust.
281         (mangle_guard_variable, mangle_tls_init_fn): Adjust.
282         (mangle_tls_wrapper_fn, mangle_ref_init_variable): Adjust.
284         * call.c (build_operator_new_call): Remove -fabi-version=1 support.
285         * class.c (walk_subobject_offsets, include_empty_classes): Likewise.
286         (layout_nonempty_base_or_field, end_of_class): Likewise.
287         (layout_empty_base, build_base_field, layout_class_type): Likewise.
288         (is_empty_class, add_vcall_offset_vtbl_entries_1): Likewise.
289         (layout_virtual_bases): Likewise.
290         * decl.c (compute_array_index_type): Likewise.
291         * mangle.c (write_mangled_name, write_prefix): Likewise.
292         (write_template_prefix, write_integer_cst, write_expression): Likewise.
293         (write_template_arg, write_array_type): Likewise.
294         * method.c (lazily_declare_fn): Likewise.
295         * rtti.c (get_pseudo_ti_index): Likewise.
296         * typeck.c (comp_array_types): Likewise.
298 2014-06-11  Jan Hubicka  <hubicka@ucw.cz>
300         * vtable-class-hierarchy.c: Update handling for section names
301         that are no longer trees.
302         * decl.c (duplicate_decls): Likewise.
304 2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
306         PR c++/19200
307         * parser.c (cp_parser_init_declarator): Actually pass friend_p
308         to cp_parser_declarator.
310 2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
312         PR c++/60265
313         * parser.c (cp_parser_using_declaration): Handle unscoped enums.
314         * name-lookup.c (validate_nonmember_using_decl): Adjust error
315         message.
317 2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
319         PR c++/19200
320         * parser.c (cp_parser_declarator): Add bool parameter.
321         (cp_parser_direct_declarator): Likewise, use it.
322         (cp_parser_member_declaration): Pass friend_p to cp_parser_declarator.
323         (cp_parser_condition, cp_parser_explicit_instantiation,
324         cp_parser_init_declarator, cp_parser_type_id_1,
325         cp_parser_parameter_declaration, cp_parser_exception_declaration,
326         cp_parser_cache_defarg, cp_parser_objc_class_ivars,
327         cp_parser_objc_struct_declaration, cp_parser_omp_for_loop_init):
328         Adjust.
329         * decl.c (grokdeclarator): Fix handling of friend declared in
330         namespace scope (g++.dg/parse/friend10.C).
332 2014-06-10  Jan Hubicka  <hubicka@ucw.cz>
334         * vtable-class-hierarchy.c: Use symtab_get_node (var_decl)
335         ->implicit_section.
336         * optimize.c (cdtor_comdat_group): Fix handling of aliases.
337         (maybe_clone_body): Move symbol across comdat groups.
338         * method.c (use_thunk): Copy implicit section flag.
340 2014-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
342         PR c++/22556
343         * name-lookup.c (pushdecl_maybe_friend_1): Use comptypes.
345 2014-06-07  Jan Hubicka  <hubicka@ucw.cz>
347         * method.c (use_thunk): Use set_decl_section_name.
348         * optimize.c (maybe_clone_body): Use set_decl_section_name.
349         * decl.c (duplicate_decls): Likewise.
350         * vtable-class-hierarchy.c: Likewise.
352 2014-06-06  Paolo Carlini  <paolo.carlini@oracle.com>
354         PR c++/60184
355         * class.c (check_field_decls): In C++11 mode do not reject
356         static data members and reference-type members in unions.
358 2014-06-05  Jason Merrill  <jason@redhat.com>
360         PR c++/43453
361         * decl.c (check_initializer): Collapse a TREE_LIST here.
362         * typeck2.c (store_init_value): Not here.
364 2014-06-05  Richard Biener  <rguenther@suse.de>
365             Paolo Carlini  <paolo.carlini@oracle.com>
367         PR c++/56961
368         * cp-gimplify.c (cp_gimplify_expr, [MODIFY_EXPR]): Rework
369         handling of empty classes.
371 2014-06-04  Jason Merrill  <jason@redhat.com>
373         * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful note
374         for noexcept and thread_local, too.
376         PR c++/61343
377         * decl.c (check_initializer): Maybe clear
378         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
380 2014-06-05  Richard Biener  <rguenther@suse.de>
382         PR c++/61004
383         * typeck.c (cp_build_indirect_ref): Do not emit strict-aliasing
384         warnings for accessing empty classes.
386 2014-06-05  Marek Polacek  <polacek@redhat.com>
388         PR c/49706
389         * parser.c (cp_parser_binary_expression): Warn when logical not is
390         used on the left hand side operand of a comparison.
392 2014-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
394         PR c++/43453
395         * typeck.c (cp_build_modify_expr): Handle array of characters
396         initialized by a string literal.
397         * decl.c (check_initializer): Handle parenthesized string literal
398         as initializer.
399         * typeck2.c (store_init_value): Remove redundant check.
401 2014-06-04  Jason Merrill  <jason@redhat.com>
403         PR c++/51253
404         PR c++/61382
405         * cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPR_LIST_INIT_P here.
406         * semantics.c (simplify_aggr_init_expr): Not here, just copy it.
408 2014-06-04  Igor Zamyatin  <igor.zamyatin@intel.com>
410         PR c/58942
411         * cp-array-notation.c (expand_sec_reduce_builtin): Handle the case
412         with a pointer.
414 2014-06-03  Paolo Carlini  <paolo.carlini@oracle.com>
416         DR 1423
417         PR c++/52174
418         * call.c (standard_conversion): Convert nullptr to bool only
419         in case of direct-initialization.
420         (convert_like_real): Provide informative error message.
422 2014-06-03  Marek Polacek  <polacek@redhat.com>
424         PR c/60439
425         * semantics.c (finish_switch_cond): Warn if switch condition has
426         boolean value.
428 2014-06-03  Jason Merrill  <jason@redhat.com>
430         PR c++/60992
431         * pt.c (tsubst_copy) [VAR_DECL]: Try lookup first.  Add a new
432         variable to local_specializations.
434         PR c++/60848
435         * call.c (is_std_init_list): Check CLASSTYPE_TEMPLATE_INFO.
437 2014-06-02  Jason Merrill  <jason@redhat.com>
439         PR c++/61046
440         * decl.c (reshape_init_class): Handle un-folded
441         constant-expressions.
443         PR c++/61134
444         * pt.c (pack_deducible_p): Handle canonicalization.
446 2014-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
448         * pt.c (tsubst_function_type): Initialize arg_types.
450 2014-06-02  Siva Chandra Reddy  <sivachandra@google.com>
452         PR debug/57519
453         * class.c (handle_using_decl): Pass the correct scope to
454         cp_emit_debug_info_for_using.
456 2014-06-02  Ville Voutilainen  <ville.voutilainen@gmail.com>
458         PR c++/59483
459         PR c++/61148
460         * search.c (accessible_p): Use current_nonlambda_class_type.
461         * semantics.c (check_accessibility_of_qualified_id): Likewise.
463 2014-06-02  Andrew MacLeod  <amacleod@redhat.com>
465         * decl.c: Include builtins.h.
466         * semantics.c: Likewise.
468 2014-05-31  Paolo Carlini  <paolo.carlini@oracle.com>
470         DR 1227
471         PR c++/57543
472         * cp-tree.h (TYPE_HAS_LATE_RETURN_TYPE): Add.
473         * pt.c (tsubst_function_type): Inject the this parameter; do the
474         substitutions in the order mandated by the DR.
475         (copy_default_args_to_explicit_spec): Copy TYPE_HAS_LATE_RETURN_TYPE.
476         * decl.c (grokdeclarator): Maybe set TYPE_HAS_LATE_RETURN_TYPE.
477         (static_fn_type): Copy it.
478         * decl2.c (build_memfn_type, change_return_type,
479         cp_reconstruct_complex_type): Likewise.
480         * parser.c (cp_parser_lambda_declarator_opt): Likewise.
481         * tree.c (strip_typedefs): Likewise.
482         * typeck.c (merge_types): Likewise.
484 2014-05-30  Jason Merrill  <jason@redhat.com>
486         PR c++/56947
487         * pt.c (instantiate_decl): Check that defer_ok is not set for
488         local class members.
490         PR c++/60992
491         * pt.c (tsubst_init): Split out from...
492         (tsubst_expr) [DECL_EXPR]: Here.
493         (tsubst_copy) [VAR_DECL]: Use it.
494         * semantics.c (finish_id_expression): Return the decl for static/const.
496 2014-05-28  Jason Merrill  <jason@redhat.com>
498         PR c++/47202
499         * decl.c (cxx_comdat_group): Return a decl.
500         * optimize.c (cdtor_comdat_group): Get its DECL_ASSEMBLER_NAME.
502         * pt.c (tsubst) [ARRAY_TYPE]: Check for array of array of unknown
503         bound.
505         PR c++/61242
506         * call.c (build_aggr_conv): Ignore passed in flags.
507         (build_array_conv, build_complex_conv): Likewise.
509 2014-05-23  Jan Hubicka  <hubicka@ucw.cz>
511         * optimize.c (maybe_thunk_body): Use set_comdat_group.
512         (maybe_clone_body): Likewise.
513         * decl.c (duplicate_decls): Update code duplicating comdat group;
514         do not copy symtab pointer; before freeing newdecl remove it
515         from symtab.
516         * decl2.c (constrain_visibility): Use set_comdat_group.
518 2014-05-23  Jan Hubicka  <hubicka@ucw.cz>
520         * rtti.c: Include tm_p.h
521         (emit_tinfo_decl): Force RTTI data to be aligned to required
522         ABI alignment only.
524 2014-05-23  Jan Hubicka  <hubicka@ucw.cz>
526         * class.c (build_vtable): Align vtables to TARGET_VTABLE_ENTRY_ALIGN
527         ignoring other target adjustments.
529 2014-05-23  Thomas Schwinge  <thomas@codesourcery.com>
531         * semantics.c (finish_omp_clauses): Remove duplicated variable
532         initialization.
534         * parser.c (cp_parser_omp_target): Return bool values.
536 2014-05-22  Paolo Carlini  <paolo.carlini@oracle.com>
538         PR c++/61088
539         * lambda.c (add_capture): Enforce that capture by value requires
540         complete type.
541         * typeck2.c (cxx_incomplete_type_inform): Early return if
542         TYPE_MAIN_DECL is null.
544 2014-05-21  Jonathan Wakely  <jwakely@redhat.com>
546         PR c/61271
547         * cp-array-notation.c (cilkplus_an_triplet_types_ok_p): Fix condition.
549 2014-05-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
551         PR c++/61133
552         * lambda.c (build_capture_proxy, add_capture): Treat normal
553         captures and init-captures identically.
555 2014-05-21  Mark Wielaard  <mjw@redhat.com>
557         PR debug/16063
558         * cp-lang.c (cxx_enum_underlying_base_type): New function.
559         (LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE): Define.
561 2014-05-21  Richard Sandiford  <rsandifo@linux.vnet.ibm.com>
563         * cvt.c (convert_to_void): Use void_node instead of void_zero_node.
564         * cp-array-notation.c (replace_invariant_exprs): Likewise.
565         (expand_array_notation): Handle VOID_CST.
566         * error.c (dump_expr): Likewise.
567         * cxx-pretty-print.c (cxx_pretty_printer::primary_expression)
568         (cxx_pretty_printer::expression): Likewise.
569         (pp_cxx_new_expression): Use void_node instead of void_zero_node.
570         * decl.c (register_dtor_fn): Likewise.
571         * init.c (build_raw_new_expr, build_new_1, build_vec_init)
572         (build_delete, push_base_cleanups): Likewise.
573         * mangle.c (write_expression): Likewise.
574         * semantics.c (finish_break_stmt, empty_expr_stmt_p): Likewise.
575         * pt.c (tsubst_decl, tsubst_copy_and_build): Likewise.
576         (tsubst, tsubst_copy, build_non_dependent_expr): Handle VOID_CST.
577         * tree.c (cp_tree_equal): Likewise.
578         (build_dummy_object, is_dummy_object, stabilize_expr): Use void_node
579         instead of void_zero_node.
580         * typeck.c (check_return_expr): Likewise.
581         * typeck2.c (build_functional_cast): Likewise.
583 2014-05-21  Igor Zamyatin  <igor.zamyatin@intel.com>
585         PR c/60189
586         * parser.c (cp_parser_postfix_expression): Move handling of cilk_sync
587         from here to...
588         (cp_parser_statement): ...here. Make sure only semicolon can go after
589         Cilk_sync.
591 2014-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
593         PR c++/58753
594         PR c++/58930
595         PR c++/58704
596         * typeck2.c (digest_nsdmi_init): New.
597         * parser.c (cp_parser_late_parse_one_default_arg): Use it.
598         * init.c (get_nsdmi): Likewise.
599         * cp-tree.h (digest_nsdmi_init): Declare.
601 2014-05-20  Jason Merrill  <jason@redhat.com>
603         * typeck.c (get_member_function_from_ptrfunc): Don't try to look
604         up a virtual function in a dummy object.
606 2014-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
608         PR c++/60373
609         * decl.c (duplicate_decls): Replace pair of warning_at with
610         warning_at + inform.
611         (maybe_commonize_var): Likewise.
613 2014-05-20  Richard Sandiford  <rsandifo@linux.vnet.ibm.com>
615         PR bootstrap/61210
616         * pt.c (tsubst_copy, tsubst_omp_for_iterator, tsubst_expr)
617         (tsubst_copy_and_build): Perform recursive substitutions in a
618         deterministic order.
620 2014-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
622         PR c++/58664
623         * typeck2.c (cxx_incomplete_type_inform): New.
624         (cxx_incomplete_type_diagnostic): Use it.
625         * decl.c (grokdeclarator): Check the element type of an
626         incomplete array type; call the above.
627         * cp-tree.h (cxx_incomplete_type_inform): Declare.
629 2014-05-19  Jason Merrill  <jason@redhat.com>
631         PR c++/58761
632         * pt.c (tsubst_copy): Don't check at_function_scope_p.
633         (instantiate_class_template_1): Don't push_to_top_level in an nsdmi.
635 2014-05-19  Paolo Carlini  <paolo.carlini@oracle.com>
637         * typeck2.c (cxx_incomplete_type_diagnostic): Use inform.
638         * parser.c (cp_parser_enum_specifier): Likewise.
640 2014-05-17  Trevor Saunders  <tsaunders@mozilla.com>
642         * class.c (sorted_fields_type_new): Adjust.
643         * cp-cilkplus.c (cilk_install_body_with_frame_cleanup): Likewise.
644         * cp-objcp-common.c (decl_shadowed_for_var_insert): Likewise.
645         * cp-tree.h: Remove usage of variable_size gty attribute.
646         * decl.c (make_label_decl): Adjust.
647         (check_goto): Likewise.
648         (start_preparsed_function): Likewise.
649         (save_function_data): Likewise.
650         * lex.c (init_reswords): Likewise.
651         (retrofit_lang_decl): Likewise.
652         (cxx_dup_lang_specific_decl): Likewise.
653         (copy_lang_type): Likewise.
654         (cxx_make_type): Likewise.
655         * name-lookup.c (binding_entry_make): Likewise.
656         (binding_table_construct): Likewise.
657         (binding_table_new): Likewise.
658         (cxx_binding_make): Likewise.
659         (pushdecl_maybe_friend_1): Likewise.
660         (begin_scope): Likewise.
661         (push_to_top_level): Likewise.
662         * parser.c (cp_lexer_alloc): Likewise.
663         (cp_lexer_new_from_tokens): Likewise.
664         (cp_token_cache_new): Likewise.
665         (cp_parser_context_new): Likewise.
666         (cp_parser_new): Likewise.
667         (cp_parser_nested_name_specifier_opt): Likewise.
668         (cp_parser_template_id): Likewise.
669         * pt.c (maybe_process_partial_specialization): Likewise.
670         (register_specialization): Likewise.
671         (add_pending_template): Likewise.
672         (lookup_template_class_1): Likewise.
673         (push_tinst_level): Likewise.
674         * semantics.c (register_constexpr_fundef): Likewise.
675         (cxx_eval_call_expression): Likewise.
676         * typeck2.c (abstract_virtuals_error_sfinae): Likewise.
678 2014-05-16  Paolo Carlini  <paolo.carlini@oracle.com>
680         PR c++/51640
681         * parser.c (cp_parser_diagnose_invalid_type_name): Early return
682         when cp_parser_lookup_name sets ambiguous_decls.
684 2014-05-15  Jason Merrill  <jason@redhat.com>
686         * call.c (print_conversion_rejection): Use loc consistently.
688 2014-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
690         * cp-tree.h (DIRECT_LIST_INIT_P): Add.
691         * call.c (convert_like_real, build_new_method_call_1): Use it.
692         * decl2.c (grokfield): Likewise.
693         * init.c (perform_member_init, build_aggr_init, expand_default_init,
694         build_new_1): Likewise.
695         * mangle.c (write_expression): Likewise.
696         * parser.c (cp_parser_late_parse_one_default_arg): Likewise.
698 2014-05-14  Jason Merrill  <jason@redhat.com>
700         PR c++/20332
701         PR c++/21631
702         * call.c (reference_binding): Treat lvalue/rvalue mismatch and
703         dropped cv-quals as a bad conversion.
704         (convert_like_real) [ck_ref_bind]: Explain them.
705         (compare_ics): Check badness before stripping reference
706         bindings.  Handle comparing bad reference bindings.
707         * typeck.c (comp_cv_qualification): Add overload that just takes
708         integers.
709         * cp-tree.h: Declare it.
711         * call.c (struct conversion_info): Rename 'from_type' to 'from'.
712         (arg_conversion_rejection, bad_arg_conversion_rejection)
713         (explicit_conversion_rejection, template_conversion_rejection): Adjust.
714         (add_function_candidate): Pass actual argument, rather than type, to
715         bad_arg_conversion_rejection.
716         (print_conversion_rejection): Explain what's wrong with the conversion.
717         (print_z_candidates): Say "candidate:" before each candidate.
718         (splice_viable): Be strict if we see a viable or template candidate.
719         (build_user_type_conversion_1): Pass false to strict parameter.
720         (perform_overload_resolution, build_conditional_expr_1): Likewise.
721         (build_new_op_1, build_new_method_call_1): Likewise.
722         (build_op_call_1): Pass true to strict parameter.
724 2014-05-13  Jason Merrill  <jason@redhat.com>
726         * call.c (print_error_for_call_failure): Say "no match" rather
727         than "ambiguous" if there were no strict matches.
728         (build_new_method_call_1): Likewise.
730         PR c++/61151
731         * semantics.c (is_this_parameter): Allow capture proxies too.
733 2014-05-12  Jason Merrill  <jason@redhat.com>
735         * call.c (maybe_print_user_conv_context): New.
736         (convert_like_real): Use it.  Print call context for bad
737         user-defined conversion.
738         (build_over_call): Print call context for bad 'this' conversion.
740         * call.c (convert_like_real): Use inform for identifying the
741         declaration point.
743 2014-05-12  Paolo Carlini  <paolo.carlini@oracle.com>
745         * cvt.c (cp_convert_to_pointer): Don't call error_at if
746         complain & tf_error is false.
748         * decl.c (make_unbound_class_template): Prefer inform for
749         "declared here"-type message.
751 2014-05-09  Momchil Velikov  <momchil.velikov@gmail.com>
753         PR c++/60463
754         PR c++/60755
755         * lambda.c (lambda_expr_this_capture): Add new parameter
756         add_capture_p controlling whether the functions will try to
757         capture 'this' via the default capture.
758         (maybe_resolve_dummy): Likewise.
759         * cp-tree.h: Adjust prototypes.
760         * call.c, semantics.c: Change callers of these functions.
761         * call.c (build_new_method_call_1): Use the actual 'this' that
762         would be potentially captured for the overload resolution, instead
763         of the dummy object.
765 2014-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
767         * pt.c (convert_nontype_argument_function): Add tsubst_flags_t
768         parameter.
769         (convert_nontype_argument): Adjust calls.
770         (coerce_template_parameter_pack): Add missing complain & tf_error
771         check.
773 2014-05-09  Jason Merrill  <jason@redhat.com>
775         DR 587
776         PR c++/51317
777         * call.c (build_conditional_expr_1, conditional_conversion): Handle
778         non-class lvalues and xvalues that differ only in cv-qualifiers.
780         DR 5
781         PR c++/60019
782         * call.c (build_user_type_conversion_1): The copy-init temporary
783         is cv-unqualified.
785         PR c++/58714
786         * tree.c (stabilize_expr): A stabilized prvalue is an xvalue.
788         PR c++/54348
789         * call.c (build_conditional_expr_1): If overload resolution finds
790         no match, just say "different types".
792         PR c++/32019
793         * call.c (build_conditional_expr_1): Improve ambiguity diagnostic.
795         PR c++/22434
796         * call.c (build_conditional_expr_1): Don't try to pool cv-quals
797         if we didn't find a conversion.
798         Don't accept a bad conversion too early.
800 2014-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
802         PR c++/13981
803         * typeck.c (convert_for_assignment): Provide an inform for pointers
804         to incomplete class types.
806 2014-05-07  Paolo Carlini  <paolo.carlini@oracle.com>
808         PR c++/61083
809         * pt.c (convert_nontype_argument): Protect all the error calls
810         with complain & tf_error.
812 2014-05-07  Paolo Carlini  <paolo.carlini@oracle.com>
814         PR c++/61080
815         * pt.c (instantiate_decl): Avoid generating the body of a
816         deleted function.
818 2014-05-06  Paolo Carlini  <paolo.carlini@oracle.com>
820         PR c++/60999
821         * pt.c (maybe_begin_member_template_processing): Use
822         uses_template_parms.
824 2014-05-06  Kenneth Zadeck  <zadeck@naturalbridge.com>
825             Mike Stump  <mikestump@comcast.net>
826             Richard Sandiford  <rdsandiford@googlemail.com>
828         * call.c: Include wide-int.h.
829         (type_passed_as): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
830         (convert_for_arg_passing): Likewise.
831         * class.c: Include wide-int.h.
832         (walk_subobject_offsets): Use tree_int_cst_lt instead of INT_CST_LT.
833         (end_of_class): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
834         (include_empty_classes): Likewise
835         (layout_class_type): Use tree_int_cst_lt instead of INT_CST_LT.
836         * cvt.c: Include wide-int.h.
837         (ignore_overflows): Use wide_int_to_tree.
838         * decl.c: Include wide-int.h.
839         (check_array_designated_initializer): Use wide-int interfaces.
840         (compute_array_index_type): Use tree_int_cst_lt instead of INT_CST_LT.
841         (finish_enum_value_list): Use signop.
842         (build_enumerator): Use wide-int interfaces.
843         * init.c: Include wide-int.h.
844         (build_new_1): Use wide-int interfaces.
845         * mangle.c: Include wide-int.h.
846         (write_integer_cst): Use wide-int interfaces.
847         (write_array_type): Likewise.
848         * tree.c: Include wide-int.h.
849         (cp_tree_equal): Use tree_int_cst_equal.
850         * typeck2.c: Include wide-int.h.
851         (process_init_constructor_array): Use wide-int interfaces.
853 2014-05-03  Paolo Carlini  <paolo.carlini@oracle.com>
855         PR c++/58582
856         * decl.c (grokfndecl): Check duplicate_decls return value for
857         error_mark_node.
858         * pt.c (instantiate_decl): A deleted function is defined.
860 2014-05-02  Jason Merrill  <jason@redhat.com>
862         * decl2.c (vague_linkage_p): Local statics have vague linkage.
864         PR c++/60992
865         * lambda.c (lambda_capture_field_type): Wrap anything dependent
866         other than 'this'.
867         (add_capture): Check for VLA before calling it.
868         * semantics.c (is_this_parameter): Accept any 'this' parameter, not
869         just the current one.  Make non-static.
870         * cp-tree.h: Declare it.
871         * pt.c (tsubst_copy) [VAR_DECL]: Also build a new VAR_DECL if
872         the operand was static or constant.
874 2014-05-02  Marek Polacek  <polacek@redhat.com>
876         * typeck.c (maybe_warn_about_returning_address_of_local): Separate
877         warning_at calls.
879 2014-05-01  Marek Polacek  <polacek@redhat.com>
881         PR c/43395
882         * typeck.c (maybe_warn_about_returning_address_of_local): Distinguish
883         between label and variable when warning about returning local address.
885 2014-04-30  Jason Merrill  <jason@redhat.com>
887         PR c++/60980
888         * init.c (build_value_init): Don't try to call an array constructor.
890         PR c++/60951
891         * typeck2.c (massage_init_elt): Use maybe_constant_init.
893 2014-04-30  Marek Polacek  <polacek@redhat.com>
895         * typeck.c (cp_build_binary_op): Call ubsan_instrument_division
896         even when SANITIZE_FLOAT_DIVIDE is on.  Set doing_div_or_mod even
897         for non-integer types.
899 2014-04-29  Jason Merrill  <jason@redhat.com>
901         DR 1351
902         Represent the unevaluated exception specification of an implicitly
903         declared or deleted function with a simple placeholder, not a list
904         of functions.
905         * cp-tree.h (UNEVALUATED_NOEXCEPT_SPEC_P): New.
906         * except.c (unevaluated_noexcept_spec): New.
907         * class.c (deduce_noexcept_on_destructor): Use it.
908         * decl.c (check_redeclaration_exception_specification): Call
909         maybe_instantiate_noexcept.
910         (duplicate_decls): Call it before merge_types.
911         (start_preparsed_function): Call maybe_instantiate_noexcept.
912         * decl2.c (mark_used): Call maybe_instantiate_noexcept earlier.
913         * init.c (get_nsdmi): Factor out of perform_member_init.
914         * method.c (process_subob_fn): Call maybe_instantiate_noexcept.
915         (walk_field_subobs): Consider NSDMI for EH spec.
916         (get_defaulted_eh_spec): New.
917         (implicitly_declare_fn): Use unevaluated_noexcept_spec.
918         (defaulted_late_check): Defer EH checking in non-template classes.
919         (after_nsdmi_defaulted_late_checks): New.
920         * parser.c (cp_parser_class_specifier_1): Use it.
921         (unparsed_classes): New macro.
922         * parser.h (cp_unparsed_functions_entry_d): Add classes field.
923         * pt.c (maybe_instantiate_noexcept): Use get_defaulted_eh_spec.
924         Remove list-of-functions handling.
925         * typeck2.c (merge_exception_specifiers): Remove list-of-functions
926         handling and FN parameter.
927         * typeck.c (merge_types): Adjust.
929 2014-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
931         PR c++/59120
932         * parser.c (cp_parser_alias_declaration): Check return value of
933         cp_parser_require.
935 2014-04-24  Jakub Jelinek  <jakub@redhat.com>
937         * parser.c (cp_parser_omp_atomic): Allow seq_cst before
938         atomic-clause, allow comma in between atomic-clause and
939         seq_cst.
941 2014-04-24  Marc Glisse  <marc.glisse@inria.fr>
943         PR libstdc++/43622
944         * rtti.c (emit_support_tinfos): Do not iterate on
945         registered_builtin_types (partial revert).
947 2014-04-23 Dinar Temirbulatov  <dtemirbulatov@gmail.com>
949         PR c++/57958
950         * semantics.c (apply_deduced_return_type): Complete non-void type
951         before estimating whether the type is aggregate.
953 2014-04-22  Marc Glisse  <marc.glisse@inria.fr>
955         PR libstdc++/43622
956         * rtti.c (emit_support_tinfo_1): New function, extracted from
957         emit_support_tinfos.
958         (emit_support_tinfos): Call it and iterate on registered_builtin_types.
960 2014-04-22  Jakub Jelinek  <jakub@redhat.com>
962         PR c/59073
963         * parser.c (cp_parser_omp_parallel): If cp_parser_omp_for
964         fails, don't set OM_PARALLEL_COMBINED and return NULL.
966 2014-04-18  Jason Merrill  <jason@redhat.com>
968         DR 1571
969         * call.c (reference_binding): Recurse on user-defined conversion.
971         PR c++/60872
972         * call.c (standard_conversion): Don't try to apply restrict to void.
974 2014-04-16  Marc Glisse  <marc.glisse@inria.fr>
976         * decl.c (reshape_init_r): Handle a single element of vector type.
978 2014-04-16  Patrick Palka  <patrick@parcs.ath.cx>
980         PR c++/60765
981         * decl2.c (cplus_decl_attributes): Handle
982         pointer-to-member-function declarations.
984 2014-04-16  Patrick Palka  <patrick@parcs.ath.cx>
986         PR c++/60764
987         * call.c (build_user_type_coversion): Use build_dummy_object
988         to create the placeholder object for a constructor method call.
989         (build_special_member_call): Likewise.
990         (build_over_call): Check for the placeholder object with
991         is_dummy_object.
992         (build_new_method_call_1): Likewise.  Don't attempt to resolve
993         a dummy object for a constructor method call.
995 2014-04-16  Paul Pluzhnikov  <ppluzhnikov@google.com>
997         PR c++/59295
998         * friend.c (add_friend, make_friend_class): Move repeated friend
999         warning under Wredundant_decls.
1001 2014-04-15  Paolo Carlini  <paolo.carlini@oracle.com>
1003         * decl.c (duplicate_decls): Remove redundant TYPE_NAME use.
1004         * name-lookup.c (pushdecl_maybe_friend_1): Likewise.
1005         (do_class_using_decl): Likewise.
1006         * mangle.c (dump_substitution_candidates): Use TYPE_NAME_STRING.
1008 2014-04-15  Jakub Jelinek  <jakub@redhat.com>
1010         PR plugins/59335
1011         * Make-lang.h (CP_PLUGIN_HEADERS): Add type-utils.h.
1013 2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>
1015         * cp-tree.h (TYPE_IDENTIFIER): Remove declaration.
1017 2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>
1019         * pt.c (mark_template_parm): Use template_parm_level_and_index.
1021 2014-04-11  Jason Merrill  <jason@redhat.com>
1023         * parser.h (struct cp_token): Rename ambiguous_p to error_reported.
1024         * parser.c: Adjust.
1025         (cp_lexer_get_preprocessor_token): Always clear it.
1026         (cp_parser_lambda_expression): Use it to avoid duplicate diagnostics.
1028         DR 1467
1029         PR c++/51747
1030         * decl.c (reshape_init_r): Handle a single element of class type.
1032         DR 1338
1033         * decl.c (cxx_init_decl_processing): Set DECL_IS_MALLOC on
1034         built-in operator new.
1036 2014-04-11  Paolo Carlini  <paolo.carlini@oracle.com>
1038         PR c++/58600
1039         * name-lookup.c (parse_using_directive): Return early if the
1040         attribs argument is error_mark_node; use get_attribute_name.
1042 2014-04-11  Jason Merrill  <jason@redhat.com>
1044         DR 1030
1045         PR c++/51253
1046         * cp-tree.h (CALL_EXPR_LIST_INIT_P): New.
1047         * call.c (struct z_candidate): Add flags field.
1048         (add_candidate): Add flags parm.
1049         (add_function_candidate, add_conv_candidate, build_builtin_candidate)
1050         (add_template_candidate_real): Pass it.
1051         (build_over_call): Set CALL_EXPR_LIST_INIT_P.
1052         * tree.c (build_aggr_init_expr): Copy it.
1053         * semantics.c (simplify_aggr_init_expr): Preevaluate args if it's set.
1055 2014-04-10  Richard Biener  <rguenther@suse.de>
1056             Jakub Jelinek  <jakub@redhat.com>
1058         PR ipa/60761
1059         * error.c (dump_decl) <case FUNCTION_DECL>: If
1060         DECL_LANG_SPECIFIC is NULL, but DECL_ABSTRACT_ORIGIN is not,
1061         recurse on DECL_ABSTRACT_ORIGIN instead of printing
1062         <built-in>.
1064 2014-04-09  Fabien Chêne  <fabien@gcc.gnu.org>
1066         * pt.c (check_template_variable): Check for the return of pedwarn
1067         before emitting a note.
1068         * parser.c (cp_parser_lambda_introducer): Likewise.
1070 2014-04-08  Paolo Carlini  <paolo.carlini@oracle.com>
1072         PR c++/59115
1073         * pt.c (process_template_parm): For an invalid non-type parameter
1074         only set TREE_TYPE to error_mark_node.
1075         (push_inline_template_parms_recursive, comp_template_parms,
1076         redeclare_class_template, coerce_template_template_parm,
1077         coerce_template_template_parms, unify): Use error_operand_p.
1079 2014-04-08  Nathan Sidwell  <nathan@codesourcery.com>
1081         * class.c (check_bases_and_members): Warn about non-virtual dtors
1082         in public bases only.  Check warn_ecpp before complaining about
1083         non-polymorphic bases.
1085 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
1087         * decl.c (duplicate_decls): Check for the return of warning_at
1088         before emitting a note.
1089         (warn_misplaced_attr_for_class_type): Likewise.
1090         (check_tag_decl): Likewise.
1092 2014-04-04  Paolo Carlini  <paolo.carlini@oracle.com>
1094         PR c++/58207
1095         * semantics.c (sort_constexpr_mem_initializers): Robustify loop.
1097 2014-04-04  Patrick Palka  <patrick@parcs.ath.cx>
1099         PR c++/44613
1100         * semantics.c (add_stmt): Set STATEMENT_LIST_HAS_LABEL.
1101         * decl.c (cp_finish_decl): Create a new BIND_EXPR before
1102         instantiating a variable-sized type.
1104         PR c++/21113
1105         * decl.c (decl_jump_unsafe): Consider variably-modified decls.
1107 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
1109         * class.c (find_abi_tags_r): Check for the return of warning
1110         before emitting a note.
1111         (one_inherited_ctor): Likewise.
1113 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
1115         * decl.c (duplicate_decls): Check for the return of permerror
1116         before emitting a note.
1118 2014-04-03  Nathan Sidwell  <nathan@codesourcery.com>
1120         * class.c (accessible_nvdtor_p): New.
1121         (check_bases): Don't check base destructor here ...
1122         (check_bases_and_members): ... check them here.  Trigger on
1123         Wnon-virtual-dtor flag.
1124         (finish_struct_1): Use accessible_nvdtor_p.
1126 2014-04-01  Jason Merrill  <jason@redhat.com>
1128         * pt.c (process_partial_specialization): Say "not deducible"
1129         rather than "not used".  Use inform.
1131         PR c++/60374
1132         * pt.c (coerce_template_parms): Check that the pack expansion
1133         pattern works with the first matching parameter.
1135 2014-04-01  Fabien Chêne  <fabien@gcc.gnu.org>
1137         * init.c (perform_member_init): Homogenize uninitialized
1138         diagnostics.
1140 2014-04-01  Jason Merrill  <jason@redhat.com>
1142         PR c++/60708
1143         * call.c (build_array_conv): Call complete_type.
1145         PR c++/60713
1146         * typeck2.c (PICFLAG_SIDE_EFFECTS): New.
1147         (picflag_from_initializer): Return it.
1148         (process_init_constructor): Handle it.
1150         PR c++/60642
1151         * decl2.c (is_late_template_attribute): Don't defer abi_tag.
1152         * mangle.c (write_unqualified_name): Fix abi_tag on templates.
1153         * pt.c (get_template_info): Handle NAMESPACE_DECL.
1154         (most_general_template): Handle more kinds of template.
1155         * tree.c (handle_abi_tag_attribute): Ignore abi_tag on template
1156         instantiations and specializations.
1158 2014-03-31  Patrick Palka  <patrick@parcs.ath.cx>
1160         PR c++/44859
1161         * typeck.c (maybe_warn_about_returning_address_of_local): Unwrap
1162         COMPONENT_REFs and ARRAY_REFs sooner.
1164 2014-03-29  Adam Butcher  <adam@jessamine.co.uk>
1166         PR c++/60626
1167         * parser.c (cp_parser_init_declarator): Handle erroneous generic type
1168         usage in non-functions with pushed scope.
1170 2014-03-28  Adam Butcher  <adam@jessamine.co.uk>
1172         PR c++/60573
1173         * name-lookup.h (cp_binding_level): New transient field defining_class_p
1174         to indicate whether a scope is in the process of defining a class.
1175         * semantics.c (begin_class_definition): Set defining_class_p.
1176         * name-lookup.c (leave_scope): Reset defining_class_p.
1177         * parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
1178         defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
1179         unwinding to class-defining scope to handle the erroneous definition of
1180         a generic function of an arbitrarily nested class within an enclosing
1181         class.
1183 2014-03-26  Fabien Chêne  <fabien@gcc.gnu.org>
1185         PR c++/52369
1186         * method.c (walk_field_subobs): Improve the diagnostic
1187         locations for both REFERENCE_TYPEs and non-static const members.
1188         * init.c (diagnose_uninitialized_cst_or_ref_member): Use %q#D
1189         instead of %qD to be consistent with the c++11 diagnostic.
1191 2014-03-25  Jason Merrill  <jason@redhat.com>
1193         PR c++/60566
1194         PR c++/58678
1195         * class.c (build_vtbl_initializer): Handle abstract dtors here.
1196         * search.c (get_pure_virtuals): Not here.
1198         PR c++/60375
1199         * parser.c (cp_parser_lambda_expression): Don't parse the body of
1200         a lambda in unevaluated context.
1202         PR c++/60628
1203         * decl.c (create_array_type_for_decl): Complain about array of auto.
1205 2014-03-25  Jakub Jelinek  <jakub@redhat.com>
1207         PR c++/60331
1208         * semantics.c (potential_constant_expression_1): Handle
1209         DECL_EXPR.
1211 2014-03-24  Adam Butcher  <adam@jessamine.co.uk>
1213         PR c++/60627
1214         * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
1215         introducing an implicit function template parameter within an explicit
1216         instantiation.
1218 2014-03-22  Jason Merrill  <jason@redhat.com>
1220         PR c++/60574
1221         * decl.c (grokdeclarator): Change permerror about 'virtual auto'
1222         to error.
1224 2014-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
1226         PR c++/60384
1227         * name-lookup.c (push_class_level_binding_1): Check identifier_p
1228         on the name argument.
1230 2014-03-20  Jakub Jelinek  <jakub@redhat.com>
1232         PR c++/60572
1233         * init.c (build_zero_init_1): Ignore fields with error_mark_node
1234         type.
1236 2014-03-19  Paolo Carlini  <paolo.carlini@oracle.com>
1238         PR c++/51474
1239         * call.c (build_new_method_call_1): Handle pure virtuals called by
1240         NSDMIs too.
1242 2014-03-17  Adam Butcher  <adam@jessamine.co.uk>
1244         PR c++/60390
1245         * parser.c (cp_parser_member_declaration): Don't allow
1246         finish_fully_implicit_template to consider friend declarations to be
1247         class member templates.
1248         (synthesize_implicit_template_parm): Handling winding back through class
1249         scope to the class being defined in order to inject a template argument
1250         list.
1252         PR c++/60391
1253         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
1254         function scope as per cp_parser_skip_to_end_of_statement.
1256 2014-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
1258         PR c++/59571
1259         * typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.
1261 2014-03-14  Jason Merrill  <jason@redhat.com>
1263         PR c++/60532
1264         PR c++/58678
1265         * search.c (get_pure_virtuals): Handle abstract dtor here.
1266         (dfs_get_pure_virtuals): Not here.
1268         PR c++/58678
1269         * search.c (dfs_get_pure_virtuals): Treat the destructor of an
1270         abstract class as pure.
1272 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
1274         PR c++/60383
1275         * pt.c (maybe_process_partial_specialization): Check return value
1276         of check_specialization_namespace.
1278 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
1280         PR c++/60254
1281         * semantics.c (finish_static_assert): Call cxx_constant_value only
1282         if require_potential_rvalue_constant_expression returns true.
1284 2014-03-11  Paolo Carlini  <paolo.carlini@oracle.com>
1286         PR c++/60389
1287         * method.c (get_inherited_ctor): New.
1288         * cp-tree.h (get_inherited_ctor): Declare it.
1289         * semantics.c (is_valid_constexpr_fn): Use it.
1291 2014-03-10  Jason Merrill  <jason@redhat.com>
1293         PR c++/60367
1294         * call.c (convert_default_arg): Remove special handling for
1295         CONSTRUCTOR.
1297         PR c++/53492
1298         * parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
1299         when deciding whether to call push_template_decl for a member class.
1300         * pt.c (push_template_decl_real): Return after wrong levels error.
1302 2014-03-08  Adam Butcher  <adam@jessamine.co.uk>
1304         PR c++/60033
1305         * pt.c (tsubst_copy): When retrieving a capture pack from a generic
1306         lambda, remove the lambda's own template argument list prior to fetching
1307         the specialization.
1309         PR c++/60393
1310         * parser.c (cp_parser_parameter_declaration_clause): Move generic
1311         function template unwinding on error into a more general location, ...
1312         (cp_parser_skip_to_end_of_statement): ... here.
1314 2014-03-07  Jason Merrill  <jason@redhat.com>
1316         * Make-lang.in (check_g++_parallelize): Split dg.exp.
1318         * parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
1319         we're in a trailing return type.
1321         * typeck.c (comp_template_parms_position): 'auto' and
1322         'decltype(auto)' are different from real template parms.
1324         * parser.c (cp_parser_using_declaration): Consume the semicolon
1325         after bare parameter pack error.
1327         * cp-tree.h (REF_PARENTHESIZED_P): New.
1328         * semantics.c (force_paren_expr): Set it.
1329         * pt.c (do_auto_deduction): Check it.
1330         (tsubst) [COMPONENT_REF]: Copy it.
1331         * typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.
1333         * decl.c (create_array_type_for_decl): Only warn about invalid
1334         C++1y VLA if flag_iso or warn_vla>0.
1335         (grokdeclarator): Likewise.
1336         * pt.c (tsubst): Likewise.
1337         * semantics.c (finish_decltype_type): Likewise.
1338         * typeck.c (cxx_sizeof_or_alignof_type): Likewise.
1339         (cp_build_addr_expr_1): Likewise.
1340         * init.c (build_new_1): Improve diagnostics.
1342 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
1344         PR c++/58609
1345         * decl.c (check_initializer): Return NULL_TREE after error;
1346         consistently use inform.
1348 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
1350         * decl.c (check_initializer): Remove dead code.
1352 2014-03-06  Marek Polacek  <polacek@redhat.com>
1354         PR c/60197
1355         * typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
1356         of checking tree code.
1358 2014-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
1360         * parser.c (cp_lexer_set_source_position): New.
1361         (cp_parser_mem_initializer): Use it.
1362         (cp_parser_postfix_open_square_expression): Likewise.
1363         (cp_parser_parenthesized_expression_list): Likewise.
1364         (cp_parser_new_initializer): Likewise.
1365         (cp_parser_jump_statement): Likewise.
1366         (cp_parser_initializer): Likewise.
1367         (cp_parser_functional_cast): Likewise.
1369 2014-03-05  Jason Merrill  <jason@redhat.com>
1371         PR c++/60409
1372         * semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
1373         dependent expression.
1375         PR c++/60361
1376         * parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
1377         if re-parsing might succeed.
1378         * semantics.c (finish_id_expression): Use of a parameter outside
1379         the function body is a parse error.
1381         * parser.c (cp_parser_mem_initializer): Set input_location
1382         properly for init-list warning.
1383         (cp_parser_postfix_open_square_expression): Likewise.
1384         (cp_parser_parenthesized_expression_list): Likewise.
1385         (cp_parser_new_initializer): Likewise.
1386         (cp_parser_jump_statement): Likewise.
1387         (cp_parser_initializer): Likewise.
1388         (cp_parser_functional_cast): Likewise.
1390 2014-03-04  Jason Merrill  <jason@redhat.com>
1392         PR c++/60417
1393         * typeck2.c (process_init_constructor_record): Set
1394         CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
1396         PR c++/60415
1397         PR c++/54359
1398         * parser.c (cp_parser_direct_declarator): Set declarator to
1399         cp_error_declarator on invalid qualified-id.
1401 2014-03-04  Paolo Carlini  <paolo.carlini@oracle.com>
1403         PR c++/60376
1404         * parser.c (cp_parser_using_declaration): Early return when
1405         cp_parser_nested_name_specifier errors out.
1407 2014-03-01  Adam Butcher  <adam@jessamine.co.uk>
1409         PR c++/60377
1410         * parser.c (cp_parser_parameter_declaration_clause): Unwind generic
1411         function scope on parse error in function parameter list.
1413 2014-03-01  Paolo Carlini  <paolo.carlini@oracle.com>
1415         * method.c (implicitly_declare_fn): Remove redundant
1416         DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
1417         * semantics.c (is_instantiation_of_constexpr): Likewise.
1418         * error.c (dump_function_decl): Likewise.
1420 2014-03-01  Jason Merrill  <jason@redhat.com>
1422         PR c++/60379
1423         * semantics.c (begin_maybe_infinite_loop): Use
1424         fold_non_dependent_expr_sfinae.
1426 2014-02-28  Jason Merrill  <jason@redhat.com>
1428         PR c++/58845
1429         * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
1431 2014-02-28  Paolo Carlini  <paolo.carlini@oracle.com>
1433         PR c++/58610
1434         * cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
1435         * call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
1436         * lambda.c (maybe_add_lambda_conv_op): Likewise.
1438 2014-02-27  Paolo Carlini  <paolo.carlini@oracle.com>
1440         PR c++/60253
1441         * call.c (convert_arg_to_ellipsis): Return error_mark_node after
1442         error_at.
1444 2014-02-27  Jason Merrill  <jason@redhat.com>
1446         PR c++/60353
1447         PR c++/55877
1448         * decl2.c (tentative_decl_linkage): Don't mess with functions that
1449         are not yet defined.
1451 2014-02-26  Jason Merrill  <jason@redhat.com>
1453         PR c++/60347
1454         PR lto/53808
1455         * class.c (clone_function_decl): Don't note_vague_linkage_fn.
1456         * init.c (build_vtbl_address): Do it here.
1458         PR c++/59231
1459         PR c++/11586
1460         PR c++/14710
1461         PR c++/57132
1462         * pt.c (struct warning_sentinel): New.
1463         (tsubst_copy_and_build): Use it instead of
1464         c_inhibit_evaluation_warnings.
1465         * typeck.c (maybe_warn_about_useless_cast): Remove
1466         c_inhibit_evaluation_warnings check.
1468         PR c++/54440
1469         * pt.c (get_template_parm_index): New.
1470         (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
1471         (process_template_parm): Allow bare packs in template template
1472         parm template parms.
1473         (coerce_template_parameter_pack): Handle fixed template template
1474         parm packs and fixed packs not at the end of the parm list.
1475         (coerce_template_parms): Handle template parm packs not at the end
1476         of the parm list.
1477         (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.
1479         PR c++/60182
1480         * pt.c (unify): Ignore alias templates when deducing a template
1481         template parameter.
1483         PR c++/60345
1484         Revert:
1485         DR 1571
1486         * call.c (reference_binding): Recurse on user-defined conversion.
1487         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
1489 2014-02-25  Jason Merrill  <jason@redhat.com>
1491         DR 1571
1492         * call.c (reference_binding): Recurse on user-defined conversion.
1493         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
1495         * call.c (print_conversion_rejection): Handle n_arg of -2.
1496         (build_user_type_conversion_1): Pass it.
1498         PR c++/55877
1499         * decl2.c (no_linkage_error): Handle C++98 semantics.
1500         (reset_type_linkage): Move from decl.c.
1501         (reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
1502         (bt_reset_linkage_2, reset_decl_linkage): New.
1503         (tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
1504         (cp_write_global_declarations): Move condition into no_linkage_error.
1505         * decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
1506         * semantics.c (expand_or_defer_fn_1): Factor out
1507         tentative_decl_linkage.
1508         * cp-tree.h: Adjust.
1510         * decl2.c (finish_static_data_member_decl): Diagnose static data
1511         member in unnamed class.
1512         * class.c (finish_struct_anon_r): Avoid redundant diagnostic.
1514         PR lto/53808
1515         * class.c (clone_function_decl): Call note_vague_linkage_fn for
1516         defaulted virtual dtor.
1518         DR 1286
1519         PR c++/60328
1520         * pt.c (get_underlying_template): Fix equivalence calculation.
1522 2014-02-25  Adam Butcher  <adam@jessamine.co.uk>
1524         PR c++/60311
1525         * parser.c (function_being_declared_is_template_p): Return false when
1526         processing a template parameter list.
1527         (cp_parser_parameter_declaration_clause): Don't set
1528         auto_is_implicit_function_template_parm_p when processing a
1529         template parameter list.
1531         * parser.c (synthesize_implicit_template_parm): Inject new template
1532         argument list appropriately when a generic member function
1533         of a class template is declared out-of-line.
1535         PR c++/60065
1536         * parser.c (cp_parser_direct_declarator): Don't save and
1537         restore num_template_parameter_lists around call to
1538         cp_parser_parameter_declaration_list.
1539         (function_being_declared_is_template_p): New predicate.
1540         (cp_parser_parameter_declaration_list): Use
1541         function_being_declared_is_template_p as predicate for
1542         inspecting current function template parameter list length
1543         rather than num_template_parameter_lists.
1545 2014-02-24  Jason Merrill  <jason@redhat.com>
1547         PR c++/60146
1548         * pt.c (tsubst_omp_for_iterator): Don't let substitution of the
1549         DECL_EXPR initialize a non-class iterator.
1551         PR c++/60312
1552         * parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.
1554 2014-02-21  Jason Merrill  <jason@redhat.com>
1556         PR c++/58170
1557         * parser.c (cp_parser_type_name): Always check dependency.
1558         (cp_parser_type_specifier_seq): Call
1559         cp_parser_parse_and_diagnose_invalid_type_name.
1561         PR c++/60108
1562         * semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.
1564         PR c++/60185
1565         * parser.c (cp_parser_default_argument): Clear
1566         current_class_ptr/current_class_ref like tsubst_default_argument.
1568         PR c++/60252
1569         * lambda.c (maybe_resolve_dummy): Check lambda_function rather
1570         than current_binding_level.
1572         PR c++/60186
1573         * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
1575         PR c++/60187
1576         * parser.c (cp_parser_enum_specifier): Call
1577         check_for_bare_parameter_packs.
1579         PR c++/59347
1580         * pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
1581         erroneous typedef.
1583         PR c++/60241
1584         * pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
1585         of the partial instantiation, not the most general template.
1586         (maybe_process_partial_specialization): Reassign everything on
1587         that list.
1589         PR c++/60216
1590         * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
1591         (check_explicit_specialization): Don't clone.
1593         PR c++/60219
1594         * pt.c (coerce_template_parms): Bail if argument packing fails.
1596         PR c++/60224
1597         * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
1598         Don't get confused by a CONSTRUCTOR that already has a type.
1600         PR c++/60227
1601         * call.c (build_array_conv): Don't crash on VLA.
1603         PR c++/60248
1604         * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
1606         PR c++/60252
1607         * lambda.c (maybe_resolve_dummy): Don't try to capture this
1608         in declaration context.
1610         DR 1591
1611         PR c++/60051
1612         * pt.c (unify): Only unify if deducible.  Handle 0-length list.
1614         PR c++/60250
1615         * parser.c (cp_parser_direct_declarator): Don't wrap a
1616         type-dependent expression in a NOP_EXPR.
1618         PR c++/60251
1619         * lambda.c (is_normal_capture_proxy): Handle VLA capture.
1621         PR c++/60167
1622         PR c++/60222
1623         PR c++/58606
1624         * parser.c (cp_parser_template_argument): Restore dereference.
1625         * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
1626         (process_partial_specialization): Handle deref.
1627         (unify): Likewise.
1629 2014-02-21  Adam Butcher  <adam@jessamine.co.uk>
1631         PR c++/60052
1632         PR c++/60053
1633         * parser.c (cp_parser_parameter_declaration_list): Correctly reset
1634         implicit_template_scope upon leaving an out-of-line generic member
1635         function definition.
1637 2014-02-20  Kai Tietz  <ktietz@redhat.com>
1639         PR c++/58873
1640         * parser.c (cp_parser_functional_cast): Treat NULL_TREE
1641         valued type argument as error_mark_node.
1643         PR c++/58835
1644         * semantics.c (finish_fname): Handle error_mark_node.
1646 2014-02-19  Jason Merrill  <jason@redhat.com>
1648         PR c++/60046
1649         * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
1650         spec from template context.
1652 2014-02-19  Jakub Jelinek  <jakub@redhat.com>
1654         PR debug/56563
1655         * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
1656         FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
1658         PR c++/60267
1659         * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
1661 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
1663         PR c++/60225
1664         * semantics.c (ensure_literal_type_for_constexpr_object): Use
1665         strip_array_types.
1667 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
1669         PR c++/60215
1670         * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
1671         During error recovery allow_non_constant may be false.
1673 2014-02-18  Adam Butcher  <adam@jessamine.co.uk>
1675         PR c++/60190
1676         * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
1677         scope whenever a template parameter list has been started, independent
1678         of whether the function call operator was well-formed or not.
1680         PR c++/60064
1681         * parser.c (cp_parser_member_declaration): Pop fully implicit template
1682         scope for generic friend declarations as well as for non-friends.
1684 2014-02-12  Paolo Carlini  <paolo.carlini@oracle.com>
1686         PR c++/60047
1687         * method.c (implicitly_declare_fn): A constructor of a class with
1688         virtual base classes isn't constexpr (7.1.5p4).
1690 2014-02-05  Jan Hubicka  <hubicka@ucw.cz
1692         * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
1694 2014-02-05  Jakub Jelinek  <jakub@redhat.com>
1696         PR c++/58703
1697         * parser.c (cp_parser_omp_declare_reduction): Save and free
1698         declarator_obstack.
1700 2014-02-03  Marc Glisse  <marc.glisse@inria.fr>
1702         PR c++/53017
1703         PR c++/59211
1704         * tree.c (handle_init_priority_attribute): Call default_conversion on
1705         the attribute argument.
1707 2014-02-03  Paolo Carlini  <paolo.carlini@oracle.com>
1709         PR c++/58871
1710         * method.c (synthesized_method_walk): If vbases is non-null but
1711         is_empty is true, likewise don't worry about the virtual bases.
1713 2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1715         PR c++/51219
1716         * typeck2.c (process_init_constructor_record): Just skip unnamed
1717         bit-fields.
1719 2014-01-31  Jason Merrill  <jason@redhat.com>
1721         PR c++/59469
1722         * pt.c (mark_decl_instantiated): Call mark_needed.
1724         PR c++/58672
1725         * decl2.c (handle_tls_init): Handle null init fn.
1727         PR c++/55800
1728         * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
1730 2014-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1732         PR c++/59082
1733         * class.c (build_vfield_ref): Early return error_mark_node if
1734         TYPE_VFIELD (type) is null.
1735         (build_base_path): Check return value of build_vfield_ref.
1737 2014-01-31  Jason Merrill  <jason@redhat.com>
1739         PR c++/59646
1740         * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
1741         [ck_list]: Check for error_mark_node.
1742         (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
1744         PR c++/57043
1745         * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
1746         during partial ordering.
1748 2014-01-31  Marek Polacek  <polacek@redhat.com>
1750         PR c/59963
1751         * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
1753 2014-01-30  Jason Merrill  <jason@redhat.com>
1755         PR c++/57899
1756         * cp-tree.h (struct saved_scope): Add x_local_specializations.
1757         (local_specializations): New macro.
1758         * pt.c (local_specializations): Remove variable.
1760 2014-01-30  Richard Sandiford  <rdsandiford@googlemail.com>
1762         PR c++/58708
1763         * parser.c (make_string_pack): Use double_int::from_buffer.
1765 2014-01-30  Marek Polacek  <polacek@redhat.com>
1767         PR c/59940
1768         * typeck.c (build_ptrmemfunc1): Call convert_and_check with
1769         input_location.
1770         * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
1771         with input_location.
1772         * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
1773         loc parameter.
1775 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
1777         PR c++/58843
1778         * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
1780 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
1782         PR c++/58649
1783         * pt.c (lookup_template_class_1): Check start_enum return value
1784         for error_mark_node.
1786 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
1788         * decl.c (duplicate_decls, typename_hash, typename_compare):
1789         Use TYPE_IDENTIFIER.
1790         * error.c (dump_type): Likewise.
1791         * mangle.c (dump_substitution_candidates): Likewise.
1793 2014-01-30  Jason Merrill  <jason@redhat.com>
1795         PR c++/59633
1796         * decl2.c (attributes_naming_typedef_ok): New.
1797         * cp-tree.h: Declare it.
1798         * decl.c (grokdeclarator): Check it.
1799         * tree.c (no_linkage_check): Handle VECTOR_TYPE.
1801 2014-01-29  Jason Merrill  <jason@redhat.com>
1803         PR c++/59707
1804         * call.c (add_builtin_candidate): Catch dependent types.
1806         PR c++/59989
1807         * pt.c (expand_template_argument_pack): Correct
1808         non_default_args_count calculation.
1810         PR c++/58466
1811         * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
1813         PR c++/59956
1814         * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
1815         have a friend template in a class template.
1816         * pt.c (tsubst_friend_function): Look through it.
1817         (push_template_decl_real): A friend member template is
1818         primary.
1820 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
1822         PR c++/58846
1823         * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
1824         == error_mark_node.
1826 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
1828         PR c++/58674
1829         * pt.c (instantiate_template_1): Check for error_mark_node the second
1830         argument too.
1832 2014-01-29  Jason Merrill  <jason@redhat.com>
1834         PR c++/59916
1835         * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
1836         cdtor_returns_this case.
1838         PR c++/59315
1839         * decl.c (cxx_maybe_build_cleanup): Call mark_used.
1841 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
1843         PR c++/58702
1844         * semantics.c (finish_omp_reduction_clause): Check type for
1845         error_mark_node.
1847 2014-01-28  Jason Merrill  <jason@redhat.com>
1849         PR c++/59791
1850         * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
1851         (tsubst_copy): Use it if lookup fails.
1853         PR c++/59818
1854         * pt.c (tsubst_function_type): Make sure we keep the same function
1855         quals.
1857         PR c++/58701
1858         * semantics.c (build_anon_member_initialization): Stop walking
1859         when we run out of COMPONENT_REFs.
1861         PR c++/58632
1862         * decl.c (lookup_and_check_tag): Ignore template parameters if
1863         scope == ts_current.
1864         * pt.c (check_template_shadow): Don't complain about the injected
1865         class name.
1867         * decl.c (duplicate_decls): Tweak.
1869         PR c++/53756
1870         * mangle.c (write_unqualified_name): Handle operator auto.
1872 2014-01-27  Jason Merrill  <jason@redhat.com>
1874         PR c++/59823
1875         Core DR 1138
1876         * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
1877         list-initialization.  A conversion to rvalue ref that involves
1878         an lvalue-rvalue conversion is bad.
1879         (convert_like_real): Give helpful error message.
1881         PR c++/54652
1882         * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
1884         PR c++/58504
1885         * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
1886         types.
1888         PR c++/58606
1889         * pt.c (template_parm_to_arg): Call convert_from_reference.
1890         (tsubst_template_arg): Don't strip reference refs.
1892         PR c++/58639
1893         * call.c (build_aggr_conv): Reject value-initialization of reference.
1895         PR c++/58812
1896         PR c++/58651
1897         * call.c (convert_like_real): Give helpful error about excess braces
1898         for ck_rvalue of scalar type.
1900         Core DR 1288
1901         * call.c (reference_binding): Only elide braces if the single
1902         element is reference-related.
1904         PR c++/58814
1905         * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
1906         stabilizing.
1908         PR c++/58837
1909         * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
1910         FUNCTION_DECL.
1912         PR c++/59097
1913         * decl.c (compute_array_index_type): Don't call
1914         maybe_constant_value for a non-integral expression.
1916 2014-01-24  Balaji V. Iyer  <balaji.v.iyer@intel.com>
1918         * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
1919         flag_cilkplus.
1920         * cp-gimplify.c (cp_genericize): Likewise.
1921         * decl.c (grokfndecl): Likewise.
1922         * parser.c (cp_parser_postfix_expression): Likewise.
1923         (cp_parser_postfix_open_square_expression): Likewise.
1924         (cp_parser_direct_declarator): Likewise.
1925         (is_cilkplus_vector_p): Likewise.
1926         (cp_parser_omp_clause_name): Likewise.
1927         (cp_parser_omp_all_clauses): Likewise.
1928         * pt.c (apply_late_template_attributes): Likewise.
1929         * typeck.c (cp_build_array_ref): Likewise.
1930         (cp_build_compound_expr): Likewise.
1931         (check_return_expr): Likewise.
1933 2014-01-24  Jason Merrill  <jason@redhat.com>
1935         PR c++/58550
1936         * decl.c (grokdeclarator): Turn pedwarn about auto return type in
1937         c++11 into error.
1939         PR c++/59886
1940         PR c++/59659
1941         * typeck2.c (process_init_constructor_array): Don't create
1942         RANGE_EXPR yet.
1944 2014-01-24  Jakub Jelinek  <jakub@redhat.com>
1946         * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
1947         handling for RANGE_ARRAY case.
1949 2014-01-24  Paolo Carlini  <paolo.carlini@oracle.com>
1951         PR c++/57524
1952         * name-lookup.c (push_using_directive): Use timevar_cond_start.
1954 2014-01-23  Marek Polacek  <polacek@redhat.com>
1956         PR c/59846
1957         * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
1959 2014-01-23  Marek Polacek  <polacek@redhat.com>
1961         PR c/58346
1962         * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
1963         an empty aggregate.
1965 2014-01-23  Jason Merrill  <jason@redhat.com>
1967         PR c++/55189
1968         * cp-tree.h (struct language_function): Add infinite_loop and
1969         infinite_loops.
1970         (current_function_infinite_loop): New.
1971         * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
1972         (break_maybe_infinite_loop): New.
1973         (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
1974         (finish_do_stmt, finish_for_cond, finish_for_stmt)
1975         (begin_range_for_stmt): Use them.
1976         * decl.c (finish_function): Don't warn about missing return
1977         if current_function_infinite_loop.
1978         * pt.c (instantiate_decl): Copy current_function_infinite_loop.
1979         * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
1981         * call.c (build_op_delete_call): Use make_tree_vector and
1982         release_tree_vector.
1984 2014-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1986         PR c++/58980
1987         * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
1988         nested_name_specifier.
1990 2014-01-23  Balaji V. Iyer  <balaji.v.iyer@intel.com>
1992         * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
1993         see if there is an attribute after function decl.  If so, then
1994         parse them now.
1995         (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
1996         enabled function late parsing.
1997         (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
1998         attribute for a SIMD-enabled function.
1999         (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
2000         the function is used by SIMD-enabled function (indicated by NULL
2001         pragma token).   Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
2002         PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
2003         (cp_parser_cilk_simd_vectorlength): Modified this function to handle
2004         vectorlength clause in SIMD-enabled function and #pragma SIMD's
2005         vectorlength clause.  Added a new bool parameter to differentiate
2006         between the two.
2007         (cp_parser_cilk_simd_fn_vector_attrs): New function.
2008         (is_cilkplus_vector_p): Likewise.
2009         (cp_parser_late_parsing_elem_fn_info): Likewise.
2010         (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
2011         and "vectorlength" clauses when Cilk Plus is enabled.
2012         (cp_parser_omp_clause_linear): Added a new parameter of type bool
2013         and emit a sorry message when step size is a parameter.
2014         * parser.h (cp_parser::cilk_simd_fn_info): New field.
2015         * decl.c (grokfndecl): Added flag_enable_cilkplus along with
2016         flag_openmp.
2017         * pt.c (apply_late_template_attributes): Likewise.
2019 2014-01-23  Jakub Jelinek  <jakub@redhat.com>
2021         PR middle-end/58809
2022         * semantics.c (finish_omp_reduction_clause): Reject
2023         BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
2025 2014-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
2027         PR c++/59482
2028         * parser.c (cp_parser_class_head): Push the class before parsing
2029         the base-clause, pop after it.
2031 2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>
2033         * decl2.c (cpp_check): Revert prototype change.
2035 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2037         PR c++/59270
2038         PR c++/58811
2039         * init.c (build_value_init_noctor): Don't pass error_mark_node to
2040         build_value_init.
2042 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2044         PR c++/59269
2045         * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
2046         only when errorcount == 0.
2048 2014-01-17  Marek Polacek  <polacek@redhat.com>
2050         PR c++/59838
2051         * cvt.c (ocp_convert): Don't segfault on non-existing
2052         ENUM_UNDERLYING_TYPE.
2054 2014-01-16  Jason Merrill  <jason@redhat.com>
2056         PR c++/59821
2057         * tree.c (bot_manip): Update the location of builtin_LINE and
2058         builtin_FILE calls.
2060 2014-01-14  Jason Merrill  <jason@redhat.com>
2062         PR c++/59659
2063         * typeck2.c (massage_init_elt): New.
2064         (process_init_constructor_record)
2065         (process_init_constructor_union): Use it.
2066         (process_init_constructor_array): Use it.  Use RANGE_EXPR.
2067         (split_nonconstant_init_1): Handle it.
2068         * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
2070 2014-01-09  Balaji V. Iyer  <balaji.v.iyer@intel.com>
2072         PR c++/59631
2073         * parser.c (cp_parser_postfix_expression): Added a new if-statement
2074         and replaced an existing if-statement with else-if statement.
2075         Changed an existing error message wording to match the one from the C
2076         parser.
2078 2014-01-08  Jason Merrill  <jason@redhat.com>
2080         PR c++/59614
2081         * class.c (abi_tag_data): Add tags field.
2082         (check_abi_tags): Initialize it.
2083         (find_abi_tags_r): Support collecting missing tags.
2084         (mark_type_abi_tags): Don't look at template args.
2085         (inherit_targ_abi_tags): New.
2086         (check_bases_and_members): Use it.
2087         * cp-tree.h (ABI_TAG_IMPLICIT): New.
2088         * mangle.c (write_abi_tags): Check it.
2090 2014-01-07  Jason Merrill  <jason@redhat.com>
2092         PR c++/58856
2093         * pt.c (num_innermost_template_parms): New.
2094         (get_underlying_template): Use it.
2096         PR c++/58965
2097         * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
2099 2014-01-07  Paolo Carlini  <paolo.carlini@oracle.com>
2101         * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
2102         the letter of 20.11.6 about Base and Derived naming the same
2103         class type modulo cv-qualifiers.
2105 2014-01-06  Adam Butcher  <adam@jessamine.co.uk>
2107         PR c++/59635
2108         * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
2109         function as unimplemented for generic lambdas with varargs.
2111         PR c++/59636
2112         * parser.c (cp_parser_template_parameter): Early out with
2113         error_mark_node if parameter declaration was not parsed.
2115         PR c++/59629
2116         * parser.c (cp_parser_lambda_expression): Save/reset/restore
2117         auto_is_implicit_function_template_parm_p around lambda body.
2119         PR c++/59638
2120         * parser.c (cp_parser_init_declarator): Undo fully implicit
2121         template parameter list when declarator is not a function.
2123 2014-01-03  Marc Glisse  <marc.glisse@inria.fr>
2125         PR c++/58950
2126         * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
2128 2014-01-03  Tobias Burnus  <burnus@net-b.de>
2130         PR c++/58567
2131         * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
2133 2014-01-03  Paolo Carlini  <paolo.carlini@oracle.com>
2135         Core DR 1442
2136         PR c++/59165
2137         * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
2138         as include_std to perform_koenig_lookup.
2139         (cp_parser_postfix_expression): Adjust.
2140         * pt.c (tsubst_copy_and_build): Likewise.
2141         * semantics.c (perform_koenig_lookup): Remove bool parameter.
2142         (omp_reduction_lookup): Adjust.
2143         * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
2144         (lookup_arg_dependent): Likewise.
2145         (lookup_function_nonclass): Adjust.
2146         * name-lookup.h: Adjust declaration.
2147         * cp-tree.h: Likewise.
2149 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
2151         PR c++/59087
2152         * parser.c (cp_parser_userdef_numeric_literal): Mention
2153         -fext-numeric-literals in the message.
2155 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
2157         PR c++/59641
2158         * call.c (build_conditional_expr_1): Check the return value of
2159         force_rvalue.
2161 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
2163         * call.c (convert_like_real): Check complain.
2165 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
2167         PR c++/59378
2168         * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
2169         in templates.
2171 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
2173         Update copyright years
2175 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
2177         * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
2178         the standard form for the copyright notice.
2180 Copyright (C) 2014 Free Software Foundation, Inc.
2182 Copying and distribution of this file, with or without modification,
2183 are permitted in any medium without royalty provided the copyright
2184 notice and this notice are preserved.