------- Additional Comments From joseph at codesourcery dot com 2005-06-14 01:19 ------- Subject: Re: [4.0/4.1 Regression] redefinition of inline function succeeds
On Tue, 14 Jun 2005, echristo at redhat dot com wrote: > So, what you're saying is that we should accept this: > > extern inline int foo (void) { return 0; } > inline int foo (void) { return 1; } > > unless we're in strict c99 mode. A C99 conditional is pointless and possibly harmful for this case without the rest of C99 semantics, since "inline" and "extern inline" are (approximately) the other way round in C99 from in gnu89. (It's only approximate; for example, inline int foo (void) { return 1; } on its own is an inline definition only in C99 but inline int foo (void) { return 1; } int foo(void); yields an external definition in C99: any declaration of foo without inline or with extern causes it to be exported.) So, just accept all cases GCC has traditionally accepted here without regard to language version for now. > And reject this: > > static inline int foo (void) { return 0; } > static inline int foo (void) { return 1; } > > in all cases? Yes. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22052