mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
Stop the ad-hoc games with -Wno-maybe-initialized
commit 78a5255ffb6a1af189a83e493d916ba1c54d8c75 upstream. We have some rather random rules about when we accept the "maybe-initialized" warnings, and when we don't. For example, we consider it unreliable for gcc versions < 4.9, but also if -O3 is enabled, or if optimizing for size. And then various kernel config options disabled it, because they know that they trigger that warning by confusing gcc sufficiently (ie PROFILE_ALL_BRANCHES). And now gcc-10 seems to be introducing a lot of those warnings too, so it falls under the same heading as 4.9 did. At the same time, we have a very straightforward way to _enable_ that warning when wanted: use "W=2" to enable more warnings. So stop playing these ad-hoc games, and just disable that warning by default, with the known and straight-forward "if you want to work on the extra compiler warnings, use W=123". Would it be great to have code that is always so obvious that it never confuses the compiler whether a variable is used initialized or not? Yes, it would. In a perfect world, the compilers would be smarter, and our source code would be simpler. That's currently not the world we live in, though. Signed-off-by: Linus Torvalds <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
parent
ab638a49a9
commit
8f6a84167e
3 changed files with 3 additions and 23 deletions
18
init/Kconfig
18
init/Kconfig
|
|
@ -36,22 +36,6 @@ config TOOLS_SUPPORT_RELR
|
|||
config CC_HAS_ASM_INLINE
|
||||
def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
|
||||
|
||||
config CC_HAS_WARN_MAYBE_UNINITIALIZED
|
||||
def_bool $(cc-option,-Wmaybe-uninitialized)
|
||||
help
|
||||
GCC >= 4.7 supports this option.
|
||||
|
||||
config CC_DISABLE_WARN_MAYBE_UNINITIALIZED
|
||||
bool
|
||||
depends on CC_HAS_WARN_MAYBE_UNINITIALIZED
|
||||
default CC_IS_GCC && GCC_VERSION < 40900 # unreliable for GCC < 4.9
|
||||
help
|
||||
GCC's -Wmaybe-uninitialized is not reliable by definition.
|
||||
Lots of false positive warnings are produced in some cases.
|
||||
|
||||
If this option is enabled, -Wno-maybe-uninitialzed is passed
|
||||
to the compiler to suppress maybe-uninitialized warnings.
|
||||
|
||||
config CONSTRUCTORS
|
||||
bool
|
||||
depends on !UML
|
||||
|
|
@ -1226,14 +1210,12 @@ config CC_OPTIMIZE_FOR_PERFORMANCE
|
|||
config CC_OPTIMIZE_FOR_PERFORMANCE_O3
|
||||
bool "Optimize more for performance (-O3)"
|
||||
depends on ARC
|
||||
imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED # avoid false positives
|
||||
help
|
||||
Choosing this option will pass "-O3" to your compiler to optimize
|
||||
the kernel yet more for performance.
|
||||
|
||||
config CC_OPTIMIZE_FOR_SIZE
|
||||
bool "Optimize for size (-Os)"
|
||||
imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED # avoid false positives
|
||||
help
|
||||
Choosing this option will pass "-Os" to your compiler resulting
|
||||
in a smaller kernel.
|
||||
|
|
|
|||
Loading…
Reference in a new issue