int main (void) { int i = 2; inline int bar (void) { return i; } return bar () - 2; } doesn't link with -O0 -std=gnu99, works with -O0 -std=gnu99 -fgnu89-inline, or -O1 -std=gnu99, or -O0 -std=gnu89. As extern inline for nested function is rejected, I believe we need to avoid clearing DECL_EXTERNAL for nested inline functions.
-- Summary: [4.3/4.4 Regression] ISO C99 inline semantics doesn't play together with nested functions Product: gcc Version: 4.3.1 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=36507