aboutsummaryrefslogtreecommitdiff
path: root/gcc/c/c-fold.c
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2021-06-24 15:35:20 -0600
committerMartin Sebor <msebor@redhat.com>2021-06-24 19:23:43 -0600
commit1ebd2b2c9407796cd526137038b9b885f68ffb4d (patch)
tree3cad29c233769e764d045ba8383bcd16df07bb04 /gcc/c/c-fold.c
parent7036e9ef462fde8181bece4ac4e03f3aa27204dc (diff)
downloadgcc-1ebd2b2c9407796cd526137038b9b885f68ffb4d.zip
gcc-1ebd2b2c9407796cd526137038b9b885f68ffb4d.tar.gz
gcc-1ebd2b2c9407796cd526137038b9b885f68ffb4d.tar.bz2
c: add support for per-location warning groups.
gcc/ChangeLog: * tree.h (warning_suppressed_at, copy_warning, warning_suppressed_p, suppress_warning): New functions. gcc/c/ChangeLog: * c-decl.c (pop_scope): Replace direct uses of TREE_NO_WARNING with warning_suppressed_p, suppress_warning, and copy_no_warning. (diagnose_mismatched_decls): Same. (duplicate_decls): Same. (grokdeclarator): Same. (finish_function): Same. (c_write_global_declarations_1): Same. * c-fold.c (c_fully_fold_internal): Same. * c-parser.c (c_parser_expr_no_commas): Same. (c_parser_postfix_expression): Same. * c-typeck.c (array_to_pointer_conversion): Same. (function_to_pointer_conversion): Same. (default_function_array_conversion): Same. (convert_lvalue_to_rvalue): Same. (default_conversion): Same. (build_indirect_ref): Same. (build_function_call_vec): Same. (build_atomic_assign): Same. (build_unary_op): Same. (c_finish_return): Same. (emit_side_effect_warnings): Same. (c_finish_stmt_expr): Same. (c_omp_clause_copy_ctor): Same.
Diffstat (limited to 'gcc/c/c-fold.c')
-rw-r--r--gcc/c/c-fold.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/c/c-fold.c b/gcc/c/c-fold.c
index 68c74cc..0ebcb46 100644
--- a/gcc/c/c-fold.c
+++ b/gcc/c/c-fold.c
@@ -154,7 +154,7 @@ c_fully_fold_internal (tree expr, bool in_init, bool *maybe_const_operands,
tree orig_op0, orig_op1, orig_op2;
bool op0_const = true, op1_const = true, op2_const = true;
bool op0_const_self = true, op1_const_self = true, op2_const_self = true;
- bool nowarning = TREE_NO_WARNING (expr);
+ bool nowarning = warning_suppressed_p (expr, OPT_Woverflow);
bool unused_p;
bool op0_lval = false;
source_range old_range;
@@ -670,13 +670,13 @@ c_fully_fold_internal (tree expr, bool in_init, bool *maybe_const_operands,
out:
/* Some folding may introduce NON_LVALUE_EXPRs; all lvalue checks
have been done by this point, so remove them again. */
- nowarning |= TREE_NO_WARNING (ret);
+ nowarning |= warning_suppressed_p (ret, OPT_Woverflow);
STRIP_TYPE_NOPS (ret);
- if (nowarning && !TREE_NO_WARNING (ret))
+ if (nowarning && !warning_suppressed_p (ret, OPT_Woverflow))
{
if (!CAN_HAVE_LOCATION_P (ret))
ret = build1 (NOP_EXPR, TREE_TYPE (ret), ret);
- TREE_NO_WARNING (ret) = 1;
+ suppress_warning (ret, OPT_Woverflow);
}
if (ret != expr)
{