1set(LLVM_LINK_COMPONENTS 2 AggressiveInstCombine 3 Analysis 4 BitReader 5 BitWriter 6 CodeGenTypes 7 Core 8 Coroutines 9 Coverage 10 Demangle 11 Extensions 12 FrontendDriver 13 FrontendHLSL 14 FrontendOpenMP 15 FrontendOffloading 16 HIPStdPar 17 IPO 18 IRPrinter 19 IRReader 20 InstCombine 21 Instrumentation 22 LTO 23 Linker 24 MC 25 ObjCARCOpts 26 Object 27 Passes 28 ProfileData 29 ScalarOpts 30 Support 31 Target 32 TargetParser 33 TransformUtils 34 ) 35 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 40if(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") 44 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}}") 47 if (opt_flags) 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") 52 endif() 53 set_source_files_properties(CGBuiltin.cpp PROPERTIES COMPILE_OPTIONS "${opt_flags}") 54 endif() 55endif() 56 57add_clang_library(clangCodeGen 58 ABIInfo.cpp 59 ABIInfoImpl.cpp 60 BackendUtil.cpp 61 CGAtomic.cpp 62 CGBlocks.cpp 63 CGBuiltin.cpp 64 CGCUDANV.cpp 65 CGCUDARuntime.cpp 66 CGCXX.cpp 67 CGCXXABI.cpp 68 CGCall.cpp 69 CGClass.cpp 70 CGCleanup.cpp 71 CGCoroutine.cpp 72 CGDebugInfo.cpp 73 CGDecl.cpp 74 CGDeclCXX.cpp 75 CGException.cpp 76 CGExpr.cpp 77 CGExprAgg.cpp 78 CGExprCXX.cpp 79 CGExprComplex.cpp 80 CGExprConstant.cpp 81 CGExprScalar.cpp 82 CGGPUBuiltin.cpp 83 CGHLSLRuntime.cpp 84 CGLoopInfo.cpp 85 CGNonTrivialStruct.cpp 86 CGObjC.cpp 87 CGObjCGNU.cpp 88 CGObjCMac.cpp 89 CGObjCRuntime.cpp 90 CGOpenCLRuntime.cpp 91 CGOpenMPRuntime.cpp 92 CGOpenMPRuntimeGPU.cpp 93 CGPointerAuth.cpp 94 CGRecordLayoutBuilder.cpp 95 CGStmt.cpp 96 CGStmtOpenMP.cpp 97 CGVTT.cpp 98 CGVTables.cpp 99 CodeGenABITypes.cpp 100 CodeGenAction.cpp 101 CodeGenFunction.cpp 102 CodeGenModule.cpp 103 CodeGenPGO.cpp 104 CodeGenTBAA.cpp 105 CodeGenTypes.cpp 106 ConstantInitBuilder.cpp 107 CoverageMappingGen.cpp 108 ItaniumCXXABI.cpp 109 LinkInModulesPass.cpp 110 MacroPPCallbacks.cpp 111 MicrosoftCXXABI.cpp 112 ModuleBuilder.cpp 113 ObjectFilePCHContainerWriter.cpp 114 PatternInit.cpp 115 SanitizerMetadata.cpp 116 SwiftCallingConv.cpp 117 TargetInfo.cpp 118 Targets/AArch64.cpp 119 Targets/AMDGPU.cpp 120 Targets/ARC.cpp 121 Targets/ARM.cpp 122 Targets/AVR.cpp 123 Targets/BPF.cpp 124 Targets/CSKY.cpp 125 Targets/DirectX.cpp 126 Targets/Hexagon.cpp 127 Targets/Lanai.cpp 128 Targets/LoongArch.cpp 129 Targets/M68k.cpp 130 Targets/MSP430.cpp 131 Targets/Mips.cpp 132 Targets/NVPTX.cpp 133 Targets/PNaCl.cpp 134 Targets/PPC.cpp 135 Targets/RISCV.cpp 136 Targets/SPIR.cpp 137 Targets/Sparc.cpp 138 Targets/SystemZ.cpp 139 Targets/TCE.cpp 140 Targets/VE.cpp 141 Targets/WebAssembly.cpp 142 Targets/X86.cpp 143 Targets/XCore.cpp 144 VarBypassDetector.cpp 145 146 DEPENDS 147 vt_gen 148 intrinsics_gen 149 ClangDriverOptions 150 # These generated headers are included transitively. 151 ARMTargetParserTableGen 152 AArch64TargetParserTableGen 153 154 LINK_LIBS 155 clangAST 156 clangAnalysis 157 clangBasic 158 clangFrontend 159 clangLex 160 clangSerialization 161 ) 162