PR c++/60862
[official-gcc.git] / gcc / cp / ChangeLog
blobff72fd01a8fd6b03ae4fda60704f1b8be3926d00
1 2014-09-13  Marek Polacek  <polacek@redhat.com>
3         PR c++/60862
4         * parser.c (cp_parser_postfix_expression) <case CPP_OPEN_PAREN>: Set
5         location of a call expression.
7 2014-09-11  Jason Merrill  <jason@redhat.com>
9         PR c++/63201
10         * decl.c (start_decl): Handle specialization of member variable
11         template.
12         * pt.c (check_explicit_specialization): Adjust error.
14 2014-09-11  Paolo Carlini  <paolo.carlini@oracle.com>
16         PR c++/61489
17         * typeck2.c (process_init_constructor_record): Do not warn about
18         missing field initializer if EMPTY_CONSTRUCTOR_P (init).
20 2014-09-11  Jason Merrill  <jason@redhat.com>
22         PR c++/63139
23         * pt.c (tsubst_pack_expansion): Simplify substitution into T....
24         (tsubst): Don't throw away PACK_EXPANSION_EXTRA_ARGS.
26 2014-09-10  Jason Merrill  <jason@redhat.com>
28         PR c++/61659
29         * decl.c (grokfndecl): Don't set DECL_COMDAT on static inlines.
30         (duplicate_decls, start_decl): Likewise.
31         * pt.c (check_explicit_specialization): Likewise.
32         (push_template_decl_real): Or static templates.
34 2014-09-08  Jason Merrill  <jason@redhat.com>
36         * typeck.c (build_class_member_access_expr): Move
37         -Winvalid-offsetof code...
38         * semantics.c (finish_offsetof): ...here.
39         * parser.c (cp_parser_builtin_offsetof): Remember the location of
40         the type argument.
41         * pt.c (tsubst_copy_and_build) [OFFSETOF_EXPR]: Preserve it.
43         PR c++/62255
44         * pt.c (instantiate_decl): Handle recursive instantiation of
45         static data member.
47 2014-09-05  Jason Merrill  <jason@redhat.com>
49         PR c++/62659
50         * semantics.c (potential_constant_expression_1): Handle un-folded
51         pointer to member constants.
53 2014-09-04  Markus Trippelsdorf  <markus@trippelsdorf.de>
55         PR ipa/61659
56         * decl.c (duplicate_decls): Check DECL_DECLARED_INLINE_P on
57         newdecl, not olddecl.
59 2014-09-02  Paolo Carlini  <paolo.carlini@oracle.com>
61         DR 1453
62         * class.c (check_field_decls): A class of literal type cannot have
63         volatile non-static data members and base classes.
64         (explain_non_literal_class): Update.
66 2014-09-02  Jakub Jelinek  <jakub@redhat.com>
67             Balaji V. Iyer  <balaji.v.iyer@intel.com>
68             Igor Zamyatin  <igor.zamyatin@intel.com>
70         * cp-cilkplus.c (cpp_validate_cilk_plus_loop_aux): Loc definition
71         simplified.
72         * parser.c (cp_parser_cilk_for): New function.
73         (cp_parser_cilk_grainsize): Likewise.
74         (cp_parser_statement): Added RID_CILK_FOR case.
75         (cp_parser_omp_for_cond): Added CILK_FOR check.
76         (cp_parser_omp_for_loop_init): Change function argument to accept
77         tree_code instead just a bool flag; change the check to use that
78         tree_code; check for initialization declaration in case of Cilk_for.
79         (cp_parser_omp_for_loop): Added checks for CILK_FOR and RID_CILK_FOR;
80         changed call to cp_parser_omp_for_loop_init according new arguments'
81         list.
82         (cp_parser_pragma): Added PRAGMA_CILK_GRAINSIZE case.
83         * pt.c (tsubst_expr): Added CILK_FOR case.
84         * semantics.c: Include convert.h.
85         (finish_omp_clauses): Properly handle OMP_CLAUSE_SCHEDULE_CILKFOR
86         case; added OMP_CLAUSE__CILK_FOR_COUNT_.
87         (handle_omp_for_class_iterator): New argument lastp and its usage;
88         added NE_EXPR case.
89         (finish_omp_for): Changed call to handle_omp_for_class_iterator
90         according new arguments' list; in case of Cilk_for save very first
91         decl and create empty stmt_list block; use block to build correct
92         statement tree.
94 2014-08-31  Jason Merrill  <jason@redhat.com>
96         PR c++/62302
97         * optimize.c (cdtor_comdat_group): Just look at the
98         DECL_ASSEMBLER_NAME of the 'tors.
100 2014-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
102         PR c++/52892
103         * semantics.c (cxx_eval_call_expression): Use STRIP_NOPS on the
104         result of cxx_eval_constant_expression.
106 2014-08-26  Jason Merrill  <jason@redhat.com>
108         PR c++/58624
109         * pt.c (tsubst_decl) [VAR_DECL]: Copy TLS model.
110         (tsubst_copy_and_build) [VAR_DECL]: Use TLS wrapper.
111         * semantics.c (finish_id_expression): Don't call TLS wrapper in a
112         template.
114 2014-08-25  Jason Merrill  <jason@redhat.com>
116         * pt.c (check_explicit_specialization): Don't complain about
117         non-template variable.
118         (template_for_substitution): Allow variable templates.
119         (check_template_variable): Fix logic for member var template.
120         * decl.c (start_decl): Don't complain about extra template header
121         here.
123         * decl.c (start_decl): Look through member variable template.
124         * pt.c (tsubst_decl) [VAR_DECL]: Handle member variable templates.
125         * decl2.c (grokfield): Set DECL_CONTEXT earlier on
126         variables.
128 2014-08-25  Paolo Carlini  <paolo.carlini@oracle.com>
130         PR c++/34938
131         * cp-tree.h (TFF_POINTER): Add.
132         * cxx-pretty-print.h (pp_cxx_cv_qualifiers): Forward the third
133         argument too.
134         * error.c (dump_type_suffix): Actually print the const and noreturn
135         attribute when appropriate.
137 2014-08-23  Edward Smith-Rowland  <3dw4rd@verizon.net>
139         * decl.c (compute_array_index_type, grokdeclarator,
140         undeduced_auto_decl): Change from cxx1y to cxx14.
141         *lambda.c(add_capture()): Change error message from C++1y to C++14.
142         * parser.c (cp_parser_unqualified_id, cp_parser_pseudo_destructor_name,
143         cp_parser_lambda_introducer, cp_parser_lambda_declarator_opt,
144         cp_parser_decltype, cp_parser_conversion_type_id,
145         cp_parser_simple_type_specifier, cp_parser_type_id_1,
146         cp_parser_template_type_arg, cp_parser_std_attribute,
147         cp_parser_template_declaration_after_export): Ditto.
148         * pt.c (tsubst): Ditto.
149         * semantics.c (force_paren_expr, finish_decltype_type): Ditto.
150         * tree.c: Change comment.
151         * typeck.c (comp_template_parms_position, cxx_sizeof_or_alignof_type,
152         cp_build_addr_expr_1, maybe_warn_about_useless_cast): Ditto.
154 2014-08-23  Jason Merrill  <jason@redhat.com>
156         Allow non-constexpr variable templates.
157         * decl2.c (note_variable_template_instantiation): New.
158         * cp-tree.h: Declare it.
159         * pt.c (instantiate_decl): Call it.
160         (push_template_decl_real): Allow non-constexpr variable templates.
161         * semantics.c (finish_id_expression): Mark the variable template
162         instantiation as used.
163         * mangle.c (write_mangled_name): Variable template instantiations
164         are mangled.
165         * parser.c (cp_parser_init_declarator): Complain about
166         non-function implicit templates.
168 2014-08-22  Marek Polacek  <polacek@redhat.com>
170         PR c++/62199
171         * parser.c (cp_parser_binary_expression): Check each LHS if it's
172         preceded with logical not.  Adjust call to
173         warn_logical_not_parentheses.
175 2014-08-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
177         PR c++/57709
178         * name-lookup.c (pushdecl_maybe_friend_1): Do not warn if a
179         declaration shadows a function declaration, unless the former
180         declares a function, pointer to function or pointer to member
181         function, because this is a common and valid case in real-world
182         code.
183         * cp-tree.h (TYPE_PTRFN_P,TYPE_REFFN_P,TYPE_PTRMEMFUNC_P):
184         Improve description.
186 2014-08-22  Jason Merrill  <jason@redhat.com>
188         PR c++/62129
189         * class.c (outermost_open_class): Fix logic.
190         * decl.c (complete_vars): Fix logic.
192 2014-08-22  Jason Merrill  <jason@redhat.com>
194         PR c++/62129
195         * class.c (outermost_open_class): New.
196         * cp-tree.h: Declare it.
197         * decl.c (maybe_register_incomplete_var): Use it.
198         (complete_vars): Handle any constant variable.
199         * expr.c (cplus_expand_constant): Handle CONSTRUCTOR.
201 2014-08-22  Igor Zamyatin  <igor.zamyatin@intel.com>
203         PR other/62008
204         * cp-array-notation.c (build_array_notation_ref): Added correct
205         handling of case with incorrect array.
207 2014-08-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
209         PR fortran/44054
210         * error.c (cp_diagnostic_finalizer): Delete.
211         (init_error): Do not set diagnostic_finalizer here.
213 2014-08-19  Marek Polacek  <polacek@redhat.com>
215         PR c++/62153
216         * call.c (build_new_op_1): Remember the type of arguments for
217         a comparison.  If either operand of a comparison is a boolean
218         expression, call maybe_warn_bool_compare.
220 2014-08-19  Jason Merrill  <jason@redhat.com>
222         PR tree-optimization/62091
223         * decl2.c (decl_needed_p): Return true for virtual functions when
224         devirtualizing.
226         PR lto/53808
227         PR c++/61659
228         * decl.c (maybe_commonize_var): Don't use DECL_COMDAT to trigger
229         comdat_linkage.
231 2014-08-19  Gerald Pfeifer  <gerald@pfeifer.com>
233         * class.c (contains_empty_class_p): Remove.
235 2014-08-18  Paolo Carlini  <paolo.carlini@oracle.com>
237         * parser.c (cp_parser_expression): Add default arguments.
238         (cp_parser_primary_expression, cp_parser_postfix_expression,
239         cp_parser_array_notation, cp_parser_postfix_open_square_expression,
240         cp_parser_unary_expression, cp_parser_direct_new_declarator,
241         cp_parser_question_colon_clause, cp_parser_assignment_operator_opt,
242         cp_parser_lambda_body, cp_parser_expression_statement,
243         cp_parser_condition, cp_parser_c_for, cp_parser_range_for,
244         cp_parser_iteration_statement, cp_parser_jump_statement,
245         cp_parser_decltype_expr, cp_parser_noexcept_specification_opt,
246         cp_parser_asm_operand_list, cp_parser_objc_message_receiver,
247         cp_parser_objc_synchronized_statement, cp_parser_objc_throw_statement,
248         cp_parser_omp_var_list_no_open, cp_parser_omp_clause_num_threads,
249         cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit,
250         cp_parser_omp_clause_linear, cp_parser_omp_clause_device,
251         cp_parser_omp_atomic, cp_parser_omp_for_loop_init,
252         cp_parser_omp_for_loop, cp_parser_omp_declare_reduction_exprs,
253         cp_parser_transaction_expression): Adjust.
255 2014-08-15  Jason Merrill  <jason@redhat.com>
257         PR c++/61566
258         * pt.c (lookup_template_class_1): Revert recent change.
259         * mangle.c (CLASSTYPE_TEMPLATE_ID_P): Revert recent change.
261         PR c++/61566
262         * pt.c (instantiate_class_template_1): Ignore lambda on
263         CLASSTYPE_DECL_LIST.
264         (push_template_decl_real): A lambda is not primary.
265         (lookup_template_class_1): Don't look for a lambda partial
266         instantiation.
267         * lambda.c (maybe_add_lambda_conv_op): Distinguish between being
268         currently in a function and the lambda living in a function.
269         * mangle.c (CLASSTYPE_TEMPLATE_ID_P): False for lambda.
271 2014-08-15  Richard Biener  <rguenther@suse.de>
272             Jason Merrill  <jason@redhat.com>
274         PR bootstrap/62077
275         * tree.c (build_min_array_type, set_array_type_canon): Split out...
276         (build_cplus_array_type): ...from here.  Only call build_array_type
277         for main variants.
279 2014-08-15  Paolo Carlini  <paolo.carlini@oracle.com>
281         PR c++/62072
282         Revert:
283         2014-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
285         DR 1584
286         PR c++/57466
287         * pt.c (check_cv_quals_for_unify): Implement resolution, disregard
288         cv-qualifiers of function types.
290 2014-08-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
292         * call.c (build_conditional_expr_1): Use OPT_Wextra in warning.
294 2014-08-14  Paolo Carlini  <paolo.carlini@oracle.com>
296         * typeck.c (composite_pointer_type, cxx_sizeof_or_alignof_type,
297         cp_build_array_ref, cp_build_function_call_vec): When a
298         pedwarn is suppressed under SFINAE, return error_mark_node.
300         * typeck.c (cxx_sizeof_or_alignof_type): Fix complain &
301         tf_warning_or_error, where complain is a bool, glitch.
303 2014-08-14  Ville Voutilainen  <ville.voutilainen@gmail.com>
305         PR c++/62101
306         * decl.c (grokdeclarator): Move the check for friend initializers..
307         * decl2.c (grokfield) ..here. Postpone early return for friends
308         until after the initializer check.
310 2014-08-14  Paolo Carlini  <paolo.carlini@oracle.com>
312         PR c++/54377
313         * pt.c (coerce_template_parms): Improve error message vs default
314         arguments.
316 2014-08-14  Paolo Carlini  <paolo.carlini@oracle.com>
318         * parser.c (cp_parser_init_declarator): Remove redundant check of
319         decl_specifiers->type.
321 2014-08-13  Jason Merrill  <jason@redhat.com>
323         * call.c (build_x_va_arg): Support passing non-POD through ....
324         (convert_arg_to_ellipsis): Likewise.
326 2014-08-13  Andrew Sutton  <andrew.n.sutton@gmail.com>
328         * pt.c (lookup_template_variable): Make dependent variable templates
329         have unknown type.
331 2014-08-13  Paolo Carlini  <paolo.carlini@oracle.com>
333         * parser.c (cp_parser_elaborated_type_specifier): Handle
334         specially cp_parser_template_id returning a BASELINK.
336 2014-08-13  Paolo Carlini  <paolo.carlini@oracle.com>
338         * parser.c (cp_parser_diagnose_invalid_type_name,
339         cp_parser_make_typename_type): Remove scope parameter.
340         (cp_parser_parse_and_diagnose_invalid_type_name,
341         cp_parser_elaborated_type_specifier): Adjust calls.
343 2014-08-12  Ville Voutilainen  <ville.voutilainen@gmail.com>
345         Reject virt-specifiers on friends and member templates
346         * friend.c (do_friend): Diagnose virt-specifiers.
347         * pt.c (push_template_decl_real): Diagnose virt-specifiers.
349 2014-08-09  Paolo Carlini  <paolo.carlini@oracle.com>
351         * typeck2.c (check_narrowing): Add tsubst_flags_t parameter, change
352         return type to bool; in C++11 for constants give errors, not pedwarns.
353         * cp-tree.h (check_narrowing): Adjust declaration.
354         * call.c (convert_like_real): Update calls.
355         * semantics.c (finish_compound_literal): Likewise.
357 2014-08-08  Jason Merrill  <jason@redhat.com>
359         * pt.c (lookup_template_class_1): Copy abi_tag.
361 2014-08-08  Kai Tietz  <ktietz@redhat.com>
363         * semantics.c (expand_or_defer_fn_1): Check for keep-inline-dllexport
364         that we operate on a true inline.
366 2014-08-07  Trevor Saunders  <tsaunders@mozilla.com>
368         * class.c, cp-gimplify.c, decl.c, decl2.c, error.c, method.c,
369         optimize.c, pt.c, semantics.c: Remove includes of pointer-set.h.
371 2014-08-07  Paolo Carlini  <paolo.carlini@oracle.com>
373         PR c++/51312
374         * decl.c (build_enumerator): Handle class types with conversion
375         operators via perform_implicit_conversion_flags and
376         build_expr_type_conversion.
378         * cvt.c (build_expr_type_conversion): Replace pair of errors
379         with error + inform.
381 2014-08-07  Jason Merrill  <jason@redhat.com>
383         PR c++/62043
384         * parser.c (c_parse_file): Change sorry to fatal_error.
386         PR c++/61959
387         * semantics.c (cxx_eval_bare_aggregate): Handle POINTER_PLUS_EXPR.
389 2014-08-07  Trevor Saunders  <tsaunders@mozilla.com>
391         * cp-tree.h, pt.c: Use hash_map instead of pointer_map.
393 2014-08-06  Jason Merrill  <jason@redhat.com>
395         * init.c (build_vec_init): Fix constant initialization of
396         trailing elements.
397         (build_value_init_noctor): Call maybe_constant_init.
398         * semantics.c (maybe_constant_init): See through EXPR_STMT and
399         conversion to void.
401         PR c++/60417
402         * init.c (build_vec_init): Reorganize earlier change a bit.
404         PR c++/61994
405         * init.c (build_vec_init): Leave atype an ARRAY_TYPE
406         if we're just returning an INIT_EXPR.
408 2014-08-06  Jason Merrill  <jason@redhat.com>
409             Braden Obrzut  <admin@maniacsvault.net>
411         * pt.c (check_explicit_specialization): Don't test
412         DECL_DECLARED_INLINE_P for a variable template.
414 2014-08-06  Paolo Carlini  <paolo.carlini@oracle.com>
416         PR c++/43906
417         * typeck.c (cp_build_binary_op): Extend to more cases the
418         -Waddress warning.
420 2014-08-01  Braden Obrzut  <admin@maniacsvault.net>
422         Implement constexpr variable templates
423         * decl.c (grokvardecl): Handle specializations of variable templates.
424         (grokdeclarator): Handle variable template id expressions and NULL_TREE
425         return from grokvardecl.
426         * decl2.c (check_member_template): Allow declaration of template member
427         variables.
428         * parser.c (cp_parser_template_id): Build a TEMPLATE_ID_EXPR for
429         variable templates.
430         * pt.c (check_template_variable): Accept variable temploids at
431         non-class scope.
432         (push_template_decl_real): The current instantiation of a template
433         can be a VAR_DECL.
434         (determine_specialization): Accept variable templates.
435         (check_explicit_specialization): Handle and check for malformed
436         variable template specializations.
437         (lookup_template_variable): New.
438         (tsubst_decl): Handle variable template specializations.
439         (do_decl_instantiation): Handle template variables.
440         (instantiate_decl): Handle template variables.
441         * semantics.c (finish_template_variable): New.
442         (finish_id_expression): Instantiate variable templates.
443         * cp-tree.h (variable_template_p): New.
445 2014-08-02  Paolo Carlini  <paolo.carlini@oracle.com>
447         PR c++/15339
448         * decl.c (check_redeclaration_no_default_args): New.
449         (duplicate_decls): Use it, handle default arguments
450         in redeclarations of function templates.
452 2014-08-02  Trevor Saunders  <tsaunders@mozilla.com>
454         * optimize.c, semantics.c: Use hash_map instead of pointer_map.
456 2014-08-02  Trevor Saunders  <tsaunders@mozilla.com>
458         * class.c, cp-gimplify.c, cp-tree.h, decl.c, decl2.c, error.c,
459         method.c, name-lookup.c, pt.c, semantics.c, tree.c: Use hash_set
460         instead of pointer_set.
462 2014-08-01  Jason Merrill  <jason@redhat.com>
464         PR c++/60417
465         * init.c (build_vec_init): Set CONSTRUCTOR_IS_DIRECT_INIT on
466         init-list for trailing elements.
467         * typeck2.c (process_init_constructor_array): Likewise.
469 2014-08-01  Paolo Carlini  <paolo.carlini@oracle.com>
471         DR 217 again
472         * decl.c (duplicate_decls): Handle static member functions too.
474 2014-08-01  Igor Zamyatin  <igor.zamyatin@intel.com>
476         * cp-array-notation.c (expand_an_in_modify_expr): Fix the misprint
477         in error output.
479 2014-08-01  Igor Zamyatin  <igor.zamyatin@intel.com>
481         PR other/61963
482         * parser.c (cp_parser_array_notation): Added check for array_type.
484 2014-08-01  Igor Zamyatin  <igor.zamyatin@intel.com>
486         PR middle-end/61455
487         * cp-array-notation.c (expand_array_notation_exprs): Handling of
488         DECL_EXPR improved. Changed handling for INIT_EXPR.
490 2014-08-01  Paolo Carlini  <paolo.carlini@oracle.com>
492         * pt.c (lookup_template_class_1): Use DECL_TYPE_TEMPLATE_P.
494 2014-08-01  Jakub Jelinek  <jakub@redhat.com>
496         * cp-gimplify.c (cp_genericize_r): For -fsanitize=null and/or
497         -fsanitize=alignment call ubsan_maybe_instrument_reference
498         for casts to REFERENCE_TYPE and ubsan_maybe_instrument_member_call
499         for calls to member functions.
501 2014-07-31  Marc Glisse  <marc.glisse@inria.fr>
503         PR c++/60517
504         * typeck.c (maybe_warn_about_returning_address_of_local): Return
505         whether it is returning the address of a local variable.
506         (check_return_expr): Return 0 instead of the address of a local
507         variable.
509 2014-07-30  Jason Merrill  <jason@redhat.com>
511         PR lto/53808
512         PR c++/61659
513         * pt.c (push_template_decl_real): Don't set DECL_COMDAT on friends.
515 2014-07-30  Paolo Carlini  <paolo.carlini@oracle.com>
517         PR c++/57397
518         * pt.c (unify_arity): Add boolean parameter.
519         (unify_too_few_arguments): Likewise.
520         (type_unification_real): Diagnose correctly insufficient
521         arguments in the presence of trailing variadic parameters;
522         deducing multiple trailing packs as empty is fine.
524 2014-07-30  Jason Merrill  <jason@redhat.com>
526         PR c++/61659
527         PR c++/61687
528         Revert:
529         * decl2.c (mark_all_virtuals): New variable.
530         (maybe_emit_vtables): Check it instead of flag_devirtualize.
531         (cp_write_global_declarations): Set it and give helpful diagnostic
532         if it introduces errors.
533         * class.c (finish_struct_1): Check it.
535         PR lto/53808
536         PR c++/61659
537         * pt.c (push_template_decl_real): Set DECL_COMDAT on templates.
538         (check_explicit_specialization): Clear it on specializations.
539         * decl.c (duplicate_decls, start_decl): Likewise.
540         (grokmethod, grokfndecl): Set DECL_COMDAT on inlines.
541         * method.c (implicitly_declare_fn): Set DECL_COMDAT.  Determine
542         linkage after setting the appropriate flags.
543         * tree.c (decl_linkage): Don't check DECL_COMDAT.
544         * decl2.c (mark_needed): Mark clones.
545         (import_export_decl): Not here.
547 2014-07-25  Edward Smith-Rowland  <3dw4rd@verizon.net>
549         Implement N4051 - Allow typename in a template template parameter
550         * parser.c (cp_parser_type_parameter_key): New funtion;
551         (cp_parser_token_is_type_parameter_key): Ditto;
552         (cp_parser_type_parameter): Look for type-parameter-key for all versions
553         but pedwarn for less than cxx1z.
555 2014-07-17  Paolo Carlini  <paolo.carlini@oracle.com>
557         PR c++/50961
558         * call.c (standard_conversion): Use resolve_nondeduced_context
559         for type_unknown_p (EXPR) && TREE_CODE (TO) == BOOLEAN_TYPE.
561 2014-07-17  Paolo Carlini  <paolo.carlini@oracle.com>
563         PR c++/61804
564         * parser.c (cp_parser_tokens_start_cast_expression): Return -1
565         for '++' and '--'.
567 2014-07-15  Jason Merrill  <jason@redhat.com>
569         PR c++/61811
570         * decl2.c (maybe_emit_vtables): Return true for -fuse-all-virtuals.
572         PR c++/60848
573         PR c++/61723
574         * call.c (is_std_init_list): Don't check CLASSTYPE_TEMPLATE_INFO.
575         * class.c (finish_struct): Reject invalid definition of
576         std::initializer_list.
578 2014-07-15  Paolo Carlini  <paolo.carlini@oracle.com>
580         * call.c (convert_like_real): Call print_z_candidate and inform only
581         if permerror returns true.
583 2014-07-14  Jan Hubicka  <hubicka@ucw.cz>
585         * class.c (build_clone): Do not clear assembler names of
586         templates.
587         * decl.c (cp_tree_node_structure): Add TEMPLATE_DECL.
588         * cp-objcp-common.c (cp_tree_size): Add TEMPLATE_DECL
589         as a special case return sizeof (struct tree_decl_non_common)
590         for other decls.
591         (cp_common_init_ts): Do not initialize NAMESPACE_DECL;
592         initialize TEMPLATE_DECL as MARK_TS_DECL_COMMON.
593         * cp/cp-tree.h (tree_template_decl): New structure.
594         (cp_tree_node_structure_enum): Add TS_CP_TEMPLATE_DECL.
595         (union cp_lang_tree_node): Add template_decl.
596         (DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT): Update.
598 2014-07-14  Jason Merrill  <jason@redhat.com>
600         PR c++/61445
601         PR c++/56947
602         * pt.c (instantiate_decl): Don't check defer_ok for local class
603         members.
605 2014-07-14  Jakub Jelinek  <jakub@redhat.com>
607         PR middle-end/61294
608         * cp-tree.h (LITERAL_ZERO_P): Define.
609         * parser.c (cp_parser_parenthesized_expression_list): Add
610         want_literal_zero_p argument, if true, for literal zeros
611         insert INTEGER_CSTs with LITERAL_ZERO_P flag set.
612         (cp_parser_postfix_expression): Adjust
613         cp_parser_parenthesized_expression_list caller, handle
614         -Wmemset-transposed-args.
615         (literal_zeros): New variable.
617 2014-07-13  Jason Merrill  <jason@redhat.com>
619         PR c++/58511
620         * semantics.c (is_instantiation_of_constexpr): Return true for
621         defaulted functions, too.
622         (explain_invalid_constexpr_fn): Only use
623         explain_implicit_non_constexpr if !DECL_DECLARED_CONSTEXPR_P.
624         * method.c (explain_implicit_non_constexpr): Pass
625         DECL_INHERITED_CTOR_BASE to explain_implicit_non_constexpr.
627         PR c++/58611
628         * decl.c (check_initializer): Don't finish_compound_literal
629         on erroneous constexpr init.
631         PR c++/58612
632         * tree.c (bot_replace): Only replace a dummy 'this' parm.
634         PR c++/60628
635         * decl.c (create_array_type_for_decl): Only check for auto once.
637         PR c++/58636
638         * call.c (build_list_conv): Don't try to build a list of references.
640 2014-07-13  Edward Smith-Rowland  <3dw4rd@verizon.net>
642         PR C++/60209 - Declaration of user-defined literal operator cause error
643         * parser.c (cp_parser_operator): Fold treatment of strings
644         and user-defined string literals.  Use the full string parser.
645         (cp_parser_string_literal): Add flag to not look for literal operator.
647 2014-07-11  Jason Merrill  <jason@redhat.com>
649         PR c++/22434
650         PR c++/61288
651         * call.c (build_conditional_expr_1): Avoid reading freed memory.
653 2014-07-11  Paolo Carlini  <paolo.carlini@oracle.com>
655         PR c++/53159
656         * call.c (build_user_type_conversion_1): Copy LOOKUP_NO_NARROWING
657         into convflags.
658         * decl.c (check_initializer): Don't call check_narrowing here,
659         set LOOKUP_NO_NARROWING.
660         * typeck2.c (digest_init_r): Likewise.
662 2014-07-10  Jason Merrill  <jason@redhat.com>
664         PR c++/61661
665         * semantics.c (reduced_constant_expression_p): Handle CONSTRUCTOR.
667         PR c++/61659
668         PR c++/61687
669         * decl2.c (mark_all_virtuals): New variable.
670         (maybe_emit_vtables): Check it instead of flag_devirtualize.
671         (cp_write_global_declarations): Set it and give helpful diagnostic
672         if it introduces errors.
673         * class.c (finish_struct_1): Check it.
674         * decl.c (grokdeclarator): Clear virtualp after 'virtual auto' error.
676 2014-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
678         PR c++/60686
679         * decl.c (grokdeclarator): Adjust error messages about 'explicit'
680         outside class declaration, in friend declaration, and neither on
681         constructor nor conversion operator.
683 2014-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
685         DR 1584
686         PR c++/57466
687         * pt.c (check_cv_quals_for_unify): Implement resolution, disregard
688         cv-qualifiers of function types.
690 2014-07-09  Andrew Sutton  <andrew.n.sutton@gmail.com>
691             Paolo Carlini  <paolo.carlini@oracle.com>
693         PR c++/59361
694         * parser.c (cp_parser_tokens_start_cast_expression): Return 0 for
695         CPP_ELLIPSIS too.
697 2014-07-07  Paolo Carlini  <paolo.carlini@oracle.com>
699         * class.c (check_for_override): Wrap the 'final' and 'override'
700         keywords in %< and %>.
702 2014-07-06  Marek Polacek  <polacek@redhat.com>
704         PR c/6940
705         * cp-tree.h (DECL_ARRAY_PARAMETER_P): Define.
706         * decl.c (grokdeclarator): Set DECL_ARRAY_PARAMETER_P.
707         * typeck.c (cxx_sizeof_expr): Warn when using sizeof on an array
708         function parameter.
710 2014-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
712         * pt.c (convert_template_argument): Use inform instead of error in
713         three places.
715 2014-06-30  Edward Smith-Rowland  <3dw4rd@verizon.net>
717         PR c++/58781
718         PR c++/60249
719         PR c++/59867
720         * parser.c (cp_parser_userdef_string_literal): Take a tree
721         not a cp_token*.
722         (cp_parser_string_literal): Don't hack the token stream.
724 2014-06-30  Jason Merrill  <jason@redhat.com>
726         PR c++/61659
727         PR lto/53808
728         * decl2.c (maybe_emit_vtables): Mark all vtable entries if
729         devirtualizing.
730         * init.c (build_vtbl_address): Don't mark destructor.
731         * class.c (finish_struct_1): Add all classes to keyed_classes
732         if devirtualizing.
734         PR c++/61647
735         * pt.c (type_dependent_expression_p): Check BASELINK_OPTYPE.
737         PR c++/61566
738         * mangle.c (decl_mangling_context): Look through a TEMPLATE_DECL.
740         * decl.c (build_ptrmemfunc_type): Don't give a PMF RECORD_TYPE
741         TYPE_BINFO or TYPE_LANG_SPECIFIC.
742         * cp-tree.h (TYPE_PTRMEMFUNC_FLAG): Use TYPE_LANG_FLAG_2.
743         (TYPE_PTRMEMFUNC_P): Don't expect TYPE_LANG_SPECIFIC.
744         * typeck.c (build_ptrmemfunc_access_expr): Don't use lookup_member.
745         * pt.c (unify): Also check whether the argument is a PMF.
747 2014-06-30  Paolo Carlini  <paolo.carlini@oracle.com>
749         PR c++/54891
750         * parser.c (cp_parser_tokens_start_cast_expression): In C++11
751         a '[' can also start a primary-expression.
752         (cp_parser_cast_expression): Parse a cast-expression only tentatively
753         when cp_parser_tokens_start_cast_expression returns -1.
755 2014-06-30  Jason Merrill  <jason@redhat.com>
757         PR c++/61539
758         * pt.c (unify_one_argument): Type/expression mismatch just causes
759         deduction failure.
761         * semantics.c (simplify_aggr_init_expr): Remove remnants of
762         2014-04-11 change.
764 2014-06-30  Marek Polacek  <polacek@redhat.com>
766         * cp-gimplify.c (cp_genericize): Don't instrument returns if the
767         function has no_sanitize_undefined attribute.
768         * decl.c (compute_array_index_type): Don't instrument VLAs if the
769         function has no_sanitize_undefined attribute.
771 2014-06-30  Igor Zamyatin  <igor.zamyatin@intel.com>
773         PR middle-end/57541
774         * cp-array-notation.c (expand_sec_reduce_builtin):
775         Check that bultin argument is correct.
776         * call.c (build_cxx_call): Check for 0 arguments in builtin call.
778 2014-06-28  Jonathan Wakely  <jwakely@redhat.com>
780         DR 1579
781         PR c++/58051
782         * typeck.c (check_return_expr): Lookup as an rvalue even when the
783         types aren't the same.
785 2014-06-27  Jason Merrill  <jason@redhat.com>
787         PR c++/61433
788         * error.c (dump_template_bindings): Don't tsubst in a clone.
790 2014-06-27  Paolo Carlini  <paolo.carlini@oracle.com>
792         PR c++/61614
793         * semantics.c (finish_compound_literal): Revert r204228.
795 2014-06-27  Paolo Carlini  <paolo.carlini@oracle.com>
797         * parser.c (cp_parser_compound_literal_p): New.
798         (cp_parser_postfix_expression, cp_parser_sizeof_operand): Use it.
800 2014-06-26  Jason Merrill  <jason@redhat.com>
802         * parser.c (cp_parser_for_init_statement): Change range-for error
803         to pedwarn.
805         N3994 Ranged-based for-loops: The Next Generation
806         * parser.c (cp_lexer_nth_token_is): New.
807         (cp_parser_for_init_statement): Allow "for (id : init)".
809 2014-06-26  Teresa Johnson  <tejohnson@google.com>
811         * class.c (dump_class_hierarchy): Use saved dump files.
812         (dump_vtable): Ditto.
813         (dump_vtt): Ditto.
815 2014-06-26  Adam Butcher  <adam@jessamine.co.uk>
817         PR c++/61537
818         * parser.c (cp_parser_elaborated_type_specifier): Only consider template
819         parameter lists outside of function parameter scope.
821 2014-06-25  Paolo Carlini  <paolo.carlini@oracle.com>
823         DR 178
824         PR c++/49132
825         * typeck2.c (process_init_constructor_record): Do not complain about
826         uninitialized const members, because within aggregate-initialization,
827         members without explicit initializers are value-initialized.
829 2014-06-25  Jakub Jelinek  <jakub@redhat.com>
831         * semantics.c (finish_omp_clauses): Make sure
832         OMP_CLAUSE_LINEAR_STEP has correct type.
834 2014-06-24  Jan Hubicka  <hubicka@ucw.cz>
836         * class.c (check_methods, create_vtable_ptr, determine_key_method,
837         add_vcall_offset_vtbl_entries_1): Guard VINDEX checks by
838         FUNCTION_DECL check.
839         * cp-tree.h (lang_decl_ns): Add ns_using and ns_users.
840         (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): Use lang_decl_ns.
841         (DECL_NAMESPACE_ASSOCIATIONS): Use DECL_INITIAL.
842         (DECL_TEMPLATE_INSTANTIATIONS): Use DECL_SIZE_UNIT.
844 2014-06-24  Paolo Carlini  <paolo.carlini@oracle.com>
846         PR c++/33972
847         * decl.c (grokdeclarator): Do not early check for operator-function-id
848         as non-function.
850 2014-06-24  Trevor Saunders  <tsaunders@mozilla.com>
852         * class.c, semantics.c, tree.c, vtable-class-hierarchy.c:
853         Adjust.
855 2014-06-24  Jakub Jelinek  <jakub@redhat.com>
857         * parser.c (cp_parser_omp_for_loop): For
858         #pragma omp parallel for simd move lastprivate clause from parallel
859         to for rather than simd.
861 2014-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
863         DR 577
864         PR c++/33101
865         * decl.c (grokparms): Accept a single parameter of type 'void'.
867 2014-06-20  Jason Merrill  <jason@redhat.com>
869         PR c++/59296
870         * call.c (add_function_candidate): Avoid special 'this' handling
871         if we have a ref-qualifier.
873         PR c++/61556
874         * call.c (build_over_call): Call build_this in template path.
876 2014-06-19  Jason Merrill  <jason@redhat.com>
878         PR c++/59296
879         * call.c (add_function_candidate): Also set LOOKUP_NO_TEMP_BIND.
881 2014-06-18  Jason Merrill  <jason@redhat.com>
883         PR c++/59296
884         * call.c (add_function_candidate): Set LOOKUP_NO_RVAL_BIND for
885         ref-qualifier handling.
887         PR c++/61507
888         * pt.c (resolve_overloaded_unification): Preserve
889         ARGUMENT_PACK_EXPLICIT_ARGS.
891 2014-06-18  Jakub Jelinek  <jakub@redhat.com>
893         * cp-gimplify.c (cxx_omp_finish_clause): Add a gimple_seq *
894         argument.
895         * cp-tree.h (cxx_omp_finish_clause): Adjust prototype.
897 2014-06-17  Jason Merrill  <jason@redhat.com>
899         PR c++/60605
900         * pt.c (check_default_tmpl_args): Check DECL_LOCAL_FUNCTION_P.
902 2014-06-15  Jason Merrill  <jason@redhat.com>
904         PR c++/61488
905         * pt.c (check_valid_ptrmem_cst_expr): Fix for template context.
907         PR c++/61500
908         * tree.c (lvalue_kind): Handle MEMBER_REF and DOTSTAR_EXPR.
910 2014-06-15  Jan Hubicka  <hubicka@ucw.cz>
912         * decl.c (grokvardecl): Fix pasto in previous patch.
914 2014-06-15  Jan Hubicka  <hubicka@ucw.cz>
916         * decl.c (duplicate_decls): Use set_decl_tls_model.
917         (grokdeclarator): Likewise.
918         * semantics.c (finish_id_expression): Check TLS only for
919         static variables.
920         (finish_omp_threadprivate): Use decl_default_tls_model.
921         * decl2.c (get_guard): Likewise.
922         * call.c (make_temporary_var_for_ref_to_temp): Likewise.
924 2014-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
926         PR c++/33101
927         * decl.c (grokparms): Improve error message about void parameters.
928         * error.c (type_to_string): Fix aka cut off code.
930 2014-06-12  Jason Merrill  <jason@redhat.com>
932         * call.c (convert_arg_to_ellipsis): Use abi_version_crosses.
933         * cvt.c (type_promotes_to): Likewise.
934         * mangle.c (write_type, write_expression): Likewise.
935         (write_name, write_template_arg): Likewise.
936         (mangle_decl): Make alias based on flag_abi_compat_version.
937         Emit -Wabi warning here.
938         (finish_mangling_internal): Not here.  Drop warn parm.
939         (finish_mangling_get_identifier, finish_mangling): Adjust.
940         (mangle_type_string, mangle_special_for_type): Adjust.
941         (mangle_ctor_vtbl_for_type, mangle_thunk): Adjust.
942         (mangle_guard_variable, mangle_tls_init_fn): Adjust.
943         (mangle_tls_wrapper_fn, mangle_ref_init_variable): Adjust.
945         * call.c (build_operator_new_call): Remove -fabi-version=1 support.
946         * class.c (walk_subobject_offsets, include_empty_classes): Likewise.
947         (layout_nonempty_base_or_field, end_of_class): Likewise.
948         (layout_empty_base, build_base_field, layout_class_type): Likewise.
949         (is_empty_class, add_vcall_offset_vtbl_entries_1): Likewise.
950         (layout_virtual_bases): Likewise.
951         * decl.c (compute_array_index_type): Likewise.
952         * mangle.c (write_mangled_name, write_prefix): Likewise.
953         (write_template_prefix, write_integer_cst, write_expression): Likewise.
954         (write_template_arg, write_array_type): Likewise.
955         * method.c (lazily_declare_fn): Likewise.
956         * rtti.c (get_pseudo_ti_index): Likewise.
957         * typeck.c (comp_array_types): Likewise.
959 2014-06-11  Jan Hubicka  <hubicka@ucw.cz>
961         * vtable-class-hierarchy.c: Update handling for section names
962         that are no longer trees.
963         * decl.c (duplicate_decls): Likewise.
965 2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
967         PR c++/19200
968         * parser.c (cp_parser_init_declarator): Actually pass friend_p
969         to cp_parser_declarator.
971 2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
973         PR c++/60265
974         * parser.c (cp_parser_using_declaration): Handle unscoped enums.
975         * name-lookup.c (validate_nonmember_using_decl): Adjust error
976         message.
978 2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
980         PR c++/19200
981         * parser.c (cp_parser_declarator): Add bool parameter.
982         (cp_parser_direct_declarator): Likewise, use it.
983         (cp_parser_member_declaration): Pass friend_p to cp_parser_declarator.
984         (cp_parser_condition, cp_parser_explicit_instantiation,
985         cp_parser_init_declarator, cp_parser_type_id_1,
986         cp_parser_parameter_declaration, cp_parser_exception_declaration,
987         cp_parser_cache_defarg, cp_parser_objc_class_ivars,
988         cp_parser_objc_struct_declaration, cp_parser_omp_for_loop_init):
989         Adjust.
990         * decl.c (grokdeclarator): Fix handling of friend declared in
991         namespace scope (g++.dg/parse/friend10.C).
993 2014-06-10  Jan Hubicka  <hubicka@ucw.cz>
995         * vtable-class-hierarchy.c: Use symtab_get_node (var_decl)
996         ->implicit_section.
997         * optimize.c (cdtor_comdat_group): Fix handling of aliases.
998         (maybe_clone_body): Move symbol across comdat groups.
999         * method.c (use_thunk): Copy implicit section flag.
1001 2014-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
1003         PR c++/22556
1004         * name-lookup.c (pushdecl_maybe_friend_1): Use comptypes.
1006 2014-06-07  Jan Hubicka  <hubicka@ucw.cz>
1008         * method.c (use_thunk): Use set_decl_section_name.
1009         * optimize.c (maybe_clone_body): Use set_decl_section_name.
1010         * decl.c (duplicate_decls): Likewise.
1011         * vtable-class-hierarchy.c: Likewise.
1013 2014-06-06  Paolo Carlini  <paolo.carlini@oracle.com>
1015         PR c++/60184
1016         * class.c (check_field_decls): In C++11 mode do not reject
1017         static data members and reference-type members in unions.
1019 2014-06-05  Jason Merrill  <jason@redhat.com>
1021         PR c++/43453
1022         * decl.c (check_initializer): Collapse a TREE_LIST here.
1023         * typeck2.c (store_init_value): Not here.
1025 2014-06-05  Richard Biener  <rguenther@suse.de>
1026             Paolo Carlini  <paolo.carlini@oracle.com>
1028         PR c++/56961
1029         * cp-gimplify.c (cp_gimplify_expr, [MODIFY_EXPR]): Rework
1030         handling of empty classes.
1032 2014-06-04  Jason Merrill  <jason@redhat.com>
1034         * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful note
1035         for noexcept and thread_local, too.
1037         PR c++/61343
1038         * decl.c (check_initializer): Maybe clear
1039         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
1041 2014-06-05  Richard Biener  <rguenther@suse.de>
1043         PR c++/61004
1044         * typeck.c (cp_build_indirect_ref): Do not emit strict-aliasing
1045         warnings for accessing empty classes.
1047 2014-06-05  Marek Polacek  <polacek@redhat.com>
1049         PR c/49706
1050         * parser.c (cp_parser_binary_expression): Warn when logical not is
1051         used on the left hand side operand of a comparison.
1053 2014-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
1055         PR c++/43453
1056         * typeck.c (cp_build_modify_expr): Handle array of characters
1057         initialized by a string literal.
1058         * decl.c (check_initializer): Handle parenthesized string literal
1059         as initializer.
1060         * typeck2.c (store_init_value): Remove redundant check.
1062 2014-06-04  Jason Merrill  <jason@redhat.com>
1064         PR c++/51253
1065         PR c++/61382
1066         * cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPR_LIST_INIT_P here.
1067         * semantics.c (simplify_aggr_init_expr): Not here, just copy it.
1069 2014-06-04  Igor Zamyatin  <igor.zamyatin@intel.com>
1071         PR c/58942
1072         * cp-array-notation.c (expand_sec_reduce_builtin): Handle the case
1073         with a pointer.
1075 2014-06-03  Paolo Carlini  <paolo.carlini@oracle.com>
1077         DR 1423
1078         PR c++/52174
1079         * call.c (standard_conversion): Convert nullptr to bool only
1080         in case of direct-initialization.
1081         (convert_like_real): Provide informative error message.
1083 2014-06-03  Marek Polacek  <polacek@redhat.com>
1085         PR c/60439
1086         * semantics.c (finish_switch_cond): Warn if switch condition has
1087         boolean value.
1089 2014-06-03  Jason Merrill  <jason@redhat.com>
1091         PR c++/60992
1092         * pt.c (tsubst_copy) [VAR_DECL]: Try lookup first.  Add a new
1093         variable to local_specializations.
1095         PR c++/60848
1096         * call.c (is_std_init_list): Check CLASSTYPE_TEMPLATE_INFO.
1098 2014-06-02  Jason Merrill  <jason@redhat.com>
1100         PR c++/61046
1101         * decl.c (reshape_init_class): Handle un-folded
1102         constant-expressions.
1104         PR c++/61134
1105         * pt.c (pack_deducible_p): Handle canonicalization.
1107 2014-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
1109         * pt.c (tsubst_function_type): Initialize arg_types.
1111 2014-06-02  Siva Chandra Reddy  <sivachandra@google.com>
1113         PR debug/57519
1114         * class.c (handle_using_decl): Pass the correct scope to
1115         cp_emit_debug_info_for_using.
1117 2014-06-02  Ville Voutilainen  <ville.voutilainen@gmail.com>
1119         PR c++/59483
1120         PR c++/61148
1121         * search.c (accessible_p): Use current_nonlambda_class_type.
1122         * semantics.c (check_accessibility_of_qualified_id): Likewise.
1124 2014-06-02  Andrew MacLeod  <amacleod@redhat.com>
1126         * decl.c: Include builtins.h.
1127         * semantics.c: Likewise.
1129 2014-05-31  Paolo Carlini  <paolo.carlini@oracle.com>
1131         DR 1227
1132         PR c++/57543
1133         * cp-tree.h (TYPE_HAS_LATE_RETURN_TYPE): Add.
1134         * pt.c (tsubst_function_type): Inject the this parameter; do the
1135         substitutions in the order mandated by the DR.
1136         (copy_default_args_to_explicit_spec): Copy TYPE_HAS_LATE_RETURN_TYPE.
1137         * decl.c (grokdeclarator): Maybe set TYPE_HAS_LATE_RETURN_TYPE.
1138         (static_fn_type): Copy it.
1139         * decl2.c (build_memfn_type, change_return_type,
1140         cp_reconstruct_complex_type): Likewise.
1141         * parser.c (cp_parser_lambda_declarator_opt): Likewise.
1142         * tree.c (strip_typedefs): Likewise.
1143         * typeck.c (merge_types): Likewise.
1145 2014-05-30  Jason Merrill  <jason@redhat.com>
1147         PR c++/56947
1148         * pt.c (instantiate_decl): Check that defer_ok is not set for
1149         local class members.
1151         PR c++/60992
1152         * pt.c (tsubst_init): Split out from...
1153         (tsubst_expr) [DECL_EXPR]: Here.
1154         (tsubst_copy) [VAR_DECL]: Use it.
1155         * semantics.c (finish_id_expression): Return the decl for static/const.
1157 2014-05-28  Jason Merrill  <jason@redhat.com>
1159         PR c++/47202
1160         * decl.c (cxx_comdat_group): Return a decl.
1161         * optimize.c (cdtor_comdat_group): Get its DECL_ASSEMBLER_NAME.
1163         * pt.c (tsubst) [ARRAY_TYPE]: Check for array of array of unknown
1164         bound.
1166         PR c++/61242
1167         * call.c (build_aggr_conv): Ignore passed in flags.
1168         (build_array_conv, build_complex_conv): Likewise.
1170 2014-05-23  Jan Hubicka  <hubicka@ucw.cz>
1172         * optimize.c (maybe_thunk_body): Use set_comdat_group.
1173         (maybe_clone_body): Likewise.
1174         * decl.c (duplicate_decls): Update code duplicating comdat group;
1175         do not copy symtab pointer; before freeing newdecl remove it
1176         from symtab.
1177         * decl2.c (constrain_visibility): Use set_comdat_group.
1179 2014-05-23  Jan Hubicka  <hubicka@ucw.cz>
1181         * rtti.c: Include tm_p.h
1182         (emit_tinfo_decl): Force RTTI data to be aligned to required
1183         ABI alignment only.
1185 2014-05-23  Jan Hubicka  <hubicka@ucw.cz>
1187         * class.c (build_vtable): Align vtables to TARGET_VTABLE_ENTRY_ALIGN
1188         ignoring other target adjustments.
1190 2014-05-23  Thomas Schwinge  <thomas@codesourcery.com>
1192         * semantics.c (finish_omp_clauses): Remove duplicated variable
1193         initialization.
1195         * parser.c (cp_parser_omp_target): Return bool values.
1197 2014-05-22  Paolo Carlini  <paolo.carlini@oracle.com>
1199         PR c++/61088
1200         * lambda.c (add_capture): Enforce that capture by value requires
1201         complete type.
1202         * typeck2.c (cxx_incomplete_type_inform): Early return if
1203         TYPE_MAIN_DECL is null.
1205 2014-05-21  Jonathan Wakely  <jwakely@redhat.com>
1207         PR c/61271
1208         * cp-array-notation.c (cilkplus_an_triplet_types_ok_p): Fix condition.
1210 2014-05-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
1212         PR c++/61133
1213         * lambda.c (build_capture_proxy, add_capture): Treat normal
1214         captures and init-captures identically.
1216 2014-05-21  Mark Wielaard  <mjw@redhat.com>
1218         PR debug/16063
1219         * cp-lang.c (cxx_enum_underlying_base_type): New function.
1220         (LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE): Define.
1222 2014-05-21  Richard Sandiford  <rsandifo@linux.vnet.ibm.com>
1224         * cvt.c (convert_to_void): Use void_node instead of void_zero_node.
1225         * cp-array-notation.c (replace_invariant_exprs): Likewise.
1226         (expand_array_notation): Handle VOID_CST.
1227         * error.c (dump_expr): Likewise.
1228         * cxx-pretty-print.c (cxx_pretty_printer::primary_expression)
1229         (cxx_pretty_printer::expression): Likewise.
1230         (pp_cxx_new_expression): Use void_node instead of void_zero_node.
1231         * decl.c (register_dtor_fn): Likewise.
1232         * init.c (build_raw_new_expr, build_new_1, build_vec_init)
1233         (build_delete, push_base_cleanups): Likewise.
1234         * mangle.c (write_expression): Likewise.
1235         * semantics.c (finish_break_stmt, empty_expr_stmt_p): Likewise.
1236         * pt.c (tsubst_decl, tsubst_copy_and_build): Likewise.
1237         (tsubst, tsubst_copy, build_non_dependent_expr): Handle VOID_CST.
1238         * tree.c (cp_tree_equal): Likewise.
1239         (build_dummy_object, is_dummy_object, stabilize_expr): Use void_node
1240         instead of void_zero_node.
1241         * typeck.c (check_return_expr): Likewise.
1242         * typeck2.c (build_functional_cast): Likewise.
1244 2014-05-21  Igor Zamyatin  <igor.zamyatin@intel.com>
1246         PR c/60189
1247         * parser.c (cp_parser_postfix_expression): Move handling of cilk_sync
1248         from here to...
1249         (cp_parser_statement): ...here. Make sure only semicolon can go after
1250         Cilk_sync.
1252 2014-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
1254         PR c++/58753
1255         PR c++/58930
1256         PR c++/58704
1257         * typeck2.c (digest_nsdmi_init): New.
1258         * parser.c (cp_parser_late_parse_one_default_arg): Use it.
1259         * init.c (get_nsdmi): Likewise.
1260         * cp-tree.h (digest_nsdmi_init): Declare.
1262 2014-05-20  Jason Merrill  <jason@redhat.com>
1264         * typeck.c (get_member_function_from_ptrfunc): Don't try to look
1265         up a virtual function in a dummy object.
1267 2014-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
1269         PR c++/60373
1270         * decl.c (duplicate_decls): Replace pair of warning_at with
1271         warning_at + inform.
1272         (maybe_commonize_var): Likewise.
1274 2014-05-20  Richard Sandiford  <rsandifo@linux.vnet.ibm.com>
1276         PR bootstrap/61210
1277         * pt.c (tsubst_copy, tsubst_omp_for_iterator, tsubst_expr)
1278         (tsubst_copy_and_build): Perform recursive substitutions in a
1279         deterministic order.
1281 2014-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
1283         PR c++/58664
1284         * typeck2.c (cxx_incomplete_type_inform): New.
1285         (cxx_incomplete_type_diagnostic): Use it.
1286         * decl.c (grokdeclarator): Check the element type of an
1287         incomplete array type; call the above.
1288         * cp-tree.h (cxx_incomplete_type_inform): Declare.
1290 2014-05-19  Jason Merrill  <jason@redhat.com>
1292         PR c++/58761
1293         * pt.c (tsubst_copy): Don't check at_function_scope_p.
1294         (instantiate_class_template_1): Don't push_to_top_level in an nsdmi.
1296 2014-05-19  Paolo Carlini  <paolo.carlini@oracle.com>
1298         * typeck2.c (cxx_incomplete_type_diagnostic): Use inform.
1299         * parser.c (cp_parser_enum_specifier): Likewise.
1301 2014-05-17  Trevor Saunders  <tsaunders@mozilla.com>
1303         * class.c (sorted_fields_type_new): Adjust.
1304         * cp-cilkplus.c (cilk_install_body_with_frame_cleanup): Likewise.
1305         * cp-objcp-common.c (decl_shadowed_for_var_insert): Likewise.
1306         * cp-tree.h: Remove usage of variable_size gty attribute.
1307         * decl.c (make_label_decl): Adjust.
1308         (check_goto): Likewise.
1309         (start_preparsed_function): Likewise.
1310         (save_function_data): Likewise.
1311         * lex.c (init_reswords): Likewise.
1312         (retrofit_lang_decl): Likewise.
1313         (cxx_dup_lang_specific_decl): Likewise.
1314         (copy_lang_type): Likewise.
1315         (cxx_make_type): Likewise.
1316         * name-lookup.c (binding_entry_make): Likewise.
1317         (binding_table_construct): Likewise.
1318         (binding_table_new): Likewise.
1319         (cxx_binding_make): Likewise.
1320         (pushdecl_maybe_friend_1): Likewise.
1321         (begin_scope): Likewise.
1322         (push_to_top_level): Likewise.
1323         * parser.c (cp_lexer_alloc): Likewise.
1324         (cp_lexer_new_from_tokens): Likewise.
1325         (cp_token_cache_new): Likewise.
1326         (cp_parser_context_new): Likewise.
1327         (cp_parser_new): Likewise.
1328         (cp_parser_nested_name_specifier_opt): Likewise.
1329         (cp_parser_template_id): Likewise.
1330         * pt.c (maybe_process_partial_specialization): Likewise.
1331         (register_specialization): Likewise.
1332         (add_pending_template): Likewise.
1333         (lookup_template_class_1): Likewise.
1334         (push_tinst_level): Likewise.
1335         * semantics.c (register_constexpr_fundef): Likewise.
1336         (cxx_eval_call_expression): Likewise.
1337         * typeck2.c (abstract_virtuals_error_sfinae): Likewise.
1339 2014-05-16  Paolo Carlini  <paolo.carlini@oracle.com>
1341         PR c++/51640
1342         * parser.c (cp_parser_diagnose_invalid_type_name): Early return
1343         when cp_parser_lookup_name sets ambiguous_decls.
1345 2014-05-15  Jason Merrill  <jason@redhat.com>
1347         * call.c (print_conversion_rejection): Use loc consistently.
1349 2014-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
1351         * cp-tree.h (DIRECT_LIST_INIT_P): Add.
1352         * call.c (convert_like_real, build_new_method_call_1): Use it.
1353         * decl2.c (grokfield): Likewise.
1354         * init.c (perform_member_init, build_aggr_init, expand_default_init,
1355         build_new_1): Likewise.
1356         * mangle.c (write_expression): Likewise.
1357         * parser.c (cp_parser_late_parse_one_default_arg): Likewise.
1359 2014-05-14  Jason Merrill  <jason@redhat.com>
1361         PR c++/20332
1362         PR c++/21631
1363         * call.c (reference_binding): Treat lvalue/rvalue mismatch and
1364         dropped cv-quals as a bad conversion.
1365         (convert_like_real) [ck_ref_bind]: Explain them.
1366         (compare_ics): Check badness before stripping reference
1367         bindings.  Handle comparing bad reference bindings.
1368         * typeck.c (comp_cv_qualification): Add overload that just takes
1369         integers.
1370         * cp-tree.h: Declare it.
1372         * call.c (struct conversion_info): Rename 'from_type' to 'from'.
1373         (arg_conversion_rejection, bad_arg_conversion_rejection)
1374         (explicit_conversion_rejection, template_conversion_rejection): Adjust.
1375         (add_function_candidate): Pass actual argument, rather than type, to
1376         bad_arg_conversion_rejection.
1377         (print_conversion_rejection): Explain what's wrong with the conversion.
1378         (print_z_candidates): Say "candidate:" before each candidate.
1379         (splice_viable): Be strict if we see a viable or template candidate.
1380         (build_user_type_conversion_1): Pass false to strict parameter.
1381         (perform_overload_resolution, build_conditional_expr_1): Likewise.
1382         (build_new_op_1, build_new_method_call_1): Likewise.
1383         (build_op_call_1): Pass true to strict parameter.
1385 2014-05-13  Jason Merrill  <jason@redhat.com>
1387         * call.c (print_error_for_call_failure): Say "no match" rather
1388         than "ambiguous" if there were no strict matches.
1389         (build_new_method_call_1): Likewise.
1391         PR c++/61151
1392         * semantics.c (is_this_parameter): Allow capture proxies too.
1394 2014-05-12  Jason Merrill  <jason@redhat.com>
1396         * call.c (maybe_print_user_conv_context): New.
1397         (convert_like_real): Use it.  Print call context for bad
1398         user-defined conversion.
1399         (build_over_call): Print call context for bad 'this' conversion.
1401         * call.c (convert_like_real): Use inform for identifying the
1402         declaration point.
1404 2014-05-12  Paolo Carlini  <paolo.carlini@oracle.com>
1406         * cvt.c (cp_convert_to_pointer): Don't call error_at if
1407         complain & tf_error is false.
1409         * decl.c (make_unbound_class_template): Prefer inform for
1410         "declared here"-type message.
1412 2014-05-09  Momchil Velikov  <momchil.velikov@gmail.com>
1414         PR c++/60463
1415         PR c++/60755
1416         * lambda.c (lambda_expr_this_capture): Add new parameter
1417         add_capture_p controlling whether the functions will try to
1418         capture 'this' via the default capture.
1419         (maybe_resolve_dummy): Likewise.
1420         * cp-tree.h: Adjust prototypes.
1421         * call.c, semantics.c: Change callers of these functions.
1422         * call.c (build_new_method_call_1): Use the actual 'this' that
1423         would be potentially captured for the overload resolution, instead
1424         of the dummy object.
1426 2014-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
1428         * pt.c (convert_nontype_argument_function): Add tsubst_flags_t
1429         parameter.
1430         (convert_nontype_argument): Adjust calls.
1431         (coerce_template_parameter_pack): Add missing complain & tf_error
1432         check.
1434 2014-05-09  Jason Merrill  <jason@redhat.com>
1436         DR 587
1437         PR c++/51317
1438         * call.c (build_conditional_expr_1, conditional_conversion): Handle
1439         non-class lvalues and xvalues that differ only in cv-qualifiers.
1441         DR 5
1442         PR c++/60019
1443         * call.c (build_user_type_conversion_1): The copy-init temporary
1444         is cv-unqualified.
1446         PR c++/58714
1447         * tree.c (stabilize_expr): A stabilized prvalue is an xvalue.
1449         PR c++/54348
1450         * call.c (build_conditional_expr_1): If overload resolution finds
1451         no match, just say "different types".
1453         PR c++/32019
1454         * call.c (build_conditional_expr_1): Improve ambiguity diagnostic.
1456         PR c++/22434
1457         * call.c (build_conditional_expr_1): Don't try to pool cv-quals
1458         if we didn't find a conversion.
1459         Don't accept a bad conversion too early.
1461 2014-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
1463         PR c++/13981
1464         * typeck.c (convert_for_assignment): Provide an inform for pointers
1465         to incomplete class types.
1467 2014-05-07  Paolo Carlini  <paolo.carlini@oracle.com>
1469         PR c++/61083
1470         * pt.c (convert_nontype_argument): Protect all the error calls
1471         with complain & tf_error.
1473 2014-05-07  Paolo Carlini  <paolo.carlini@oracle.com>
1475         PR c++/61080
1476         * pt.c (instantiate_decl): Avoid generating the body of a
1477         deleted function.
1479 2014-05-06  Paolo Carlini  <paolo.carlini@oracle.com>
1481         PR c++/60999
1482         * pt.c (maybe_begin_member_template_processing): Use
1483         uses_template_parms.
1485 2014-05-06  Kenneth Zadeck  <zadeck@naturalbridge.com>
1486             Mike Stump  <mikestump@comcast.net>
1487             Richard Sandiford  <rdsandiford@googlemail.com>
1489         * call.c: Include wide-int.h.
1490         (type_passed_as): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
1491         (convert_for_arg_passing): Likewise.
1492         * class.c: Include wide-int.h.
1493         (walk_subobject_offsets): Use tree_int_cst_lt instead of INT_CST_LT.
1494         (end_of_class): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
1495         (include_empty_classes): Likewise
1496         (layout_class_type): Use tree_int_cst_lt instead of INT_CST_LT.
1497         * cvt.c: Include wide-int.h.
1498         (ignore_overflows): Use wide_int_to_tree.
1499         * decl.c: Include wide-int.h.
1500         (check_array_designated_initializer): Use wide-int interfaces.
1501         (compute_array_index_type): Use tree_int_cst_lt instead of INT_CST_LT.
1502         (finish_enum_value_list): Use signop.
1503         (build_enumerator): Use wide-int interfaces.
1504         * init.c: Include wide-int.h.
1505         (build_new_1): Use wide-int interfaces.
1506         * mangle.c: Include wide-int.h.
1507         (write_integer_cst): Use wide-int interfaces.
1508         (write_array_type): Likewise.
1509         * tree.c: Include wide-int.h.
1510         (cp_tree_equal): Use tree_int_cst_equal.
1511         * typeck2.c: Include wide-int.h.
1512         (process_init_constructor_array): Use wide-int interfaces.
1514 2014-05-03  Paolo Carlini  <paolo.carlini@oracle.com>
1516         PR c++/58582
1517         * decl.c (grokfndecl): Check duplicate_decls return value for
1518         error_mark_node.
1519         * pt.c (instantiate_decl): A deleted function is defined.
1521 2014-05-02  Jason Merrill  <jason@redhat.com>
1523         * decl2.c (vague_linkage_p): Local statics have vague linkage.
1525         PR c++/60992
1526         * lambda.c (lambda_capture_field_type): Wrap anything dependent
1527         other than 'this'.
1528         (add_capture): Check for VLA before calling it.
1529         * semantics.c (is_this_parameter): Accept any 'this' parameter, not
1530         just the current one.  Make non-static.
1531         * cp-tree.h: Declare it.
1532         * pt.c (tsubst_copy) [VAR_DECL]: Also build a new VAR_DECL if
1533         the operand was static or constant.
1535 2014-05-02  Marek Polacek  <polacek@redhat.com>
1537         * typeck.c (maybe_warn_about_returning_address_of_local): Separate
1538         warning_at calls.
1540 2014-05-01  Marek Polacek  <polacek@redhat.com>
1542         PR c/43395
1543         * typeck.c (maybe_warn_about_returning_address_of_local): Distinguish
1544         between label and variable when warning about returning local address.
1546 2014-04-30  Jason Merrill  <jason@redhat.com>
1548         PR c++/60980
1549         * init.c (build_value_init): Don't try to call an array constructor.
1551         PR c++/60951
1552         * typeck2.c (massage_init_elt): Use maybe_constant_init.
1554 2014-04-30  Marek Polacek  <polacek@redhat.com>
1556         * typeck.c (cp_build_binary_op): Call ubsan_instrument_division
1557         even when SANITIZE_FLOAT_DIVIDE is on.  Set doing_div_or_mod even
1558         for non-integer types.
1560 2014-04-29  Jason Merrill  <jason@redhat.com>
1562         DR 1351
1563         Represent the unevaluated exception specification of an implicitly
1564         declared or deleted function with a simple placeholder, not a list
1565         of functions.
1566         * cp-tree.h (UNEVALUATED_NOEXCEPT_SPEC_P): New.
1567         * except.c (unevaluated_noexcept_spec): New.
1568         * class.c (deduce_noexcept_on_destructor): Use it.
1569         * decl.c (check_redeclaration_exception_specification): Call
1570         maybe_instantiate_noexcept.
1571         (duplicate_decls): Call it before merge_types.
1572         (start_preparsed_function): Call maybe_instantiate_noexcept.
1573         * decl2.c (mark_used): Call maybe_instantiate_noexcept earlier.
1574         * init.c (get_nsdmi): Factor out of perform_member_init.
1575         * method.c (process_subob_fn): Call maybe_instantiate_noexcept.
1576         (walk_field_subobs): Consider NSDMI for EH spec.
1577         (get_defaulted_eh_spec): New.
1578         (implicitly_declare_fn): Use unevaluated_noexcept_spec.
1579         (defaulted_late_check): Defer EH checking in non-template classes.
1580         (after_nsdmi_defaulted_late_checks): New.
1581         * parser.c (cp_parser_class_specifier_1): Use it.
1582         (unparsed_classes): New macro.
1583         * parser.h (cp_unparsed_functions_entry_d): Add classes field.
1584         * pt.c (maybe_instantiate_noexcept): Use get_defaulted_eh_spec.
1585         Remove list-of-functions handling.
1586         * typeck2.c (merge_exception_specifiers): Remove list-of-functions
1587         handling and FN parameter.
1588         * typeck.c (merge_types): Adjust.
1590 2014-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
1592         PR c++/59120
1593         * parser.c (cp_parser_alias_declaration): Check return value of
1594         cp_parser_require.
1596 2014-04-24  Jakub Jelinek  <jakub@redhat.com>
1598         * parser.c (cp_parser_omp_atomic): Allow seq_cst before
1599         atomic-clause, allow comma in between atomic-clause and
1600         seq_cst.
1602 2014-04-24  Marc Glisse  <marc.glisse@inria.fr>
1604         PR libstdc++/43622
1605         * rtti.c (emit_support_tinfos): Do not iterate on
1606         registered_builtin_types (partial revert).
1608 2014-04-23 Dinar Temirbulatov  <dtemirbulatov@gmail.com>
1610         PR c++/57958
1611         * semantics.c (apply_deduced_return_type): Complete non-void type
1612         before estimating whether the type is aggregate.
1614 2014-04-22  Marc Glisse  <marc.glisse@inria.fr>
1616         PR libstdc++/43622
1617         * rtti.c (emit_support_tinfo_1): New function, extracted from
1618         emit_support_tinfos.
1619         (emit_support_tinfos): Call it and iterate on registered_builtin_types.
1621 2014-04-22  Jakub Jelinek  <jakub@redhat.com>
1623         PR c/59073
1624         * parser.c (cp_parser_omp_parallel): If cp_parser_omp_for
1625         fails, don't set OM_PARALLEL_COMBINED and return NULL.
1627 2014-04-18  Jason Merrill  <jason@redhat.com>
1629         DR 1571
1630         * call.c (reference_binding): Recurse on user-defined conversion.
1632         PR c++/60872
1633         * call.c (standard_conversion): Don't try to apply restrict to void.
1635 2014-04-16  Marc Glisse  <marc.glisse@inria.fr>
1637         * decl.c (reshape_init_r): Handle a single element of vector type.
1639 2014-04-16  Patrick Palka  <patrick@parcs.ath.cx>
1641         PR c++/60765
1642         * decl2.c (cplus_decl_attributes): Handle
1643         pointer-to-member-function declarations.
1645 2014-04-16  Patrick Palka  <patrick@parcs.ath.cx>
1647         PR c++/60764
1648         * call.c (build_user_type_coversion): Use build_dummy_object
1649         to create the placeholder object for a constructor method call.
1650         (build_special_member_call): Likewise.
1651         (build_over_call): Check for the placeholder object with
1652         is_dummy_object.
1653         (build_new_method_call_1): Likewise.  Don't attempt to resolve
1654         a dummy object for a constructor method call.
1656 2014-04-16  Paul Pluzhnikov  <ppluzhnikov@google.com>
1658         PR c++/59295
1659         * friend.c (add_friend, make_friend_class): Move repeated friend
1660         warning under Wredundant_decls.
1662 2014-04-15  Paolo Carlini  <paolo.carlini@oracle.com>
1664         * decl.c (duplicate_decls): Remove redundant TYPE_NAME use.
1665         * name-lookup.c (pushdecl_maybe_friend_1): Likewise.
1666         (do_class_using_decl): Likewise.
1667         * mangle.c (dump_substitution_candidates): Use TYPE_NAME_STRING.
1669 2014-04-15  Jakub Jelinek  <jakub@redhat.com>
1671         PR plugins/59335
1672         * Make-lang.h (CP_PLUGIN_HEADERS): Add type-utils.h.
1674 2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>
1676         * cp-tree.h (TYPE_IDENTIFIER): Remove declaration.
1678 2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>
1680         * pt.c (mark_template_parm): Use template_parm_level_and_index.
1682 2014-04-11  Jason Merrill  <jason@redhat.com>
1684         * parser.h (struct cp_token): Rename ambiguous_p to error_reported.
1685         * parser.c: Adjust.
1686         (cp_lexer_get_preprocessor_token): Always clear it.
1687         (cp_parser_lambda_expression): Use it to avoid duplicate diagnostics.
1689         DR 1467
1690         PR c++/51747
1691         * decl.c (reshape_init_r): Handle a single element of class type.
1693         DR 1338
1694         * decl.c (cxx_init_decl_processing): Set DECL_IS_MALLOC on
1695         built-in operator new.
1697 2014-04-11  Paolo Carlini  <paolo.carlini@oracle.com>
1699         PR c++/58600
1700         * name-lookup.c (parse_using_directive): Return early if the
1701         attribs argument is error_mark_node; use get_attribute_name.
1703 2014-04-11  Jason Merrill  <jason@redhat.com>
1705         DR 1030
1706         PR c++/51253
1707         * cp-tree.h (CALL_EXPR_LIST_INIT_P): New.
1708         * call.c (struct z_candidate): Add flags field.
1709         (add_candidate): Add flags parm.
1710         (add_function_candidate, add_conv_candidate, build_builtin_candidate)
1711         (add_template_candidate_real): Pass it.
1712         (build_over_call): Set CALL_EXPR_LIST_INIT_P.
1713         * tree.c (build_aggr_init_expr): Copy it.
1714         * semantics.c (simplify_aggr_init_expr): Preevaluate args if it's set.
1716 2014-04-10  Richard Biener  <rguenther@suse.de>
1717             Jakub Jelinek  <jakub@redhat.com>
1719         PR ipa/60761
1720         * error.c (dump_decl) <case FUNCTION_DECL>: If
1721         DECL_LANG_SPECIFIC is NULL, but DECL_ABSTRACT_ORIGIN is not,
1722         recurse on DECL_ABSTRACT_ORIGIN instead of printing
1723         <built-in>.
1725 2014-04-09  Fabien Chêne  <fabien@gcc.gnu.org>
1727         * pt.c (check_template_variable): Check for the return of pedwarn
1728         before emitting a note.
1729         * parser.c (cp_parser_lambda_introducer): Likewise.
1731 2014-04-08  Paolo Carlini  <paolo.carlini@oracle.com>
1733         PR c++/59115
1734         * pt.c (process_template_parm): For an invalid non-type parameter
1735         only set TREE_TYPE to error_mark_node.
1736         (push_inline_template_parms_recursive, comp_template_parms,
1737         redeclare_class_template, coerce_template_template_parm,
1738         coerce_template_template_parms, unify): Use error_operand_p.
1740 2014-04-08  Nathan Sidwell  <nathan@codesourcery.com>
1742         * class.c (check_bases_and_members): Warn about non-virtual dtors
1743         in public bases only.  Check warn_ecpp before complaining about
1744         non-polymorphic bases.
1746 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
1748         * decl.c (duplicate_decls): Check for the return of warning_at
1749         before emitting a note.
1750         (warn_misplaced_attr_for_class_type): Likewise.
1751         (check_tag_decl): Likewise.
1753 2014-04-04  Paolo Carlini  <paolo.carlini@oracle.com>
1755         PR c++/58207
1756         * semantics.c (sort_constexpr_mem_initializers): Robustify loop.
1758 2014-04-04  Patrick Palka  <patrick@parcs.ath.cx>
1760         PR c++/44613
1761         * semantics.c (add_stmt): Set STATEMENT_LIST_HAS_LABEL.
1762         * decl.c (cp_finish_decl): Create a new BIND_EXPR before
1763         instantiating a variable-sized type.
1765         PR c++/21113
1766         * decl.c (decl_jump_unsafe): Consider variably-modified decls.
1768 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
1770         * class.c (find_abi_tags_r): Check for the return of warning
1771         before emitting a note.
1772         (one_inherited_ctor): Likewise.
1774 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
1776         * decl.c (duplicate_decls): Check for the return of permerror
1777         before emitting a note.
1779 2014-04-03  Nathan Sidwell  <nathan@codesourcery.com>
1781         * class.c (accessible_nvdtor_p): New.
1782         (check_bases): Don't check base destructor here ...
1783         (check_bases_and_members): ... check them here.  Trigger on
1784         Wnon-virtual-dtor flag.
1785         (finish_struct_1): Use accessible_nvdtor_p.
1787 2014-04-01  Jason Merrill  <jason@redhat.com>
1789         * pt.c (process_partial_specialization): Say "not deducible"
1790         rather than "not used".  Use inform.
1792         PR c++/60374
1793         * pt.c (coerce_template_parms): Check that the pack expansion
1794         pattern works with the first matching parameter.
1796 2014-04-01  Fabien Chêne  <fabien@gcc.gnu.org>
1798         * init.c (perform_member_init): Homogenize uninitialized
1799         diagnostics.
1801 2014-04-01  Jason Merrill  <jason@redhat.com>
1803         PR c++/60708
1804         * call.c (build_array_conv): Call complete_type.
1806         PR c++/60713
1807         * typeck2.c (PICFLAG_SIDE_EFFECTS): New.
1808         (picflag_from_initializer): Return it.
1809         (process_init_constructor): Handle it.
1811         PR c++/60642
1812         * decl2.c (is_late_template_attribute): Don't defer abi_tag.
1813         * mangle.c (write_unqualified_name): Fix abi_tag on templates.
1814         * pt.c (get_template_info): Handle NAMESPACE_DECL.
1815         (most_general_template): Handle more kinds of template.
1816         * tree.c (handle_abi_tag_attribute): Ignore abi_tag on template
1817         instantiations and specializations.
1819 2014-03-31  Patrick Palka  <patrick@parcs.ath.cx>
1821         PR c++/44859
1822         * typeck.c (maybe_warn_about_returning_address_of_local): Unwrap
1823         COMPONENT_REFs and ARRAY_REFs sooner.
1825 2014-03-29  Adam Butcher  <adam@jessamine.co.uk>
1827         PR c++/60626
1828         * parser.c (cp_parser_init_declarator): Handle erroneous generic type
1829         usage in non-functions with pushed scope.
1831 2014-03-28  Adam Butcher  <adam@jessamine.co.uk>
1833         PR c++/60573
1834         * name-lookup.h (cp_binding_level): New transient field defining_class_p
1835         to indicate whether a scope is in the process of defining a class.
1836         * semantics.c (begin_class_definition): Set defining_class_p.
1837         * name-lookup.c (leave_scope): Reset defining_class_p.
1838         * parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
1839         defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
1840         unwinding to class-defining scope to handle the erroneous definition of
1841         a generic function of an arbitrarily nested class within an enclosing
1842         class.
1844 2014-03-26  Fabien Chêne  <fabien@gcc.gnu.org>
1846         PR c++/52369
1847         * method.c (walk_field_subobs): Improve the diagnostic
1848         locations for both REFERENCE_TYPEs and non-static const members.
1849         * init.c (diagnose_uninitialized_cst_or_ref_member): Use %q#D
1850         instead of %qD to be consistent with the c++11 diagnostic.
1852 2014-03-25  Jason Merrill  <jason@redhat.com>
1854         PR c++/60566
1855         PR c++/58678
1856         * class.c (build_vtbl_initializer): Handle abstract dtors here.
1857         * search.c (get_pure_virtuals): Not here.
1859         PR c++/60375
1860         * parser.c (cp_parser_lambda_expression): Don't parse the body of
1861         a lambda in unevaluated context.
1863         PR c++/60628
1864         * decl.c (create_array_type_for_decl): Complain about array of auto.
1866 2014-03-25  Jakub Jelinek  <jakub@redhat.com>
1868         PR c++/60331
1869         * semantics.c (potential_constant_expression_1): Handle
1870         DECL_EXPR.
1872 2014-03-24  Adam Butcher  <adam@jessamine.co.uk>
1874         PR c++/60627
1875         * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
1876         introducing an implicit function template parameter within an explicit
1877         instantiation.
1879 2014-03-22  Jason Merrill  <jason@redhat.com>
1881         PR c++/60574
1882         * decl.c (grokdeclarator): Change permerror about 'virtual auto'
1883         to error.
1885 2014-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
1887         PR c++/60384
1888         * name-lookup.c (push_class_level_binding_1): Check identifier_p
1889         on the name argument.
1891 2014-03-20  Jakub Jelinek  <jakub@redhat.com>
1893         PR c++/60572
1894         * init.c (build_zero_init_1): Ignore fields with error_mark_node
1895         type.
1897 2014-03-19  Paolo Carlini  <paolo.carlini@oracle.com>
1899         PR c++/51474
1900         * call.c (build_new_method_call_1): Handle pure virtuals called by
1901         NSDMIs too.
1903 2014-03-17  Adam Butcher  <adam@jessamine.co.uk>
1905         PR c++/60390
1906         * parser.c (cp_parser_member_declaration): Don't allow
1907         finish_fully_implicit_template to consider friend declarations to be
1908         class member templates.
1909         (synthesize_implicit_template_parm): Handling winding back through class
1910         scope to the class being defined in order to inject a template argument
1911         list.
1913         PR c++/60391
1914         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
1915         function scope as per cp_parser_skip_to_end_of_statement.
1917 2014-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
1919         PR c++/59571
1920         * typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.
1922 2014-03-14  Jason Merrill  <jason@redhat.com>
1924         PR c++/60532
1925         PR c++/58678
1926         * search.c (get_pure_virtuals): Handle abstract dtor here.
1927         (dfs_get_pure_virtuals): Not here.
1929         PR c++/58678
1930         * search.c (dfs_get_pure_virtuals): Treat the destructor of an
1931         abstract class as pure.
1933 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
1935         PR c++/60383
1936         * pt.c (maybe_process_partial_specialization): Check return value
1937         of check_specialization_namespace.
1939 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
1941         PR c++/60254
1942         * semantics.c (finish_static_assert): Call cxx_constant_value only
1943         if require_potential_rvalue_constant_expression returns true.
1945 2014-03-11  Paolo Carlini  <paolo.carlini@oracle.com>
1947         PR c++/60389
1948         * method.c (get_inherited_ctor): New.
1949         * cp-tree.h (get_inherited_ctor): Declare it.
1950         * semantics.c (is_valid_constexpr_fn): Use it.
1952 2014-03-10  Jason Merrill  <jason@redhat.com>
1954         PR c++/60367
1955         * call.c (convert_default_arg): Remove special handling for
1956         CONSTRUCTOR.
1958         PR c++/53492
1959         * parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
1960         when deciding whether to call push_template_decl for a member class.
1961         * pt.c (push_template_decl_real): Return after wrong levels error.
1963 2014-03-08  Adam Butcher  <adam@jessamine.co.uk>
1965         PR c++/60033
1966         * pt.c (tsubst_copy): When retrieving a capture pack from a generic
1967         lambda, remove the lambda's own template argument list prior to fetching
1968         the specialization.
1970         PR c++/60393
1971         * parser.c (cp_parser_parameter_declaration_clause): Move generic
1972         function template unwinding on error into a more general location, ...
1973         (cp_parser_skip_to_end_of_statement): ... here.
1975 2014-03-07  Jason Merrill  <jason@redhat.com>
1977         * Make-lang.in (check_g++_parallelize): Split dg.exp.
1979         * parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
1980         we're in a trailing return type.
1982         * typeck.c (comp_template_parms_position): 'auto' and
1983         'decltype(auto)' are different from real template parms.
1985         * parser.c (cp_parser_using_declaration): Consume the semicolon
1986         after bare parameter pack error.
1988         * cp-tree.h (REF_PARENTHESIZED_P): New.
1989         * semantics.c (force_paren_expr): Set it.
1990         * pt.c (do_auto_deduction): Check it.
1991         (tsubst) [COMPONENT_REF]: Copy it.
1992         * typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.
1994         * decl.c (create_array_type_for_decl): Only warn about invalid
1995         C++1y VLA if flag_iso or warn_vla>0.
1996         (grokdeclarator): Likewise.
1997         * pt.c (tsubst): Likewise.
1998         * semantics.c (finish_decltype_type): Likewise.
1999         * typeck.c (cxx_sizeof_or_alignof_type): Likewise.
2000         (cp_build_addr_expr_1): Likewise.
2001         * init.c (build_new_1): Improve diagnostics.
2003 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
2005         PR c++/58609
2006         * decl.c (check_initializer): Return NULL_TREE after error;
2007         consistently use inform.
2009 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
2011         * decl.c (check_initializer): Remove dead code.
2013 2014-03-06  Marek Polacek  <polacek@redhat.com>
2015         PR c/60197
2016         * typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
2017         of checking tree code.
2019 2014-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
2021         * parser.c (cp_lexer_set_source_position): New.
2022         (cp_parser_mem_initializer): Use it.
2023         (cp_parser_postfix_open_square_expression): Likewise.
2024         (cp_parser_parenthesized_expression_list): Likewise.
2025         (cp_parser_new_initializer): Likewise.
2026         (cp_parser_jump_statement): Likewise.
2027         (cp_parser_initializer): Likewise.
2028         (cp_parser_functional_cast): Likewise.
2030 2014-03-05  Jason Merrill  <jason@redhat.com>
2032         PR c++/60409
2033         * semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
2034         dependent expression.
2036         PR c++/60361
2037         * parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
2038         if re-parsing might succeed.
2039         * semantics.c (finish_id_expression): Use of a parameter outside
2040         the function body is a parse error.
2042         * parser.c (cp_parser_mem_initializer): Set input_location
2043         properly for init-list warning.
2044         (cp_parser_postfix_open_square_expression): Likewise.
2045         (cp_parser_parenthesized_expression_list): Likewise.
2046         (cp_parser_new_initializer): Likewise.
2047         (cp_parser_jump_statement): Likewise.
2048         (cp_parser_initializer): Likewise.
2049         (cp_parser_functional_cast): Likewise.
2051 2014-03-04  Jason Merrill  <jason@redhat.com>
2053         PR c++/60417
2054         * typeck2.c (process_init_constructor_record): Set
2055         CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
2057         PR c++/60415
2058         PR c++/54359
2059         * parser.c (cp_parser_direct_declarator): Set declarator to
2060         cp_error_declarator on invalid qualified-id.
2062 2014-03-04  Paolo Carlini  <paolo.carlini@oracle.com>
2064         PR c++/60376
2065         * parser.c (cp_parser_using_declaration): Early return when
2066         cp_parser_nested_name_specifier errors out.
2068 2014-03-01  Adam Butcher  <adam@jessamine.co.uk>
2070         PR c++/60377
2071         * parser.c (cp_parser_parameter_declaration_clause): Unwind generic
2072         function scope on parse error in function parameter list.
2074 2014-03-01  Paolo Carlini  <paolo.carlini@oracle.com>
2076         * method.c (implicitly_declare_fn): Remove redundant
2077         DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
2078         * semantics.c (is_instantiation_of_constexpr): Likewise.
2079         * error.c (dump_function_decl): Likewise.
2081 2014-03-01  Jason Merrill  <jason@redhat.com>
2083         PR c++/60379
2084         * semantics.c (begin_maybe_infinite_loop): Use
2085         fold_non_dependent_expr_sfinae.
2087 2014-02-28  Jason Merrill  <jason@redhat.com>
2089         PR c++/58845
2090         * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
2092 2014-02-28  Paolo Carlini  <paolo.carlini@oracle.com>
2094         PR c++/58610
2095         * cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
2096         * call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
2097         * lambda.c (maybe_add_lambda_conv_op): Likewise.
2099 2014-02-27  Paolo Carlini  <paolo.carlini@oracle.com>
2101         PR c++/60253
2102         * call.c (convert_arg_to_ellipsis): Return error_mark_node after
2103         error_at.
2105 2014-02-27  Jason Merrill  <jason@redhat.com>
2107         PR c++/60353
2108         PR c++/55877
2109         * decl2.c (tentative_decl_linkage): Don't mess with functions that
2110         are not yet defined.
2112 2014-02-26  Jason Merrill  <jason@redhat.com>
2114         PR c++/60347
2115         PR lto/53808
2116         * class.c (clone_function_decl): Don't note_vague_linkage_fn.
2117         * init.c (build_vtbl_address): Do it here.
2119         PR c++/59231
2120         PR c++/11586
2121         PR c++/14710
2122         PR c++/57132
2123         * pt.c (struct warning_sentinel): New.
2124         (tsubst_copy_and_build): Use it instead of
2125         c_inhibit_evaluation_warnings.
2126         * typeck.c (maybe_warn_about_useless_cast): Remove
2127         c_inhibit_evaluation_warnings check.
2129         PR c++/54440
2130         * pt.c (get_template_parm_index): New.
2131         (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
2132         (process_template_parm): Allow bare packs in template template
2133         parm template parms.
2134         (coerce_template_parameter_pack): Handle fixed template template
2135         parm packs and fixed packs not at the end of the parm list.
2136         (coerce_template_parms): Handle template parm packs not at the end
2137         of the parm list.
2138         (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.
2140         PR c++/60182
2141         * pt.c (unify): Ignore alias templates when deducing a template
2142         template parameter.
2144         PR c++/60345
2145         Revert:
2146         DR 1571
2147         * call.c (reference_binding): Recurse on user-defined conversion.
2148         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
2150 2014-02-25  Jason Merrill  <jason@redhat.com>
2152         DR 1571
2153         * call.c (reference_binding): Recurse on user-defined conversion.
2154         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
2156         * call.c (print_conversion_rejection): Handle n_arg of -2.
2157         (build_user_type_conversion_1): Pass it.
2159         PR c++/55877
2160         * decl2.c (no_linkage_error): Handle C++98 semantics.
2161         (reset_type_linkage): Move from decl.c.
2162         (reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
2163         (bt_reset_linkage_2, reset_decl_linkage): New.
2164         (tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
2165         (cp_write_global_declarations): Move condition into no_linkage_error.
2166         * decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
2167         * semantics.c (expand_or_defer_fn_1): Factor out
2168         tentative_decl_linkage.
2169         * cp-tree.h: Adjust.
2171         * decl2.c (finish_static_data_member_decl): Diagnose static data
2172         member in unnamed class.
2173         * class.c (finish_struct_anon_r): Avoid redundant diagnostic.
2175         PR lto/53808
2176         * class.c (clone_function_decl): Call note_vague_linkage_fn for
2177         defaulted virtual dtor.
2179         DR 1286
2180         PR c++/60328
2181         * pt.c (get_underlying_template): Fix equivalence calculation.
2183 2014-02-25  Adam Butcher  <adam@jessamine.co.uk>
2185         PR c++/60311
2186         * parser.c (function_being_declared_is_template_p): Return false when
2187         processing a template parameter list.
2188         (cp_parser_parameter_declaration_clause): Don't set
2189         auto_is_implicit_function_template_parm_p when processing a
2190         template parameter list.
2192         * parser.c (synthesize_implicit_template_parm): Inject new template
2193         argument list appropriately when a generic member function
2194         of a class template is declared out-of-line.
2196         PR c++/60065
2197         * parser.c (cp_parser_direct_declarator): Don't save and
2198         restore num_template_parameter_lists around call to
2199         cp_parser_parameter_declaration_list.
2200         (function_being_declared_is_template_p): New predicate.
2201         (cp_parser_parameter_declaration_list): Use
2202         function_being_declared_is_template_p as predicate for
2203         inspecting current function template parameter list length
2204         rather than num_template_parameter_lists.
2206 2014-02-24  Jason Merrill  <jason@redhat.com>
2208         PR c++/60146
2209         * pt.c (tsubst_omp_for_iterator): Don't let substitution of the
2210         DECL_EXPR initialize a non-class iterator.
2212         PR c++/60312
2213         * parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.
2215 2014-02-21  Jason Merrill  <jason@redhat.com>
2217         PR c++/58170
2218         * parser.c (cp_parser_type_name): Always check dependency.
2219         (cp_parser_type_specifier_seq): Call
2220         cp_parser_parse_and_diagnose_invalid_type_name.
2222         PR c++/60108
2223         * semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.
2225         PR c++/60185
2226         * parser.c (cp_parser_default_argument): Clear
2227         current_class_ptr/current_class_ref like tsubst_default_argument.
2229         PR c++/60252
2230         * lambda.c (maybe_resolve_dummy): Check lambda_function rather
2231         than current_binding_level.
2233         PR c++/60186
2234         * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
2236         PR c++/60187
2237         * parser.c (cp_parser_enum_specifier): Call
2238         check_for_bare_parameter_packs.
2240         PR c++/59347
2241         * pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
2242         erroneous typedef.
2244         PR c++/60241
2245         * pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
2246         of the partial instantiation, not the most general template.
2247         (maybe_process_partial_specialization): Reassign everything on
2248         that list.
2250         PR c++/60216
2251         * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
2252         (check_explicit_specialization): Don't clone.
2254         PR c++/60219
2255         * pt.c (coerce_template_parms): Bail if argument packing fails.
2257         PR c++/60224
2258         * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
2259         Don't get confused by a CONSTRUCTOR that already has a type.
2261         PR c++/60227
2262         * call.c (build_array_conv): Don't crash on VLA.
2264         PR c++/60248
2265         * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
2267         PR c++/60252
2268         * lambda.c (maybe_resolve_dummy): Don't try to capture this
2269         in declaration context.
2271         DR 1591
2272         PR c++/60051
2273         * pt.c (unify): Only unify if deducible.  Handle 0-length list.
2275         PR c++/60250
2276         * parser.c (cp_parser_direct_declarator): Don't wrap a
2277         type-dependent expression in a NOP_EXPR.
2279         PR c++/60251
2280         * lambda.c (is_normal_capture_proxy): Handle VLA capture.
2282         PR c++/60167
2283         PR c++/60222
2284         PR c++/58606
2285         * parser.c (cp_parser_template_argument): Restore dereference.
2286         * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
2287         (process_partial_specialization): Handle deref.
2288         (unify): Likewise.
2290 2014-02-21  Adam Butcher  <adam@jessamine.co.uk>
2292         PR c++/60052
2293         PR c++/60053
2294         * parser.c (cp_parser_parameter_declaration_list): Correctly reset
2295         implicit_template_scope upon leaving an out-of-line generic member
2296         function definition.
2298 2014-02-20  Kai Tietz  <ktietz@redhat.com>
2300         PR c++/58873
2301         * parser.c (cp_parser_functional_cast): Treat NULL_TREE
2302         valued type argument as error_mark_node.
2304         PR c++/58835
2305         * semantics.c (finish_fname): Handle error_mark_node.
2307 2014-02-19  Jason Merrill  <jason@redhat.com>
2309         PR c++/60046
2310         * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
2311         spec from template context.
2313 2014-02-19  Jakub Jelinek  <jakub@redhat.com>
2315         PR debug/56563
2316         * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
2317         FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
2319         PR c++/60267
2320         * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
2322 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
2324         PR c++/60225
2325         * semantics.c (ensure_literal_type_for_constexpr_object): Use
2326         strip_array_types.
2328 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
2330         PR c++/60215
2331         * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
2332         During error recovery allow_non_constant may be false.
2334 2014-02-18  Adam Butcher  <adam@jessamine.co.uk>
2336         PR c++/60190
2337         * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
2338         scope whenever a template parameter list has been started, independent
2339         of whether the function call operator was well-formed or not.
2341         PR c++/60064
2342         * parser.c (cp_parser_member_declaration): Pop fully implicit template
2343         scope for generic friend declarations as well as for non-friends.
2345 2014-02-12  Paolo Carlini  <paolo.carlini@oracle.com>
2347         PR c++/60047
2348         * method.c (implicitly_declare_fn): A constructor of a class with
2349         virtual base classes isn't constexpr (7.1.5p4).
2351 2014-02-05  Jan Hubicka  <hubicka@ucw.cz
2353         * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
2355 2014-02-05  Jakub Jelinek  <jakub@redhat.com>
2357         PR c++/58703
2358         * parser.c (cp_parser_omp_declare_reduction): Save and free
2359         declarator_obstack.
2361 2014-02-03  Marc Glisse  <marc.glisse@inria.fr>
2363         PR c++/53017
2364         PR c++/59211
2365         * tree.c (handle_init_priority_attribute): Call default_conversion on
2366         the attribute argument.
2368 2014-02-03  Paolo Carlini  <paolo.carlini@oracle.com>
2370         PR c++/58871
2371         * method.c (synthesized_method_walk): If vbases is non-null but
2372         is_empty is true, likewise don't worry about the virtual bases.
2374 2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
2376         PR c++/51219
2377         * typeck2.c (process_init_constructor_record): Just skip unnamed
2378         bit-fields.
2380 2014-01-31  Jason Merrill  <jason@redhat.com>
2382         PR c++/59469
2383         * pt.c (mark_decl_instantiated): Call mark_needed.
2385         PR c++/58672
2386         * decl2.c (handle_tls_init): Handle null init fn.
2388         PR c++/55800
2389         * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
2391 2014-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
2393         PR c++/59082
2394         * class.c (build_vfield_ref): Early return error_mark_node if
2395         TYPE_VFIELD (type) is null.
2396         (build_base_path): Check return value of build_vfield_ref.
2398 2014-01-31  Jason Merrill  <jason@redhat.com>
2400         PR c++/59646
2401         * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
2402         [ck_list]: Check for error_mark_node.
2403         (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
2405         PR c++/57043
2406         * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
2407         during partial ordering.
2409 2014-01-31  Marek Polacek  <polacek@redhat.com>
2411         PR c/59963
2412         * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
2414 2014-01-30  Jason Merrill  <jason@redhat.com>
2416         PR c++/57899
2417         * cp-tree.h (struct saved_scope): Add x_local_specializations.
2418         (local_specializations): New macro.
2419         * pt.c (local_specializations): Remove variable.
2421 2014-01-30  Richard Sandiford  <rdsandiford@googlemail.com>
2423         PR c++/58708
2424         * parser.c (make_string_pack): Use double_int::from_buffer.
2426 2014-01-30  Marek Polacek  <polacek@redhat.com>
2428         PR c/59940
2429         * typeck.c (build_ptrmemfunc1): Call convert_and_check with
2430         input_location.
2431         * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
2432         with input_location.
2433         * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
2434         loc parameter.
2436 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
2438         PR c++/58843
2439         * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
2441 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
2443         PR c++/58649
2444         * pt.c (lookup_template_class_1): Check start_enum return value
2445         for error_mark_node.
2447 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
2449         * decl.c (duplicate_decls, typename_hash, typename_compare):
2450         Use TYPE_IDENTIFIER.
2451         * error.c (dump_type): Likewise.
2452         * mangle.c (dump_substitution_candidates): Likewise.
2454 2014-01-30  Jason Merrill  <jason@redhat.com>
2456         PR c++/59633
2457         * decl2.c (attributes_naming_typedef_ok): New.
2458         * cp-tree.h: Declare it.
2459         * decl.c (grokdeclarator): Check it.
2460         * tree.c (no_linkage_check): Handle VECTOR_TYPE.
2462 2014-01-29  Jason Merrill  <jason@redhat.com>
2464         PR c++/59707
2465         * call.c (add_builtin_candidate): Catch dependent types.
2467         PR c++/59989
2468         * pt.c (expand_template_argument_pack): Correct
2469         non_default_args_count calculation.
2471         PR c++/58466
2472         * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
2474         PR c++/59956
2475         * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
2476         have a friend template in a class template.
2477         * pt.c (tsubst_friend_function): Look through it.
2478         (push_template_decl_real): A friend member template is
2479         primary.
2481 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
2483         PR c++/58846
2484         * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
2485         == error_mark_node.
2487 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
2489         PR c++/58674
2490         * pt.c (instantiate_template_1): Check for error_mark_node the second
2491         argument too.
2493 2014-01-29  Jason Merrill  <jason@redhat.com>
2495         PR c++/59916
2496         * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
2497         cdtor_returns_this case.
2499         PR c++/59315
2500         * decl.c (cxx_maybe_build_cleanup): Call mark_used.
2502 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
2504         PR c++/58702
2505         * semantics.c (finish_omp_reduction_clause): Check type for
2506         error_mark_node.
2508 2014-01-28  Jason Merrill  <jason@redhat.com>
2510         PR c++/59791
2511         * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
2512         (tsubst_copy): Use it if lookup fails.
2514         PR c++/59818
2515         * pt.c (tsubst_function_type): Make sure we keep the same function
2516         quals.
2518         PR c++/58701
2519         * semantics.c (build_anon_member_initialization): Stop walking
2520         when we run out of COMPONENT_REFs.
2522         PR c++/58632
2523         * decl.c (lookup_and_check_tag): Ignore template parameters if
2524         scope == ts_current.
2525         * pt.c (check_template_shadow): Don't complain about the injected
2526         class name.
2528         * decl.c (duplicate_decls): Tweak.
2530         PR c++/53756
2531         * mangle.c (write_unqualified_name): Handle operator auto.
2533 2014-01-27  Jason Merrill  <jason@redhat.com>
2535         PR c++/59823
2536         Core DR 1138
2537         * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
2538         list-initialization.  A conversion to rvalue ref that involves
2539         an lvalue-rvalue conversion is bad.
2540         (convert_like_real): Give helpful error message.
2542         PR c++/54652
2543         * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
2545         PR c++/58504
2546         * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
2547         types.
2549         PR c++/58606
2550         * pt.c (template_parm_to_arg): Call convert_from_reference.
2551         (tsubst_template_arg): Don't strip reference refs.
2553         PR c++/58639
2554         * call.c (build_aggr_conv): Reject value-initialization of reference.
2556         PR c++/58812
2557         PR c++/58651
2558         * call.c (convert_like_real): Give helpful error about excess braces
2559         for ck_rvalue of scalar type.
2561         Core DR 1288
2562         * call.c (reference_binding): Only elide braces if the single
2563         element is reference-related.
2565         PR c++/58814
2566         * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
2567         stabilizing.
2569         PR c++/58837
2570         * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
2571         FUNCTION_DECL.
2573         PR c++/59097
2574         * decl.c (compute_array_index_type): Don't call
2575         maybe_constant_value for a non-integral expression.
2577 2014-01-24  Balaji V. Iyer  <balaji.v.iyer@intel.com>
2579         * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
2580         flag_cilkplus.
2581         * cp-gimplify.c (cp_genericize): Likewise.
2582         * decl.c (grokfndecl): Likewise.
2583         * parser.c (cp_parser_postfix_expression): Likewise.
2584         (cp_parser_postfix_open_square_expression): Likewise.
2585         (cp_parser_direct_declarator): Likewise.
2586         (is_cilkplus_vector_p): Likewise.
2587         (cp_parser_omp_clause_name): Likewise.
2588         (cp_parser_omp_all_clauses): Likewise.
2589         * pt.c (apply_late_template_attributes): Likewise.
2590         * typeck.c (cp_build_array_ref): Likewise.
2591         (cp_build_compound_expr): Likewise.
2592         (check_return_expr): Likewise.
2594 2014-01-24  Jason Merrill  <jason@redhat.com>
2596         PR c++/58550
2597         * decl.c (grokdeclarator): Turn pedwarn about auto return type in
2598         c++11 into error.
2600         PR c++/59886
2601         PR c++/59659
2602         * typeck2.c (process_init_constructor_array): Don't create
2603         RANGE_EXPR yet.
2605 2014-01-24  Jakub Jelinek  <jakub@redhat.com>
2607         * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
2608         handling for RANGE_ARRAY case.
2610 2014-01-24  Paolo Carlini  <paolo.carlini@oracle.com>
2612         PR c++/57524
2613         * name-lookup.c (push_using_directive): Use timevar_cond_start.
2615 2014-01-23  Marek Polacek  <polacek@redhat.com>
2617         PR c/59846
2618         * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
2620 2014-01-23  Marek Polacek  <polacek@redhat.com>
2622         PR c/58346
2623         * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
2624         an empty aggregate.
2626 2014-01-23  Jason Merrill  <jason@redhat.com>
2628         PR c++/55189
2629         * cp-tree.h (struct language_function): Add infinite_loop and
2630         infinite_loops.
2631         (current_function_infinite_loop): New.
2632         * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
2633         (break_maybe_infinite_loop): New.
2634         (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
2635         (finish_do_stmt, finish_for_cond, finish_for_stmt)
2636         (begin_range_for_stmt): Use them.
2637         * decl.c (finish_function): Don't warn about missing return
2638         if current_function_infinite_loop.
2639         * pt.c (instantiate_decl): Copy current_function_infinite_loop.
2640         * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
2642         * call.c (build_op_delete_call): Use make_tree_vector and
2643         release_tree_vector.
2645 2014-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
2647         PR c++/58980
2648         * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
2649         nested_name_specifier.
2651 2014-01-23  Balaji V. Iyer  <balaji.v.iyer@intel.com>
2653         * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
2654         see if there is an attribute after function decl.  If so, then
2655         parse them now.
2656         (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
2657         enabled function late parsing.
2658         (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
2659         attribute for a SIMD-enabled function.
2660         (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
2661         the function is used by SIMD-enabled function (indicated by NULL
2662         pragma token).   Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
2663         PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
2664         (cp_parser_cilk_simd_vectorlength): Modified this function to handle
2665         vectorlength clause in SIMD-enabled function and #pragma SIMD's
2666         vectorlength clause.  Added a new bool parameter to differentiate
2667         between the two.
2668         (cp_parser_cilk_simd_fn_vector_attrs): New function.
2669         (is_cilkplus_vector_p): Likewise.
2670         (cp_parser_late_parsing_elem_fn_info): Likewise.
2671         (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
2672         and "vectorlength" clauses when Cilk Plus is enabled.
2673         (cp_parser_omp_clause_linear): Added a new parameter of type bool
2674         and emit a sorry message when step size is a parameter.
2675         * parser.h (cp_parser::cilk_simd_fn_info): New field.
2676         * decl.c (grokfndecl): Added flag_enable_cilkplus along with
2677         flag_openmp.
2678         * pt.c (apply_late_template_attributes): Likewise.
2680 2014-01-23  Jakub Jelinek  <jakub@redhat.com>
2682         PR middle-end/58809
2683         * semantics.c (finish_omp_reduction_clause): Reject
2684         BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
2686 2014-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
2688         PR c++/59482
2689         * parser.c (cp_parser_class_head): Push the class before parsing
2690         the base-clause, pop after it.
2692 2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>
2694         * decl2.c (cpp_check): Revert prototype change.
2696 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2698         PR c++/59270
2699         PR c++/58811
2700         * init.c (build_value_init_noctor): Don't pass error_mark_node to
2701         build_value_init.
2703 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2705         PR c++/59269
2706         * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
2707         only when errorcount == 0.
2709 2014-01-17  Marek Polacek  <polacek@redhat.com>
2711         PR c++/59838
2712         * cvt.c (ocp_convert): Don't segfault on non-existing
2713         ENUM_UNDERLYING_TYPE.
2715 2014-01-16  Jason Merrill  <jason@redhat.com>
2717         PR c++/59821
2718         * tree.c (bot_manip): Update the location of builtin_LINE and
2719         builtin_FILE calls.
2721 2014-01-14  Jason Merrill  <jason@redhat.com>
2723         PR c++/59659
2724         * typeck2.c (massage_init_elt): New.
2725         (process_init_constructor_record)
2726         (process_init_constructor_union): Use it.
2727         (process_init_constructor_array): Use it.  Use RANGE_EXPR.
2728         (split_nonconstant_init_1): Handle it.
2729         * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
2731 2014-01-09  Balaji V. Iyer  <balaji.v.iyer@intel.com>
2733         PR c++/59631
2734         * parser.c (cp_parser_postfix_expression): Added a new if-statement
2735         and replaced an existing if-statement with else-if statement.
2736         Changed an existing error message wording to match the one from the C
2737         parser.
2739 2014-01-08  Jason Merrill  <jason@redhat.com>
2741         PR c++/59614
2742         * class.c (abi_tag_data): Add tags field.
2743         (check_abi_tags): Initialize it.
2744         (find_abi_tags_r): Support collecting missing tags.
2745         (mark_type_abi_tags): Don't look at template args.
2746         (inherit_targ_abi_tags): New.
2747         (check_bases_and_members): Use it.
2748         * cp-tree.h (ABI_TAG_IMPLICIT): New.
2749         * mangle.c (write_abi_tags): Check it.
2751 2014-01-07  Jason Merrill  <jason@redhat.com>
2753         PR c++/58856
2754         * pt.c (num_innermost_template_parms): New.
2755         (get_underlying_template): Use it.
2757         PR c++/58965
2758         * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
2760 2014-01-07  Paolo Carlini  <paolo.carlini@oracle.com>
2762         * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
2763         the letter of 20.11.6 about Base and Derived naming the same
2764         class type modulo cv-qualifiers.
2766 2014-01-06  Adam Butcher  <adam@jessamine.co.uk>
2768         PR c++/59635
2769         * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
2770         function as unimplemented for generic lambdas with varargs.
2772         PR c++/59636
2773         * parser.c (cp_parser_template_parameter): Early out with
2774         error_mark_node if parameter declaration was not parsed.
2776         PR c++/59629
2777         * parser.c (cp_parser_lambda_expression): Save/reset/restore
2778         auto_is_implicit_function_template_parm_p around lambda body.
2780         PR c++/59638
2781         * parser.c (cp_parser_init_declarator): Undo fully implicit
2782         template parameter list when declarator is not a function.
2784 2014-01-03  Marc Glisse  <marc.glisse@inria.fr>
2786         PR c++/58950
2787         * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
2789 2014-01-03  Tobias Burnus  <burnus@net-b.de>
2791         PR c++/58567
2792         * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
2794 2014-01-03  Paolo Carlini  <paolo.carlini@oracle.com>
2796         Core DR 1442
2797         PR c++/59165
2798         * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
2799         as include_std to perform_koenig_lookup.
2800         (cp_parser_postfix_expression): Adjust.
2801         * pt.c (tsubst_copy_and_build): Likewise.
2802         * semantics.c (perform_koenig_lookup): Remove bool parameter.
2803         (omp_reduction_lookup): Adjust.
2804         * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
2805         (lookup_arg_dependent): Likewise.
2806         (lookup_function_nonclass): Adjust.
2807         * name-lookup.h: Adjust declaration.
2808         * cp-tree.h: Likewise.
2810 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
2812         PR c++/59087
2813         * parser.c (cp_parser_userdef_numeric_literal): Mention
2814         -fext-numeric-literals in the message.
2816 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
2818         PR c++/59641
2819         * call.c (build_conditional_expr_1): Check the return value of
2820         force_rvalue.
2822 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
2824         * call.c (convert_like_real): Check complain.
2826 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
2828         PR c++/59378
2829         * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
2830         in templates.
2832 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
2834         Update copyright years
2836 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
2838         * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
2839         the standard form for the copyright notice.
2841 Copyright (C) 2014 Free Software Foundation, Inc.
2843 Copying and distribution of this file, with or without modification,
2844 are permitted in any medium without royalty provided the copyright
2845 notice and this notice are preserved.