summaryrefslogtreecommitdiff
path: root/gcc/cp/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/ChangeLog')
-rw-r--r--gcc/cp/ChangeLog395
1 files changed, 395 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a542ab1ffa3..1da821b7275 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,398 @@
+2013-10-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58466
+ * pt.c (most_specialized_class): Bump processing_template_decl for
+ get_class_bindings.
+
+2013-10-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * parser.c (cp_parser_lookup_name): Tidy.
+
+2013-10-17 Andrew MacLeod <amacleod@redhat.com>
+
+ * parser.c: Include omp-low.h.
+ * semantics.c: Likewise.
+
+2013-10-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58596
+ * lambda.c (lambda_expr_this_capture): Handle NSDMIs in the
+ cp_unevaluated_operand case.
+
+2013-10-16 Jason Merrill <jason@redhat.com>
+
+ * pt.c (apply_late_template_attributes): Use
+ attribute_takes_identifier_p.
+
+ * error.c (dump_exception_spec): Print "noexcept" rather than
+ "noexcept (true)".
+
+ Core 1591
+ * pt.c (unify_array_domain): Split out from unify.
+ (unify): Use it for list deduction, too.
+
+ PR c++/57850
+ * decl2.c (dump_tu): Split out from...
+ (cp_write_global_declarations): ...here. Call it in PCH mode.
+
+2013-10-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * pt.c (tsubst): Fix typo in last commit.
+
+2013-10-16 Paulo Matos <pmatos@broadcom.com>
+
+ * error.c (code_to_string): Use new wrapper get_tree_code_name.
+ * cxx-pretty-print.c (pp_cxx_assignment_operator): Likewise.
+ * pt.c (tsubst): Likewise.
+ * semantics.c (cxx_eval_constant_expression,
+ potential_constant_expression_1): Likewise.
+ * mangle.c (MANGLE_TRACE_TREE, dump_substitution_candidates,
+ add_substitution, find_substitution): Likewise.
+
+2013-10-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58707
+ * parser.c (cp_parser_postfix_open_square_expression): Set
+ parser->greater_than_is_operator_p for the argument.
+
+2013-10-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58633
+ * parser.c (cp_parser_commit_to_topmost_tentative_parse): New.
+ (cp_parser_pseudo_destructor_name): Use it.
+
+2013-10-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/31671
+ * pt.c (convert_nontype_argument): Set expr_type to
+ TREE_TYPE (probe_type).
+
+2013-10-11 Jakub Jelinek <jakub@redhat.com>
+
+ * decl.c (duplicate_decls): Error out for redeclaration of UDRs.
+ (declare_simd_adjust_this): New function.
+ (grokfndecl): If "omp declare simd" attribute is present,
+ call declare_simd_adjust_this if needed and
+ c_omp_declare_simd_clauses_to_numbers.
+ * cp-array-notation.c (expand_array_notation_exprs): Handle
+ OMP_TASKGROUP.
+ * cp-gimplify.c (cp_gimplify_expr): Handle OMP_SIMD and
+ OMP_DISTRIBUTE. Handle is_invisiref_parm decls in
+ OMP_CLAUSE_REDUCTION.
+ (cp_genericize_r): Handle OMP_SIMD and OMP_DISTRIBUTE like
+ OMP_FOR.
+ (cxx_omp_privatize_by_reference): Return true for
+ is_invisiref_parm decls.
+ (cxx_omp_finish_clause): Adjust cxx_omp_create_clause_info
+ caller.
+ * pt.c (apply_late_template_attributes): For "omp declare simd"
+ attribute call tsubst_omp_clauses,
+ c_omp_declare_simd_clauses_to_decls, finish_omp_clauses
+ and c_omp_declare_simd_clauses_to_numbers.
+ (instantiate_class_template_1): Call cp_check_omp_declare_reduction
+ for UDRs.
+ (tsubst_decl): Handle UDRs.
+ (tsubst_omp_clauses): Add declare_simd argument, if true don't
+ call finish_omp_clauses. Handle new OpenMP 4.0 clauses.
+ Handle non-NULL OMP_CLAUSE_REDUCTION_PLACEHOLDER on
+ OMP_CLAUSE_REDUCTION.
+ (tsubst_expr): For UDRs call pushdecl and
+ cp_check_omp_declare_reduction. Adjust tsubst_omp_clauses
+ callers. Handle OMP_SIMD, OMP_DISTRIBUTE, OMP_TEAMS,
+ OMP_TARGET_DATA, OMP_TARGET_UPDATE, OMP_TARGET, OMP_TASKGROUP.
+ Adjust finish_omp_atomic caller.
+ (tsubst_omp_udr): New function.
+ (instantiate_decl): For UDRs at block scope, don't call
+ start_preparsed_function/finish_function. Call tsubst_omp_udr.
+ * semantics.c (cxx_omp_create_clause_info): Add need_dtor argument,
+ use it instead of need_default_ctor || need_copy_ctor.
+ (struct cp_check_omp_declare_reduction_data): New type.
+ (handle_omp_array_sections_1, handle_omp_array_sections,
+ omp_reduction_id, omp_reduction_lookup,
+ cp_remove_omp_priv_cleanup_stmt, cp_check_omp_declare_reduction_r,
+ cp_check_omp_declare_reduction, clone_omp_udr,
+ find_omp_placeholder_r, finish_omp_reduction_clause): New functions.
+ (finish_omp_clauses): Handle new OpenMP 4.0 clauses and user defined
+ reductions.
+ (finish_omp_for): Add CODE argument, use it instead of hardcoded
+ OMP_FOR. Adjust c_finish_omp_for caller.
+ (finish_omp_atomic): Add seq_cst argument, adjust
+ c_finish_omp_atomic callers, handle seq_cst and new OpenMP 4.0
+ atomic variants.
+ (finish_omp_cancel, finish_omp_cancellation_point): New functions.
+ * decl2.c (mark_used): Force immediate instantiation of
+ DECL_OMP_DECLARE_REDUCTION_P decls.
+ (is_late_template_attribute): Return true for "omp declare simd"
+ attribute.
+ (cp_omp_mappable_type): New function.
+ (cplus_decl_attributes): Add implicit "omp declare target" attribute
+ if requested.
+ * parser.c (cp_debug_parser): Print
+ parser->colon_doesnt_start_class_def_p.
+ (cp_ensure_no_omp_declare_simd, cp_finalize_omp_declare_simd): New
+ functions.
+ (enum pragma_context): Add pragma_member and pragma_objc_icode.
+ (cp_parser_binary_expression): Handle no_toplevel_fold_p
+ even for binary operations other than comparison.
+ (cp_parser_linkage_specification): Call
+ cp_ensure_no_omp_declare_simd if needed.
+ (cp_parser_namespace_definition): Likewise.
+ (cp_parser_init_declarator): Call cp_finalize_omp_declare_simd.
+ (cp_parser_direct_declarator): Pass declarator to
+ cp_parser_late_return_type_opt.
+ (cp_parser_late_return_type_opt): Add declarator argument,
+ call cp_parser_late_parsing_omp_declare_simd for declare simd.
+ (cp_parser_class_specifier_1): Call cp_ensure_no_omp_declare_simd.
+ Parse UDRs before all other methods.
+ (cp_parser_member_specification_opt): Use pragma_member instead of
+ pragma_external.
+ (cp_parser_member_declaration): Call cp_finalize_omp_declare_simd.
+ (cp_parser_function_definition_from_specifiers_and_declarator,
+ cp_parser_save_member_function_body): Likewise.
+ (cp_parser_late_parsing_for_member): Handle UDRs specially.
+ (cp_parser_next_token_starts_class_definition_p): Don't allow
+ CPP_COLON if colon_doesnt_start_class_def_p flag is true.
+ (cp_parser_objc_interstitial_code): Use pragma_objc_icode
+ instead of pragma_external.
+ (cp_parser_omp_clause_name): Parse new OpenMP 4.0 clause names.
+ (cp_parser_omp_var_list_no_open): Parse array sections for
+ OMP_CLAUSE_{DEPEND,MAP,TO,FROM} clauses. Add COLON argument,
+ if non-NULL, allow parsing to end with a colon rather than close
+ paren.
+ (cp_parser_omp_var_list): Adjust cp_parser_omp_var_list_no_open
+ caller.
+ (cp_parser_omp_clause_reduction): Handle user defined reductions.
+ (cp_parser_omp_clause_branch, cp_parser_omp_clause_cancelkind,
+ cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit,
+ cp_parser_omp_clause_aligned, cp_parser_omp_clause_linear,
+ cp_parser_omp_clause_safelen, cp_parser_omp_clause_simdlen,
+ cp_parser_omp_clause_depend, cp_parser_omp_clause_map,
+ cp_parser_omp_clause_device, cp_parser_omp_clause_dist_schedule,
+ cp_parser_omp_clause_proc_bind, cp_parser_omp_clause_to,
+ cp_parser_omp_clause_from, cp_parser_omp_clause_uniform): New
+ functions.
+ (cp_parser_omp_all_clauses): Add finish_p argument. Don't call
+ finish_omp_clauses if it is false. Handle new OpenMP 4.0 clauses.
+ (cp_parser_omp_atomic): Parse seq_cst clause, pass
+ true if it is present to finish_omp_atomic. Handle new OpenMP 4.0
+ atomic forms.
+ (cp_parser_omp_for_loop): Add CODE argument, pass it through
+ to finish_omp_for. Change last argument to cclauses,
+ and adjust uses to grab parallel clauses from the array of all
+ the split clauses.
+ (cp_omp_split_clauses): New function.
+ (cp_parser_omp_simd): New function.
+ (cp_parser_omp_for): Add p_name, mask and cclauses arguments.
+ Allow the function to be called also when parsing combined constructs,
+ and call c_parser_omp_simd when parsing for simd.
+ (cp_parser_omp_sections_scope): If section-sequence doesn't start with
+ #pragma omp section, require exactly one structured-block instead of
+ sequence of statements.
+ (cp_parser_omp_sections): Add p_name, mask and cclauses arguments.
+ Allow the function to be called also when parsing combined constructs.
+ (cp_parser_omp_parallel): Add p_name, mask and cclauses arguments.
+ Allow the function to be called also when parsing combined
+ constructs.
+ (cp_parser_omp_taskgroup, cp_parser_omp_cancel,
+ cp_parser_omp_cancellation_point, cp_parser_omp_distribute,
+ cp_parser_omp_teams, cp_parser_omp_target_data,
+ cp_parser_omp_target_update, cp_parser_omp_target,
+ cp_parser_omp_declare_simd, cp_parser_late_parsing_omp_declare_simd,
+ cp_parser_omp_declare_target, cp_parser_omp_end_declare_target,
+ cp_parser_omp_declare_reduction_exprs, cp_parser_omp_declare_reduction,
+ cp_parser_omp_declare): New functions.
+ (cp_parser_omp_construct): Add p_name and mask vars. Handle
+ PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP,
+ PRAGMA_OMP_TEAMS. Adjust cp_parser_omp_for, cp_parser_omp_parallel
+ and cp_parser_omp_sections callers.
+ (cp_parser_pragma): Handle PRAGMA_OMP_CANCEL,
+ PRAGMA_OMP_CANCELLATION_POINT, PRAGMA_OMP_DECLARE_REDUCTION,
+ PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP,
+ PRAGMA_OMP_TEAMS, PRAGMA_OMP_TARGET, PRAGMA_OMP_END_DECLARE_TARGET.
+ Handle pragma_member and pragma_objc_icode like pragma_external.
+ (OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
+ OMP_SINGLE_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1.
+ (OMP_PARALLEL_CLAUSE_MASK): Likewise. Add OMP_CLAUSE_PROC_BIND.
+ (OMP_TASK_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1. Add
+ OMP_CLAUSE_DEPEND.
+ (OMP_SIMD_CLAUSE_MASK, OMP_CANCEL_CLAUSE_MASK,
+ OMP_CANCELLATION_POINT_CLAUSE_MASK, OMP_DISTRIBUTE_CLAUSE_MASK,
+ OMP_TEAMS_CLAUSE_MASK, OMP_TARGET_DATA_CLAUSE_MASK,
+ OMP_TARGET_UPDATE_CLAUSE_MASK, OMP_TARGET_CLAUSE_MASK,
+ OMP_DECLARE_SIMD_CLAUSE_MASK): Define.
+ * parser.h (struct cp_omp_declare_simd_data): New type.
+ (struct cp_parser): Add colon_doesnt_start_class_def_p and
+ omp_declare_simd fields.
+ * cp-objcp-common.h (LANG_HOOKS_OMP_MAPPABLE_TYPE): Define.
+ * cp-tree.h (struct lang_decl_fn): Add omp_declare_reduction_p
+ bit.
+ (DECL_OMP_DECLARE_REDUCTION_P): Define.
+ (OMP_FOR_GIMPLIFYING_P): Use OMP_LOOP_CHECK macro.
+ (struct saved_scope): Add omp_declare_target_attribute field.
+ (cp_omp_mappable_type, omp_reduction_id,
+ cp_remove_omp_priv_cleanup_stmt, cp_check_omp_declare_reduction,
+ finish_omp_cancel, finish_omp_cancellation_point): New prototypes.
+ (finish_omp_for): Add CODE argument.
+ (finish_omp_atomic): Add seq_cst argument.
+ (cxx_omp_create_clause_info): Add need_dtor argument.
+
+2013-10-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/58635
+ * semantics.c (finish_return_stmt): Return error_mark_node
+ when error_operand_p of the expr is true.
+ (build_transaction_expr): Check for EXPR_P before setting the
+ expr location.
+
+2013-10-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58568
+ * lambda.c (begin_lambda_type): Check return value of xref_tag
+ for error_mark_node; tidy.
+ * decl.c (grokdeclarator): Tweak error message.
+
+2013-10-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58665
+ Revert:
+ 2013-10-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58448
+ * pt.c (tsubst): Use error_operand_p on parameter t.
+
+2013-10-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58126
+ * class.c (check_bases): Propagate CLASSTYPE_READONLY_FIELDS_NEED_INIT
+ and CLASSTYPE_REF_FIELDS_NEED_INIT from bases to derived.
+ * init.c (diagnose_uninitialized_cst_or_ref_member_1): Extend error
+ messages about uninitialized const and references members to mention
+ the base class.
+
+2013-10-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56060
+ * pt.c (type_dependent_expression_p): Handle EXPR_PACK_EXPANSION.
+
+2013-10-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58560
+ * typeck2.c (build_functional_cast): Use error_operand_p on exp.
+
+2013-10-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58503
+ * parser.c (cp_parser_perform_range_for_lookup): If eventually
+ either *begin or *end is type-dependent, return NULL_TREE.
+ (do_range_for_auto_deduction): If cp_parser_perform_range_for_lookup
+ returns NULL_TREE, don't actually do_auto_deduction.
+
+2013-10-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58448
+ * pt.c (tsubst): Use error_operand_p on parameter t.
+
+2013-10-04 Marc Glisse <marc.glisse@inria.fr>
+
+ PR c++/19476
+ * decl.c (cxx_init_decl_processing): Set operator_new_flag.
+
+2013-10-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58584
+ * decl2.c (save_template_attributes): Handle error_mark_node as
+ *attr_p argument.
+ (cp_check_const_attributes): Likewise for attributes.
+ * parser.c (cp_parser_std_attribute_spec): When alignas_expr is an
+ error_mark_node call cp_parser_skip_to_end_of_statement.
+
+2013-10-03 Easwaran Raman <eraman@google.com>
+
+ PR c++/33911
+ * parser.c (cp_parser_init_declarator): Do not drop attributes
+ of template member functions.
+
+2013-10-03 Marek Polacek <polacek@redhat.com>
+
+ PR c++/58510
+ * init.c (sort_mem_initializers): Splice when giving an error.
+
+2013-10-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58535
+ * parser.c (cp_parser_function_specifier_opt): Upon error about
+ virtual templates don't set ds_virtual.
+ (finish_fully_implicit_template): Reject virtual implicit templates.
+
+2013-10-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58565
+ * semantics.c (potential_constant_expression_1): Handle LABEL_EXPR.
+
+2013-10-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58563
+ * parser.c (cp_parser_lookup_name): Check make_typename_type return
+ value for error_mark_node.
+
+2013-09-25 Tom Tromey <tromey@redhat.com>
+
+ * Make-lang.in (CXX_TREE_H, CXX_PARSER_H, CXX_PRETTY_PRINT_H):
+ Remove.
+
+2013-09-25 Tom Tromey <tromey@redhat.com>
+
+ * Make-lang.in (g++spec.o): Remove.
+ (CFLAGS-cp/g++spec.o): New variable.
+ (GXX_OBJS): Reference cp/g++spec.o.
+ (cc1plus-checksum.o, cp/lex.o, cp/cp-array-notation.o)
+ (cp/cp-lang.o, cp/decl.o, cp/decl2.o, cp/cp-objcp-common.o)
+ (cp/typeck2.o, cp/typeck.o, cp/class.o, cp/call.o)
+ (cp/friend.o, cp/init.o, cp/method.o, cp/cvt.o, cp/search.o)
+ (cp/tree.o, cp/ptree.o, cp/rtti.o, cp/except.o, cp/expr.o)
+ (cp/pt.o, cp/error.o, cp/repo.o, cp/semantics.o, cp/dump.o)
+ (cp/optimize.o, cp/mangle.o, cp/parser.o, cp/cp-gimplify.o)
+ (cp/name-lookup.o, cp/cxx-pretty-print.o): Remove.
+
+2013-09-25 Tom Tromey <tromey@redhat.com>
+
+ * Make-lang.in (g++spec.o): Don't use subshell.
+
+2013-09-25 Marek Polacek <polacek@redhat.com>
+
+ PR c++/58516
+ * semantics.c (finish_transaction_stmt): Check for EXPR_P before
+ setting the expr location.
+
+2013-09-23 Adam Butcher <adam@jessamine.co.uk>
+
+ PR c++/58500
+ * type-utils.h (find_type_usage): Only traverse one type level into
+ member function pointers.
+
+2013-09-23 Adam Butcher <adam@jessamine.co.uk>
+
+ * parser.c (cp_parser_init_declarator): Defer calling
+ finish_fully_implicit_template for forward declarations until after
+ other decl processing is complete. Cleanup for clarity: Extract 'else'
+ case after 'if' containing unconditional return.
+
+2013-09-23 Adam Butcher <adam@jessamine.co.uk>
+
+ * parser.c (make_generic_type_name): Spell generic type names '<autoN>'
+ rather than '__GenN'.
+
+2013-09-23 Adam Butcher <adam@jessamine.co.uk>
+
+ * lambda.c (maybe_add_lambda_conv_op): Don't check for instantiated
+ callop in the case of generic lambdas.
+
+2013-09-23 Adam Butcher <adam@jessamine.co.uk>
+
+ * parser.c (make_generic_type_name): Use global count rather than
+ parameter and ...
+ (add_implicit_template_parms): ... propagate interface change here.
+
2013-09-20 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58481