https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102821
Bug ID: 102821 Summary: Tentative definition of variable with internal linkage has incomplete non-array type: missing diagnostics Product: gcc Version: 11.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: pavel.morozkin at gmail dot com Target Milestone: --- Sample code (t940.c): static struct s foo; static struct s {int a;} foo; Invocation: $ gcc t940.c -c -std=c11 -pedantic -Wall -Wextra -Wno-unused-variable Expected diagnostics: t940.c:1:17: warning: tentative definition of variable with internal linkage has incomplete non-array type 'struct s' [-Wtentative-definition-incomplete-type] Actual diagnostics: <nothing> Notes: 1. C11, 6.9.2 External object definitions, 3: > If the declaration of an identifier for an object is a tentative definition > and has internal linkage, the declared type shall not be an incomplete type. 2. C11, 4. Conformance, 1: > In this International Standard, ‘‘shall’’ is to be interpreted as a > requirement on an implementation or on a program; conversely, ‘‘shall not’’ > is to be interpreted as a prohibition.