File tree Expand file tree Collapse file tree 2 files changed +40
-0
lines changed
Tooling/Inclusions/Stdlib Expand file tree Collapse file tree 2 files changed +40
-0
lines changed Original file line number Diff line number Diff line change @@ -27,6 +27,26 @@ set(LLVM_LINK_COMPONENTS
2727 TransformUtils
2828 )
2929
30+ # Workaround for MSVC ARM64 performance regression:
31+ # https://developercommunity.visualstudio.com/t/Compiling-a-specific-code-for-ARM64-with/10444970
32+ # Since /O1 and /O2 represent a set of optimizations,
33+ # our goal is to disable the /Og flag while retaining the other optimizations from the /O1|/O2 set
34+ if (MSVC AND NOT CMAKE_CXX_COMPILER_ID MATCHES Clang
35+ AND MSVC_VERSION VERSION_GREATER_EQUAL 1932
36+ AND CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64" )
37+
38+ string (TOUPPER "${CMAKE_BUILD_TYPE} " uppercase_CMAKE_BUILD_TYPE)
39+ string (REGEX MATCHALL "/[Oo][12]" opt_flags "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE} }" )
40+ if (opt_flags)
41+ if (opt_flags MATCHES "1$" )
42+ set (opt_flags "/Od;/Os;/Oy;/Ob2;/GF;/Gy" )
43+ elseif (opt_flags MATCHES "2$" )
44+ set (opt_flags "/Od;/Oi;/Ot;/Oy;/Ob2;/GF;/Gy" )
45+ endif ()
46+ set_source_files_properties (CGBuiltin.cpp PROPERTIES COMPILE_OPTIONS "${opt_flags} " )
47+ endif ()
48+ endif ()
49+
3050add_clang_library(clangCodeGen
3151 BackendUtil.cpp
3252 CGAtomic.cpp
Original file line number Diff line number Diff line change 1+ # Workaround for MSVC ARM64 performance regression:
2+ # https://developercommunity.visualstudio.com/t/Compiling-a-specific-code-for-ARM64-with/10444970
3+ # 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 set
5+ if (MSVC AND NOT CMAKE_CXX_COMPILER_ID MATCHES Clang
6+ AND MSVC_VERSION VERSION_GREATER_EQUAL 1932
7+ AND CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64" )
8+
9+ string (TOUPPER "${CMAKE_BUILD_TYPE} " uppercase_CMAKE_BUILD_TYPE)
10+ string (REGEX MATCHALL "/[Oo][12]" opt_flags "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE} }" )
11+ if (opt_flags)
12+ if (opt_flags MATCHES "1$" )
13+ set (opt_flags "/Od;/Os;/Oy;/Ob2;/GF;/Gy" )
14+ elseif (opt_flags MATCHES "2$" )
15+ set (opt_flags "/Od;/Oi;/Ot;/Oy;/Ob2;/GF;/Gy" )
16+ endif ()
17+ set_source_files_properties (StandardLibrary.cpp PROPERTIES COMPILE_OPTIONS "${opt_flags} " )
18+ endif ()
19+ endif ()
20+
121add_clang_library(clangToolingInclusionsStdlib
222 StandardLibrary.cpp
323
You can’t perform that action at this time.
0 commit comments