mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Disable "maybe-uninitialized" warning globally
Several build configurations had already disabled this warning because it generates a lot of false positives. But some had not, and it was still enabled for "allmodconfig" builds, for example. Looking at the warnings produced, every single one I looked at was a false positive, and the warnings are frequent enough (and big enough) that they can easily hide real problems that you don't notice in the noise generated by -Wmaybe-uninitialized. The warning is good in theory, but this is a classic case of a warning that causes more problems than the warning can solve. If gcc gets better at avoiding false positives, we may be able to re-enable this warning. But as is, we're better off without it, and I want to be able to see the *real* warnings. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									468fc7ed55
								
							
						
					
					
						commit
						6e8d666e92
					
				
					 3 changed files with 5 additions and 10 deletions
				
			
		
							
								
								
									
										7
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								Makefile
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -370,7 +370,7 @@ LDFLAGS_MODULE  =
 | 
			
		|||
CFLAGS_KERNEL	=
 | 
			
		||||
AFLAGS_KERNEL	=
 | 
			
		||||
LDFLAGS_vmlinux =
 | 
			
		||||
CFLAGS_GCOV	= -fprofile-arcs -ftest-coverage -fno-tree-loop-im -Wno-maybe-uninitialized
 | 
			
		||||
CFLAGS_GCOV	= -fprofile-arcs -ftest-coverage -fno-tree-loop-im
 | 
			
		||||
CFLAGS_KCOV	= -fsanitize-coverage=trace-pc
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -619,12 +619,13 @@ ARCH_CFLAGS :=
 | 
			
		|||
include arch/$(SRCARCH)/Makefile
 | 
			
		||||
 | 
			
		||||
KBUILD_CFLAGS	+= $(call cc-option,-fno-delete-null-pointer-checks,)
 | 
			
		||||
KBUILD_CFLAGS	+= $(call cc-disable-warning,maybe-uninitialized,)
 | 
			
		||||
 | 
			
		||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
 | 
			
		||||
KBUILD_CFLAGS	+= -Os $(call cc-disable-warning,maybe-uninitialized,)
 | 
			
		||||
KBUILD_CFLAGS	+= -Os
 | 
			
		||||
else
 | 
			
		||||
ifdef CONFIG_PROFILE_ALL_BRANCHES
 | 
			
		||||
KBUILD_CFLAGS	+= -O2 $(call cc-disable-warning,maybe-uninitialized,)
 | 
			
		||||
KBUILD_CFLAGS	+= -O2
 | 
			
		||||
else
 | 
			
		||||
KBUILD_CFLAGS   += -O2
 | 
			
		||||
endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,9 +74,7 @@ endif
 | 
			
		|||
ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
 | 
			
		||||
# Generic build system uses -O2, we want -O3
 | 
			
		||||
# Note: No need to add to cflags-y as that happens anyways
 | 
			
		||||
#
 | 
			
		||||
# Disable the false maybe-uninitialized warings gcc spits out at -O3
 | 
			
		||||
ARCH_CFLAGS += -O3 $(call cc-disable-warning,maybe-uninitialized,)
 | 
			
		||||
ARCH_CFLAGS += -O3
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# small data is default for elf32 tool-chain. If not usable, disable it
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,8 +14,4 @@ ifdef CONFIG_UBSAN
 | 
			
		|||
ifdef CONFIG_UBSAN_ALIGNMENT
 | 
			
		||||
      CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
      # -fsanitize=* options makes GCC less smart than usual and
 | 
			
		||||
      # increase number of 'maybe-uninitialized false-positives
 | 
			
		||||
      CFLAGS_UBSAN += $(call cc-option, -Wno-maybe-uninitialized)
 | 
			
		||||
endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue