llvm/llvm-project
在 GitHub 查看c11: Accepts ill-formed program with inline function definition containing modifiable variable with static storage duration.
Open
#39,524 建立於 2018年12月28日
bugzillacclang:diagnosticsconfirmedgood first issue
倉庫指標
- Star
- (26,378 star)
- PR 合併指標
- (平均合併 1天 2小時) (30 天內合併 1,000 個 PR)
描述
| 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.