Below is the complete list of the warning flags I use with Clang, the C frontend for LLVM.
I personally use those flags for all my production code, for C, C++ and Objective-C development.
Basically, all warning flags are activated. I had to look at the Clang source code to find all of them.
I also created a header file which automatically sets those flags, when compiling source code.
This way, whether you use an IDE or command-line to compile your code, you won't need anymore to set those flags, as long as you include the header.
It's available here on GitHub. Enjoy!
-Wabi
-Waddress-of-temporary
-Waddress
-Waggregate-return
-Wall
-Wambiguous-member-template
-Warc-abi
-Warc-non-pod-memaccess
-Warc-retain-cycles
-Warc-unsafe-retained-assign
-Warc
-Watomic-properties
-Wattributes
-Wavailability
-Wbad-function-cast
-Wbind-to-temporary-copy
-Wbitwise-op-parentheses
-Wbool-conversions
-Wbuiltin-macro-redefined
-Wc++-compat
-Wc++0x-compat
-Wc++0x-extensions
-Wcast-align
-Wcast-qual
-Wchar-align
-Wchar-subscripts
-Wcomment
-Wcomments
-Wconditional-uninitialized
-Wconversion
-Wctor-dtor-privacy
-Wcustom-atomic-properties
-Wdeclaration-after-statement
-Wdefault-arg-special-member
-Wdelegating-ctor-cycles
-Wdelete-non-virtual-dtor
-Wdeprecated-declarations
-Wdeprecated-implementations
-Wdeprecated-writable-strings
-Wdeprecated
-Wdisabled-optimization
-Wdiscard-qual
-Wdiv-by-zero
-Wduplicate-method-arg
-Weffc++
-Wempty-body
-Wendif-labels
-Wexit-time-destructors
-Wextra-tokens
-Wextra
-Wformat-extra-args
-Wformat-nonliteral
-Wformat-zero-length
-Wformat
-Wformat=2
-Wfour-char-constants
-Wglobal-constructors
-Wgnu-designator
-Wgnu
-Wheader-hygiene
-Widiomatic-parentheses
-Wignored-qualifiers
-Wimplicit-atomic-properties
-Wimplicit-function-declaration
-Wimplicit-int
-Wimplicit
-Wimport
-Wincompatible-pointer-types
-Winit-self
-Winitializer-overrides
-Winline
-Wint-to-pointer-cast
-Winvalid-offsetof
-Winvalid-pch
-Wlarge-by-value-copy
-Wliteral-range
-Wlocal-type-template-args
-Wlogical-op-parentheses
-Wlong-long
-Wmain
-Wmicrosoft
-Wmismatched-tags
-Wmissing-braces
-Wmissing-declarations
-Wmissing-field-initializers
-Wmissing-format-attribute
-Wmissing-include-dirs
-Wmissing-noreturn
-Wmost
-Wmultichar
-Wnested-externs
-Wnewline-eof
-Wnon-gcc
-Wnon-virtual-dtor
-Wnonfragile-abi2
-Wnonnull
-Wnonportable-cfstrings
-Wnull-dereference
-Wobjc-nonunified-exceptions
-Wold-style-cast
-Wold-style-definition
-Wout-of-line-declaration
-Woverflow
-Woverlength-strings
-Woverloaded-virtual
-Wpacked
-Wpadded
-Wparentheses
-Wpointer-arith
-Wpointer-to-int-cast
-Wprotocol
-Wreadonly-setter-attrs
-Wredundant-decls
-Wreorder
-Wreturn-type
-Wself-assign
-Wsemicolon-before-method-body
-Wsequence-point
-Wshadow
-Wshorten-64-to-32
-Wsign-compare
-Wsign-promo
-Wsizeof-array-argument
-Wstack-protector
-Wstrict-aliasing
-Wstrict-overflow
-Wstrict-prototypes
-Wstrict-selector-match
-Wsuper-class-method-mismatch
-Wswitch-default
-Wswitch-enum
-Wswitch
-Wsynth
-Wtautological-compare
-Wtrigraphs
-Wtype-limits
-Wundeclared-selector
-Wuninitialized
-Wunknown-pragmas
-Wunnamed-type-template-args
-Wunneeded-internal-declaration
-Wunneeded-member-function
-Wunused-argument
-Wunused-exception-parameter
-Wunused-function
-Wunused-label
-Wunused-member-function
-Wunused-parameter
-Wunused-value
-Wunused-variable
-Wunused
-Wused-but-marked-unused
-Wvariadic-macros
-Wvector-conversions
-Wvla
-Wvolatile-register-var
-Wwrite-strings