brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 4d01a08 Raw
28 lines · plain
1# Workaround for MSVC ARM64 performance regression:2# https://developercommunity.visualstudio.com/t/Compiling-a-specific-code-for-ARM64-with/104449703# Since /O1 and /O2 represent a set of optimizations,4# our goal is to disable the /Og flag while retaining the other optimizations from the /O1|/O2 set5if(MSVC AND NOT CMAKE_CXX_COMPILER_ID MATCHES Clang6    AND MSVC_VERSION VERSION_GREATER_EQUAL 19327    AND MSVC_VERSION VERSION_LESS 19398    AND CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64")9 10  string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)11  string(REGEX MATCHALL "/[Oo][12]" opt_flags "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE}}")12  if (opt_flags)13    if(opt_flags MATCHES "1$")14      set(opt_flags "/Od;/Os;/Oy;/Ob2;/GF;/Gy")15    elseif (opt_flags MATCHES "2$")16      set(opt_flags "/Od;/Oi;/Ot;/Oy;/Ob2;/GF;/Gy")17    endif()18    set_source_files_properties(StandardLibrary.cpp PROPERTIES COMPILE_OPTIONS "${opt_flags}")19  endif()20endif()21 22add_clang_library(clangToolingInclusionsStdlib23  StandardLibrary.cpp24 25  LINK_LIBS26  clangAST27  )28