From 0815e2fdb15f27e4b62196d7b2725b0b235c9c6b Mon Sep 17 00:00:00 2001 From: Sebastian Parborg Date: Thu, 14 Jan 2021 17:32:21 +0100 Subject: Fix automated tests when building with GCC and march=native When building with more aggressive optimization flags, GCC will add FMA (Fused Multiply Add) instructions that will slightly alter the floating point operation results. This causes some automated tests to fail in blender. In clang and the intel compiler ffp-contract is set to off per default it seems from my research. (They do not have the exact same setting, but the default seems to match the off behavior) Reviewed By: Brecht Differential Revision: http://developer.blender.org/D9047 --- build_files/cmake/platform/platform_unix.cmake | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'build_files') diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index b304e89d74f..abacd0500e5 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -610,7 +610,13 @@ endif() # GNU Compiler if(CMAKE_COMPILER_IS_GNUCC) - set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") + # ffp-contract=off: + # Automatically turned on when building with "-march=native". This is + # explicitly turned off here as it will make floating point math give a bit + # different results. This will lead to automated test failures. So disable + # this until we support it. Seems to default to off in clang and the intel + # compiler. + set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing -ffp-contract=off") # `maybe-uninitialized` is unreliable in release builds, but fine in debug builds. set(GCC_EXTRA_FLAGS_RELEASE "-Wno-maybe-uninitialized") -- cgit v1.2.3