diff options
author | Martin Uecker <uecker@tugraz.at> | 2025-01-06 15:32:16 +0100 |
---|---|---|
committer | Martin Uecker <uecker@gcc.gnu.org> | 2025-01-09 21:53:28 +0100 |
commit | 21571cdd8355f2162910d40f2f72222d2dd4046f (patch) | |
tree | add5fff3395c805e45e2976b338a8e4635cc8bfd /gcc | |
parent | 681934aead9c1310e3b910d18986b76272168a80 (diff) | |
download | gcc-21571cdd8355f2162910d40f2f72222d2dd4046f.zip gcc-21571cdd8355f2162910d40f2f72222d2dd4046f.tar.gz gcc-21571cdd8355f2162910d40f2f72222d2dd4046f.tar.bz2 |
c: Restore warning for incomplete structures declared in parameter list [PR117866]
In C23 mode the warning about declaring structures and union in
parameter lists was removed, because it is possible to redeclare
a compatible type elsewhere. This is not the case for incomplete types,
so restore the warning for those types.
PR c/117866
gcc/c/ChangeLog:
* c-decl.cc (get_parm_info): Change condition for warning.
gcc/testsuite/ChangeLog:
* gcc.dg/pr117866.c: New test.
* gcc.dg/strub-pr118007.c: Adapt.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c/c-decl.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr117866.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/strub-pr118007.c | 2 |
3 files changed, 7 insertions, 2 deletions
diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc index f60b2a5..56d1388 100644 --- a/gcc/c/c-decl.cc +++ b/gcc/c/c-decl.cc @@ -8677,7 +8677,7 @@ get_parm_info (bool ellipsis, tree expr) if (b->id) { /* The %s will be one of 'struct', 'union', or 'enum'. */ - if (!flag_isoc23) + if (!flag_isoc23 || !COMPLETE_TYPE_P (decl)) warning_at (b->locus, 0, "%<%s %E%> declared inside parameter list" " will not be visible outside of this definition or" diff --git a/gcc/testsuite/gcc.dg/pr117866.c b/gcc/testsuite/gcc.dg/pr117866.c new file mode 100644 index 0000000..3caf707 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr117866.c @@ -0,0 +1,5 @@ +/* { dg-do compile } */ +/* { dg-options "-std=c23" } */ + +void convert(struct fractpoint *pt); /* { dg-warning "declared inside parameter list" } */ + diff --git a/gcc/testsuite/gcc.dg/strub-pr118007.c b/gcc/testsuite/gcc.dg/strub-pr118007.c index 6c24cad..51f4824 100644 --- a/gcc/testsuite/gcc.dg/strub-pr118007.c +++ b/gcc/testsuite/gcc.dg/strub-pr118007.c @@ -2,4 +2,4 @@ /* { dg-do compile } */ /* { dg-options "-fstrub=all -O2" } */ -void rb_ec_error_print(struct rb_execution_context_struct *volatile) {} +void rb_ec_error_print(struct rb_execution_context_struct *volatile) {} /* { dg-warning "declared inside parameter list" } */ |