aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Uecker <uecker@tugraz.at>2025-01-06 15:32:16 +0100
committerMartin Uecker <uecker@gcc.gnu.org>2025-01-09 21:53:28 +0100
commit21571cdd8355f2162910d40f2f72222d2dd4046f (patch)
treeadd5fff3395c805e45e2976b338a8e4635cc8bfd /gcc
parent681934aead9c1310e3b910d18986b76272168a80 (diff)
downloadgcc-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.cc2
-rw-r--r--gcc/testsuite/gcc.dg/pr117866.c5
-rw-r--r--gcc/testsuite/gcc.dg/strub-pr118007.c2
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" } */