From ae6c306e39080de59a8535cf1797b27951dcaa6c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mika=20Isoj=C3=A4rvi?= Date: Wed, 16 Mar 2016 19:00:59 -0700 Subject: [PATCH] Turn on well defined signed integer overflow clang and gcc assume that signed integers never overflow. This leads to unexpected bugs when optimizer removes bound checks etc. Bug: 27703278 Bug: 22715185 Change-Id: Iab4c884fa190d05c0ac9236d01eeeb190e765e69 --- Android.mk | 2 +- framework/delibs/cmake/CFlags.cmake | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Android.mk b/Android.mk index 3baf349..e02deff 100644 --- a/Android.mk +++ b/Android.mk @@ -895,7 +895,7 @@ LOCAL_CFLAGS += \ $(deqp_compile_flags) LOCAL_SDK_VERSION := 9 -LOCAL_CPPFLAGS += -Wno-non-virtual-dtor +LOCAL_CPPFLAGS += -Wno-non-virtual-dtor -fwrapv LOCAL_NDK_STL_VARIANT := gnustl_static LOCAL_RTTI_FLAG := -frtti -fexceptions LOCAL_MULTILIB := both diff --git a/framework/delibs/cmake/CFlags.cmake b/framework/delibs/cmake/CFlags.cmake index ff25740..98f0252 100644 --- a/framework/delibs/cmake/CFlags.cmake +++ b/framework/delibs/cmake/CFlags.cmake @@ -49,6 +49,10 @@ if (DE_COMPILER_IS_GCC OR DE_COMPILER_IS_CLANG) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TARGET_FLAGS} ${WARNING_FLAGS} -ansi -pedantic ") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TARGET_FLAGS} ${WARNING_FLAGS}") + # Force compiler to generate code where integers have well defined overflow + # Turn on -Wstrict-overflow=5 and check all warnings before removing + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fwrapv") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fwrapv") elseif (DE_COMPILER_IS_MSC) # Compiler flags for msc -- 2.7.4