On Sat, Apr 2, 2011 at 7:49 PM, Dan McGee <dpmcgee@gmail.com> wrote:
On Sat, Apr 2, 2011 at 12:17 PM, Xavier Chantry <chantry.xavier@gmail.com> wrote:
I am just curious, what do we need this flag for ?
Searching commits, it wasn't too hard to find this, although I don't know the full context or relevance. Not sure if it was just a GCC bug at the time?
commit d8e88aa0175fd950d007578ea0690952f49247f1 Author: Dan McGee <dan@archlinux.org> Date: Tue Jun 5 17:32:09 2007 -0400
Fix compilation with GCC 4.2.0
'inline' keyword in C99 is not correctly recognized, so compilation fails on the warning it spits. This fixes this.
Signed-off-by: Dan McGee <dan@archlinux.org>
I also see this in the GCC 4.2.0 release notes, which is surely what I was referring to at the time:
In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct GCC to handle inline functions as specified in the C99 standard. In preparation for this, GCC 4.2 will warn about any use of non-static inline functions in gnu99 or c99 mode. This new warning may be disabled with the new gnu_inline function attribute or the new -fgnu89-inline command-line option. Also, GCC 4.2 and later will define one of the preprocessor macros __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__ to indicate the semantics of inline functions in the current compilation.
So now the question is whether you still want to support gcc 4.2 ? You are always much more conservative than I am :)
Anyway it looks like we could use -std=gnu89 alternatively ? ... which brings to another topic that was brought recently on the ML : I tried to build with that and got a lot of warnings :) ../../lib/libalpm/alpm.h:396:29: warning: commas at the end of enumerator lists are a C99-specific feature [-pedantic] pacman.c:1201:8: warning: ISO C90 forbids mixing declarations and code [-Wdeclaration-after-statement] util.c:797:8: warning: variable declaration in for loop is a C99-specific feature [-pedantic]
How many are there; did you just trim the list down? If it is easy to fix then we might think about doing so.
Yes there were many in total, several of each. IMO warning 1 and 3 are must-have c99 features so I am for using these everywhere and certainly not for removing them :) I am fine with fixing declaration-after-statement, and IIRC there were just a few.