* doc/extend.texi (Java Exceptions): Remove.
[official-gcc.git] / gcc / cp / ChangeLog
blob48edc6e03efb41780c4e5bb6ba097a6d7a498c9b
1 2016-10-04  Jakub Jelinek  <jakub@redhat.com>
3         * cp-tree.h (enum cp_tree_index): Remove CPTI_JAVA_*,
4         CPTI_LANG_NAME_JAVA and CPTI_JCLASS.
5         (java_byte_type_node, java_short_type_node, java_int_type_node,
6         java_long_type_node, java_float_type_node, java_double_type_node,
7         java_char_type_node, java_boolean_type_node, lang_name_java,
8         jclass_node): Remove.
9         (enum languages): Remove lang_java.
10         (TYPE_FOR_JAVA): Remove.
11         (struct lang_type_class): Remove java_interface bit-field.
12         (TYPE_JAVA_INTERFACE): Remove.
13         (pragma_java_exceptions): Remove.
14         (check_java_method, build_java_class_ref): Remove prototypes.
15         * name-lookup.c (pushtag_1): Don't set TYPE_FOR_JAVA.
16         * decl2.c (acceptable_java_type, check_java_method): Remove.
17         (import_export_decl): Remove TYPE_FOR_JAVA handling.
18         (build_java_method_aliases): Remove.
19         (c_parse_final_cleanups): Don't call build_java_method_aliases.
20         (possibly_inlined_p): Don't test pragma_java_exceptions.
21         * init.c (build_new_1): Remove TYPE_FOR_JAVA handling.
22         (build_java_class_ref): Remove.
23         * pt.c (maybe_new_partial_specialization, lookup_template_class_1,
24         instantiate_class_template_1): Don't copy TYPE_FOR_JAVA.
25         * except.c (eh_type_info): Remove java type handling.
26         (decl_is_java_type, choose_personality_routine): Remove.
27         (initialize_handler_parm): Don't call choose_personality_routine.
28         (expand_start_catch_block): Don't handle java types.
29         (build_throw): Likewise.
30         * cp-lang.c (cp_eh_personality): Don't handle pragma_java_exceptions.
31         * typeck.c (structural_comptypes): Don't compare TYPE_FOR_JAVA.
32         * call.c (build_over_call): Don't handle TYPE_JAVA_INTERFACE.
33         (java_iface_lookup_fn): Remove.
34         (build_java_interface_fn_ref): Remove.
35         * tree.c (cxx_attribute_table): Remove java_interface.
36         (handle_java_interface_attribute): Remove.
37         * lex.c (pragma_java_exceptions): Remove.
38         (init_cp_pragma): Don't register GCC java_exceptions pragma.
39         (handle_pragma_java_exceptions): Remove.
40         (retrofit_lang_decl): Don't handle lang_name_java.
41         * method.c (implicitly_declare_fn): Don't handle TYPE_FOR_JAVA.
42         * error.c (language_to_string): Don't handle lang_java.
43         * decl.c (record_builtin_java_type): Remove.
44         (initialize_predefined_identifiers): Remove Java.
45         (cxx_init_decl_processing): Remove java_*_type_node.
46         (cp_finish_decl): Don't handle TYPE_FOR_JAVA.
47         (grokfndecl): Likewise.
48         (check_special_function_return_type): Likewise.
49         (grokdeclarator): Don't set TYPE_FOR_JAVA.
50         (grokparms): Don't handle TYPE_FOR_JAVA.
51         (xref_basetypes): Likewise.
52         (check_function_type): Likewise.
53         (finish_constructor_body): Likewise.
54         * mangle.c (write_builtin_type): Don't handle TYPE_FOR_JAVA
55         and java_*_type_node.
56         (write_bare_function_type): Don't handle TYPE_FOR_JAVA.
57         (write_java_integer_type_codes): Remove.
58         * class.c (add_method): Don't handle TYPE_FOR_JAVA.
59         (add_implicitly_declared_members, determine_key_method,
60         finish_struct_1): Likewise.
61         (push_lang_context): Don't handle lang_name_java.
63 2016-10-03  Marek Polacek  <polacek@redhat.com>
65         Core 903
66         * typeck.c (cp_build_binary_op): Pass original operands to
67         null_ptr_cst_p, not those after the default conversions.
69 2016-10-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>
71         * parser.c (cp_parser_condition): Fix a warning.
73 2016-09-29  Jakub Jelinek  <jakub@redhat.com>
75         Implement P0001R1 - C++17 removal of register storage class specifier
76         * decl.c (cp_finish_decl): Diagnose register storage class
77         on vars except when used in GNU global or local register variable
78         extension.
79         (grokdeclarator): Diagnose register storage class on parameters.
80         * except.c (expand_start_catch_block): Set DECL_REGISTER only
81         after cp_finish_decl call.
83 2016-09-29  Marek Polacek  <polacek@redhat.com>
85         * rtti.c (involves_incomplete_p): Add fall through comment.
87 2016-09-28  Jakub Jelinek  <jakub@redhat.com>
89         PR c++/77467
90         * constexpr.c (enum constexpr_switch_state): New.
91         (struct constexpr_ctx): Add css_state field.
92         (label_matches): Add CTX and STMT arguments, remove I and
93         DEFAULT_LABEL.  For CASE_LABEL_EXPR assert ctx->css_state != NULL,
94         handle default labels according to css_state.
95         (cxx_eval_statement_list): Remove statement skipping, label_matches
96         and default_label handling code.
97         (cxx_eval_loop_expr): Exit after first iteration even if
98         switches (jump_target).
99         (cxx_eval_switch_expr): Set up css_state field in ctx, if default
100         label has been seen in the body, but no cases matched, evaluate
101         the body second time.
102         (cxx_eval_constant_expression): Handle stmt skipping and label_matches
103         here.  Handle PREDICT_EXPR.  For MODIFY_EXPR or INIT_EXPR, assert
104         statement is not skipped.  For COND_EXPR during skipping, don't
105         evaluate condition, just the then block and if still skipping at the
106         end also the else block.
107         (cxx_eval_outermost_constant_expr): Adjust constexpr_ctx initializer.
108         (is_sub_constant_expr): Likewise.
110 2016-09-27  Jakub Jelinek  <jakub@redhat.com>
112         Implement P0018R3, C++17 lambda capture of *this by value as [=,*this]
113         * parser.c (cp_parser_lambda_introducer): Formatting fix.  Pass
114         true instead of false as by_reference_p to add_capture for 'this'.
115         Parse '*this' simple-capture.
116         * lambda.c (build_capture_proxy): Handle '*this' capture by value.
117         (add_capture): Adjust function comment.  For id == this_identifier,
118         treat by_reference_p as capturing '*this' by reference, i.e. 'this'
119         by value, and !by_reference_p as capturing '*this' by value.
120         (add_default_capture): For implicit 'this' capture, always pass
121         by_reference_p true rather than false.
123         PR c++/77722
124         * cp-gimplify.c (cp_ubsan_maybe_instrument_return): Instrument also
125         functions that have just a STATEMENT_LIST instead of BIND_EXPR, or
126         BIND_EXPR with some statement rather than STATEMENT_LIST as body.
128 2016-09-26  Nathan Sidwell  <nathan@acm.org>
130         * init.c (expand_default_init): Fix } indentation.
131         * method.c (process_subob_fn): Simplify control structure to
132         remove gotos.
133         (implicitly_declare_fn): Remove duplicated lambda ctor check.
135 2016-09-26  Marek Polacek  <polacek@redhat.com>
137         PR c/7652
138         * parser.c (cp_parser_storage_class_specifier_opt): Add
139         gcc_fallthrough.
140         (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
141         (cp_parser_cache_defarg): Likewise.
142         (cp_parser_omp_for_cond): Likewise.
143         * semantics.c (finish_decltype_type): Likewise.
144         * typeck.c (structural_comptypes): Likewise.
145         (cp_build_binary_op): Likewise.
146         (cp_build_modify_expr): Likewise.
148 2016-09-26  Marek Polacek  <polacek@redhat.com>
150         PR c/7652
151         * constexpr.c (cxx_eval_internal_function): Handle IFN_FALLTHROUGH.
152         (potential_constant_expression_1): Likewise.
153         * constraint.cc (function_concept_check_p): Check fn for null.
154         * parser.c (cp_parser_expression_statement): Handle attribute
155         fallthrough.
156         (cp_parser_statement): Likewise.
157         (cp_parser_label_for_labeled_statement): Set FALLTHROUGH_LABEL_P on
158         labels.
159         (cp_parser_std_attribute): Handle fallthrough attribute.
160         (cp_parser_check_std_attribute): Add %< %> quotes.
161         * pt.c (tsubst_copy_and_build): Handle internal functions.
162         (instantiation_dependent_scope_ref_p): Return if the expression is
163         null.
165 2016-09-24  Marek Polacek  <polacek@redhat.com>
167         PR c/77490
168         * typeck.c (cp_build_unary_op): Warn about bit not on expressions that
169         have boolean value.
171 2016-09-23  Jakub Jelinek  <jakub@redhat.com>
173         Implement P0138R2, C++17 construction rules for enum class values
174         * cp-tree.h (is_direct_enum_init): Declare.
175         * decl.c (is_direct_enum_init): New function.
176         (reshape_init): Use it.
177         * typeck.c (convert_for_assignment): Likewise.
179         * Make-lang.in (check-c++1z): Pass RUNTESTFLAGS down to
180         make check-g++.
182         * constexpr.c (call_stack): Remove unnecessary
183         = vNULL initialization of file scope vec.
185         * name-lookup.c (store_bindings, store_class_bindings): Don't
186         initialize static local bindings_need_stored to vNULL.
188         * typeck2.c (process_init_constructor_record): Use
189         CONSTRUCTOR_NELTS (...) instead of
190         vec_safe_length (CONSTRUCTOR_ELTS (...)).
191         * decl.c (reshape_init_r): Likewise.
192         (check_initializer): Likewise.
194 2016-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
196         PR c++/71979
197         * class.c (build_base_path): Allow for lookup_base returning
198         NULL_TREE.
200 2016-09-21  Jason Merrill  <jason@redhat.com>
202         Core 903
203         * call.c (null_ptr_cst_p): Check char_type_p.
205 2016-09-21  Jakub Jelinek  <jakub@redhat.com>
207         PR c++/77651
208         * init.c (build_new_1): Don't suggest to use -faligned-new if
209         aligned_new_threshold is non-zero.
210         (type_has_new_extended_alignment): Change aligned_new_threshhold
211         to aligned_new_threshold.
212         * call.c (second_parm_is_size_t, aligned_allocation_fn_p,
213         aligned_deallocation_fn_p, build_op_delete_call): Likewise.
214         * decl.c (cxx_init_decl_processing): Likewise.
216 2016-09-20  Jakub Jelinek  <jakub@redhat.com>
218         PR c++/77626
219         * constexpr.c (cxx_fold_indirect_ref): Don't call byte_position on
220         FIELD_DECLs with error_mark_node type.  Remove useless break; after
221         return.
223         PR c++/77638
224         * parser.c (cp_parser_template_declaration_after_parameter): For 2
225         argument operator"" template set ok to false for
226         parm == error_mark_node.
228         PR c++/77637
229         * parser.c (cp_parser_std_attribute_list): Reject ... without
230         preceding attribute.
232 2016-09-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
234         PR c++/77434
235         * cvt.c (cp_convert_and_check): Suppress Wint-in-bool-context here.
237 2016-09-16  Patrick Palka  <ppalka@gcc.gnu.org>
239         PR c++/77639
240         * parser.c (cp_parser_class_head): When
241         processing_template_parmlist, don't assume that the
242         class-head may start an explicit specialization.
244 2016-09-16  Jakub Jelinek  <jakub@redhat.com>
246         PR c++/77482
247         * error.c (dump_simple_decl): Only check DECL_DECLARED_CONCEPT_P
248         if DECL_LANG_SPECIFIC is non-NULL.  Fix up formatting.
250         PR c++/77338
251         * constexpr.c (cxx_eval_constant_expression) <case PARM_DECL>: Only
252         call is_really_empty_class on complete types.
254         PR c++/77375
255         * class.c (check_bases): Set CLASSTYPE_HAS_MUTABLE if any
256         TYPE_HAS_MUTABLE_P for any bases.
258 2016-09-16  Jason Merrill  <jason@redhat.com>
260         * class.c (check_bases, set_one_vmethod_tm_attributes): Use
261         least_bit_hwi.
262         * decl.c (cxx_init_decl_processing): Use pow2p_hwi.
263         * parser.c (cp_parser_cilk_simd_vectorlength): Use pow2p_hwi.
265 2016-09-14  Jakub Jelinek  <jakub@redhat.com>
267         PR c++/77549
268         * name-lookup.c (consider_binding_level): Look through TREE_LIST
269         and OVERLOAD.
271 2016-09-14  Marek Polacek  <polacek@redhat.com>
273         * typeck.c (cp_build_unary_op): Diagnose incrementing boolean
274         expressions.  Tweak an error message.
276 2016-09-14  Marek Polacek  <polacek@redhat.com>
278         * cp-tree.h (cp_build_unary_op): Change nonconvert parameter type to
279         bool.
280         * decl2.c (one_static_initialization_or_destruction): Use true instead
281         of 1.
282         * init.c (build_vec_init): Use false instead of 0.
283         * pt.c (tsubst_copy_and_build): Likewise.
284         * semantics.c (simplify_loop_decl_cond): Likewise.
285         * typeck.c (rationalize_conditional_expr): Likewise.
286         (cp_build_binary_op): Use true instead of 1.
287         (cp_build_unary_op): Change nonconvert parameter type to bool.  Use true
288         instead of 1.
289         (build_unary_op): Change nonconvert parameter type to bool.
290         (unary_complex_lvalue): Use false instead of 0.
292 2016-09-13  Jakub Jelinek  <jakub@redhat.com>
294         Implement P0028R4, C++17 using attribute namespaces without repetition
295         * parser.c (cp_parser_std_attribute): Add ATTR_NS argument.  Diagnose
296         non-NULL ATTR_NS with scoped attribute token.  Handle non-NULL
297         ATTR_NS with non-scoped attribute tokens.  Allow named ops in
298         identifier after ::.
299         (cp_parser_std_attribute_list): Add ATTR_NS argument, pass it down
300         to cp_parser_std_attribute calls.
301         (cp_parser_std_attribute_spec): Parse optional C++17
302         attribute-using-prefix, adjust grammar in function comment.
304         PR c++/77553
305         * constexpr.c (cxx_fold_pointer_plus_expression): New function.
306         (cxx_eval_binary_expression): Use it for POINTER_PLUS_EXPR.
307         (cxx_eval_pointer_plus_expression): Remove.
308         (cxx_eval_constant_expression) <case POINTER_PLUS_EXPR>: Don't
309         call cxx_eval_pointer_plus_expression.
311 2016-09-13  David Malcolm  <dmalcolm@redhat.com>
313         * parser.c (cp_parser_class_specifier_1): Update for renaming of
314         add_fixit_insert to add_fixit_insert_before.
315         (cp_parser_class_head): Likewise.
317 2016-09-12  Bernd Edlinger  <bernd.edlinger@hotmail.de>
319         PR c++/77496
320         * call.c (build_conditional_expr_1): Call warn_for_omitted_condop.
321         * class.c (instantiate_type): Look through the SAVE_EXPR.
323 2016-09-09  Jason Merrill  <jason@redhat.com>
325         Implement P0035R4, C++17 new of over-aligned types.
326         * cp-tree.h (enum cp_tree_index): Add CPTI_ALIGN_TYPE.
327         (align_type_node): New macro.
328         * call.c (build_operator_new_call): Handle C++17 aligned new.
329         (second_parm_is_size_t, build_op_delete_call): Likewise.
330         (non_placement_deallocation_fn_p): Likewise. Rename to
331         usual_deallocation_fn_p.
332         (aligned_allocation_fn_p, aligned_deallocation_fn_p): New.
333         * decl.c (cxx_init_decl_processing): Add aligned new support.
334         * init.c (type_has_new_extended_alignment): New.
335         (build_new_1): Handle aligned new.
336         * tree.c (vec_copy_and_insert): New.
338 2016-09-02  Jakub Jelinek  <jakub@redhat.com>
340         PR sanitizer/77396
341         * decl2.c (do_static_initialization_or_destruction): Only
342         call asan_dynamic_init_call if INITP is true.
344 2016-09-01  Martin Sebor  <msebor@redhat.com>
346         * mangle.c: Increase buffer size to guarantee it fits the output
347         of the formatted function regardless of its arguments.
349 2016-09-01  Marek Polacek  <polacek@redhat.com>
351         PR c/7652
352         * error.c (dump_type): Fix falls through comment.
353         (dump_decl): Likewise.
354         (dump_expr): Likewise.
356 2016-08-30  David Malcolm  <dmalcolm@redhat.com>
358         * parser.c (cp_parser_enclosed_template_argument_list): Add fix-it
359         hint to ">>" within nested template argument list error.
361 2016-08-30  David Malcolm  <dmalcolm@redhat.com>
363         * name-lookup.c (suggest_alternatives_for): Use add_fixit_replace
364         rather than add_fixit_misspelled_id.
365         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
367 2016-08-29  Jason Merrill  <jason@redhat.com>
369         PR c++/77379
370         * mangle.c (maybe_check_abi_tags): Add version parm, handle thunks.
371         (mangle_thunk): Add thunk parameter.
372         * method.c (finish_thunk): Pass it.
373         * cp-tree.h: Declare it.
375 2016-08-15  Jason Merrill  <jason@redhat.com>
377         Avoid calling a trivial default constructor.
378         * class.c (default_ctor_p): New.
379         (in_class_defaulted_default_constructor): Use it.
380         (type_has_non_user_provided_default_constructor): Use it.
381         * call.c (build_over_call): Handle trivial default constructor.
382         * cp-tree.h: Declare default_ctor_p.
384         PR c++/57728
385         * pt.c (do_type_instantiation): Don't mess with non-user-provided
386         member functions.
388 2016-08-25  Marek Polacek  <polacek@redhat.com>
390         * parser.c (cp_parser_binary_expression): Pass LHS to
391         warn_logical_not_parentheses.
393 2016-08-18  Marek Polacek  <polacek@redhat.com>
395         PR c/7652
396         * call.c (add_builtin_candidate): Add gcc_fallthrough.
397         * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
398         * parser.c (cp_parser_skip_to_end_of_statement): Likewise.
399         (cp_parser_cache_defarg): Likewise.
401 2016-08-12  Marek Polacek  <polacek@redhat.com>
403         PR c/7652
404         * call.c (add_builtin_candidate): Add FALLTHRU.
405         (build_integral_nontype_arg_conv): Adjust fall through comment.
406         (build_new_op_1): Add FALLTHRU.
407         (convert_like_real): Adjust fall through comment.
408         * class.c (fixed_type_or_null): Likewise.
409         * constexpr.c (cxx_eval_constant_expression): Likewise.
410         (potential_constant_expression_1): Likewise.  Add FALLTHRU.
411         * cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment.
412         (cp_fold): Add FALLTHRU.
413         * cvt.c (build_expr_type_conversion): Adjust fall through comment.
414         * cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU.
415         (pp_cxx_qualified_id): Likewise.
416         (cxx_pretty_printer::constant): Adjust fall through comment.
417         (cxx_pretty_printer::primary_expression): Add FALLTHRU.
418         (pp_cxx_pm_expression): Adjust fall through comment.
419         (cxx_pretty_printer::expression): Add FALLTHRU.
420         (cxx_pretty_printer::declaration_specifiers): Reformat code.
421         (pp_cxx_type_specifier_seq): Adjust fall through comment.
422         (pp_cxx_ptr_operator): Likewise.  Add FALLTHRU.
423         * error.c (dump_type): Adjust fall through comment.
424         (dump_decl): Likewise.
425         * mangle.c (write_type): Likewise.
426         * method.c (synthesized_method_walk): Add FALLTHRU.
427         * name-lookup.c (arg_assoc_type): Likewise.
428         * parser.c (cp_lexer_print_token): Adjust fall through comment.
429         (cp_parser_primary_expression): Add FALLTHRU.
430         (cp_parser_operator): Likewise.
431         * pt.c (find_parameter_packs_r): Likewise.
432         (tsubst_aggr_type): Adjust fall through comment.
433         * semantics.c (finish_omp_clauses): Add FALLTHRU.
434         * tree.c (lvalue_kind): Likewise.
436 2016-08-12  Alexandre Oliva  <aoliva@redhat.com>
438         PR debug/63240
439         * cp-objcp-common.c (cp_function_decl_defaulted): New.
440         (cp_function_decl_explicit_p): Const_tree-ify.
441         (cp_function_decl_deleted_p): Likewise.
442         * cp-objcp-common.h (cp_function_decl_defaulted): Declare.
443         (cp_function_decl_explicit_p): Const_tree-ify.
444         (cp_function_decl_deleted_p): Likewise.
445         (LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Redefine.
447 2016-08-11  Jakub Jelinek  <jakub@redhat.com>
449         PR c++/72868
450         * constexpr.c (label_matches): Handle case range expressions.
452 2016-08-11  Jason Merrill  <jason@redhat.com>
454         PR c++/73456
455         * logic.cc (non_atomic_constraint_p): Handle EXPR_PACK_EXPANSION.
457 2016-08-10  Jason Merrill  <jason@redhat.com>
459         Implement C++17 constexpr if.
460         * cp-tree.h (IF_STMT_CONSTEXPR_P): New.
461         * name-lookup.c (push_to_top_level, pop_from_top_level_1): Handle it.
462         * parser.h (struct cp_parser): Add in_discarded_stmt field.
463         * parser.c (cp_parser_selection_statement): Handle 'if constexpr'.
464         (cp_parser_jump_statement): Avoid deducing from a discarded return.
465         * pt.c (tsubst_expr): Only instantiate taken branch of constexpr if.
466         * semantics.c (begin_if_stmt): Set the binding level this_entity.
467         (finish_if_stmt_cond): Require the condition of a
468         constexpr if to be constant.
469         * decl.c (level_for_constexpr_if): New.
470         (named_label_entry): Add in_constexpr_if field.
471         (poplevel_named_label_1): Set it.
472         (check_goto): Check it.
473         (check_previous_goto_1): Check level_for_constexpr_if.
475 2016-08-09  Jason Merrill  <jason@redhat.com>
477         PR c++/68703
478         * decl2.c (any_dependent_type_attributes_p): New.
479         * pt.c (dependent_type_p_r, type_dependent_expression_p): Check it.
480         * semantics.c (finish_id_expression): Check it.
481         * typeck.c (finish_class_member_access_expr): Check it.
483         PR c++/71712
484         * class.c (check_abi_tags): Don't duplicate tags for conversion ops.
486         Adjust mangling of ABI tags on class template member functions.
487         * class.c (missing_abi_tags): New.
488         (check_abi_tags): Don't check template. Add just_checking mode.
489         * mangle.c (abi_flag_at_least, any_abi_below, equal_abi_tags): New.
490         (sorted_abi_tags): Split out from write_abi_tags.
491         (struct releasing_vec): New.
492         (write_unqualified_name): Only look for the primary
493         template for types.  Implement backward compatibility.
495         PR c++/72849
496         * constexpr.c (cxx_eval_constant_expression): Check
497         COMPLETE_TYPE_P before calling is_really_empty_class.
498         * class.c (is_really_empty_class): Don't call complete_type.
500         PR c++/56701
501         * typeck.c (cp_build_addr_expr_1): Remove special *this handling.
503 2016-08-09  Jakub Jelinek  <jakub@redhat.com>
505         PR c++/72809
506         * rtti.c (get_pseudo_ti_index): Return TK_CLASS_TYPE for
507         builtin aggregate types without TYPE_BINFO.
509 2016-08-08  Jason Merrill  <jason@redhat.com>
511         Implement C++17 constexpr lambda.
512         * class.c (finalize_literal_type_property): Handle lambdas.
513         * constexpr.c (is_valid_constexpr_fn): Likewise.  No longer static.
514         (explain_invalid_constexpr_fn, cxx_eval_call_expression): Handle
515         lambdas.
516         (cxx_eval_constant_expression): Handle capture proxy.
517         (var_in_constexpr_fn): Don't check for C++14.
518         (var_in_maybe_constexpr_fn): New.
519         (potential_constant_expression_1): Use it.  Check DECL_EXPR for
520         declarations not allowed in constexpr function.  Handle
521         STATIC_ASSERT, RANGE_FOR_STMT.
522         * decl.c (make_rtl_for_nonlocal_decl): Use var_in_maybe_constexpr_fn.
523         (finish_function): Set DECL_DECLARED_CONSTEXPR_P on lambda members.
524         * lambda.c (begin_lambda_type): Set CLASSTYPE_LITERAL_P.
525         (maybe_add_lambda_conv_op): Clear thunk CALL_EXPR location.
526         (lambda_static_thunk_p): New.
527         * parser.c (cp_keyword_starts_decl_specifier_p): Add RID_CONSTEXPR.
528         (CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): New enumerator.
529         (cp_parser_decl_specifier_seq): Handle it.
530         (cp_parser_lambda_declarator_opt): Use cp_parser_decl_specifier_seq.
531         * pt.c (instantiate_class_template_1): Set CLASSTYPE_LITERAL_P.
532         (tsubst_copy_and_build) [CALL_EXPR]: Propagate CALL_FROM_THUNK_P.
533         * error.c (dump_function_decl): Check TFF_NO_TEMPLATE_BINDINGS.
534         (dump_expr) [FUNCTION_DECL]: Pass it.
536 2016-08-08  Jason Merrill  <jason@redhat.com>
538         PR c++/67131
539         * class.c (is_really_empty_class): Call complete_type.
540         * constexpr.c (cxx_eval_constant_expression): Check
541         is_really_empty_class.
542         (potential_constant_expression_1): Likewise.  Check for error type.
544 2016-08-08  Jakub Jelinek  <jakub@redhat.com>
546         PR c++/58706
547         * parser.c: Include tree-iterator.h.
548         (cp_parser_omp_for_loop_init): Move lambda DECL_EXPRs from init
549         to FOR_BLOCK.
550         (cp_parser_omp_for_loop): Handle non-STATEMENT_LIST FOR_BLOCK
551         entries.
553 2016-08-06  Jonathan Wakely  <jwakely@redhat.com>
555         * call.c (convert_like_real): Harmonize diagnostics for invalid
556         reference binding.
558 2016-08-05  Martin Sebor  <msebor@redhat.com>
560         * constexpr.c (cxx_eval_store_expression): Remove hyphen from
561         the spelling of "constant-expression" in diagnostic messages
562         for consistency.
563         (cxx_eval_constant_expression): Same.
564         (cxx_eval_outermost_constant_expr): Same.
565         (potential_constant_expression_1): Same.
567 2016-08-05  Nathan Sidwell  <nathan@acm.org>
569         PR c++/68724
570         * pt.c (unify): TRAIT_EXPR is an expr.
572 2016-08-04  Paolo Carlini  <paolo.carlini@oracle.com>
574         PR c++/72800
575         * lambda.c (add_capture): Check lambda_capture_field_type return
576         value for error_mark_node.
578 2016-08-04  Patrick Palka  <ppalka@gcc.gnu.org>
580         PR c++/72759
581         * pt.c (tsubst_qualified_id): Return error_mark_node if
582         template_args is error_mark_node.
584 2016-08-04  Jason Merrill  <jason@redhat.com>
586         PR c++/72415
587         * pt.c (tsubst_pack_expansion): Pull a single pack expansion out
588         of the TREE_VEC.
590         * cp-tree.h (TYPE_UNNAMED_P): Rename from TYPE_ANONYMOUS_P.
591         (TYPE_WAS_UNNAMED): Rename from TYPE_WAS_ANONYMOUS.
592         * class.c, decl.c, decl2.c, error.c, lambda.c, mangle.c,
593         name-lookup.c, parser.c, pt.c, semantics.c, tree.c: Adjust.
595         PR c++/72796
596         * typeck.c (finish_class_member_access_expr): Avoid stripping
597         SCOPE_REF to dependent base.
599 2016-08-04  Thomas Schwinge  <thomas@codesourcery.com>
601         * parser.c (cp_ensure_no_oacc_routine): Improve diagnostics.
602         (cp_parser_late_parsing_cilk_simd_fn_info): Fix diagnostics.
603         (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
604         Simplify code, and improve diagnostics.
605         (cp_parser_oacc_routine): Likewise.  Move pragma context
606         checking...
607         (cp_parser_pragma): ... here.
609         * parser.h (struct cp_omp_declare_simd_data): New.
610         (struct cp_parser): Use it for oacc_routine member.
611         * parser.c (cp_ensure_no_oacc_routine, cp_parser_oacc_routine)
612         (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
613         Use it.  Simplify code.
614         (cp_parser_new): Initialize all members pointing to special
615         parsing data structures.
616         (cp_parser_cilk_simd_fn_vector_attrs): Initialize
617         parser->cilk_simd_fn_info->clauses.
618         (cp_parser_omp_declare_simd): Initialize
619         parser->omp_declare_simd->clauses.
620         (cp_parser_late_parsing_omp_declare_simd): Simplify code.
622 2016-08-04  Marek Polacek  <polacek@redhat.com>
624         PR c++/70229
625         * constexpr.c (check_constexpr_ctor_body_1): Allow typedef
626         declarations.
628 2016-08-01  Jason Merrill  <jason@redhat.com>
630         * mangle.c (mangle_decl): Warn about mangled name change even if
631         DECL_REALLY_EXTERN.
633         * mangle.c (get_abi_tags): New.
634         (find_substitution, write_unqualified_name, write_abi_tags)
635         (maybe_check_abi_tags): Use it.
637         * mangle.c (mangle_decl): Fix mangled name change warning.
639         PR c++/72766
640         * constexpr.c (cxx_eval_pointer_plus_expression): Check constancy
641         of nelts.
642         * cp-gimplify.c (cp_fully_fold): Only maybe_constant_value in
643         C++11 and up.
645 2016-07-30  Martin Sebor  <msebor@redhat.com>
647         PR c++/60760
648         PR c++/71091
649         * constexpr.c (cxx_eval_binary_expression): Reject invalid expressions
650         involving null pointers.
651         (cxx_eval_component_reference): Reject null pointer dereferences.
652         (cxx_eval_indirect_ref): Reject indirecting through null pointers.
653         (cxx_eval_constant_expression): Reject invalid expressions involving
654         null pointers.
656 2016-07-29  Marek Polacek  <polacek@redhat.com>
658         PR c/71926
659         * semantics.c (maybe_convert_cond): Use the location of COND for the
660         parentheses warning.
662 2016-07-29  Jason Merrill  <jason@redhat.com>
664         * decl.c (build_enumerator): Tweak diagnostic.
666         PR c++/72457
667         * init.c (expand_aggr_init_1): Only handle value-init of bases.
668         * constexpr.c (build_data_member_initialization): Handle multiple
669         initializers for the same field.
671 2016-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
673         PR c++/71665
674         * decl.c (build_enumerator): Check the type of the enumerator before
675         calling cxx_constant_value.
677 2016-07-27  Jason Merrill  <jason@redhat.com>
679         PR c++/71747
680         * pt.c (get_partial_spec_bindings): Replace tparms and spec_args
681         parameters with spec_tmpl.  Call push_tinst_level.
682         (most_specialized_partial_spec): Adjust.
683         (more_specialized_partial_spec): Adjust.
685 2016-07-25  Jason Merrill  <jason@redhat.com>
687         PR c++/65970
688         * cp-gimplify.c (genericize_cp_loop): Revert location change.
690         PR c++/71837
691         * lambda.c (add_capture): Leave a pack expansion in a TREE_LIST.
692         (build_lambda_object): Call build_x_compound_expr_from_list.
693         * pt.c (tsubst) [DECLTYPE_TYPE]: Likewise.
695         PR c++/71833
696         PR c++/54440
697         * pt.c (coerce_template_parameter_pack): Fix logic for
698         pack index.
700         PR c++/65970
701         * constexpr.c (cxx_eval_loop_expr): Count iterations.
702         * cp-gimplify.c (genericize_cp_loop): Use start_locus even for
703         infinite loops.
705         PR c++/71972
706         * constexpr.c (cxx_eval_array_reference): Handle looking for the
707         value of an element we're currently modifying.
709 2016-07-24  Jason Merrill  <jason@redhat.com>
711         PR c++/71515
712         * pt.c (resolve_typename_type): Try to avoid calling
713         currently_open_class.
715 2016-07-23  Jason Merrill  <jason@redhat.com>
717         PR c++/66617
718         * call.c (add_list_candidates): Handle VTT parm.
719         (build_new_method_call_1): Likewise.
721         PR c++/55922
722         PR c++/63151
723         * init.c (expand_aggr_init_1): Handle list-initialization from {}.
725         PR c++/70709
726         * class.c (walk_subobject_offsets): Handle 0-length array.
728         PR c++/70778
729         * pt.c (tsubst): Also substitute into the template of a
730         BOUND_TEMPLATE_TEMPLATE_PARM.
732         PR c++/71738
733         * pt.c (lookup_template_class_1): Handle getting template from tsubst.
735         PR c++/71350
736         * decl.c (reshape_init_r): Check complain for missing braces warning.
738 2016-07-22  Jason Merrill  <jason@redhat.com>
740         PR c++/71576
741         * call.c (convert_like_real): Use lvalue_kind.
743         PR c++/71748
744         PR c++/52746
745         * pt.c (tsubst_baselink): Call
746         adjust_result_of_qualified_name_lookup for unqualified
747         destructors.
749 2016-07-21  Jason Merrill  <jason@redhat.com>
751         PR c++/69223
752         * semantics.c (apply_deduced_return_type): Call
753         complete_type_or_else before building the new RESULT_DECL.
755         PR c++/71274
756         * decl2.c (maybe_instantiate_decl): Split out from mark_used.
757         (decl_constant_var_p): Use it instead.
759         PR c++/71630
760         * pt.c (instantiate_decl): Fix pattern_defined for namespace scope
761         variable templates.
763         PR c++/71913
764         * call.c (unsafe_copy_elision_p): It's OK to elide when
765         initializing an unknown object.
767         * call.c (build_over_call): Check unsafe_copy_elision_p even for
768         trivial constructors.
769         * method.c (do_build_copy_constructor): Don't copy tail padding
770         even in a trivial constructor.
772 2016-07-21  Jakub Jelinek  <jakub@redhat.com>
774         PR c++/71728
775         * constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>:
776         Replace assert with test, return false if the goto isn't break
777         or continue.  Formatting fix.
779 2016-07-21  Richard Biener  <rguenther@suse.de>
781         * vtable-class-hierarchy.c (vtv_generate_init_routine): Set
782         DECL_IGNORED_P.
784 2016-07-21  Jakub Jelinek  <jakub@redhat.com>
786         PR c++/71941
787         * cp-gimplify.c (cp_genericize): For nested cp_genericize calls
788         save/restore bc_label array.
790 2016-07-21  Jason Merrill  <jason@redhat.com>
792         PR c++/70781
793         * parser.c (cp_parser_lambda_expression): Unset OK if there was an
794         error parsing the lambda-declarator.
796         PR c++/71896
797         * constexpr.c (cxx_eval_binary_expression): Handle comparison
798         between lowered and unlowered PTRMEM_CST.
800         PR c++/65168
801         * typeck.c (cp_truthvalue_conversion): Compare pointers to nullptr.
802         Don't set c_inhibit_evaluation_warnings.
804         PR c++/71121
805         * cp-gimplify.c (cp_fully_fold): First call maybe_constant_value.
807 2016-07-21  Andrew Sutton  <andrew.n.sutton@gmail.com>
808             Jason Merrill  <jason@redhat.com>
810         Improving concepts performance and diagnostics.
811         PR c++/67565
812         PR c++/67579
813         PR c++/71843
814         * cp-tree.def (CHECK_CONSTR): New.
815         * cp-tree.h (CHECK_CONSTR_CONCEPT): New.
816         (CHECK_CONSTR_ARGS): New.
817         * constraint.cc (make_predicate_constraint): Remove in favor of
818         normalize_expression.
819         (resolve_constraint_check): Actually return error_mark_node when
820         resolution fails.
821         (resolve_variable_concept_check): Perform coercion as if processing
822         a template. Also return errors on resolution failure.
823         (lift_*): Remove all of these functions. Don't unnecessarily inline
824         concepts.
825         (learn_*): Add facilities to memoize implications for subsumption
826         during normalization.
827         (expanding_concept): New.
828         (expand_concept): New. Return the inlined and normalized definition
829         of a concept when needed.
830         (transform_*, xform_*): Rename to normalize_* to better reflect the
831         responsibility of those functions.
832         (normalize_template_id_expression): Check for non-boolean operands
833         when possible. Generate check constraints instead of normal variable
834         references.
835         (normalize_call_expression): Report errors when resolution fails.
836         (check_for_logical_overloads): Rewrite this check to more accurately
837         report the error.
838         (normalize_atom): Check for overloaded calls and invalid types before
839         determining if the expression refers to a concept.
840         (build_constraints): Don't cache normalized constraints or decomposed
841         assumptions.
842         (finish_shorthand_constraint): Return a normalized expression instead
843         of a predicate constraint.
844         (finish_template_introduction): Same.
845         (placeholder_extract_concept_and_args): Rewrite this since we only
846         ever get check constraints here.
847         (equivalent_placeholder_constraints): Rewrite in terms of check
848         constraints, and handle error_mark_nodes correctly.
849         (tsubst_check_constraint, tsubst_expr_constr, tsubst_type_constr)
850         (tsubst_implicit_conversion_constr)
851         (tsubst_argument_deduction_constr, tsubst_exception_constr)
852         (tsubst_parameterized_constraint, tsubst_constraint): New.
853         (tsbust_conjunection): Replace with tsubst_logical_operator and
854         actually generate the right kind of constraint.
855         (tsubst_requirement_body): Reverse the order of substituted arguments
856         so that they appear in the order written (helps diagnostics).
857         (satisfy_check_constraint): New.
858         (satisfy_conjunction): Simplify.
859         (satisfy_disjunction): Same.
860         (satisfy_constraint_1): Handle check constraints.
861         (eval_constr): New (private) global state.
862         (evaluating_constraints_sentinel): New. Manages eval_constr.
863         (satisfy_constraint): Add timing variables.
864         (satisfy_associated_constraints): Add hooks for memoization.
865         (evaluate_function_concept): Build a check constraint instead of
866         normalizing its definition.
867         (evaluate_variable_concept): Same.
868         (evaluate_constraint_expression): Normalize, but in the current
869         declaration processing context.
870         (evaluating_constraints_p): New.
871         (elide_constraint_failure_p): Actually emit constraint_thresh errors.
872         (diagnose_*): Remove artificial indentation. Add a new parameter to
873         each that tracks the current (complete) constraint prior to any
874         substitutions.
875         (diagnose_expression): Removed.
876         (diagnose_call_expression): Same.
877         (diagnose_template_id): Same.
878         (diagnose_template_id): New.
879         (diagnose_logical_constraint): New.
880         (diagnose_expression_constraint): Show the original expression.
881         (diagnose_type_constraint): Show the original type.
882         (diagnose_implicit_conversion_constraint): Be specific about
883         failures, don't re-diagnose a known-to-be-failed substitutions,
884         and manage elisions properly.
885         (diagnose_argument_deduction_constraint): Same.
886         (diagnose_exception_constraint): Same.
887         (diagnose_parameterized_constraint): Same.
888         (constraint_p): Allow EXPR_PACK_EXPANSION.
889         * logic.cc (next_by_distance): Removed. No longer used.
890         (any_p): Renamed from any_of.
891         (term_entry, term_hasher): New.
892         (term_list): Rewrite to include a hash table for quick lookup.
893         Also, make less stateful.
894         (proof_state): Extend to allow goals to be discharged once
895         satisfied.
896         (non_atomic_constraint_p): New.
897         (any_non_atomic_constraints_p): New.
898         (...rest...): Previous implementation completely replaced with an
899         iterative algorithm that opportunistically prunes the search space
900         before committing to using more memory.
901         * parser.c: (cp_parser_type_parameter): Normalize constraints.
902         (cp_parser_explicit_template_declaration): Same.
903         * pt.c: (finish_template_variable): Be less redundant with this error
904         message.
905         (template_args_equal): No longer static.
906         (tsubst_decl): Don't try to find specializations of variables that
907         have already been instantiated.
908         (build_non_dependent_expr): Avoid infinite recursion during concept
909         expansion.
910         (make_constrained_auto): Normalize constraints.
911         (do_auto_deduction): When doing auto deduction from a
912         partial-concept-id, be sure to include the explicit args checking
913         the constraints.
914         (constraint_sat_*): New. Memoize satisfied constraints.
915         (concept_spec_*): New. Memoize expressions associated with a concept
916         specialization.
917         (constraint_memos, concept_memos): New.
918         (lookup_constraint_satisfaction, memoize_constraint_satisfaction): New.
919         (lookup_concept_satisfaction, memoize_concept_satisfaction): New.
920         (get_concept_expansion, save_concept_expansion): New.
921         (hash_subsumption_args): New.
922         (comp_subsumption_args): New.
923         (subsumption_*): New. Memoize parts of the subsumption relation.
924         (lookup_subsumption_result, save_subsumption_result): New.
925         (init_constraint_processing): Initialize memo tables.
926         (get_constraints): Shortcut if !flag_concepts.
927         * decl.c (grokfndecl): Normalize constraints.
928         * error.c (dump_simple_decl): Print "concept" when appropriate.
929         (dump_function_decl): Same.
930         (dump_template_decl): Don't write requirements when we're not
931         printing the header.
932         (dump_expr): Handle fold expressions.
933         * cxx-pretty-print.c (cxx_pretty_printer::expression): Handle
934         fold expressions.
935         (get_fold_operator): New.
936         (pp_cxx_unary_left_fold_expression): New.
937         (pp_cxx_unary_right_fold_expression): New.
938         (pp_cxx_binary_fold_expression): New.
939         (pp_cxx_check_constraint): New.
940         (pp_cxx_*_constraint): Rewrite the grammar of internal constraints
941         to make them easier to read when debugging.
942         * search.c (accessible_p): Don't shortcut when evaluating constraints.
943         * tree.c (cp_tree_equal): Handle CHECK_CONSTR.
945 2016-07-20  David Malcolm  <dmalcolm@redhat.com>
947         PR c/70339
948         PR c/71858
949         * name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h,
950         and parser.h.
951         (suggest_alternatives_for): If no candidates are found, try
952         lookup_name_fuzzy and report if if finds a suggestion.
953         (consider_binding_level): New function.
954         (lookup_name_fuzzy) New function.
955         * parser.c: Include gcc-rich-location.h.
956         (cp_lexer_next_token_is_decl_specifier_keyword): Move most of
957         logic into...
958         (cp_keyword_starts_decl_specifier_p): ...this new function.
959         (cp_parser_diagnose_invalid_type_name): When issuing
960         "does not name a type" errors, attempt to make a suggestion using
961         lookup_name_fuzzy.
962         * parser.h (cp_keyword_starts_decl_specifier_p): New prototype.
963         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject
964         types that are not CLASS_TYPE_P, rather than rejecting individual
965         tree codes.
967 2016-07-20  Jakub Jelinek  <jakub@redhat.com>
969         PR c++/71909
970         * parser.c (cp_parser_save_member_function_body): Consume
971         __transaction_relaxed or __transaction_atomic with optional
972         attribute.  Only skip catch with block if try keyword is seen.
974         PR c++/50060
975         * constexpr.c (cxx_eval_builtin_function_call): Pass false as lval
976         when evaluating call arguments.  Use fold_builtin_call_array instead
977         of fold_build_call_array_loc, return t if it returns NULL.  Otherwise
978         check the result with potential_constant_expression and call
979         cxx_eval_constant_expression on it.
981 2016-07-19  Jason Merrill  <jason@redhat.com>
983         PR c++/67164
984         * pt.c (iterative_hash_template_arg, template_args_equal): Don't
985         handle ARGUMENT_PACK_SELECT.
987 2016-07-18  Jakub Jelinek  <jakub@redhat.com>
989         PR c++/70869
990         PR c++/71054
991         * cp-gimplify.c (cp_genericize_r): Revert the 2016-07-07 change.
992         * tree.c (cp_walk_subtrees): For DECL_EXPR on DECL_ARTIFICIAL
993         non-static VAR_DECL, walk the decl's DECL_INITIAL, DECL_SIZE and
994         DECL_SIZE_UNIT.
996         PR c++/71835
997         * call.c (build_op_call_1): Use convert_like_with_context only
998         if cand->fn is a decl.
1000         PR c++/71828
1001         * constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>:
1002         For lval don't use cxx_eval_unary_expression and instead recurse
1003         and if needed rebuild the reference.
1005         PR c++/71826
1006         * pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P.
1008         PR c++/71822
1009         * cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively
1010         fold *expr_p before genericizing it.
1012         PR c++/71871
1013         * typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change.
1015 2016-07-15  Jason Merrill  <jason@redhat.com>
1017         PR c++/71495
1018         * call.c (convert_like_real): Mask complain.
1019         * semantics.c (perform_koenig_lookup): Likewise.
1021         PR c++/71092
1022         * constexpr.c (cxx_eval_call_expression): Fail quietly when cgraph
1023         threw away DECL_SAVED_TREE.
1025         PR c++/71117
1026         Core 2189
1027         * call.c (add_template_conv_candidate): Disable if there are
1028         viable candidates.
1030         PR c++/71511
1031         * typeck2.c (cxx_incomplete_type_diagnostic): Handle DECLTYPE_TYPE.
1033         PR c++/71513
1034         * pt.c (tsubst_attributes): Fix loop logic.
1036         PR c++/71604
1037         PR c++/54430
1038         * parser.c (cp_parser_range_for): Modify IDENTIFIER_BINDING directly.
1039         (cp_parser_simple_declaration): Diagnose type definition in
1040         for-range-declaration.
1042         PR c++/71711
1043         * operators.def: Add *_FOLD_EXPR.
1044         * cp-tree.h (FOLD_EXPR_P): Parenthesize.
1045         * mangle.c (write_expression): Handle fold-expressions.
1046         * pt.c (tsubst_unary_left_fold, tsubst_binary_left_fold)
1047         (tsubst_unary_right_fold, tsubst_binary_right_fold): Handle
1048         partial instantiation.
1050         PR c++/71814
1051         * mangle.c (write_expression): Handle sizeof... an argument pack.
1053         PR c++/71718
1054         * pt.c (push_tinst_level_loc): Set at_eof before fatal_error.
1056         PR c++/70824
1057         * init.c (constant_value_1): Don't instantiated DECL_INITIAL of
1058         artificial variables.
1060 2016-07-15  Cesar Philippidis  <cesar@codesourcery.com>
1062         * parser.c (cp_parser_oacc_declare): Don't scan for
1063         GOMP_MAP_POINTER.
1064         * semantics.c (handle_omp_array_sections): Mark data clauses with
1065         GOMP_MAP_FORCE_{PRESENT,TO,FROM,TOFROM} as potentially having
1066         zero-length subarrays.
1068 2016-07-11  Jason Merrill  <jason@redhat.com>
1070         * decl.c (store_parm_decls): Remove check for void parm.
1072 2016-07-08  Jason Merrill  <jason@redhat.com>
1074         * cp-tree.h: Unpoison lvalue_p.
1075         * call.c, class.c, constexpr.c, cvt.c, init.c, lambda.c, pt.c,
1076         tree.c, typeck.c, typeck2.c: Use lvalue_p instead of
1077         real_lvalue_p.
1079         * tree.c (obvalue_p): Rename from lvalue_p.
1080         (lvalue_p): Define for c-common.
1081         * call.c, cp-tree.h, cvt.c, init.c: Adjust.
1082         * typeck.c: Adjust.
1083         (cp_build_addr_expr_1): Remove obsolete code.
1085         * tree.c (glvalue_p): Rename from lvalue_or_rvalue_with_address_p.
1086         * call.c, cp-tree.h, typeck.c: Adjust.
1088         * lambda.c (maybe_add_lambda_conv_op): Fix null object argument.
1090         P0145R2: Refining Expression Order for C++.
1091         * cp-gimplify.c (lvalue_has_side_effects): New.
1092         (cp_gimplify_expr): Implement assignment ordering.
1093         * call.c (op_is_ordered, build_over_call): Adjust for
1094         -fargs-in-order renaming to -fstrong-eval-order.
1095         * cp-gimplify.c (cp_gimplify_expr): Likewise.
1097 2016-07-07  Jakub Jelinek  <jakub@redhat.com>
1098             Kai Tietz  <ktietz70@googlemail.com>
1100         PR c++/70869
1101         PR c++/71054
1102         * cp-gimplify.c (cp_genericize_r): For DECL_EXPR for non-static
1103         artificial vars, genericize their initializers.
1105 2016-07-05  David Malcolm  <dmalcolm@redhat.com>
1107         PR c++/62314
1108         * parser.c (cp_parser_class_specifier_1): When reporting
1109         missing semicolons, use a fixit-hint to suggest insertion
1110         of a semicolon immediately after the closing brace,
1111         offsetting the reported column accordingly.
1113 2016-07-04  Jan Beulich  <jbeulich@suse.com>
1115         * lang-specs.h ("@c++-header"): Conditionalize "-o".
1117 2016-06-29  Thomas Schwinge  <thomas@codesourcery.com>
1119         * parser.c (cp_parser_pragma) <PRAGMA_OMP_CANCELLATION_POINT>:
1120         Move pragma context checking into...
1121         (cp_parser_omp_cancellation_point): ... here, and improve
1122         diagnostic messages.
1123         * semantics.c (finish_omp_cancel, finish_omp_cancellation_point):
1124         Improve diagnostic messages.
1126 2016-06-28  Jakub Jelinek  <jakub@redhat.com>
1128         * Make-lang.in: Don't cat ../stage_current if it does not exist.
1130 2016-06-24  Jason Merrill  <jason@redhat.com>
1132         P0145R2: Refining Expression Order for C++.
1133         * typeck.c (cp_build_modify_expr): Leave COMPOUND_EXPR on LHS.
1135         * tree.c (get_target_expr_sfinae): Handle bit-fields.
1136         (build_target_expr): Call mark_rvalue_use.
1138 2016-06-24  Jakub Jelinek  <jakub@redhat.com>
1140         * call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p.
1141         (build_over_call): For magic == 3, do no conversion only on 3rd
1142         argument.
1144 2016-06-23  Andi Kleen  <ak@linux.intel.com>
1146         * Make-lang.in: Add support for autofdo.
1148 2016-06-21  Jason Merrill  <jason@redhat.com>
1150         * constraint.cc (constraints_satisfied_p): Keep as many levels of
1151         args as our template has levels of parms.
1153         * pt.c (template_parm_outer_level, uses_outer_template_parms): New.
1154         (type_dependent_expression_p): Use uses_outer_template_parms.
1156 2016-06-20  David Malcolm  <dmalcolm@redhat.com>
1158         * parser.c (cp_parser_string_literal): Convert non-standard
1159         concatenation error to directly use a rich_location, and
1160         use that to add the location of the first literal to the
1161         diagnostic.
1163 2016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
1165         * decl.c (validate_constexpr_redeclaration): Change pair of errors
1166         to error + inform.
1167         * error.c (dump_function_decl): Save the constexpr specifier too.
1169 2016-06-17  Jakub Jelinek  <jakub@redhat.com>
1171         * tree.c (builtin_valid_in_constant_expr_p): Test for
1172         DECL_BUILT_IN_CLASS equal to BUILT_IN_NORMAL instead of just
1173         DECL_BUILT_IN.
1174         (bot_manip): Likewise.
1175         * call.c (magic_varargs_p): Likewise.
1177 2016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
1179         * decl.c (grokfndecl): Change pair of errors to error + inform.
1181 2016-06-17  Jason Merrill  <jason@redhat.com>
1183         PR c++/71209
1184         * typeck.c (finish_class_member_access_expr): Avoid "not a base"
1185         warning when there are dependent bases.
1187 2016-06-17  Jakub Jelinek  <jakub@redhat.com>
1189         * semantics.c (handle_omp_array_sections_1): Don't ICE when
1190         processing_template_decl when checking for bitfields and unions.
1191         Look through REFERENCE_REF_P as base of COMPONENT_REF.
1192         (finish_omp_clauses): Look through REFERENCE_REF_P even for
1193         array sections with COMPONENT_REF bases.
1195 2016-06-16  Jakub Jelinek  <jakub@redhat.com>
1197         * parser.c (cp_parser_omp_var_list_no_open): Call
1198         convert_from_reference before cp_parser_postfix_dot_deref_expression.
1199         * semantics.c (finish_omp_clauses): Don't ICE when
1200         processing_template_decl when checking for bitfields and unions.
1201         Look through REFERENCE_REF_P as base of COMPONENT_REF.
1203 2016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
1205         * decl.c (wrapup_globals_for_namespace): Use DECL_SOURCE_LOCATION and
1206         "%qF" in warning_at instead of "%q+F" in warning.
1207         (check_redeclaration_exception_specification): Likewise in pedwarn
1208         (and error, inform, for consistency).
1209         * call.c (joust): Likewise.
1211 2016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
1213         PR c++/70202
1214         * decl.c (xref_basetypes): Revert r117839 changes; add fix-up
1215         code at the end of the for loop; also revert r159637 changes,
1216         add back the gcc_assert.
1217         * cp-tree.h (xref_basetypes): Adjust declaration.
1218         * parser.c (cp_parser_class_head): Adjust xref_basetypes call.
1220 2016-06-14  David Malcolm  <dmalcolm@redhat.com>
1222         * search.c: Include spellcheck-tree.h rather than spellcheck.h.
1224 2016-06-14  David Malcolm  <dmalcolm@redhat.com>
1226         * typeck.c: Include "gcc-rich-location.h".
1227         (finish_class_member_access_expr): Simplify fixit code by
1228         using gcc_rich_location::add_fixit_misspelled_id.
1230 2016-06-14  Jason Merrill  <jason@redhat.com>
1232         P0145R2: Refining Expression Order for C++.
1233         * cp-tree.h (CALL_EXPR_OPERATOR_SYNTAX, CALL_EXPR_ORDERED_ARGS)
1234         (CALL_EXPR_REVERSE_ARGS): New.
1235         * call.c (build_new_op_1): Set them.
1236         (extract_call_expr, op_is_ordered): New.
1237         (build_over_call): Set CALL_EXPR_ORDERED_ARGS.
1238         * cp-gimplify.c (cp_gimplify_expr) [CALL_EXPR]: Handle new flags.
1239         * pt.c (tsubst_copy_and_build): Copy new flags.
1240         * semantics.c (simplify_aggr_init_expr): Likewise.
1241         * tree.c (build_aggr_init_expr): Likewise.
1242         (build_min_non_dep_op_overload): Likewise.
1244 2016-06-14  Jakub Jelinek  <jakub@redhat.com>
1246         PR c++/71528
1247         * decl.c (duplicate_decls): For DECL_INITIALIZED_P non-external
1248         olddecl vars, preserve their TREE_READONLY bit.
1250         PR c++/71516
1251         * decl.c (complete_vars): Handle gracefully type == error_mark_node.
1253 2016-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
1255         * typeck2.c (digest_init_r): Use EXPR_LOC_OR_LOC on init.
1257 2016-06-13  Paolo Carlini  <paolo.carlini@oracle.com>
1259         * decl.c (grokdeclarator): Fix typo in pedwarn text.
1261 2016-06-10  Thomas Schwinge  <thomas@codesourcery.com>
1263         PR c/71381
1264         * parser.c (cp_parser_omp_var_list_no_open) <OMP_CLAUSE__CACHE_>:
1265         Loosen checking.
1267 2016-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
1269         PR c++/71465
1270         Revert:
1271         2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
1273         PR c++/70202
1274         * parser.c (cp_parser_class_head): When xref_basetypes fails and
1275         emits an error do not zero the type.
1277 2016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
1279         * decl.c (maybe_deduce_size_from_array_init): Use
1280         DECL_SOURCE_LOCATION in error_at.
1281         (layout_var_decl): Likewise.
1282         (check_array_initializer): Likewise.
1283         (check_initializer): Likewise.
1284         (duplicate_decls, check_elaborated_type_specifier): Tidy.
1286 2016-06-08  Martin Sebor  <msebor@redhat.com>
1287             Jakub Jelinek  <jakub@redhat.com>
1289         PR c++/70507
1290         PR c/68120
1291         * constexpr.c: Include gimple-fold.h.
1292         (cxx_eval_internal_function): New function.
1293         (cxx_eval_call_expression): Call it.
1294         (potential_constant_expression_1): Handle integer arithmetic
1295         overflow built-ins.
1296         * tree.c (builtin_valid_in_constant_expr_p): Handle
1297         BUILT_IN_{ADD,SUB,MUL}_OVERFLOW_P.
1299 2016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
1301         * pt.c (tsubst, case TYPENAME_TYPE): Don't delay checking the
1302         return value of tsubst_aggr_type for error_mark_node.
1304 2016-06-08  Jakub Jelinek  <jakub@redhat.com>
1306         PR c++/71442
1307         * pt.c (tsubst_copy): Only set TREE_USED on DECLs.
1309 2016-06-06  Jakub Jelinek  <jakub@redhat.com>
1310             Patrick Palka  <ppalka@gcc.gnu.org>
1312         PR c++/70847
1313         PR c++/71330
1314         PR c++/71393
1315         * cp-gimplify.c (cp_fold_r): Set *walk_subtrees = 0 and return NULL
1316         right after cp_fold call if cp_fold has returned the same stmt
1317         already in some earlier cp_fold_r call.
1318         (cp_fold_function): Add pset automatic variable, pass its address
1319         to cp_walk_tree.
1321 2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
1323         PR c++/70202
1324         * parser.c (cp_parser_class_head): When xref_basetypes fails and
1325         emits an error do not zero the type.
1327 2016-06-03  Patrick Palka  <ppalka@gcc.gnu.org>
1329         PR c++/27100
1330         * decl.c (duplicate_decls): Properly copy the
1331         DECL_PENDING_INLINE_P, DECL_PENDING_INLINE_INFO and
1332         DECL_SAVED_FUNCTION_DATA fields from OLDDECL to NEWDECL.
1334 2016-06-03  Chung-Lin Tang  <cltang@codesourcery.com>
1336         * semantics.c (finish_omp_clauses): Mark OpenACC reduction
1337         arguments as addressable when async clause exists.
1339 2016-06-02  Jan Hubicka  <jh@suse.cz>
1341         * cp-gimplify.c (genericize_continue_stmt): Force addition of
1342         predict stmt.
1344 2016-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
1346         * decl.c (xref_tag_1): Change pairs of errors to error + inform.
1347         (start_enum): Likewise.
1348         * parser.c (cp_parser_class_head): Likewise.
1350 2016-06-02  Jakub Jelinek  <jakub@redhat.com>
1352         PR c++/71372
1353         * cp-gimplify.c (cp_fold): For INDIRECT_REF, if the folded expression
1354         is INDIRECT_REF or MEM_REF, copy over TREE_READONLY, TREE_SIDE_EFFECTS
1355         and TREE_THIS_VOLATILE flags.  For ARRAY_REF and ARRAY_RANGE_REF, copy
1356         over TREE_READONLY, TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE flags
1357         to the newly built tree.
1359 2016-05-31  Jason Merrill  <jason@redhat.com>
1361         * pt.c (instantiate_decl): Avoid recalculation.
1363         PR c++/60095
1364         PR c++/69515
1365         PR c++/69009
1366         * pt.c (instantiate_template_1): Don't put the partial
1367         specialization in DECL_TI_TEMPLATE.
1368         (partial_specialization_p, impartial_args): Remove.
1369         (regenerate_decl_from_template): Add args parm.
1370         (instantiate_decl): Look up the partial specialization again.
1372         PR c++/71227
1373         * pt.c (check_explicit_specialization): Give better diagnostic about
1374         specializing a hidden friend.
1376 2016-05-31  Paolo Carlini  <paolo.carlini@oracle.com>
1378         PR c++/71248
1379         * decl.c (check_static_variable_definition): Use DECL_SOURCE_LOCATION
1380         to obtain correct locations; avoid redundant diagnostics on
1381         out-of-class definitions.
1383 2016-05-30  Martin Sebor  <msebor@redhat.com>
1385         PR c++/71306
1386         * init.c (warn_placement_new_too_small): Handle placement new arguments
1387         that are elements of arrays more carefully.  Remove a pointless loop.
1389 2016-05-30  Jakub Jelinek  <jakub@redhat.com>
1391         PR c++/71349
1392         * parser.c (cp_parser_omp_for): Don't disallow nowait clause
1393         when combined with target construct.
1394         (cp_parser_omp_parallel): Pass cclauses == NULL as last argument
1395         to cp_parser_omp_all_clauses.
1397 2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
1399         PR c++/71238
1400         * lex.c (unqualified_name_lookup_error): Take a location too.
1401         (unqualified_fn_lookup_error): Take a cp_expr.
1402         * cp-tree.h (unqualified_name_lookup_error,
1403         unqualified_fn_lookup_error): Adjust declarations.
1404         * semantics.c (perform_koenig_lookup): Adjust
1405         unqualified_fn_lookup_error call, pass the location of
1406         the identifier too as part of a cp_expr.
1408 2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
1410         PR c++/71099
1411         * parser.c (cp_parser_function_specifier_opt): Use current_class_type
1412         to improve the diagnostic about wrong uses of 'virtual'.
1414 2016-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
1416         PR c++/71105
1417         * lambda.c (maybe_add_lambda_conv_op): Early return also when
1418         LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE.
1420 2016-05-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
1422         Revert:
1423         PR c++/69855
1424         * name-lookup.c (pushdecl_maybe_friend_1): Push local function
1425         decls into the global scope after stripping template bits
1426         and setting DECL_ANTICIPATED.
1428 2016-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
1430         PR c++/60385
1431         * name-lookup.c (push_namespace): Return bool, false when pushdecl
1432         fails.
1433         * name-lookup.h (push_namespace): Adjust declaration.
1434         * parser.c (cp_parser_namespace_definition): Check push_namespace
1435         return value.
1437 2016-05-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
1439         PR c++/69855
1440         * name-lookup.c (pushdecl_maybe_friend_1): Push local function
1441         decls into the global scope after stripping template bits
1442         and setting DECL_ANTICIPATED.
1444 2016-05-26  Jakub Jelinek  <jakub@redhat.com>
1446         * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_SCHEDULE>: Warn
1447         if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive.
1449 2016-05-26  Patrick Palka  <ppalka@gcc.gnu.org>
1451         PR c++/70822
1452         PR c++/70106
1453         * cp-tree.h (REF_PARENTHESIZED_P): Make this flag apply to
1454         SCOPE_REFs too.
1455         * pt.c (tsubst_qualified_id): If REF_PARENTHESIZED_P is set
1456         on the qualified_id then propagate it to the resulting
1457         expression.
1458         (do_auto_deduction): Check REF_PARENTHESIZED_P on SCOPE_REFs
1459         too.
1460         * semantics.c (force_paren_expr): If given a SCOPE_REF, just set
1461         its REF_PARENTHESIZED_P flag.
1463 2016-05-25  Jason Merrill  <jason@redhat.com>
1465         PR c++/71173
1466         PR c++/70522
1467         * cp-tree.h (enum tag_types): Add scope_type.
1468         * parser.c (cp_parser_class_name): Use scope_type.
1469         (prefer_type_arg): Handle scope_type.
1470         (cp_parser_lookup_name): Use prefer_type_arg.
1471         * name-lookup.c (lookup_qualified_name): Change bool is_type_p to
1472         int prefer_type, use lookup_flags.
1473         * name-lookup.h: Adjust.
1475 2016-05-24  Cesar Philippidis  <cesar@codesourcery.com>
1477         * parser.c (cp_parser_oacc_declare): Add support for
1478         GOMP_MAP_FIRSTPRIVATE_POINTER.
1479         * semantics.c (handle_omp_array_sections_1): Replace bool is_omp
1480         argument with enum c_omp_region_type ort.  Don't privatize OpenACC
1481         non-static members.
1482         (handle_omp_array_sections): Replace bool is_omp argument with enum
1483         c_omp_region_type ort.  Update call to handle_omp_array_sections_1.
1484         (finish_omp_clauses): Add specific errors and warning messages for
1485         OpenACC.  Use firsrtprivate pointers for OpenACC subarrays.  Update
1486         call to handle_omp_array_sections.
1488 2016-05-24  Jason Merrill  <jason@redhat.com>
1490         PR c++/70584
1491         * cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold
1492         returns a decl.
1493         (cp_fold) [INDIRECT_REF]: Don't fold to an rvalue.
1495 2016-05-24  Martin Sebor  <msebor@redhat.com>
1497         PR c++/71147
1498         * decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p.
1499         * pt.c (instantiate_class_template_1): Try to complete the element
1500         type of a flexible array member.
1501         (can_complete_type_without_circularity): Handle arrays of unknown bound.
1502         * typeck.c (complete_type): Also complete the type of the elements of
1503         arrays with an unspecified bound.
1505 2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
1507         PR c++/69872
1508         * typeck2.c (check_narrowing): Check pedwarn return value.
1510 2016-05-24  Jakub Jelinek  <jakub@redhat.com>
1512         PR c++/71257
1513         * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>:
1514         For OMP_CLAUSE_LINEAR_REF don't require type to be
1515         integral or pointer.
1517 2016-05-24  Richard Biener  <rguenther@suse.de>
1519         PR middle-end/70434
1520         PR c/69504
1521         * expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR.
1522         * constexpr.c (cxx_eval_array_reference): Handle indexed
1523         vectors.
1524         * typeck.c (cp_build_array_ref): Adjust.
1526 2016-05-23  Jason Merrill  <jason@redhat.com>
1528         PR c++/70344
1529         * constexpr.c (cxx_eval_call_expression): Check for
1530         fun == current_function_decl again.
1532         PR c++/70584
1533         * cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call
1534         maybe_undo_parenthesized_ref.
1536         PR c++/70735
1537         * pt.c (tsubst_copy): Just return a local variable from
1538         non-template context.  Don't call rest_of_decl_compilation for
1539         duplicated static locals.
1540         (tsubst_decl): Set DECL_CONTEXT of local static from another
1541         function.
1543 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
1545         PR c++/70972
1546         * method.c (forward_parm): Use cp_build_reference_type.
1548 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
1550         PR c++/69095
1551         * parser.c (cp_parser_initializer): Use check_for_bare_parameter_packs.
1553 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
1555         * pt.c (check_for_bare_parameter_packs): Improve error message
1556         location for expressions.
1558 2016-05-20  Nathan Sidwell  <nathan@acm.org>
1560         * constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if
1561         ... goto.
1562         (cxx_eval_call_expression): Fix comment grammar.
1564 2016-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
1566         PR c++/70572
1567         * decl.c (cp_finish_decl): Check do_auto_deduction return value
1568         and return immediately in case of erroneous code.
1570 2016-05-19  Marek Polacek  <polacek@redhat.com>
1572         PR c++/71075
1573         * pt.c (unify_template_argument_mismatch): Use %qE instead of %qD.
1575 2016-05-19  Jason Merrill  <jason@redhat.com>
1577         PR c++/10200
1578         * pt.c (fn_type_unification): Add outer template args if needed.
1579         (type_unification_real): Handle getting full args.
1581 2016-05-19  David Malcolm  <dmalcolm@redhat.com>
1583         PR c++/71184
1584         * parser.c (cp_parser_operator): For array new/delete, check that
1585         cp_parser_require returned a non-NULL token before dereferencing
1586         it.
1588 2016-05-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1590         * decl.c (finish_enum_value_list): Use the specified mode.
1592 2016-05-18  Jason Merrill  <jason@redhat.com>
1594         * pt.c (value_dependent_expression_p): Tweak new cases to better
1595         match the wording in the standard.
1597 2016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
1599         PR c++/69793
1600         * parser.c (cp_parser_template_id): Don't call cp_lexer_peek_nth_token
1601         when the previous cp_lexer_peek_token returns CPP_EOF.
1603 2016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
1605         PR c++/70466
1606         * call.c (convert_like_real): Check that we are actually converting
1607         from an init list.
1609 2016-05-16  Matthew Wahab  <matthew.wahab@arm.com>
1611         * decl.c (grokdeclarator): Remove errmsg and use of
1612         targetm.invalid_return_type.
1613         (grokparms): Remove errmsg and use of
1614         targetm.invalid_parameter_type.
1616 2016-05-13  Jason Merrill  <jason@redhat.com>
1618         PR c++/10200
1619         PR c++/69753
1620         * pt.c (tsubst_decl): Use uses_template_parms.
1621         (instantiate_template_1): Handle non-dependent calls in templates.
1622         (value_dependent_expression_p): Handle BASELINK, FUNCTION_DECL.
1623         (type_dependent_expression_p): Only consider innermost template args.
1624         (dependent_template_arg_p): Check enclosing class of a template here.
1625         (dependent_template_p): Not here.
1626         (type_dependent_object_expression_p): New.
1627         * typeck.c (finish_class_member_access_expr): Use it.
1628         * parser.c (cp_parser_postfix_expression): Use it.
1629         (cp_parser_postfix_dot_deref_expression): Use it.  Use comptypes
1630         to detect the current instantiation.
1631         (cp_parser_lookup_name): Really implement DR 141.
1632         * search.c (lookup_field_r): Prefer a dependent using-declaration.
1633         (any_dependent_bases_p): Split out from...
1634         * name-lookup.c (do_class_using_decl): ...here.
1635         * call.c (build_new_method_call_1): Use it.
1636         * semantics.c (finish_call_expr): 'this' doesn't make a call dependent.
1637         * tree.c (non_static_member_function_p): Remove.
1638         * typeck2.c (build_x_arrow): Use dependent_scope_p.
1640         * parser.c (cp_parser_postfix_dot_deref_expression): Use
1641         complete_type_or_else for unknown_type_node, too.
1643 2016-05-12  Marek Polacek  <polacek@redhat.com>
1645         PR c/70756
1646         * call.c (build_new_op_1): Pass LOC to cp_build_modify_expr.
1647         * cp-tree.h (cp_build_modify_expr): Update declaration.
1648         (cxx_incomplete_type_error, cxx_incomplete_type_diagnostic): New inline
1649         overloads.
1650         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Pass INPUT_LOCATION to
1651         cp_build_modify_expr.
1652         * decl2.c (set_guard): Likewise.
1653         (handle_tls_init): Likewise.
1654         * init.c (perform_member_init): Likewise.
1655         (expand_virtual_init): Likewise.
1656         (build_new_1): Likewise.
1657         (build_vec_delete_1): Likewise.
1658         (get_temp_regvar): Likewise.
1659         (build_vec_init): Likewise.
1660         * method.c (do_build_copy_assign): Likewise.
1661         (assignable_expr): Likewise.
1662         * semantics.c (finish_omp_for): Likewise.
1663         * typeck.c (cp_build_binary_op): Pass LOCATION to pointer_diff and
1664         cp_pointer_int_sum.
1665         (cp_pointer_int_sum): Add location parameter.  Pass it down to
1666         pointer_int_sum.
1667         (pointer_diff): Add location parameter.  Use it.
1668         (build_modify_expr): Pass location down to cp_build_modify_expr.
1669         (cp_build_modify_expr): Add location parameter.  Use it.
1670         (build_x_modify_expr): Pass location down to cp_build_modify_expr.
1671         * typeck2.c (cxx_incomplete_type_diagnostic,
1672         cxx_incomplete_type_error): Add location parameter.
1674 2016-05-11  Marek Polacek  <polacek@redhat.com>
1676         PR c++/71024
1677         * decl.c (duplicate_decls): Call diagnose_mismatched_decls.
1679 2016-05-05  Jakub Jelinek  <jakub@redhat.com>
1681         * parser.c (cp_parser_selection_statement): For RID_SWITCH,
1682         pass if_p instead of NULL to cp_parser_implicitly_scoped_statement.
1684 2016-05-04  Marek Polacek  <polacek@redhat.com>
1686         * parser.c (cp_parser_selection_statement): Replace OPT_Wparentheses
1687         with OPT_Wdangling_else.
1689 2016-05-03  Martin Sebor  <msebor@redhat.com>
1691         PR c++/66561
1692         * tree.c (builtin_valid_in_constant_expr_p): Treat BUILT_IN_FILE,
1693         BUILT_IN_FUNCTION, and BUILT_IN_LINE as constant expressions.
1695 2016-05-03  Marek Polacek  <polacek@redhat.com>
1697         PR c/70859
1698         * call.c (build_cxx_call): Pass location and vNULL down to
1699         check_builtin_function_arguments.
1701 2016-05-03  Richard Biener  <rguenther@suse.de>
1703         * Make-lang.in (cc1plus-checksum.c): For stage-final re-use
1704         the checksum from the previous stage.
1706 2016-05-02  David Malcolm  <dmalcolm@redhat.com>
1708         PR c++/62314
1709         * typeck.c (finish_class_member_access_expr): When
1710         giving a hint about a possibly-misspelled member name,
1711         add a fix-it replacement hint.
1713 2016-05-02  Cesar Philippidis  <cesar@codesourcery.com>
1715         * cp-tree.h (finish_omp_clauses): Update prototype.
1716         * parser.c (cp_parser_oacc_all_clauses): Update call to
1717         finish_omp_clauses.
1718         (cp_parser_omp_all_clauses): Likewise.
1719         (cp_parser_omp_for_loop): Likewise.
1720         (cp_omp_split_clauses): Likewise.
1721         (cp_parser_oacc_cache): Likewise.
1722         (cp_parser_oacc_loop): Likewise.
1723         (cp_parser_omp_declare_target):
1724         (cp_parser_cilk_simd_all_clauses): Likewise.
1725         (cp_parser_cilk_for): Likewise.
1726         * pt.c (tsubst_omp_clauses): Replace allow_fields and declare_simd
1727         arguments with enum c_omp_region_type ort.
1728         (tsubst_omp_clauses): Update calls to finish_omp_clauses.
1729         (tsubst_omp_attribute): Update calls to tsubst_omp_clauses.
1730         (tsubst_omp_for_iterator): Update calls to finish_omp_clauses.
1731         (tsubst_expr): Update calls to tsubst_omp_clauses.
1732         * semantics.c (finish_omp_clauses): Replace bool arguments
1733         allow_fields, declare_simd, and is_cilk with bitmask ort.
1734         (finish_omp_for): Update call to finish_omp_clauses.
1736 2016-05-02  David Malcolm  <dmalcolm@redhat.com>
1738         PR c++/62314
1739         * parser.c (cp_parser_class_head): Capture the start location;
1740         use it to emit a fix-it insertion hint when complaining
1741         about missing "template <> " in explicit specializations.
1743 2016-05-02  Richard Sandiford  <richard.sandiford@arm.com>
1745         * init.c (build_new_1): Use shift operators instead of wi:: shifts.
1747 2016-05-02  Richard Biener  <rguenther@suse.de>
1749         * decl.c (grokdeclarator): Properly insert a DECL_EXPR for
1750         anonymous VLAs.
1752 2016-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
1754         PR c++/66644
1755         * class.c (check_field_decl): Remove final int* parameter, change
1756         the return type to bool; fix logic in order not to reject multiple
1757         initialized fields in anonymous struct.
1758         (check_field_decls): Adjust call.
1760 2016-04-29  Cesar Philippidis  <cesar@codesourcery.com>
1762         PR middle-end/70626
1763         * parser.c (cp_parser_oacc_loop): Don't augment mask with
1764         OACC_LOOP_CLAUSE_MASK.
1765         (cp_parser_oacc_kernels_parallel): Update call to
1766         c_oacc_split_loop_clauses.
1768 2016-04-28  Jason Merrill  <jason@redhat.com>
1770         Implement C++17 [[nodiscard]] attribute.
1771         PR c++/38172
1772         PR c++/54379
1773         * parser.c (cp_parser_std_attribute): Handle [[nodiscard]].
1774         * tree.c (handle_nodiscard_attribute): New.
1775         (cxx_attribute_table): Add [[nodiscard]].
1776         * cvt.c (cp_get_fndecl_from_callee, cp_get_callee_fndecl): New.
1777         (maybe_warn_nodiscard): New.
1778         (convert_to_void): Call it.
1780         * cvt.c (cp_get_callee): New.
1781         * constexpr.c (get_function_named_in_call): Use it.
1782         * cxx-pretty-print.c (postfix_expression): Use it.
1783         * except.c (check_noexcept_r): Use it.
1784         * method.c (check_nontriv): Use it.
1785         * tree.c (build_aggr_init_expr): Use it.
1786         * cp-tree.h: Declare it.
1788 2015-04-27  Ryan Burn  <contact@rnburn.com>
1789             Jeff Law  <law@redhat.com>
1791         PR c++/69024
1792         PR c++/68997
1793         * cp-gimplify.c (cp_gimplify_expr): Call cilk_cp_detect_spawn_and_unwrap
1794         instead of cilk_detect_spawn_and_unwrap.
1795         * cp-cilkplus.c (is_conversion_operator_function_decl_p): New.
1796         (find_spawn): New.
1797         (cilk_cp_detect_spawn_and_unwrap): New.
1798         * lambda.c: Include cp-cilkplus.h.
1799         * parser.c: Include cp-cilkplus.h.
1800         * cp-tree.h (cpp_validate_cilk_plus_loop): Move prototype into...
1801         * cp-cilkpus.h: New file.
1803 2016-04-27  Nathan Sidwell  <nathan@acm.org>
1805         * constexpr.c (get_fundef_copy): Use the original function for
1806         non-recursive evaluations.
1807         (save_fundef_copy): Always expect a slot to be available.
1809 2016-04-27  Bernd Schmidt  <bschmidt@redhat.com>
1811         * parser.c (cp_parser_postfix_expression): Call
1812         warn_for_memset instead of warning directly here.
1814 2016-04-26  Patrick Palka  <ppalka@gcc.gnu.org>
1816         PR c++/70241
1817         * decl.c (build_enumerator): Set current_access_specifier when
1818         declaring an enumerator belonging to an in-class enumeration.
1819         * parser.c (cp_parser_check_access_in_redecleration): Also
1820         consider in-class enumerations.
1822 2016-04-26  Marek Polacek  <polacek@redhat.com>
1824         PR c++/70744
1825         * call.c (build_conditional_expr_1): Call cp_stabilize_reference
1826         instead of stabilize_reference.
1827         (build_over_call): Likewise.
1828         * cp-tree.h (cp_stabilize_reference): Declare.
1829         * tree.c (cp_stabilize_reference): New function.
1830         * typeck.c (cp_build_unary_op): Call cp_stabilize_reference instead of
1831         stabilize_reference.
1832         (unary_complex_lvalue): Likewise.
1833         (cp_build_modify_expr): Likewise.
1835 2016-04-26  Jakub Jelinek  <jakub@redhat.com>
1837         PR bootstrap/70704
1838         * pt.c (build_non_dependent_expr): Use flag_checking > 1 instead of
1839         just flag_checking.
1841 2016-04-25  Jason Merrill  <jason@redhat.com>
1843         * tree.c (std_attribute_table): New.
1844         (init_tree): Register it.
1846 2016-04-22  Jason Merrill  <jason@redhat.com>
1848         * parser.c (cp_parser_perform_range_for_lookup): Decay the array.
1850 2016-04-21  Patrick Palka  <ppalka@gcc.gnu.org>
1852         * name-lookup.c (free_saved_scope): New free list of saved_scope
1853         structures.
1854         (push_to_top_level): Attempt to reuse a saved_scope struct
1855         from free_saved_scope instead of allocating a new one each time.
1856         (pop_from_top_level_1): Chain the now-unused saved_scope structure
1857         onto free_saved_scope.
1859 2016-04-21  Paolo Carlini  <paolo.carlini@oracle.com>
1861         PR c++/70540
1862         * semantics.c (process_outer_var_ref): Unconditionally return
1863         error_mark_node when mark_used returns false.
1865 2016-04-21  Marek Polacek  <polacek@redhat.com>
1867         PR c++/70513
1868         * parser.c (cp_parser_enum_specifier): Check and possibly error for
1869         extra qualification.
1871 2016-04-20  Nathan Sidwell  <nathan@acm.org>
1873         PR c++/55635
1874         * init.c (build_vec_delete_1): Protect operator delete call in try
1875         finally.
1876         (build_delete): Likewise.
1877         * optimize.c (build_delete_destructor_body): Likewise.
1879 2016-04-20  Ilya Verbin  <ilya.verbin@intel.com>
1881         PR c++/69363
1882         * cp-tree.h (finish_omp_clauses): Add new default argument.
1883         * parser.c (cp_parser_cilk_simd_all_clauses): Use finish_omp_clauses
1884         instead of c_finish_cilk_clauses.
1885         * semantics.c (finish_omp_clauses): Add new argument.  Allow
1886         floating-point variables in the linear clause for Cilk Plus.
1888 2016-04-20  Nathan Sidwell  <nathan@acm.org>
1890         * semantics.c (finish_compound_lteral): Don't wrap VECTOR_TYPEs in a
1891         TARGET_EXPR.
1893 2016-04-19  Jason Merrill  <jason@redhat.com>
1895         PR c++/66543
1896         * expr.c (mark_exp_read): Handle NON_DEPENDENT_EXPR.
1897         * pt.c (make_pack_expansion): Call mark_exp_read.
1898         * semantics.c (finish_id_expression): Call mark_type_use in
1899         unevaluated context.
1901         DR 2137
1902         * call.c (implicit_conversion): If we choose a copy constructor
1903         for list-initialization from the same type, the conversion is an
1904         exact match.
1906         * constexpr.c (breaks): Handle EXIT_EXPR.
1907         (cxx_eval_loop_expr): Handle COMPOUND_EXPR body.
1908         (cxx_eval_constant_expression): Handle EXIT_EXPR, improve handling
1909         of COMPOUND_EXPR.
1911         PR c++/68206
1912         PR c++/68530
1913         * constexpr.c (potential_constant_expression_1): Handle LOOP_EXPR
1914         and GOTO_EXPR.
1916         * pt.c (tsubst_expr): Remove shadowing declaration.
1917         (tsubst_pack_expansion): Add assert.
1919         * semantics.c (add_decl_expr): Use DECL_SOURCE_LOCATION.
1921         PR c++/70522
1922         * name-lookup.c (qualified_lookup_using_namespace): Look through
1923         hidden names.
1925 2016-04-18  Michael Matz  <matz@suse.de>
1927         * class.c (build_vtable): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
1928         (layout_class_type): Ditto.
1929         (build_base_field): Use SET_DECL_ALIGN.
1930         (fixup_attribute_variants): Use SET_TYPE_ALIGN.
1931         * decl.c (duplicate_decls): Use SET_DECL_ALIGN.
1932         (record_unknown_type): Use SET_TYPE_ALIGN.
1933         (cxx_init_decl_processing): Ditto.
1934         (copy_type_enum): Ditto.
1935         (grokfndecl): Use SET_DECL_ALIGN.
1936         (copy_type_enum): Use SET_TYPE_ALIGN.
1937         * pt.c (instantiate_class_template_1): Use SET_TYPE_ALIGN.
1938         (tsubst): Ditto.
1939         * tree.c (cp_build_qualified_type_real): Use SET_TYPE_ALIGN.
1940         * lambda.c (maybe_add_lambda_conv_op): Use SET_DECL_ALIGN.
1941         * method.c (implicitly_declare_fn): Use SET_DECL_ALIGN.
1942         * rtti.c (emit_tinfo_decl): Ditto.
1944 2016-04-18  Jason Merrill  <jason@redhat.com>
1946         PR c++/70690
1947         PR c++/70528
1948         * class.c (type_maybe_constexpr_default_constructor): New.
1949         (type_has_constexpr_default_constructor): Revert.
1951 2016-04-16  Sandra Loosemore  <sandra@codesourcery.com>
1953         PR target/1078
1955         * tree.c (cxx_attribute_table): Remove "com_interface" entry.
1956         (handle_com_interface_attribute): Delete.
1958 2016-04-15  Jason Merrill  <jason@redhat.com>
1960         PR c++/70685
1961         * constexpr.c (get_fundef_copy): Handle null *slot.
1963         PR c++/70505
1964         * pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR
1965         unknown_type_node, too.
1967 2016-04-15  Jason Merrill  <jason@redhat.com>
1968             Nathan Sidwell  <nathan@acm.org>
1970         PR c++/70594
1971         * constexpr.c (constexpr_call_table): Preserve in GC.
1972         (struct fundef_copy, struct fundef_copies_table_t):     Delete.
1973         (fundef_copies_table): Preserve in GC. Change to pointer to
1974         tree->tree hash.
1975         (maybe_initialize_fundef_copies_table): Adjust.
1976         (get_fundef_copy): Return a TREE_LIST.  Use non-inserting search.
1977         (save_fundef_copy): Adjust for a TREE_LIST.
1978         (cxx_eval_call_expression): Adjust for a fundef_copy TREE_LIST.
1979         (fini_constexpr): New.
1980         * cp-tree.h (fini_constexpr): Declare.
1981         * decl2.c (c_parse_final_cleanups): Call fini_constexpr.
1983 2016-04-15  Jakub Jelinek  <jakub@redhat.com>
1985         PR c/70436
1986         * parser.c (cp_parser_pragma): Add IF_P argument, pass it down
1987         where needed.
1988         (cp_parser_declaration_seq_opt, cp_parser_member_specification_opt,
1989         cp_parser_objc_interstitial_code, cp_parser_omp_declare_simd,
1990         cp_parser_oacc_routine): Adjust cp_parser_pragma callers.
1991         (cp_parser_statement): Likewise.  Adjust cp_parser_cilk_for caller.
1992         (cp_parser_omp_structured_block): Add IF_P argument, pass it down to
1993         cp_parser_statement.
1994         (cp_parser_oacc_data, cp_parser_oacc_host_data, cp_parser_oacc_loop,
1995         cp_parser_oacc_kernels_parallel, cp_parser_omp_critical,
1996         cp_parser_omp_simd, cp_parser_omp_for, cp_parser_omp_master,
1997         cp_parser_omp_ordered, cp_parser_omp_parallel, cp_parser_omp_single,
1998         cp_parser_omp_task, cp_parser_omp_taskgroup, cp_parser_omp_distribute,
1999         cp_parser_omp_teams, cp_parser_omp_target_data, cp_parser_omp_target,
2000         cp_parser_omp_taskloop, cp_parser_omp_construct,
2001         cp_parser_cilk_grainsize, cp_parser_cilk_simd, cp_parser_cilk_for):
2002         Add IF_P argument, pass it down where needed.
2003         (cp_parser_omp_for_loop): Likewise.  Clear IF_P if nbraces.
2004         (cp_parser_omp_sections_scope): Adjust cp_parser_omp_structured_block
2005         calls.
2007 2016-04-14  Jason Merrill  <jason@redhat.com>
2009         PR c++/70494
2010         * decl.c (cxx_maybe_build_cleanup): Handle non-decls.
2011         * typeck2.c (split_nonconstant_init_1): Use it.
2013         PR c++/70528
2014         * class.c (type_has_constexpr_default_constructor): Return true
2015         for an implicitly declared constructor.
2017         PR c++/70622
2018         * parser.c (cp_parser_init_declarator): Add auto_result parm.
2019         (cp_parser_simple_declaration): Pass it.
2020         (strip_declarator_types): New.
2022         PR c++/70543
2023         * pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent
2024         initializer also makes the variable value-dependent.
2026         PR c++/70648
2027         * constexpr.c (cxx_eval_store_expression): Also copy
2028         CONSTRUCTOR_NO_IMPLICIT_ZERO.
2030 2016-04-14  Martin Sebor  <msebor@redhat.com>
2032         PR c++/69517
2033         PR c++/70019
2034         PR c++/70588
2035         * cp-tree.h, decl.c, init.c, typeck2.c: Revert.
2037 2016-04-14  Jason Merrill  <jason@redhat.com>
2039         * call.c, decl.c, error.c, cp-tree.h, decl.c: Revert empty
2040         parameter ABI change.
2042 2016-04-13  Martin Sebor  <msebor@redhat.com>
2044         PR c++/69517
2045         PR c++/70019
2046         PR c++/70588
2047         * cp-tree.h (throw_bad_array_length, build_vla_check): Declare new
2048         functions.
2049         * decl.c (check_initializer, cp_finish_decl): Call them.
2050         (reshape_init_r): Reject incompletely braced intializer-lists
2051         for VLAs.
2052         * init.c (throw_bad_array_length, build_vla_check)
2053         (build_vla_size_check, build_vla_init_check): Define new functions.
2054         * typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p()
2055         to detect a VLA.
2056         (store_init_value): Same.
2058 2016-04-13  Jason Merrill  <jason@redhat.com>
2060         Warn about empty parameter ABI with -Wabi=9.
2061         * call.c (empty_class_msg, mark_for_abi_warning)
2062         (warn_empty_class_abi): New.
2063         (build_call_a): Use them.
2064         * decl.c (store_parm_decls): Use mark_for_abi_warning.
2065         * error.c (pp_format_to_string): New.
2067         Pass empty class parameters like C.
2068         * call.c (pass_as_empty_struct, empty_class_arg): New.
2069         (type_passed_as, build_x_va_arg): Use pass_as_empty_struct.
2070         (build_call_a): Use empty_class_arg.
2071         * cp-tree.h (CPTI_EMPTY_STRUCT, empty_struct_type): New.
2072         * decl.c (cxx_init_decl_processing): Create empty_struct_type.
2074 2016-04-13  Jason Merrill  <jason@redhat.com>
2076         PR c++/70627
2077         * decl.c (start_enum): Don't change an existing ENUM_UNDERLYING_TYPE.
2079 2016-04-13  Paolo Carlini  <paolo.carlini@oracle.com>
2081         PR c++/70635
2082         * pt.c (resolve_typename_type): Fix typos in infinite recursion
2083         avoidance mechanism.
2085 2016-04-13  Jason Merrill  <jason@redhat.com>
2087         PR c++/70634
2088         * pt.c (instantiation_dependent_uneval_expression_p): Split out
2089         from instantiation_dependent_expression_p.
2090         (value_dependent_expression_p): Use it for unevaluated operands.
2091         (instantiation_dependent_r): Don't check value-dependence.
2092         (instantiation_dependent_expression_p): Check
2093         value-dependence of the expression as a whole.
2094         * cp-tree.h: Declare instantiation_dependent_uneval_expression_p.
2095         * semantics.c (finish_decltype_type): Use it.
2097         * constexpr.c (potential_nondependent_constant_expression): New.
2098         (potential_nondependent_static_init_expression): New.
2099         (maybe_constant_value_1, fold_non_dependent_expr)
2100         (maybe_constant_init): Use them.
2101         * pt.c (instantiate_non_dependent_expr_sfinae)
2102         (instantiate_non_dependent_or_null, convert_nontype_argument): Use
2103         them.
2104         * cp-tree.h: Declare them.
2106 2016-04-13  Jakub Jelinek  <jakub@redhat.com>
2108         PR c++/70594
2109         * decl.c (pop_labels_1): Removed.
2110         (note_label, sort_labels): New functions.
2111         (pop_labels): During named_labels traversal, just push the slot
2112         pointers into a vector, then qsort it by DECL_UID and only then
2113         call pop_label and chain it into BLOCK_VARS.
2115 2016-04-13  Jason Merrill  <jason@redhat.com>
2117         PR c++/70615
2118         * cp-gimplify.c (cp_genericize_r): Expand PTRMEM_CST here.
2119         (cp_gimplify_expr): Not here.
2121 2016-04-12  Patrick Palka  <ppalka@gcc.gnu.org>
2123         PR c++/70610
2124         * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally
2125         recurse into it.
2126         * typeck.c (build_x_conditional_expr): Unconditionally remember
2127         that the result is an lvalue or xvalue.
2129 2016-04-12  Jason Merrill  <jason@redhat.com>
2131         * class.c (is_really_empty_class): A zero-length array is empty.
2132         An unnamed bit-field doesn't make a class non-empty.
2134 2016-04-12  Paolo Carlini  <paolo.carlini@oracle.com>
2136         PR c++/68722
2137         * parser.c (cp_parser_cache_defarg): When file ends in default
2138         argument simply return error_mark_node.
2140 2016-04-12  Nathan Sidwell  <nathan@acm.org>
2142         PR c++/70501
2143         * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE
2144         similarly to PMF.
2146 2016-04-11  Jason Merrill  <jason@redhat.com>
2148         * mangle.c (decl_is_template_id): The template itself counts as a
2149         template-id.
2151 2016-04-08  Patrick Palka  <ppalka@gcc.gnu.org>
2153         PR c++/70590
2154         PR c++/70452
2155         * constexpr.c (cxx_eval_outermost_expression): Call unshare_expr
2156         on the result if it's not a CONSTRUCTOR.
2158 2016-04-07  Patrick Palka  <ppalka@gcc.gnu.org>
2160         PR c++/70452
2161         * constexpr.c (find_constructor): New function.
2162         (unshare_constructor): New function.
2163         (cxx_eval_call_expression): Use unshare_constructor instead of
2164         unshare_expr.
2165         (find_array_ctor_elt): Likewise.
2166         (cxx_eval_vec_init_1): Likewise.
2167         (cxx_eval_store_expression): Likewise.
2168         (cxx_eval_constant_expression): Likewise.
2170 2016-04-06  Patrick Palka  <ppalka@gcc.gnu.org>
2172         PR c/70436
2173         * cp-tree.h (FOR_EACH_CLONE): Restructure macro to avoid
2174         potentially generating a future -Wparentheses warning in its
2175         callers.
2177 2016-04-06  Jason Merrill  <jason@redhat.com>
2179         * class.c (check_abi_tags): Fix function template handling.
2181 2016-04-05  Nathan Sidwell  <nathan@acm.org>
2183         PR c++/70512
2184         * class.c (fixup_may_alias): New.
2185         (fixup_attribute_variants): Call it.
2187 2016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
2189         PR c++/70452
2190         * constexpr.c (struct fundef_copy): New struct.
2191         (struct fundef_copies_table_t): New struct.
2192         (fundef_copies_table): New static variable.
2193         (maybe_initialize_fundef_copies_table): New static function.
2194         (get_fundef_copy): New static function.
2195         (save_fundef_copy): New static function.
2196         (cxx_eval_call_expression): Use get_fundef_copy, and
2197         save_fundef_copy.
2198         (constexpr_call_table): Add "deletable" GTY marker.
2200 2016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
2202         PR c++/70452
2203         * cp-tree.h (class cache_map): Remove.
2204         * constexpr.c (cv_cache): Change type to
2205         GTY((deletable)) hash_map<tree, tree> *.
2206         (maybe_constant_value): Adjust following the change to cv_cache.
2207         (clear_cv_cache): New static function.
2208         (clear_cv_and_fold_caches): Use it.
2209         * cp-gimplify.c (fold_cache): Change type to
2210         GTY((deletable)) hash_map<tree, tree> *.
2211         (clear_fold_cache): Adjust following the change to fold_cache.
2212         (cp_fold): Likewise.
2214 2016-04-02  Martin Sebor  <msebor@redhat.com>
2216         PR c++/67376
2217         PR c++/70170
2218         PR c++/70172
2219         PR c++/70228
2220         * constexpr.c (diag_array_subscript): New function.
2221         (cxx_eval_array_reference): Detect out of bounds array indices.
2223 2016-04-01  Jason Merrill  <jason@redhat.com>
2225         PR c++/70449
2226         PR c++/70344
2227         * pt.c (instantiate_decl): A function isn't fully defined if
2228         DECL_INITIAL is error_mark_node.
2229         * constexpr.c (cxx_eval_call_expression): Likewise.
2231 2016-04-01  Jakub Jelinek  <jakub@redhat.com>
2232             Marek Polacek  <polacek@redhat.com>
2234         PR c++/70488
2235         * init.c (warn_placement_new_too_small): Test whether
2236         DECL_SIZE_UNIT or TYPE_SIZE_UNIT are integers that fit into uhwi.
2238 2016-04-01  Nathan Sidwell  <nathan@acm.org>
2240         PR c++/68475
2241         * decl.c (check_redeclaration_exception_specification): Check
2242         regardless of -fno-exceptions.
2243         * typeck2.c (merge_exception_specifiers): Relax assert by checking
2244         flag_exceptions too.
2246 2016-03-31  Nathan Sidwell  <nathan@acm.org>
2248         * decl.c (start_preparsed_function): Remove unnecessary bracing.
2249         (finish_destructor_body): Don't emit operator delete here.
2251 2016-03-31  Nathan Sidwell  <nathan@acm.org>
2253         PR c++/70393
2254         * constexpr.c (cxx_eval_store_expression): Keep CONSTRUCTOR
2255         elements in field order.
2257 2016-03-31  Marek Polacek  <polacek@redhat.com>
2259         PR c/70297
2260         * decl.c (duplicate_decls): Also set TYPE_ALIGN and TYPE_USER_ALIGN.
2262 2016-03-31  Richard Biener  <rguenther@suse.de>
2264         PR c++/70430
2265         * typeck.c (cp_build_binary_op): Fix operand order of vector
2266         conditional in truth op handling.
2268 2016-03-29  Jason Merrill  <jason@redhat.com>
2270         PR c++/70353
2271         * decl.c (make_rtl_for_nonlocal_decl): Don't defer local statics
2272         in constexpr functions.
2274 2016-03-28  Jason Merrill  <jason@redhat.com>
2276         PR c++/70422
2277         PR c++/64266
2278         PR c++/70353
2279         * decl.c, pt.c, constexpr.c: Revert last patch.
2281 2016-03-25  Jason Merrill  <jason@redhat.com>
2282             Martin LiÅ¡ka  <mliska@suse.cz>
2284         PR c++/64266
2285         PR c++/70353
2286         Core issue 1962
2287         * decl.c (cp_fname_init): Decay the initializer to pointer.
2288         (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P,
2289         DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2290         Don't call cp_finish_decl.
2291         * pt.c (tsubst_expr) [DECL_EXPR]: Set DECL_VALUE_EXPR,
2292         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.  Don't call cp_finish_decl.
2293         * constexpr.c (cxx_eval_constant_expression) [VAR_DECL]:
2294         Handle DECL_VALUE_EXPR.
2296 2016-03-24  Jason Merrill  <jason@redhat.com>
2298         PR c++/70386
2299         * constexpr.c (cxx_eval_bare_aggregate): Handle PMFs.
2301         PR c++/70323
2302         * constexpr.c (cxx_eval_call_expression): Don't cache result if
2303         *overflow_p.
2305 2016-03-24  Patrick Palka  <ppalka@gcc.gnu.org>
2307         PR c++/62212
2308         * tree.c (build_cplus_array_type): Determine type-dependentess
2309         with uses_template_parms instead of with dependent_type_p.
2311 2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
2313         PR c++/70347
2314         * typeck.c (process_init_constructor_union): If the initializer
2315         is empty, use the union's NSDMI if it has one.
2317 2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
2319         PR c++/70332
2320         * pt.c (tsubst_copy) [PARM_DECL]: Handle the use of 'this' in an
2321         NSDMI that's part of an aggregrate initialization.
2323 2016-03-23  Jakub Jelinek  <jakub@redhat.com>
2325         PR c++/70001
2326         * constexpr.c (cxx_eval_vec_init_1): Reuse CONSTRUCTOR initializers
2327         for 1..max even for multi-dimensional arrays.  Call unshare_expr
2328         on it.
2330         PR c++/70323
2331         * constexpr.c (cxx_eval_constant_expression): Diagnose overflow
2332         on TREE_OVERFLOW constants.
2334         PR c++/70376
2335         * cp-gimplify.c (genericize_omp_for_stmt): Don't walk OMP_FOR_CLAUSES
2336         for OMP_TASKLOOP here.
2337         (cp_genericize_r): Handle OMP_TASKLOOP like OMP_TASK, except do call
2338         genericize_omp_for_stmt instead of cp_walk_tree on OMP_BODY.
2340 2016-03-23  Alexandre Oliva  <aoliva@redhat.com>
2341             Jason Merrill  <jason@redhat.com>
2342             Jakub Jelinek  <jakub@redhat.com>
2344         PR c++/69315
2345         * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): Remove.
2346         * decl.c (defer_mark_used_calls, deferred_mark_used_calls): Remove.
2347         (finish_function): Don't set or test them.
2348         * decl2.c (mark_used): Don't handle defer_mark_used_calls.
2350 2016-03-23  Jason Merrill  <jason@redhat.com>
2352         PR c++/70344
2353         * constexpr.c (cxx_eval_call_expression): Catch invalid recursion.
2355 2016-03-23  Marek Polacek  <polacek@redhat.com>
2357         PR c++/69884
2358         * pt.c (canonicalize_type_argument): Use OPT_Wignored_attributes.
2360 2016-03-22  Ilya Enkovich  <enkovich.gnu@gmail.com>
2362         * call.c (build_conditional_expr_1): Always use original
2363         condition type for vector type checks and build.
2365 2016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
2367         PR c++/70096
2368         * pt.c (tsubst_decl): Clear the DECL_MODE of the new decl.
2370 2016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
2372         PR c++/70204
2373         * constexpr.c (non_const_var_error): Check
2374         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2376 2016-03-21  Richard Henderson  <rth@redhat.com>
2378         PR c++/70273
2379         * decl.c (notice_forced_label_r): New.
2380         (cp_finish_decl): Use it.
2382 2016-03-21  Jason Merrill  <jason@redhat.com>
2384         PR c++/70285
2385         * cp-gimplify.c (cp_fold) [COND_EXPR]: Handle bit-fields.
2387 2016-03-18  Jason Merrill  <jason@redhat.com>
2389         PR c++/70139
2390         * constexpr.c (cxx_eval_call_expression): Fix trivial copy.
2392         PR c++/70147
2393         * class.c (vptr_via_virtual_p): New.
2394         (most_primary_binfo): Factor out of build_rtti_vtbl_entries.
2395         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Don't clear
2396         a vptr from any virtual base in a not-in-charge 'structor.
2398         * decl.c (build_clobber_this): Factor out of
2399         start_preparsed_function and begin_destructor_body.  Handle
2400         virtual bases better.
2402         * class.c (build_if_in_charge): Split out from build_base_path.
2403         * init.c (expand_virtual_init, expand_default_init): Use it.
2404         * call.c (build_special_member_call): Use it.
2406 2016-03-18  Jakub Jelinek  <jakub@redhat.com>
2408         PR c++/70267
2409         * init.c (build_new_1): Complain and return error_mark_node
2410         if alloc_fn is not _Jv_AllocObject function returning pointer.
2412 2016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
2414         PR c++/70205
2415         * search.c (adjust_result_of_qualified_name_lookup): Don't
2416         update the BASELINK_BINFO of DECL if the second call
2417         to lookup_base fails.
2419 2016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
2421         PR c++/70218
2422         * parser.c (cp_parser_lambda_expression): Move call to
2423         pop_deferring_access_checks ahead of the call to
2424         cp_parser_end_tentative_firewall.
2426 2016-03-17  Jakub Jelinek  <jakub@redhat.com>
2428         PR c++/70144
2429         * cp-tree.h (magic_varargs_p): Return int instead of bool.
2430         * call.c (magic_varargs_p): Return int instead of bool, return 2 for
2431         Cilk+ reductions, otherwise 1 for magic varargs and 0 for normal
2432         varargs.
2433         (build_over_call): If magic_varargs_p == 2, call reject_gcc_builtin,
2434         if magic_varargs_p == 1, call decay_conversion
2435         instead of mark_type_use.  Don't store error_mark_node arguments to
2436         argarray, instead return error_mark_node.
2438         PR c++/70272
2439         * decl.c (begin_destructor_body): Don't insert clobber if
2440         is_empty_class (current_class_type).
2442 2016-03-17  Marek Polacek  <polacek@redhat.com>
2444         PR c++/70194
2445         * typeck.c (warn_for_null_address): New function.
2446         (cp_build_binary_op): Call it.
2448 2016-03-16  Jason Merrill  <jason@redhat.com>
2450         PR c++/70259
2451         * decl.c (start_preparsed_function): Don't clobber an empty base.
2453 2016-03-16  Jakub Jelinek  <jakub@redhat.com>
2455         PR c++/70147
2456         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Conditionalize
2457         BINFO_VIRTUAL_P vtable clearing on current_in_charge_parm.
2459         PR c++/70147
2460         * cp-ubsan.c (cp_ubsan_maybe_initialize_vtbl_ptrs): Temporarily
2461         set in_base_initializer.
2463 2016-03-15  Marek Polacek  <polacek@redhat.com>
2465         PR c++/70209
2466         * tree.c (strip_typedefs): Call strip_typedefs again on the
2467         DECL_ORIGINAL_TYPE result.
2469 2016-03-15  Jason Merrill  <jason@redhat.com>
2471         PR c++/70095
2472         * pt.c (instantiate_decl): Fix call to variable_template_p.
2474         PR c++/70141
2475         * pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE.
2477 2016-03-14  Casey Carter  <casey@carter.net>
2478             Jason Merrill  <jason@redhat.com>
2480         P0184R0: Generalizing the Range-Based For Loop
2481         * parser.c (cp_convert_range_for): Set the type of __end separately.
2482         (cp_parser_perform_range_for_lookup): Allow different begin/end
2483         types if they are comparable.
2485 2016-03-12  Patrick Palka  <ppalka@gcc.gnu.org>
2487         PR c++/70106
2488         * semantics.c (force_paren_expr): Just build a PAREN_EXPR when
2489         processing_template_decl and EXPR is a SCOPE_REF.
2491 2016-03-10  Patrick Palka  <ppalka@gcc.gnu.org>
2492             Jakub Jelinek  <jakub@redhat.com>
2494         PR c++/70001
2495         * constexpr.c (cxx_eval_vec_init_1): For pre_init case, reuse
2496         return value from cxx_eval_constant_expression from earlier
2497         elements if it is valid constant initializer requiring no
2498         relocations.
2500 2016-03-10  Marek Polacek  <polacek@redhat.com>
2502         PR c++/70153
2503         * cp-gimplify.c (cp_fold): Handle UNARY_PLUS_EXPR.
2505 2016-03-09  Cesar Philippidis  <cesar@codesourcery.com>
2507         * parser.c (cp_parser_oacc_loop): Update cclauses and clauses
2508         when calling c_finish_omp_clauses.
2510 2016-03-08  Jason Merrill  <jason@redhat.com>
2512         * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful
2513         diagnostic for use of "concept".
2514         (cp_parser_requires_clause_opt): And "requires".
2515         (cp_parser_type_parameter, cp_parser_late_return_type_opt)
2516         (cp_parser_explicit_template_declaration): Adjust.
2517         * Make-lang.in (check-c++-all): Add "concepts" to std list.
2519         P0036R0: Unary Folds and Empty Parameter Packs
2520         * pt.c (expand_empty_fold): Remove special cases for *,+,&,|.
2522 2016-03-08  Jakub Jelinek  <jakub@redhat.com>
2524         PR c++/70135
2525         * constexpr.c (cxx_eval_loop_expr): Forget saved values of SAVE_EXPRs
2526         even after the last iteration of the loop.
2528         * decl.c (duplicate_decls): Fix spelling - becuase -> because.
2530 2016-03-07  Patrick Palka  <ppalka@gcc.gnu.org>
2532         PR c++/66786
2533         * pt.c (get_template_info): Handle PARM_DECL.
2534         (template_class_depth): Check DECL_P instead of
2535         VAR_OR_FUNCTION_DECL_P.
2537 2016-03-05  Jason Merrill  <jason@redhat.com>
2539         PR c++/67364
2540         * constexpr.c (cxx_eval_store_expression): Replace
2541         CONSTRUCTOR_ELTS in nested CONSTRUCTORs, too.
2543 2016-03-05  Patrick Palka  <ppalka@gcc.gnu.org>
2545         PR c++/66786
2546         * pt.c (template_class_depth): Given a lambda type, iterate
2547         into its LAMBDA_TYPE_EXTRA_SCOPE field instead of its
2548         TYPE_CONTEXT.  Given a VAR_DECL, iterate into its
2549         CP_DECL_CONTEXT.
2551 2016-03-04  Jason Merrill  <jason@redhat.com>
2553         PR c++/69203
2554         * cp-tree.h (COND_EXPR_IS_VEC_DELETE): New.
2555         * init.c (build_vec_delete_1): Set it.
2556         * constexpr.c (potential_constant_expression_1) [COND_EXPR]: Check it.
2558 2016-03-04  Jakub Jelinek  <jakub@redhat.com>
2560         * decl.c (start_preparsed_function): Don't emit start clobber at the
2561         start of constructor clones.
2563         PR c++/70035
2564         * cp-tree.h (cp_ubsan_maybe_initialize_vtbl_ptrs): New prototype.
2565         * decl.c (start_preparsed_function): Call
2566         cp_ubsan_maybe_initialize_vtbl_ptrs if needed.
2567         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs,
2568         cp_ubsan_maybe_initialize_vtbl_ptrs): New functions.
2570 2016-03-04  Jason Merrill  <jason@redhat.com>
2572         PR c++/67364
2573         * constexpr.c (cxx_eval_component_reference): Further tweak.
2575         * constexpr.c (struct constexpr_ctx): Add save_exprs field.
2576         (cxx_eval_loop_expr): Discard SAVE_EXPR values before looping.
2577         (cxx_eval_constant_expression) [SAVE_EXPR]: Add it to the set.
2578         (cxx_eval_outermost_constant_expr, is_sub_constant_expr): Initialize.
2580         PR c++/70067
2581         * tree.c (strip_typedefs): Handle TYPENAME_TYPE lookup finding the
2582         same type.
2584 2016-03-03  Jason Merrill  <jason@redhat.com>
2586         * method.c (synthesized_method_walk): operator= can also be constexpr.
2588         * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Get
2589         LAMBDA_EXPR_RETURN_TYPE from the instantiated closure.
2591         PR c++/67164
2592         * pt.c (copy_template_args): New.
2593         (tsubst_pack_expansion): Use it.
2595         * call.c (build_aggr_conv): Use get_nsdmi.
2597         PR c++/51406
2598         * typeck.c (build_static_cast_1): Avoid folding back to lvalue.
2600         PR c++/67364
2601         * constexpr.c (cxx_eval_component_reference): Just return an empty
2602         CONSTRUCTOR for an empty class.
2604 2016-03-01  Jason Merrill  <jason@redhat.com>
2606         PR c++/70036
2607         * parser.c (cp_parser_requires_clause): Call
2608         check_for_bare_parameter_packs.
2610         PR c++/51489
2611         * constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT
2612         the operands.
2614         PR c++/69995
2615         * constexpr.c (cxx_eval_call_expression): Unshare arg.
2616         (cxx_eval_constant_expression) [DECL_EXPR]: Unshare init.
2617         [TARGET_EXPR]: Unshare init.
2619 2016-03-01  Patrick Palka  <ppalka@gcc.gnu.org>
2621         PR c++/68948
2622         PR c++/69961
2623         * pt.c (tsubst_baselink): Reinstate the check for an invalid
2624         constructor call.
2626 2016-02-28  Jason Merrill  <jason@redhat.com>
2628         PR c++/69995
2629         * constexpr.c (cxx_eval_store_expression): Unshare init.
2631 2016-02-26  Jason Merrill  <jason@redhat.com>
2633         PR c++/69958
2634         * pt.c (make_argument_pack): New.
2635         (tsubst_copy) [SIZEOF_EXPR]: Handle partial expansion.
2636         (tsubst_copy_and_build): Likewise.
2638 2016-02-25  Jason Merrill  <jason@redhat.com>
2640         PR c++/69889
2641         * cp-tree.h (AGGR_INIT_FROM_THUNK_P): New.
2642         * tree.c (build_aggr_init_expr): Set it.
2643         * semantics.c (simplify_aggr_init_expr): Check it.
2644         * cp-gimplify.c (cp_genericize_r): Don't walk into
2645         a call/aggr_init from a thunk.
2647         PR c++/69842
2648         * method.c (forward_parm): Handle parameter packs.
2649         * lambda.c (maybe_add_lambda_conv_op): Use it for them.
2651         PR c++/67364
2652         * constexpr.c (cxx_eval_component_reference): Don't complain about
2653         unevaluated empty classes.
2655         PR c++/68049
2656         * tree.c (strip_typedefs): Use DECL_ORIGINAL_TYPE.
2658 2016-02-25  Patrick Palka  <ppalka@gcc.gnu.org>
2660         PR c++/69736
2661         * cp-tree.h (REF_PARENTHESIZED_P): Adjust documentation.
2662         (maybe_undo_parenthesized_ref): Declare.
2663         * semantics.c (maybe_undo_parenthesized_ref): Split out from
2664         check_return_expr.
2665         (finish_call_expr): Use it.
2666         * typeck.c (check_return_expr): Use it.
2667         * pt.c (tsubst_copy_and_build) [INDIRECT_REF]: Retain the
2668         REF_PARENTHESIZED_P flag.
2670 2016-02-24  Jakub Jelinek  <jakub@redhat.com>
2672         PR c++/69922
2673         * class.c (build_base_path): Set TREE_NO_WARNING on the null_test.
2674         Avoid folding it.
2675         * init.c (build_vec_delete_1, build_delete): Don't fold the non-NULL
2676         tests.
2677         * cp-gimplify.c (cp_fold): For TREE_NO_WARNING comparisons with NULL,
2678         unless they are folded into INTEGER_CST, error_mark_node or some
2679         comparison with NULL, avoid folding them and use either the original
2680         comparison or non-folded comparison of folded arguments.
2681         * cp-ubsan.c (cp_ubsan_instrument_vptr): Set TREE_NO_WARNING on the
2682         comparison, don't fold the comparison right away.
2684 2016-02-24  Jason Merrill  <jason@redhat.com>
2686         PR c++/69323
2687         * friend.c (make_friend_class): Likewise.
2688         * decl.c (lookup_and_check_tag): Diagnose invalid dependent friend.
2690 2016-02-24  Jason Merrill  <jason@redhat.com>
2692         PR c++/69323
2693         * pt.c (instantiate_class_template_1): Set
2694         processing_template_decl before substituting friend_type.
2696 016-02-24  Martin Sebor  <msebor@redhat.com>
2698         PR c++/69912
2699         * tree.c (build_ctor_subob_ref): Compare types' main variants
2700         instead of the types as they are.
2702 2016-02-24  Jason Merrill  <jason@redhat.com>
2704         * decl.c (start_preparsed_function): Condition ctor clobber on
2705         flag_lifetime_dse > 1.
2707         * cp-gimplify.c (cp_fold): Don't fold constexpr calls if -fno-inline.
2709 2016-02-19  Jason Merrill  <jason@redhat.com>
2711         PR c++/69743
2712         * call.c (remaining_arguments): No longer static.
2713         * cp-tree.h: Declare it.
2714         * pt.c (more_specialized_fn): Use it.
2716 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
2717             Bernd Edlinger  <bernd.edlinger@hotmail.de>
2719         * Make-lang.in: Invoke gperf with -L C++.
2720         * cfns.gperf: Remove prototypes for hash and libc_name_p
2721         inlines.
2722         * cfns.h: Regenerated.
2723         * except.c (nothrow_libfn_p): Adjust.
2725 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
2727         PR c++/69850
2728         * rtti.c (ifnonnull): Set TREE_NO_WARNING on the condition, use
2729         NE_EXPR instead of EQ_EXPR and swap last two arguments on COND_EXPR.
2731 2016-02-19  Patrick Palka  <ppalka@gcc.gnu.org>
2733         PR c++/68948
2734         * pt.c (tsubst_baselink): Don't diagnose an invalid constructor
2735         call here.
2736         * semantics.c (finish_call_expr): Don't assume a constructor
2737         call is dependent if only the "this" pointer is dependent.  When
2738         building a constructor call, always use a dummy object.
2740 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
2742         PR c++/69850
2743         * init.c (build_vec_delete_1): Set TREE_NO_WARNING on the NE_EXPR
2744         condition.
2745         * cp-gimplify.c (cp_fold): Propagate TREE_NO_WARNING from binary
2746         operators if folding preserved the binop, just with different
2747         arguments.
2749         PR c++/67767
2750         * parser.c (cp_parser_std_attribute_spec_seq): Don't assume
2751         attr_spec is always single element chain, chain all the attributes
2752         properly together in the right order.
2754 2016-02-18  Jason Merrill  <jason@redhat.com>
2756         * mangle.c (maybe_check_abi_tags): Add for_decl parm.  Call
2757         mangle_decl.
2758         (mangle_decl): Call maybe_check_abi_tags for function scope.
2759         (mangle_guard_variable): Call maybe_check_abi_tags here.
2760         (write_guarded_var_name): Not here.
2762 2016-02-17  Jason Merrill  <jason@redhat.com>
2764         PR c++/65985
2765         * constexpr.c (build_constexpr_constructor_member_initializers):
2766         Handle an additional STATEMENT_LIST.
2768         PR c++/68585
2769         * constexpr.c (cxx_eval_bare_aggregate): Fix 'changed' detection.
2771         PR c++/68679
2772         * decl2.c (reset_type_linkage_2): Look through member templates.
2774 2016-02-17  Jakub Jelinek  <jakub@redhat.com>
2776         PR c++/69850
2777         * init.c (build_delete): Set TREE_NO_WARNING on ifexp.
2779 2016-02-17  Jason Merrill  <jason@redhat.com>
2781         PR c++/69842
2782         * method.c (forward_parm): Split out from...
2783         (add_one_base_init): ...here.
2784         * lambda.c (maybe_add_lambda_conv_op): Use it.
2786 2016-02-16  Jason Merrill  <jason@redhat.com>
2788         PR c++/10200
2789         PR c++/69753
2790         * call.c, cp-tree.h, name-lookup.c, pt.c, search.c, semantics.c,
2791         tree.c, typeck2.c: Revert earlier changes.
2792         * parser.c (cp_parser_lookup_name): Ignore namespace-scope
2793         non-type templates after -> or .
2795 2016-02-16  Jakub Jelinek  <jakub@redhat.com>
2797         PR c/69835
2798         * typeck.c (cp_build_binary_op): Revert 2015-09-09 change.
2800 2016-02-16  Jason Merrill  <jason@redhat.com>
2802         PR c++/69657
2803         * name-lookup.c (lookup_qualified_name): Add find_hidden parm.
2804         (set_decl_namespace): Pass it.  Complain about finding a hidden friend.
2805         * name-lookup.h: Adjust.
2807 2016-02-16  James Norris  <jnorris@codesourcery.com>
2809         * parser.c (cp_parser_oacc_data_clause_deviceptr): Remove checking.
2810         * semantics.c (finish_omp_clauses): Add deviceptr checking.
2812 2016-02-15  Jakub Jelinek  <jakub@redhat.com>
2814         PR c++/69658
2815         * init.c (expand_default_init): Only call reshape_init
2816         in the direct-initialization from an initializer list case.
2818 2016-02-15  Jason Merrill  <jason@redhat.com>
2820         PR c++/69753
2821         * semantics.c (finish_call_expr): Implicit 'this' does not make
2822         the call dependent.
2823         * search.c (any_dependent_bases_p): Split out...
2824         * name-lookup.c (do_class_using_decl): ...from here.
2825         * call.c (build_new_method_call_1): Don't complain about missing object
2826         if there are dependent bases.  Tweak error.
2827         * tree.c (non_static_member_function_p): Remove.
2828         * pt.c (type_dependent_expression_p): A member template of a
2829         dependent type is dependent.
2830         * cp-tree.h: Adjust.
2832         PR c++/68890
2833         * constexpr.c (verify_ctor_sanity): Remove CONSTRUCTOR_NELTS check.
2835 2016-02-12  Patrick Palka  <ppalka@gcc.gnu.org>
2837         PR c++/69098
2838         * pt.c (lookup_and_finish_template_variable): New function,
2839         extracted from ...
2840         (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: ... here.  Use it.
2841         (tsubst_qualified_id): Consider that EXPR might be a variable
2842         template.
2843         * typeck.c (check_template_keyword): Don't emit an error
2844         if DECL is a variable template.
2846 2016-02-12  Jakub Jelinek  <jakub@redhat.com>
2848         * error.c: Spelling fixes - behaviour -> behavior and
2849         neighbour -> neighbor.
2850         * decl.c: Likewise.
2851         * typeck.c (cp_build_binary_op): Fix up behavior spelling in
2852         diagnostics.
2853         * init.c (build_delete): Likewise.
2855 2016-02-11  Jakub Jelinek  <jakub@redhat.com>
2857         PR c/69768
2858         * typeck.c (cp_build_binary_op): cp_fully_fold integer_zerop
2859         arguments for -Waddress warning.  Fix up formatting.
2861 2016-02-11  Paolo Carlini  <paolo.carlini@oracle.com>
2863         PR c++/68726
2864         * pt.c (lookup_template_class_1): Check tsubst return value for
2865         error_mark_node.
2867 2016-02-10  Jason Merrill  <jason@redhat.com>
2869         PR c++/68926
2870         * pt.c (resolve_nondeduced_context): Add complain parm.
2871         (do_auto_deduction): Pass it.
2872         * cvt.c (convert_to_void): Likewise.
2873         * decl.c (cp_finish_decl): Likewise.
2874         * init.c (build_new): Likewise.
2875         * rtti.c (get_tinfo_decl_dynamic): Likewise.
2876         * semantics.c (finish_decltype_type): Likewise.
2877         * typeck.c (decay_conversion): Likewise.
2878         * cp-tree.h: Adjust declaration.
2879         * call.c (standard_conversion): Add complain parm, pass it along.
2880         (implicit_conversion): Pass it.
2882         PR c++/69657
2883         * name-lookup.c (ambiguous_decl): Call remove_hidden_names.
2884         (lookup_name_real_1): Likewise.
2885         (remove_hidden_names): Handle non-functions too.
2887         PR c++/10200
2888         * parser.c (cp_parser_lookup_name): When looking for a template
2889         after . or ->, only consider class templates.
2890         (cp_parser_postfix_dot_deref_expression): Handle the current
2891         instantiation.  Remember a dependent object expression.
2892         * typeck2.c (build_x_arrow): Handle the current instantiation.
2894         * ptree.c (debug_tree): Implement for cp_expr.
2896 2016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
2898         PR c++/69139
2899         * parser.c (cp_parser_simple_type_specifier): Make the check
2900         for disambiguating between an 'auto' placeholder and an implicit
2901         template parameter more robust.
2903 2016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
2905         PR c++/69283
2906         PR c++/67835
2907         * decl2.c (mark_used): When given a TEMPLATE_DECL, return after
2908         setting its TREE_USED flag.
2910 2016-02-08  Jason Merrill  <jason@redhat.com>
2912         PR c++/69657
2913         * name-lookup.c (do_nonmember_using_decl): Leave anticipated
2914         built-ins alone.
2916 2016-02-08  Jakub Jelinek  <jakub@redhat.com>
2918         PR c++/59627
2919         * parser.c (cp_parser_omp_declare_reduction): Set assembler name
2920         of the DECL_OMP_DECLARE_REDUCTION_P decls.
2922 2016-02-08  Marek Polacek  <polacek@redhat.com>
2924         PR c++/69688
2925         * constexpr.c (clear_cv_and_fold_caches): Renamed from clear_cv_cache.
2926         Call clear_fold_cache.
2927         * cp-tree.h: Adjust declaration.
2928         * decl.c (finish_enum_value_list): Call clear_cv_and_fold_caches
2929         rather than clear_cv_cache and clear_fold_cache.
2930         * typeck2.c (store_init_value): Call clear_cv_and_fold_caches.
2932 2016-02-08  Jason Merrill  <jason@redhat.com>
2934         * cp-tree.h (CONV_FOLD, CONV_BACKEND_CONVERT): New.
2935         * cvt.c (convert): Pass CONV_BACKEND_CONVERT.
2936         (ocp_convert): Use *_maybe_fold.
2937         (cp_convert_to_pointer): Add dofold parameter.
2938         * cp-gimplify.c (cp_fold) [CONVERT_EXPR]: Call convert.
2940 2016-02-05  Martin Sebor  <msebor@redhat.com>
2942         PR c++/69662
2943         * init.c (find_field_init): New function.
2944         (warn_placement_new_too_small): Call it.  Handle one-element arrays
2945         at ends of structures special.
2947 2016-02-05  Jason Merrill  <jason@redhat.com>
2949         PR c++/68948
2950         * semantics.c (finish_expr_stmt): If expr is error_mark_node,
2951         make sure we've seen_error().
2953 2016-02-05  Patrick Palka  <ppalka@gcc.gnu.org>
2955         PR c++/68948
2956         * pt.c (tsubst_baselink): Diagnose an invalid constructor call
2957         if lookup_fnfields returns NULL_TREE and the name being looked
2958         up has the form A::A.
2960 2016-02-04  Patrick Palka  <ppalka@gcc.gnu.org>
2962         * constexpr.c (cxx_eval_binary_expression): Fold equality
2963         comparisons involving PTRMEM_CSTs.
2965 2016-02-04  Jakub Jelinek  <jakub@redhat.com>
2967         * class.c (find_flexarrays): Don't declare dom variable.
2968         (diagnose_flexarray): Likewise.
2970 2016-02-02  Martain Sebor  <msebor@redhat.com>
2972         PR c++/69251
2973         PR c++/69253
2974         PR c++/69290
2975         PR c++/69277
2976         PR c++/69349
2977         * class.c (walk_subobject_offsets): Avoid testing the upper bound
2978         of a flexible array member for equality to null.
2979         (find_flexarrays): Remove spurious whitespace introduced in r231665.
2980         (diagnose_flexarrays): Avoid checking the upper bound of arrays.
2981         (check_flexarrays): Same.
2982         * decl.c (compute_array_index_type): Avoid special case for flexible
2983         array members.
2984         (grokdeclarator): Avoid calling compute_array_index_type for flexible
2985         array members.
2986         * error.c (dump_type_suffix): Revert changes introduced in r231665
2987         and rendered unnecessary by the changes above.
2988         * pt.c (tsubst):  Same.
2989         * tree.c (build_ctor_subob_ref): Handle flexible array members.
2990         * typeck2.c (digest_init_r): Revert changes introduced in r231665.
2991         (process_init_constructor_array): Same.
2992         (process_init_constructor_record): Same.
2994 2016-02-03  Patrick Palka  <ppalka@gcc.gnu.org>
2996         PR c++/69056
2997         * pt.c (try_one_overload): Handle comparing argument packs so
2998         that there is no conflict if we deduced more arguments of an
2999         argument pack than were explicitly specified.
3001 2016-01-31  Jakub Jelinek  <jakub@redhat.com>
3002             Jason Merrill  <jason@redhat.com>
3004         PR c++/68763
3005         * tree.c (strip_typedefs) [FUNCTION_TYPE]: Avoid building a new
3006         function type if nothing is changing.
3008 2016-01-31  Jason Merrill  <jason@redhat.com>
3010         PR c++/69009
3011         * pt.c (partial_specialization_p, impartial_args): New.
3012         (instantiate_decl): Call impartial_args.
3014         * mangle.c (maybe_check_abi_tags): New.
3015         (write_guarded_var_name): Call it.
3016         (mangle_ref_init_variable): Call check_abi_tags.
3018         * pt.c (lookup_template_class_1): Don't share TYPE_ATTRIBUTES
3019         between template and instantiation.
3021 2016-01-29  Jakub Jelinek  <jakub@redhat.com>
3023         PR debug/66869
3024         * decl.c (wrapup_globals_for_namespace): Warn about unused static
3025         function declarations.
3027 2016-01-29  Marek Polacek  <polacek@redhat.com>
3029         PR c++/69509
3030         PR c++/69516
3031         * constexpr.c (cxx_eval_array_reference): Give the "array subscript
3032         out of bound" error earlier.
3033         * init.c (build_vec_init): Change NE_EXPR into GT_EXPR.  Update the
3034         commentary.
3036 2016-01-29  Patrick Palka  <ppalka@gcc.gnu.org>
3038         * name-lookup.c (begin_scope): After reusing a cp_binding_level
3039         structure, update free_binding_level before the structure's
3040         level_chain field gets cleared, not after.
3042 2016-01-28  Jason Merrill  <jason@redhat.com>
3044         PR c++/67407
3045         * search.c (dfs_walk_once, dfs_walk_once_r)
3046         (dfs_walk_once_accessible_r, dfs_walk_once_accessible): Use
3047         hash_set instead of BINFO_MARKED.
3048         (dfs_unmark_r): Remove.
3050 2016-01-28  Patrick Palka  <ppalka@gcc.gnu.org>
3052         PR c++/24208
3053         * parser.c (LEXER_DEBUGGING_ENABLED_P): New macro.
3054         (cp_lexer_debugging_p): Use it.
3055         (cp_lexer_start_debugging): Likewise.
3056         (cp_lexer_stop_debugging): Likewise.
3058 2016-01-27  Marek Polacek  <polacek@redhat.com>
3060         PR c/68062
3061         * typeck.c (cp_build_binary_op): Promote operand to unsigned, if
3062         needed.  Add -Wsign-compare warning.
3064 2016-01-27  Ryan Burn  <contact@rnburn.com>
3066         PR cilkplus/69267
3067         * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed
3068         superfluous post_p argument in call to
3069         cilk_gimplify_call_params_in_spawned_fn.
3071 2016-01-27  Marek Polacek  <polacek@redhat.com>
3073         PR c++/69379
3074         * constexpr.c (cxx_eval_constant_expression): Handle PTRMEM_CSTs
3075         wrapped in NOP_EXPRs.
3077 2016-01-27  Martin Sebor  <msebor@redhat.com>
3079         PR c++/69317
3080         * mangle.c (mangle_decl): Reference the correct (saved) version
3081         of the ABI in -Wabi diagnostics.
3083 2016-01-27  Marek Polacek  <polacek@redhat.com>
3085         PR c++/69496
3086         * constexpr.c (cxx_eval_array_reference): Evaluate the number of
3087         elements of the array.
3089 2016-01-26  Jason Merrill  <jason@redhat.com>
3091         PR c++/68949
3092         * constexpr.c (register_constexpr_fundef): Keep the un-massaged body.
3093         (cxx_eval_call_expression): Don't look through clones.
3094         * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE of the alias.
3095         * semantics.c (expand_or_defer_fn_1): Keep DECL_SAVED_TREE of
3096         maybe-in-charge *tor.
3098 2016-01-26  Jason Merrill  <jason@redhat.com>
3100         PR c++/68782
3101         * constexpr.c (cxx_eval_bare_aggregate): Update TREE_CONSTANT
3102         and TREE_SIDE_EFFECTS.
3103         (cxx_eval_constant_expression) [CONSTRUCTOR]: Call
3104         verify_constructor_flags.
3106 2016-01-26  Jakub Jelinek  <jakub@redhat.com>
3108         PR c++/68357
3109         * cp-gimplify.c (cp_fold): If some operand folds to error_mark_node,
3110         return error_mark_node instead of building trees with error_mark_node
3111         operands.
3113 2016-01-26  David Malcolm  <dmalcolm@redhat.com>
3115         PR other/69006
3116         * error.c (print_instantiation_partial_context_line): Add missing
3117         newlines from output for the t == NULL case.
3118         (print_instantiation_partial_context): Remove call to pp_newline.
3120 2016-01-24  Patrick Palka  <ppalka@gcc.gnu.org>
3122         Revert:
3123         2016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
3125         PR c++/11858
3126         PR c++/24663
3127         PR c++/24664
3128         * decl.c (grokdeclarator): Don't decay array parameter type to
3129         a pointer type if it's dependent.
3130         (grokparms): Invoke strip_top_quals instead of directly invoking
3131         cp_build_qualified_type.
3132         * pt.c (decay_dependent_array_parm_type): New static function.
3133         (type_unification_real): Call decay_dependent_array_parm_type
3134         to decay a dependent array parameter type to its corresponding
3135         pointer type before unification.
3136         (more_specialized_fn): Likewise.
3137         (get_bindings): Likewise.
3138         * tree.c (cp_build_qualified_type): Trivial typofix in
3139         documentation.
3141 2016-01-23  Martin Sebor  <msebor@redhat.com>
3143         PR c++/58109
3144         PR c++/69022
3145         * decl2.c (is_late_template_attribute): Handle dependent argument
3146         to attribute align and attribute vector_size.
3148 2016-01-21  Jason Merrill  <jason@redhat.com>
3150         PR c++/69392
3151         * lambda.c (lambda_capture_field_type): Handle 'this' specially
3152         for init-capture, too.
3154         PR c++/65687
3155         * decl.c (type_is_deprecated): Don't look into a typedef.
3157         PR c++/40751
3158         PR c++/64987
3159         * decl.c (copy_type_enum): Respect TYPE_USER_ALIGN.
3161         PR c++/43407
3162         * decl.c (start_enum): Add attributes parameter.
3163         * parser.c (cp_parser_enum_specifier): Pass it.
3164         * pt.c (lookup_template_class_1): Pass it.
3165         * cp-tree.h: Adjust.
3167 2016-01-19  Jason Merrill  <jason@redhat.com>
3169         PR c++/59759
3170         * pt.c (convert_template_argument): Handle VAR_DECL properly.
3172 2016-01-19  Marek Polacek  <polacek@redhat.com>
3174         PR c++/68586
3175         * constexpr.c (clear_cv_cache): New.
3176         * cp-gimplify.c (clear_fold_cache): New.
3177         * cp-tree.h (clear_cv_cache, clear_fold_cache): Declare.
3178         * decl.c (finish_enum_value_list): Call them.
3180         PR c++/68965
3181         * pt.c (tsubst_copy): Mark elements in expanded vector as used.
3183 2016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
3185         PR c++/11858
3186         PR c++/24663
3187         PR c++/24664
3188         * decl.c (grokdeclarator): Don't decay array parameter type to
3189         a pointer type if it's dependent.
3190         (grokparms): Invoke strip_top_quals instead of directly invoking
3191         cp_build_qualified_type.
3192         * pt.c (decay_dependent_array_parm_type): New static function.
3193         (type_unification_real): Call decay_dependent_array_parm_type
3194         to decay a dependent array parameter type to its corresponding
3195         pointer type before unification.
3196         (more_specialized_fn): Likewise.
3197         (get_bindings): Likewise.
3198         * tree.c (cp_build_qualified_type): Trivial typofix in
3199         documentation.
3201 2016-01-18  Jason Merrill  <jason@redhat.com>
3203         * cp-gimplify.c (cp_fold) [CONSTRUCTOR]: Don't clobber the input.
3205         * cp-gimplify.c (cp_fold): Remove unnecessary special cases.
3207         PR c++/68767
3208         * cp-gimplify.c (cp_fold) [COND_EXPR]: Simplify.  Do fold COND_EXPR.
3209         (contains_label_1, contains_label_p): Remove.
3211 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
3213         PR c++/69091
3214         * pt.c (type_dependent_expression_p): For a function template
3215         specialization, a type is dependent iff any of its template
3216         arguments are.
3218 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
3220         * cp-array-notation.c (cp_expand_cond_array_notations): Return
3221         error_mark_node only if find_rank failed, not if it was
3222         successful.
3224 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
3226         PR c++/68936
3227         * tree.c (build_min_non_dep_call_vec): Don't retain the
3228         KOENIG_LOOKUP_P flag of the non-dependent expression that's
3229         been built.
3230         (build_min_non_dep_op_overload): Instead, do it here.
3232 2016-01-15  Jakub Jelinek  <jakub@redhat.com>
3234         PR bootstrap/68271
3235         * parser.h (cp_token): Remove pragma_kind field.  Add comment
3236         with number of unused bits.
3237         * parser.c (eof_token): Remove pragma_kind field initializer.
3238         (cp_lexer_get_preprocessor_token): Don't set pragma_kind
3239         field, don't clear CPP_PRAGMA u.value.
3240         (cp_parser_pragma_kind): New function.
3241         (cp_parser_omp_sections_scope, cp_parser_oacc_kernels_parallel,
3242         cp_parser_omp_construct, cp_parser_initial_pragma,
3243         cp_parser_pragma): Use cp_parser_pragma_kind instead of accessing
3244         pragma_kind field.
3246 2016-01-15  Jason Merrill  <jason@redhat.com>
3248         PR c++/68847
3249         * call.c (build_cxx_call): Use fold_non_dependent_expr.
3251         * typeck2.c (cxx_incomplete_type_diagnostic): Use the location of
3252         value.
3254         PR c++/69257
3255         * typeck.c (decay_conversion): Don't call mark_rvalue_use for
3256         array/function-to-pointer conversion.  Call
3257         complete_type_or_maybe_complain for lvalue-to-rvalue conversion.
3258         * call.c (convert_like_real): Print call context if
3259         decay_conversion errors.
3261 2016-01-14  Tom de Vries  <tom@codesourcery.com>
3263         PR tree-optimization/68773
3264         * parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't
3265         set force_output.
3267 2016-01-14  Jason Merrill  <jason@redhat.com>
3269         PR c++/69261
3270         * constexpr.c (find_array_ctor_elt): Handle splitting RANGE_EXPR.
3272 2016-01-12  Marek Polacek  <polacek@redhat.com>
3274         PR c++/68979
3275         * constexpr.c (cxx_eval_check_shift_p): Use permerror rather than
3276         error_at and adjust the return value.
3278 2016-01-12  Jakub Jelinek  <jakub@redhat.com>
3280         PR objc++/68511
3281         PR c++/69213
3282         * cp-gimplify.c (cp_gimplify_expr) <case INIT_EXPR>: Don't return
3283         GS_ERROR whenever seen_error (), only if *expr_p contains
3284         cilk spawn stmt, but cilk_detect_spawn_and_unwrap failed.
3286         PR c++/66808
3287         PR c++/69000
3288         * pt.c (tsubst_decl): If not local_p, clear DECL_TEMPLATE_INFO.
3290 2016-01-11  Jason Merrill  <jason@redhat.com>
3292         PR c++/69131
3293         * method.c (walk_field_subobs): Add dtor_from_ctor parm.
3294         (process_subob_fn): Likewise.  Don't consider triviality if true.
3295         (synthesize_method_walk): Pass it.
3297 2016-01-11  David Malcolm  <dmalcolm@redhat.com>
3299         PR c++/68795
3300         * parser.c (cp_parser_postfix_expression): Initialize
3301         close_paren_loc to UNKNOWN_LOCATION; only use it if
3302         it has been written to by
3303         cp_parser_parenthesized_expression_list.
3304         (cp_parser_parenthesized_expression_list): Document the behavior
3305         with respect to the CLOSE_PAREN_LOC param.
3307 2016-01-11  Jakub Jelinek  <jakub@redhat.com>
3309         PR c++/69211
3310         * cp-gimplify.c (cp_fold): If COMPOUND_EXPR or MODIFY_EXPR
3311         folded operands have side-effects, but folding changed any of them,
3312         build a new tree with the folded operands instead of returning the
3313         unfolded tree.
3315 2016-01-09  Marek Polacek  <polacek@redhat.com>
3317         PR c++/69113
3318         * decl2.c (comdat_linkage): Only set DECL_COMDAT if TREE_PUBLIC is set.
3320 2016-01-09  Jakub Jelinek  <jakub@redhat.com>
3322         PR c++/69164
3323         * class.c (layout_class_type): Use copy_node to copy FIELD_DECLs.
3325 2016-01-08  Jason Merrill  <jason@redhat.com>
3327         PR c++/69158
3328         * constexpr.c (cxx_fold_indirect_ref): Handle array type differing
3329         in completion.
3331 2016-01-08  Marek Polacek  <polacek@redhat.com>
3333         PR c++/68449
3334         * constexpr.c (cxx_eval_constant_expression): Handle NULL initializer.
3336 2016-01-08  Jason Merrill  <jason@redhat.com>
3338         * constexpr.c (cxx_eval_call_expression): Remove convert_to_void
3339         workaround.
3341         PR c++/68983
3342         PR c++/67557
3343         * cvt.c (convert_to_void): Don't strip a TARGET_EXPR of
3344         TREE_ADDRESSABLE type.
3346         PR c++/68983
3347         PR c++/67557
3348         * call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR.
3350 2016-01-05  Nathan Sidwell  <nathan@acm.org>
3352         PR c++/58583
3353         * pt.c (build_non_dependent_expr): Don't try a checking fold when
3354         parsing an nsdmi.
3356 2016-01-04  Jakub Jelinek  <jakub@redhat.com>
3358         Update copyright years.
3360 Copyright (C) 2016 Free Software Foundation, Inc.
3362 Copying and distribution of this file, with or without modification,
3363 are permitted in any medium without royalty provided the copyright
3364 notice and this notice are preserved.