From 93c690eba8ca67b06925d811ea87765215401385 Mon Sep 17 00:00:00 2001 From: Justin Chadwell Date: Wed, 3 Jul 2019 14:15:56 +0100 Subject: [PATCH] Enable -Wshift-overflow=2 to check for undefined shift behavior The -Wshift-overflow=2 option enables checks for left bit shifts. Specifically, the option will warn when the result of a shift will be placed into a signed integer and overflow the sign bit there, which results in undefined behavior. To avoid the warnings from these checks, the left operand of a shift can be made an unsigned integer by using the U() macro or appending the u suffix. Change-Id: I50c67bedab86a9fdb6c87cfdc3e784f01a22d560 Signed-off-by: Justin Chadwell --- Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 471cf5982..c47309293 100644 --- a/Makefile +++ b/Makefile @@ -256,9 +256,14 @@ WARNINGS += -Wunused -Wno-unused-parameter \ -Wvla ifeq ($(findstring clang,$(notdir $(CC))),) +# not using clang WARNINGS += -Wunused-but-set-variable \ -Wmaybe-uninitialized \ - -Wpacked-bitfield-compat + -Wpacked-bitfield-compat \ + -Wshift-overflow=2 +else +# using clang +WARNINGS += -Wshift-overflow -Wshift-sign-overflow endif ifneq (${E},0)