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.

Reply via email to