[Bug c/35017] New: [4.3 Regression] PR11377 pedwarns even about valid code

jakub at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue Jan 29 15:25:00 GMT 2008


http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=118357 introduced pedwarns
about any static decls in external linkage inline functions, but ISO C99
6.4.7/3
has:
"An inline definition of a function with external linkage shall not contain a
definition of a modifiable object with static storage duration, and shall not
contain a reference to an identifier with internal linkage."
In -std=c99:

inline int foo (void) { static const int c = 6; return c; }

the static variable c isn't modifiable, so the first condition doesn't apply,
and from 6.2.2 I gather c has no linkage rather than internal linkage and so
the other condition doesn't apply either.

In -std=c99:

static const int c = 6;
inline int foo (void) { return c; }

I believe c has internal linkage and thus it is invalid (and therefore
correctly diagnosed by the trunk).


-- 
           Summary: [4.3 Regression] PR11377 pedwarns even about valid code
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jakub at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35017



More information about the Gcc-bugs mailing list