llvm/llvm-project
View on GitHubc11: Accepts ill-formed program with inline function definition containing modifiable variable with static storage duration.
Open
#39,524 opened on Dec 28, 2018
bugzillacclang:diagnosticsconfirmedgood first issue
Repository metrics
- Stars
- (26,378 stars)
- PR merge metrics
- (Avg merge 1d 2h) (1,000 merged PRs in 30d)
Description
| Bugzilla Link | 40177 |
| Version | trunk |
| OS | All |
| CC | @hfinkel,@zygoloid |
Extended Description
Test case (prog.c):
inline void f() { static int x; }
int main() { }
Compilation command line:
clang prog.c -Wall -Wextra -std=c11 -pedantic-errors
Observed behaviour:
No error message outputed. Only a warning message outputed.
Expected behaviour:
An error message outputed.
The program violates 6.7.4/3:
"An inline definition of a function with external linkage shall not contain
a definition of a modifiable object with static or thread storage duration,
and shall not contain a reference to an identifier with internal linkage."
Since -pedantic-errors is used we should get an error instead of a warning.
Note:
GCC gives the expected error message.