From 9fc67236c36ff4ad804b12bf7932eb6d6ba3caba Mon Sep 17 00:00:00 2001
From: Timo Kersten <kersten@in.tum.de>
Date: Thu, 8 Nov 2018 10:26:54 +0100
Subject: [PATCH] Fixed: * Use O3 optimization level in Release and
 RelWithDebInfo builds * Use address sanitizer only in Debug build

---
 .clang-format  |  4 ----
 CMakeLists.txt | 11 ++++++++++-
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/.clang-format b/.clang-format
index e25220b..8aeea26 100644
--- a/.clang-format
+++ b/.clang-format
@@ -92,10 +92,6 @@ PenaltyBreakString: 1000
 PenaltyExcessCharacter: 1000000
 PenaltyReturnTypeOnItsOwnLine: 200
 PointerAlignment: Left
-RawStringFormats: 
-  - Delimiter:       pb
-    Language:        TextProto
-    BasedOnStyle:    google
 ReflowComments:  true
 SortIncludes:    true
 SortUsingDeclarations: true
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d7b1291..aaf1a69 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,8 +6,17 @@ set(CMAKE_CXX_COMPILER g++)
 set(CMAKE_CXX_STANDARD 17)
 
 # Compiler flags for the different targets
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fPIC -Wall -Wextra -fno-omit-frame-pointer -march=native -Wno-unknown-pragmas")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -fPIC -Wall -Wextra -fno-omit-frame-pointer -march=native -Wno-unknown-pragmas")
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fPIC -Wall -Wextra -fno-omit-frame-pointer -march=native")
+# Only use address sanitizer in debug builds
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -static-libasan")
+
+
+# Make sure we use O3 optimization level instead of O2
+string(REPLACE "-O2" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE}")
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} -O3")
+string(REPLACE "-O2" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3")
 
 find_package(Threads)
 
-- 
GitLab