aboutsummaryrefslogtreecommitdiff
path: root/gcc/c/c-tree.h
diff options
context:
space:
mode:
authorMartin Uecker <uecker@tugraz.at>2023-11-15 09:22:55 +0100
committerMartin Uecker <uecker@tugraz.at>2023-12-11 23:20:02 +0100
commit6cf9654c3b06c076502a39a3bf2222dd6e43b73b (patch)
treef6f44656e328c4b3e35dbc49f8a74f0c24df48e5 /gcc/c/c-tree.h
parent453e0f45a49f425992bc47ff8909ed8affc29d2e (diff)
downloadgcc-6cf9654c3b06c076502a39a3bf2222dd6e43b73b.zip
gcc-6cf9654c3b06c076502a39a3bf2222dd6e43b73b.tar.gz
gcc-6cf9654c3b06c076502a39a3bf2222dd6e43b73b.tar.bz2
Fix regression causing ICE for structs with VLAs [PR 112488]
A previous patch that fixed several ICEs related to size expressions of VM types (PR c/70418, ...) caused a regression for structs where a DECL_EXPR is not generated anymore although reqired. We now call add_decl_expr introduced by the previous patch from finish_struct. The function is revised with a new argument to not set the TYPE_NAME for the type to the DECL_EXPR in this specific case. PR c/112488 gcc/c * c-decl.cc (add_decl_expr): Revise. (finish_struct): Create DECL_EXPR. * c-parser.cc (c_parser_struct_or_union_specifier): Call finish_struct with expression for VLA sizes. * c-tree.h (finish_struct): Add argument. gcc/testsuite * gcc.dg/pr112488-1.c: New test. * gcc.dg/pr112488-2.c: New test. * gcc.dg/pr112898.c: New test. * gcc.misc-tests/gcov-pr85350.c: Adapt.
Diffstat (limited to 'gcc/c/c-tree.h')
-rw-r--r--gcc/c/c-tree.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h
index d0bdc3d..b325723 100644
--- a/gcc/c/c-tree.h
+++ b/gcc/c/c-tree.h
@@ -656,7 +656,8 @@ extern void finish_decl (tree, location_t, tree, tree, tree);
extern tree finish_enum (tree, tree, tree);
extern void finish_function (location_t = input_location);
extern tree finish_struct (location_t, tree, tree, tree,
- class c_struct_parse_info *);
+ class c_struct_parse_info *,
+ tree *expr = NULL);
extern tree c_simulate_enum_decl (location_t, const char *,
vec<string_int_pair> *);
extern tree c_simulate_record_decl (location_t, const char *,