aboutsummaryrefslogtreecommitdiff
path: root/gcc/c/c-parser.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2021-06-24 15:58:02 +0200
committerJakub Jelinek <jakub@redhat.com>2021-06-24 15:58:02 +0200
commit178fb8df9315f2f8f45b7fe5faf11a9c2912cc28 (patch)
tree77b7f56ba08c34edeab910ebbaedfb6918da183c /gcc/c/c-parser.c
parentfdc5522fb04b4a820b28c4d1f16f54897f5978de (diff)
downloadgcc-178fb8df9315f2f8f45b7fe5faf11a9c2912cc28.zip
gcc-178fb8df9315f2f8f45b7fe5faf11a9c2912cc28.tar.gz
gcc-178fb8df9315f2f8f45b7fe5faf11a9c2912cc28.tar.bz2
c: Fix up c_parser_has_attribute_expression [PR101176]
This function keeps src_range member of the result uninitialized, which at least under valgrind can show up later when those uninitialized location_t's can make it into the IL or location_t hash tables. 2021-06-24 Jakub Jelinek <jakub@redhat.com> PR c/101176 * c-parser.c (c_parser_has_attribute_expression): Set source range for the result.
Diffstat (limited to 'gcc/c/c-parser.c')
-rw-r--r--gcc/c/c-parser.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index c0f7020..27034f8 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -8406,6 +8406,7 @@ c_parser_has_attribute_expression (c_parser *parser)
{
gcc_assert (c_parser_next_token_is_keyword (parser,
RID_BUILTIN_HAS_ATTRIBUTE));
+ location_t start = c_parser_peek_token (parser)->location;
c_parser_consume_token (parser);
c_inhibit_evaluation_warnings++;
@@ -8484,6 +8485,7 @@ c_parser_has_attribute_expression (c_parser *parser)
parser->translate_strings_p = save_translate_strings_p;
+ location_t finish = c_parser_peek_token (parser)->location;
if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
c_parser_consume_token (parser);
else
@@ -8512,6 +8514,7 @@ c_parser_has_attribute_expression (c_parser *parser)
else
result.value = boolean_false_node;
+ set_c_expr_source_range (&result, start, finish);
return result;
}