re PR c/79153 (-Wimplicit-fallthrough missed warning)
[gcc.git] / gcc / cp / ChangeLog
index 854df5afe9174ba3d161e1c1203c6e5eff2850c1..31b69bf725531e62bae070804c7015c620e37f9b 100644 (file)
@@ -1,4 +1,155 @@
-2017-11-14 Boris Kolpackov  <boris@codesynthesis.com>
+2017-12-01  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/79153
+       * cp-gimplify.c (genericize_switch_stmt): Emit LABEL_EXPR for the
+       break label into SWITCH_BODY instead of after it and set
+       SWITCH_BREAK_LABEL_P on it.
+       * parser.c (cp_parser_objc_expression): Add FALLTHRU comment to avoid
+       -Wimplicit-fallthrough warning.
+
+2017-11-30  Jason Merrill  <jason@redhat.com>
+
+       PR c++/82219 - bogus -Wignored-qualifiers with template
+       * pt.c (tsubst_copy_and_build) [STATIC_CAST_EXPR]: Suppress
+       -Wignored-qualifiers.
+
+2017-11-29  David Malcolm  <dmalcolm@redhat.com>
+
+       * parser.c (cp_parser_unary_expression): Generate a location for
+       "noexcept".
+       (cp_parser_trait_expr): Generate and return a location_t,
+       converting the return type from tree to cp_expr.
+       (cp_parser_static_assert): Pass location of the condition to
+       finish_static_assert, rather than that of the "static_assert"
+       token, where available.
+
+2017-11-29  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/82293
+       * lambda.c (nonlambda_method_basetype): Don't use LAMBDA_TYPE_P
+       on a null type.
+
+2017-11-29  Jason Merrill  <jason@redhat.com>
+
+       PR c++/82760 - memory corruption with aligned new.
+       * call.c (build_operator_new_call): Update *args if we add the
+       align_arg.
+
+2017-11-28  Jakub Jelinek  <jakub@redhat.com>
+
+       PR sanitizer/81275
+       * cp-tree.h (SWITCH_STMT_ALL_CASES_P): Define.
+       (SWITCH_STMT_NO_BREAK_P): Define.
+       (note_break_stmt, note_iteration_stmt_body_start,
+       note_iteration_stmt_body_end): Declare.
+       * decl.c (struct cp_switch): Add has_default_p, break_stmt_seen_p
+       and in_loop_body_p fields.
+       (push_switch): Clear them.
+       (pop_switch): Set SWITCH_STMT_CANNOT_FALLTHRU_P if has_default_p
+       and !break_stmt_seen_p.  Assert in_loop_body_p is false.
+       (note_break_stmt, note_iteration_stmt_body_start,
+       note_iteration_stmt_body_end): New functions.
+       (finish_case_label): Set has_default_p when both low and high
+       are NULL_TREE.
+       * parser.c (cp_parser_iteration_statement): Use
+       note_iteration_stmt_body_start and note_iteration_stmt_body_end
+       around parsing iteration body.
+       * pt.c (tsubst_expr): Likewise.
+       * cp-objcp-common.c (cxx_block_may_fallthru): Return false for
+       SWITCH_STMT which contains no BREAK_STMTs, contains a default:
+       CASE_LABEL_EXPR and where SWITCH_STMT_BODY isn't empty and
+       can't fallthru.
+       * semantics.c (finish_break_stmt): Call note_break_stmt.
+       * cp-gimplify.c (genericize_switch_stmt): Copy SWITCH_STMT_ALL_CASES_P
+       bit to SWITCH_ALL_CASES_P.  Assert that if SWITCH_STMT_NO_BREAK_P then
+       the break label is not TREE_USED.
+
+2017-11-28  Julia Koval  <julia.koval@intel.com>
+            Sebastian Peryt  <sebastian.peryt@intel.com>
+
+       * Make-lang.in (cp/cp-array-notation.o, cp/cp-cilkplus.o): Delete.
+       * call.c (convert_for_arg_passing, build_cxx_call): Remove cilkplus.
+       * constexpr.c (potential_constant_expression_1): Ditto.
+       * cp-array-notation.c: Delete.
+       * cp-cilkplus.c: Ditto.
+       * cp-cilkplus.h: Ditto.
+       * cp-gimplify.c (cp_gimplify_expr, cp_fold_r, cp_genericize): Remove
+       cilkplus condition.
+       * cp-objcp-common.c (ARRAY_NOTATION_REF): Delete.
+       * cp-tree.h (cilkplus_an_triplet_types_ok_p): Delete.
+       * decl.c (grokfndecl, finish_function): Remove cilkplus condition.
+       * error.c (dump_decl, dump_expr): Remove ARRAY_NOTATION_REF condition.
+       * lambda.c (cp-cilkplus.h): Remove.
+       * parser.c (cp_parser_cilk_simd, cp_parser_cilk_for,
+       cp_parser_cilk_simd_vectorlength): Delete.
+       (cp_debug_parser, cp_parser_ctor_initializer_opt_and_function_body,
+       cp_parser_postfix_expression,
+       cp_parser_postfix_open_square_expression,
+       cp_parser_statement, cp_parser_jump_statement,
+       cp_parser_direct_declarator,
+       cp_parser_late_return_type_opt, cp_parser_gnu_attribute_list,
+       cp_parser_omp_clause_name, cp_parser_omp_clause_aligned,
+       cp_parser_omp_clause_linear, cp_parser_omp_all_clauses,
+       cp_parser_omp_flush,
+       cp_parser_omp_for_cond, cp_parser_omp_for_incr,
+       cp_parser_omp_for_loop_init,
+       cp_parser_omp_for_loop,
+       cp_parser_omp_declare_simd): Remove cilkplus support.
+       (CILK_SIMD_FN_CLAUSE_MASK, cp_parser_late_parsing_cilk_simd_fn_info,
+       cp_parser_cilk_grainsize): Remove.
+       (cp_parser_pragma, c_parse_file): Remove cilkplus support.
+       (cp_parser_cilk_simd_vectorlength, cp_parser_cilk_simd_linear,
+       cp_parser_cilk_simd_clause_name, cp_parser_cilk_simd_all_clauses,
+       cp_parser_cilk_simd, cp_parser_cilk_for): Remove.
+       * parser.h (IN_CILK_SIMD_FOR, IN_CILK_SPAWN): Remove.
+       * pt.c (tsubst_attribute, tsubst_expr, tsubst_copy_and_build): Remove
+       cilkplus support.
+       * semantics.c (finish_goto_stmt, begin_while_stmt, finish_do_body,
+       finish_init_stmt, finish_switch_cond, simplify_aggr_init_expr,
+       finish_omp_clauses, finish_omp_clauses, finish_omp_for): Remove
+       cilkplus
+       support.
+       * tree.c (lvalue_kind): Remove ARRAY_NOTATION_REF conditon.
+       * typeck.c (cp_build_array_ref, cp_build_compound_expr,
+       check_return_expr): Remove cilkplus support.
+
+2017-11-28  Jakub Jelinek  <jakub@redhat.com>
+
+       * cp-gimplify.c (genericize_switch_stmt): Build SWITCH_EXPR using
+       build2_loc instead of build3_loc.
+
+2017-11-27  Martin Sebor  <msebor@redhat.com>
+
+       PR c++/83058
+       * init.c (warn_placement_new_too_small): Use offset_int instead of
+       HOST_WIDE_INT.
+
+2017-11-27  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/81888
+       * parser.c (cp_parser_decomposition_declaration): Reject just
+       BRACE_ENCLOSED_INITIALIZER_P initializers with nelts != 1 rather
+       than all such CONSTRUCTORs, and only if is_direct_init is true.
+
+2017-11-27  Jason Merrill  <jason@redhat.com>
+
+       * pt.c (primary_template_specialization_p): Rename from
+       primary_template_instantiation_p.  Don't check
+       DECL_TEMPLATE_INSTANTIATION.
+       * call.c, cp-tree.h, decl2.c: Adjust.
+
+2017-11-27  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/81675
+       * cp-gimplify.c (cp_fold) <case COND_EXPR>: Don't return immediately
+       for VOID_TYPE_P COND_EXPRs, instead fold the operands and if op0 is
+       INTEGER_CST, ensure that both op1 and op2 are non-NULL and fall
+       through into normal folding, otherwise just rebuild x if any op
+       changed.
+
+       * g++.dg/warn/pr81675.C: New test.
+
+2017-11-14  Boris Kolpackov  <boris@codesynthesis.com>
 
        * Make-lang.in (c++.install-plugin): Install backend import library.