aboutsummaryrefslogtreecommitdiff
path: root/gcc/c/c-parser.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-02-24 21:41:54 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2017-02-24 21:41:54 +0100
commit4227c9adf01d5ada5eb7c868aa104167c2a01983 (patch)
tree29e5c16f08052689b4d790b7167660e37137ba27 /gcc/c/c-parser.c
parent5713d448534698c8ac23aa52f015b2c88185cb40 (diff)
downloadgcc-4227c9adf01d5ada5eb7c868aa104167c2a01983.zip
gcc-4227c9adf01d5ada5eb7c868aa104167c2a01983.tar.gz
gcc-4227c9adf01d5ada5eb7c868aa104167c2a01983.tar.bz2
re PR c++/79588 (ICE in warn_for_restrict with -Wrestrict)
PR c++/79588 c-family/ * c-common.c (check_function_restrict): New function. (check_function_arguments): Add FNDECL argument. Call check_function_restrict if -Wrestrict. * c-warn.c (warn_for_restrict): Remove ARGS argument, add ARGARRAY and NARGS. Use auto_vec for ARG_POSITIONS, simplify. * c-common.h (check_function_arguments): Add FNDECL argument. (warn_for_restrict): Remove ARGS argument, add ARGARRAY and NARGS. c/ * c-parser.c (c_parser_postfix_expression_after_primary): Don't handle -Wrestrict here. * c-typeck.c (build_function_call_vec): Adjust check_function_arguments caller. cp/ * call.c (build_over_call): Call check_function_arguments even for -Wrestrict, adjust check_function_arguments caller. * parser.c (cp_parser_postfix_expression): Don't handle -Wrestrict here. * typeck.c (cp_build_function_call_vec): Adjust check_function_arguments caller. testsuite/ * g++.dg/warn/Wrestrict-1.C: New test. * g++.dg/warn/Wrestrict-2.C: New test. From-SVN: r245719
Diffstat (limited to 'gcc/c/c-parser.c')
-rw-r--r--gcc/c/c-parser.c22
1 files changed, 0 insertions, 22 deletions
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index 968c1dc..34585b9 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -8418,28 +8418,6 @@ c_parser_postfix_expression_after_primary (c_parser *parser,
warn_for_memset (expr_loc, arg0, arg2, literal_zero_mask);
}
- if (TREE_CODE (expr.value) == FUNCTION_DECL && warn_restrict)
- {
- unsigned i;
- tree arg;
- FOR_EACH_VEC_SAFE_ELT (exprlist, i, arg)
- TREE_VISITED (arg) = 0;
-
- unsigned param_pos = 0;
- function_args_iterator iter;
- tree t;
- FOREACH_FUNCTION_ARGS (TREE_TYPE (expr.value), t, iter)
- {
- if (POINTER_TYPE_P (t) && TYPE_RESTRICT (t)
- && !TYPE_READONLY (TREE_TYPE (t)))
- warn_for_restrict (param_pos, exprlist);
- param_pos++;
- }
-
- FOR_EACH_VEC_SAFE_ELT (exprlist, i, arg)
- TREE_VISITED (arg) = 0;
- }
-
start = expr.get_start ();
finish = parser->tokens_buf[0].get_finish ();
expr.value