diff options
author | Jakub Jelinek <jakub@redhat.com> | 2021-06-24 15:58:02 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2021-06-24 15:58:02 +0200 |
commit | 178fb8df9315f2f8f45b7fe5faf11a9c2912cc28 (patch) | |
tree | 77b7f56ba08c34edeab910ebbaedfb6918da183c /gcc/c/c-parser.c | |
parent | fdc5522fb04b4a820b28c4d1f16f54897f5978de (diff) | |
download | gcc-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.c | 3 |
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; } |