mirror of
https://github.com/git/git
synced 2024-11-05 18:59:29 +00:00
a219a6739c
Having now removed or annotated all of the unused function parameters in our code base, I found that each instance falls into one of three categories: 1. ignoring the parameter is a bug (e.g., a function takes a ptr/len pair, but ignores the length). Detecting these helps us find the bugs. 2. the parameter is unnecessary (and usually left over from a refactoring or earlier iteration of a patches series). Removing these cleans up the code. 3. the function has to conform to a specific interface (because it's used via a function pointer, or matches something on the other side of an #ifdef). These ones are annoying, but annotating them with UNUSED is not too bad (especially if the compiler tells you about the problem promptly). Certainly instances of (3) are more common than (1), but after finding all of these, I think there were enough cases of (1) that it justifies the work in annotating all of the (3)s. And since the code base is now at a spot where we compile cleanly with -Wunused-parameter, turning it on will make it the responsibility of individual patch writers going forward. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
102 lines
3.3 KiB
Text
102 lines
3.3 KiB
Text
ifndef COMPILER_FEATURES
|
|
COMPILER_FEATURES := $(shell ./detect-compiler $(CC))
|
|
endif
|
|
|
|
ifeq ($(filter no-error,$(DEVOPTS)),)
|
|
DEVELOPER_CFLAGS += -Werror
|
|
SPARSE_FLAGS += -Wsparse-error
|
|
endif
|
|
|
|
DEVELOPER_CFLAGS += -Wall
|
|
ifeq ($(filter no-pedantic,$(DEVOPTS)),)
|
|
DEVELOPER_CFLAGS += -pedantic
|
|
ifneq ($(or $(filter gcc5,$(COMPILER_FEATURES)),$(filter clang4,$(COMPILER_FEATURES))),)
|
|
DEVELOPER_CFLAGS += -Wpedantic
|
|
ifneq ($(filter gcc10,$(COMPILER_FEATURES)),)
|
|
ifeq ($(uname_S),MINGW)
|
|
DEVELOPER_CFLAGS += -Wno-pedantic-ms-format
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq ($(uname_S),FreeBSD)
|
|
ifneq ($(or $(filter gcc6,$(COMPILER_FEATURES)),$(filter clang7,$(COMPILER_FEATURES))),)
|
|
DEVELOPER_CFLAGS += -std=gnu99
|
|
endif
|
|
else
|
|
# FreeBSD cannot limit to C99 because its system headers unconditionally
|
|
# rely on C11 features.
|
|
endif
|
|
|
|
DEVELOPER_CFLAGS += -Wdeclaration-after-statement
|
|
DEVELOPER_CFLAGS += -Wformat-security
|
|
DEVELOPER_CFLAGS += -Wold-style-definition
|
|
DEVELOPER_CFLAGS += -Woverflow
|
|
DEVELOPER_CFLAGS += -Wpointer-arith
|
|
DEVELOPER_CFLAGS += -Wstrict-prototypes
|
|
DEVELOPER_CFLAGS += -Wunused
|
|
DEVELOPER_CFLAGS += -Wvla
|
|
DEVELOPER_CFLAGS += -Wwrite-strings
|
|
DEVELOPER_CFLAGS += -fno-common
|
|
|
|
ifneq ($(filter clang4,$(COMPILER_FEATURES)),)
|
|
DEVELOPER_CFLAGS += -Wtautological-constant-out-of-range-compare
|
|
endif
|
|
|
|
ifneq ($(or $(filter gcc6,$(COMPILER_FEATURES)),$(filter clang4,$(COMPILER_FEATURES))),)
|
|
DEVELOPER_CFLAGS += -Wextra
|
|
# if a function is public, there should be a prototype and the right
|
|
# header file should be included. If not, it should be static.
|
|
DEVELOPER_CFLAGS += -Wmissing-prototypes
|
|
ifeq ($(filter extra-all,$(DEVOPTS)),)
|
|
# These are disabled because we have these all over the place.
|
|
DEVELOPER_CFLAGS += -Wno-empty-body
|
|
DEVELOPER_CFLAGS += -Wno-missing-field-initializers
|
|
DEVELOPER_CFLAGS += -Wno-sign-compare
|
|
endif
|
|
endif
|
|
|
|
# uninitialized warnings on gcc 4.9.2 in xdiff/xdiffi.c and config.c
|
|
# not worth fixing since newer compilers correctly stop complaining
|
|
#
|
|
# Likewise, gcc older than 4.9 complains about initializing a
|
|
# struct-within-a-struct using just "{ 0 }"
|
|
ifneq ($(filter gcc4,$(COMPILER_FEATURES)),)
|
|
ifeq ($(filter gcc5,$(COMPILER_FEATURES)),)
|
|
DEVELOPER_CFLAGS += -Wno-uninitialized
|
|
DEVELOPER_CFLAGS += -Wno-missing-braces
|
|
endif
|
|
endif
|
|
|
|
# Old versions of clang complain about initializaing a
|
|
# struct-within-a-struct using just "{0}" rather than "{{0}}". This
|
|
# error is considered a false-positive and not worth fixing, because
|
|
# new clang versions do not, so just disable it.
|
|
#
|
|
# The "bug" was fixed in upstream clang 9.
|
|
#
|
|
# Complicating this is that versions of clang released by Apple have
|
|
# their own version numbers (associated with the corresponding version
|
|
# of XCode) unrelated to the official clang version numbers.
|
|
#
|
|
# The bug was fixed in Apple clang 12.
|
|
#
|
|
ifneq ($(filter clang1,$(COMPILER_FEATURES)),) # if we are using clang
|
|
ifeq ($(uname_S),Darwin) # if we are on darwin
|
|
ifeq ($(filter clang12,$(COMPILER_FEATURES)),) # if version < 12
|
|
DEVELOPER_CFLAGS += -Wno-missing-braces
|
|
endif
|
|
else # not darwin
|
|
ifeq ($(filter clang9,$(COMPILER_FEATURES)),) # if version < 9
|
|
DEVELOPER_CFLAGS += -Wno-missing-braces
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=2075786
|
|
ifneq ($(filter gcc12,$(COMPILER_FEATURES)),)
|
|
DEVELOPER_CFLAGS += -Wno-error=stringop-overread
|
|
endif
|
|
|
|
GIT_TEST_PERL_FATAL_WARNINGS = YesPlease
|