Skip to content

Commit 385d498

Browse files
committed
build: cmake: x64: enabling frame pointers
1 parent ee131d3 commit 385d498

File tree

1 file changed

+28
-5
lines changed

1 file changed

+28
-5
lines changed

cmake/platform.cmake

+28-5
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,16 @@ endif()
120120
if(MSVC)
121121
set(USERCONFIG_PLATFORM "x64")
122122
append_if(DNNL_WERROR CMAKE_CCXX_FLAGS "/WX")
123+
124+
# Generating frame pointers for easier performance profiling
125+
if(DNNL_TARGET_ARCH STREQUAL "X64")
126+
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
127+
append(CMAKE_CCXX_FLAGS "-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer")
128+
else()
129+
append(CMAKE_CCXX_FLAGS "/Oy-")
130+
endif()
131+
endif()
132+
123133
if(${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
124134
append(CMAKE_CCXX_FLAGS "/MP")
125135
# increase number of sections in obj file
@@ -233,6 +243,11 @@ elseif(UNIX OR MINGW)
233243
append(CMAKE_CCXX_FLAGS "-Wsign-compare")
234244
endif()
235245

246+
# Generating frame pointers for easier performance profiling
247+
if(DNNL_TARGET_ARCH STREQUAL "X64")
248+
append(CMAKE_CCXX_FLAGS "-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer")
249+
endif()
250+
236251
platform_unix_and_mingw_common_ccxx_flags(CMAKE_CCXX_FLAGS)
237252
platform_unix_and_mingw_common_cxx_flags(CMAKE_CXX_FLAGS)
238253
platform_unix_and_mingw_noexcept_ccxx_flags(CMAKE_CMAKE_CCXX_NOEXCEPT_FLAGS)
@@ -280,8 +295,11 @@ elseif(UNIX OR MINGW)
280295
if(DNNL_USE_CLANG_SANITIZER STREQUAL "MemoryWithOrigin")
281296
append(CMAKE_CCXX_SANITIZER_FLAGS
282297
"-fsanitize-memory-track-origins=2")
283-
append(CMAKE_CCXX_SANITIZER_FLAGS
284-
"-fno-omit-frame-pointer")
298+
# Already enabled for x64
299+
if(NOT DNNL_TARGET_ARCH STREQUAL "X64")
300+
append(CMAKE_CCXX_SANITIZER_FLAGS
301+
"-fno-omit-frame-pointer")
302+
endif()
285303
endif()
286304
set(DNNL_ENABLED_CLANG_SANITIZER "${DNNL_USE_CLANG_SANITIZER}")
287305
elseif(DNNL_USE_CLANG_SANITIZER STREQUAL "Undefined")
@@ -306,7 +324,12 @@ elseif(UNIX OR MINGW)
306324
message(STATUS
307325
"Using Clang ${DNNL_ENABLED_CLANG_SANITIZER} "
308326
"sanitizer (experimental!)")
309-
append(CMAKE_CCXX_SANITIZER_FLAGS "-g -fno-omit-frame-pointer")
327+
append(CMAKE_CCXX_SANITIZER_FLAGS "-g")
328+
# Already enabled for x64
329+
if(NOT DNNL_TARGET_ARCH STREQUAL "X64")
330+
append(CMAKE_CCXX_SANITIZER_FLAGS "-fno-omit-frame-pointer")
331+
endif()
332+
310333
# Blacklist to ignore false-positive cases. Each case may be
311334
# assigned to a specific sanitizer. See online doc for help.
312335
append(CMAKE_CCXX_SANITIZER_FLAGS
@@ -437,9 +460,9 @@ if (DNNL_TARGET_ARCH STREQUAL "RV64")
437460
# Check if the RVV Intrinsics can be compiled with the current toolchain and flags
438461
include(CheckCXXSourceCompiles)
439462
check_cxx_source_compiles("#include <riscv_vector.h>
440-
int main() {
463+
int main() {
441464
size_t size = 64;
442-
return vsetvl_e32m2(size);
465+
return vsetvl_e32m2(size);
443466
};"
444467
CAN_COMPILE_RVV_INTRINSICS
445468
)

0 commit comments

Comments
 (0)