Fix ICE with -g and -std=c23 when forming composite types [PR113438]
Set TYPE_STUB_DECL to an artificial decl when creating a new structure as a composite type. PR c/113438 gcc/c/ * c-typeck.cc (composite_type_internal): Set TYPE_STUB_DECL. gcc/testsuite/ * gcc.dg/pr113438.c: New test.
This commit is contained in:
parent
3fed1609f6
commit
f6ba433d3c
2 changed files with 12 additions and 0 deletions
|
@ -585,6 +585,11 @@ composite_type_internal (tree t1, tree t2, struct composite_cache* cache)
|
|||
/* Setup the struct/union type. Because we inherit all variably
|
||||
modified components, we can ignore the size expression. */
|
||||
tree expr = NULL_TREE;
|
||||
|
||||
/* Set TYPE_STUB_DECL for debugging symbols. */
|
||||
TYPE_STUB_DECL (n) = pushdecl (build_decl (input_location, TYPE_DECL,
|
||||
NULL_TREE, n));
|
||||
|
||||
n = finish_struct(input_location, n, fields, attributes, NULL, &expr);
|
||||
|
||||
n = qualify_type (n, t1);
|
||||
|
|
7
gcc/testsuite/gcc.dg/pr113438.c
Normal file
7
gcc/testsuite/gcc.dg/pr113438.c
Normal file
|
@ -0,0 +1,7 @@
|
|||
/* PR113438
|
||||
* { dg-do compile }
|
||||
* { dg-options "-std=c23 -g" } */
|
||||
|
||||
void g(struct foo { int x; } a);
|
||||
void g(struct foo { int x; } a);
|
||||
|
Loading…
Add table
Reference in a new issue