1 set(LLVM_LINK_COMPONENTS
36 # Workaround for MSVC ARM64 performance regression:
37 # https://developercommunity.visualstudio.com/t/Compiling-a-specific-code-for-ARM64-with/10444970
38 # Since /O1 and /O2 represent a set of optimizations,
39 # our goal is to disable the /Og flag while retaining the other optimizations from the /O1|/O2 set
40 if(MSVC AND NOT CMAKE_CXX_COMPILER_ID MATCHES Clang
41 AND MSVC_VERSION VERSION_GREATER_EQUAL 1932
42 AND MSVC_VERSION VERSION_LESS 1939
43 AND CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64")
45 string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
46 string(REGEX MATCHALL "/[Oo][12]" opt_flags "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE}}")
48 if(opt_flags MATCHES "1$")
49 set(opt_flags "/Od;/Os;/Oy;/Ob2;/GF;/Gy")
50 elseif (opt_flags MATCHES "2$")
51 set(opt_flags "/Od;/Oi;/Ot;/Oy;/Ob2;/GF;/Gy")
53 set_source_files_properties(CGBuiltin.cpp PROPERTIES COMPILE_OPTIONS "${opt_flags}")
57 add_clang_library(clangCodeGen
85 CGNonTrivialStruct.cpp
92 CGOpenMPRuntimeGPU.cpp
94 CGRecordLayoutBuilder.cpp
106 ConstantInitBuilder.cpp
107 CoverageMappingGen.cpp
109 LinkInModulesPass.cpp
113 ObjectFilePCHContainerWriter.cpp
115 SanitizerMetadata.cpp
128 Targets/LoongArch.cpp
141 Targets/WebAssembly.cpp
144 VarBypassDetector.cpp
150 # These generated headers are included transitively.
151 ARMTargetParserTableGen
152 AArch64TargetParserTableGen