@@ -120,6 +120,16 @@ endif()
120
120
if (MSVC )
121
121
set (USERCONFIG_PLATFORM "x64" )
122
122
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
+
123
133
if (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC )
124
134
append (CMAKE_CCXX_FLAGS "/MP" )
125
135
# increase number of sections in obj file
@@ -233,6 +243,11 @@ elseif(UNIX OR MINGW)
233
243
append (CMAKE_CCXX_FLAGS "-Wsign-compare" )
234
244
endif ()
235
245
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
+
236
251
platform_unix_and_mingw_common_ccxx_flags(CMAKE_CCXX_FLAGS)
237
252
platform_unix_and_mingw_common_cxx_flags(CMAKE_CXX_FLAGS )
238
253
platform_unix_and_mingw_noexcept_ccxx_flags(CMAKE_CMAKE_CCXX_NOEXCEPT_FLAGS)
@@ -280,8 +295,11 @@ elseif(UNIX OR MINGW)
280
295
if (DNNL_USE_CLANG_SANITIZER STREQUAL "MemoryWithOrigin" )
281
296
append (CMAKE_CCXX_SANITIZER_FLAGS
282
297
"-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 ()
285
303
endif ()
286
304
set (DNNL_ENABLED_CLANG_SANITIZER "${DNNL_USE_CLANG_SANITIZER} " )
287
305
elseif (DNNL_USE_CLANG_SANITIZER STREQUAL "Undefined" )
@@ -306,7 +324,12 @@ elseif(UNIX OR MINGW)
306
324
message (STATUS
307
325
"Using Clang ${DNNL_ENABLED_CLANG_SANITIZER} "
308
326
"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
+
310
333
# Blacklist to ignore false-positive cases. Each case may be
311
334
# assigned to a specific sanitizer. See online doc for help.
312
335
append (CMAKE_CCXX_SANITIZER_FLAGS
@@ -437,9 +460,9 @@ if (DNNL_TARGET_ARCH STREQUAL "RV64")
437
460
# Check if the RVV Intrinsics can be compiled with the current toolchain and flags
438
461
include (CheckCXXSourceCompiles)
439
462
check_cxx_source_compiles("#include <riscv_vector.h>
440
- int main() {
463
+ int main() {
441
464
size_t size = 64;
442
- return vsetvl_e32m2(size);
465
+ return vsetvl_e32m2(size);
443
466
};"
444
467
CAN_COMPILE_RVV_INTRINSICS
445
468
)
0 commit comments