On 6/23/21 11:15 PM, Jeff Law wrote:


On 6/4/2021 3:43 PM, Martin Sebor via Gcc-patches wrote:
The attached patch introduces declarations of the new
suppress_warning(), warning_suppressed_p(), and copy_warning() APIs,
and replaces the uses of TREE_NO_WARNING in the middle end with them.

gcc-no-warning-middle-end.diff

Add support for per-location warning groups.

gcc/ChangeLog:

        * builtins.c (warn_string_no_nul): Replace uses of TREE_NO_WARNING,
        gimple_no_warning_p and gimple_set_no_warning with
        warning_suppressed_p, and suppress_warning.
        (c_strlen): Same.
        (maybe_warn_for_bound): Same.
        (warn_for_access): Same.
        (check_access): Same.
        (expand_builtin_strncmp): Same.
        (fold_builtin_varargs): Same.
        * calls.c (maybe_warn_nonstring_arg): Same.
        (maybe_warn_rdwr_sizes): Same.
        * cfgexpand.c (expand_call_stmt): Same.
        * cgraphunit.c (check_global_declaration): Same.
        * fold-const.c (fold_undefer_overflow_warnings): Same.
        (fold_truth_not_expr): Same.
        (fold_unary_loc): Same.
        (fold_checksum_tree): Same.
        * gengtype.c (open_base_files): Same.
        * gimple-array-bounds.cc (array_bounds_checker::check_array_ref): Same.
        (array_bounds_checker::check_mem_ref): Same.
        (array_bounds_checker::check_addr_expr): Same.
        (array_bounds_checker::check_array_bounds): Same.
        * gimple-expr.c (copy_var_decl): Same.
        * gimple-fold.c (gimple_fold_builtin_strcpy): Same.
        (gimple_fold_builtin_strncat): Same.
        (gimple_fold_builtin_stxcpy_chk): Same.
        (gimple_fold_builtin_stpcpy): Same.
        (gimple_fold_builtin_sprintf): Same.
        (fold_stmt_1): Same.
        * gimple-ssa-isolate-paths.c (diag_returned_locals): Same.
        * gimple-ssa-nonnull-compare.c (do_warn_nonnull_compare): Same.
        * gimple-ssa-sprintf.c (handle_printf_call): Same.
        * gimple-ssa-store-merging.c 
(imm_store_chain_info::output_merged_store): Same.
        * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Same.
        (maybe_diag_access_bounds): Same.
        (check_call): Same.
        (check_bounds_or_overlap): Same.
        * gimple.c (gimple_build_call_from_tree): Same.
        * gimplify.c (gimplify_return_expr): Same.
        (gimplify_cond_expr): Same.
        (gimplify_modify_expr_complex_part): Same.
        (gimplify_modify_expr): Same.
        (gimple_push_cleanup): Same.
        (gimplify_expr): Same.
        * omp-expand.c (expand_omp_for_generic): Same.
        (expand_omp_taskloop_for_outer): Same.
        * omp-low.c (lower_rec_input_clauses): Same.
        (lower_lastprivate_clauses): Same.
        (lower_send_clauses): Same.
        (lower_omp_target): Same.
        * tree-cfg.c (pass_warn_function_return::execute): Same.
        * tree-complex.c (create_one_component_var): Same.
        * tree-inline.c (remap_gimple_op_r): Same.
        (copy_tree_body_r): Same.
        (declare_return_variable): Same.
        (expand_call_inline): Same.
        * tree-nested.c (lookup_field_for_decl): Same.
        * tree-sra.c (create_access_replacement): Same.
        (generate_subtree_copies): Same.
        * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Same.
        * tree-ssa-forwprop.c (combine_cond_expr_cond): Same.
        * tree-ssa-loop-ch.c (ch_base::copy_headers): Same.
        * tree-ssa-loop-im.c (execute_sm): Same.
        * tree-ssa-phiopt.c (cond_store_replacement): Same.
        * tree-ssa-strlen.c (maybe_warn_overflow): Same.
        (handle_builtin_strcpy): Same.
        (maybe_diag_stxncpy_trunc): Same.
        (handle_builtin_stxncpy_strncat): Same.
        (handle_builtin_strcat): Same.
        * tree-ssa-uninit.c (get_no_uninit_warning): Same.
        (set_no_uninit_warning): Same.
        (uninit_undefined_value_p): Same.
        (warn_uninit): Same.
        (maybe_warn_operand): Same.
        * tree-vrp.c (compare_values_warnv): Same.
        * vr-values.c (vr_values::extract_range_for_var_from_comparison_expr): 
Same.
        (test_for_singularity): Same.

        * gimple.h (warning_suppressed_p): New function.
        (suppress_warning): Same.
        (copy_no_warning): Same.
        (gimple_set_block): Call gimple_set_location.
        (gimple_set_location): Call copy_warning.
        * tree.h (no_warning, all_warnings): New constants.
        (warning_suppressed_p): New function.
        (suppress_warning): Same.
        (copy_no_warning): Same.
OK once prereqs are approved.

jeff


Retested on top patch 1 plus the C and C++ bits and pushed r12-1805.
I'll do the rest of the approved patches tomorrow.

Martin

Reply via email to