Summary: | C99 6.7.4/3 is not diagnose | ||
---|---|---|---|
Product: | gcc | Reporter: | Andrew Pinski <pinskia> |
Component: | c | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED INVALID | ||
Severity: | normal | CC: | gcc-bugs |
Priority: | P3 | Keywords: | accepts-invalid |
Version: | 4.3.0 | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2008-01-11 09:28:29 | |
Bug Depends on: | |||
Bug Blocks: | 16989, 16622 |
Description
Andrew Pinski
2008-01-11 04:37:45 UTC
We do reject this though: static int a() { return 0; } inline int f(void) { return a(); } extern int f(void); Confirmed. The quoted paragraph does not apply to the first code example, because an "inline definition" is defined in paragraph 6 as: If all of the file scope declarations for a function in a translation unit include the inline function specifier without extern, then the definition in that translation unit is an inline definition. In this case, one of the declarations does not include the inline function specifier, so it's not an inline definition. I am unclear on how the standard is supposed to apply to the second example, but IMO we should give the warning anyway. |