diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e0d0e309c8071a..3ca5d77b2961eb 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -12,69 +12,69 @@ https://github.com/dotnet/wcf 7f504aabb1988e9a093c1e74d8040bd52feb2f01 - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - 76f334f354eb653a7b409a5319b591ea09df5a43 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - 76f334f354eb653a7b409a5319b591ea09df5a43 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - 76f334f354eb653a7b409a5319b591ea09df5a43 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - 76f334f354eb653a7b409a5319b591ea09df5a43 + bd3acea90cae502d9a62164b863708d57d7993bc https://github.com/dotnet/command-line-api @@ -238,45 +238,45 @@ https://github.com/dotnet/runtime-assets f8fb817328383c60534d11d57fd884d3b527d6c2 - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc - + https://github.com/dotnet/llvm-project - ac5ae64268db036eb394ed3f4d3f41775e251c58 + bd3acea90cae502d9a62164b863708d57d7993bc https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index 5f81f25b9c5a8e..95ca08ca62d1c9 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -105,14 +105,14 @@ 6.0.0 8.0.0-preview.7.23325.2 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 1.0.0-alpha.1.23106.1 - 1.0.0-alpha.1.23106.1 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 6.0.0 1.1.1 @@ -217,16 +217,16 @@ 2.1.7 8.0.0-alpha.1.23180.2 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 14.0.0-alpha.1.23326.1 - 1.0.0-alpha.1.23106.1 - 1.0.0-alpha.1.23106.1 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 + 16.0.5-alpha.1.23330.2 3.1.7 1.0.406601 diff --git a/eng/pipelines/common/global-build-job.yml b/eng/pipelines/common/global-build-job.yml index cf93d34062b7da..ccf969e5b57641 100644 --- a/eng/pipelines/common/global-build-job.yml +++ b/eng/pipelines/common/global-build-job.yml @@ -86,12 +86,6 @@ jobs: - name: ROOTFS_DIR value: ${{ parameters.jobParameters.crossrootfsDir }} - - name: _cxx11Parameter - ${{ if and(eq(parameters.osGroup, 'linux'), eq(parameters.archType, 'arm64')) }}: - value: /p:MonoLLVMUseCxx11Abi=true - ${{ if and(eq(parameters.osGroup, 'linux'), not(eq(parameters.archType, 'arm64'))) }}: - value: /p:MonoLLVMUseCxx11Abi=false - - name: _officialBuildParameter ${{ if eq(parameters.isOfficialBuild, true) }}: value: /p:OfficialBuildId=$(Build.BuildNumber) @@ -190,7 +184,7 @@ jobs: - task: CodeQL3000Init@0 displayName: Initialize CodeQL (manually-injected) - - script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -ci -arch ${{ parameters.archType }} $(_osParameter) $(crossArg) ${{ parameters.buildArgs }} $(_officialBuildParameter) $(_cxx11Parameter) $(_buildDarwinFrameworksParameter) $(_overrideTestScriptWindowsCmdParameter) + - script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -ci -arch ${{ parameters.archType }} $(_osParameter) $(crossArg) ${{ parameters.buildArgs }} $(_officialBuildParameter) $(_buildDarwinFrameworksParameter) $(_overrideTestScriptWindowsCmdParameter) displayName: Build product ${{ if eq(parameters.useContinueOnErrorDuringBuild, true) }}: continueOnError: ${{ parameters.shouldContinueOnError }} diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml index e531acb6384159..3da6cc22300cd7 100644 --- a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml +++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml @@ -50,7 +50,6 @@ steps: /p:BuildMonoAotCrossCompilerOnly=true /p:MonoLibClang="/usr/local/lib/libclang.so.16" /p:MonoAOTEnableLLVM=true - /p:MonoAOTLLVMUseCxx11Abi=true /p:CrossBuild=true displayName: "Build Mono LLVM AOT cross compiler" diff --git a/eng/pipelines/common/templates/runtimes/run-test-job.yml b/eng/pipelines/common/templates/runtimes/run-test-job.yml index 296ac081a0440d..766783e00c7933 100644 --- a/eng/pipelines/common/templates/runtimes/run-test-job.yml +++ b/eng/pipelines/common/templates/runtimes/run-test-job.yml @@ -293,7 +293,6 @@ jobs: /p:BuildMonoAotCrossCompilerOnly=true /p:MonoLibClang="/usr/local/lib/libclang.so.16" /p:MonoAOTEnableLLVM=true - /p:MonoAOTLLVMUseCxx11Abi=true displayName: "Build Mono LLVM AOT cross compiler" - ${{ if and(eq(parameters.runtimeFlavor, 'mono'), or(eq(parameters.runtimeVariant, 'llvmaot'), eq(parameters.runtimeVariant, 'llvmfullaot'))) }}: diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-other.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-other.yml index ca2aed4c166c0d..40f75bfbd7c9a6 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-other.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-other.yml @@ -334,7 +334,7 @@ jobs: testGroup: innerloop nameSuffix: AllSubsets_Mono_LLVMFullAot_RuntimeTests runtimeVariant: llvmfullaot - buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true timeoutInMinutes: 300 condition: >- diff --git a/eng/pipelines/mono/templates/build-job.yml b/eng/pipelines/mono/templates/build-job.yml index 2c3fc2c45cf1ce..b1ac9c1cc6554e 100644 --- a/eng/pipelines/mono/templates/build-job.yml +++ b/eng/pipelines/mono/templates/build-job.yml @@ -104,15 +104,12 @@ jobs: value: wasm - name: osOverride value: '-os wasi' - - ${{ if and(eq(parameters.osGroup, 'linux'), not(eq(parameters.archType, 'x64'))) }}: - name: llvmCxxAbi - value: /p:MonoLLVMUseCxx11Abi=true - ${{ if eq(parameters.runtimeVariant, 'llvmjit') }}: - name: llvmParameter - value: /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false $(llvmCxxAbi) + value: /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - ${{ if eq(parameters.runtimeVariant, 'llvmaot') }}: - name: llvmParameter - value: /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true $(llvmCxxAbi) + value: /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - ${{ if gt(length(parameters.monoCrossAOTTargetOS),0) }}: - name: aotCrossParameter value: /p:MonoCrossAOTTargetOS=${{join('+',parameters.monoCrossAOTTargetOS)}} /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true diff --git a/eng/pipelines/runtime-official.yml b/eng/pipelines/runtime-official.yml index 9aa97b9034a3c1..3e3d3431a35a07 100644 --- a/eng/pipelines/runtime-official.yml +++ b/eng/pipelines/runtime-official.yml @@ -157,7 +157,7 @@ extends: - windows_x86 # - windows_arm64 jobParameters: - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) /p:BuildMonoAOTCrossCompiler=false nameSuffix: AllSubsets_Mono isOfficialBuild: ${{ variables.isOfficialBuild }} extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 4731612916c658..b97d380610af0a 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1225,7 +1225,7 @@ extends: testGroup: innerloop nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests runtimeVariant: llvmaot - buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true /p:MonoLLVMUseCxx11Abi=true + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true timeoutInMinutes: 180 condition: >- diff --git a/src/coreclr/tools/SuperFileCheck/SuperFileCheck.csproj b/src/coreclr/tools/SuperFileCheck/SuperFileCheck.csproj index 7c76b9fa817b42..b954034a29b220 100644 --- a/src/coreclr/tools/SuperFileCheck/SuperFileCheck.csproj +++ b/src/coreclr/tools/SuperFileCheck/SuperFileCheck.csproj @@ -23,10 +23,6 @@ linux - - osx.10.12 - osx.11.0 - x64 arm64 @@ -38,8 +34,8 @@ $(runtimelinuxmuslx64MicrosoftNETCoreRuntimeJITToolsVersion) $(runtimewinarm64MicrosoftNETCoreRuntimeJITToolsVersion) $(runtimewinx64MicrosoftNETCoreRuntimeJITToolsVersion) - $(runtimeosx110arm64MicrosoftNETCoreRuntimeJITToolsVersion) - $(runtimeosx1012x64MicrosoftNETCoreRuntimeJITToolsVersion) + $(runtimeosxarm64MicrosoftNETCoreRuntimeJITToolsVersion) + $(runtimeosxx64MicrosoftNETCoreRuntimeJITToolsVersion) diff --git a/src/coreclr/tools/aot/ILCompiler/ILCompiler.props b/src/coreclr/tools/aot/ILCompiler/ILCompiler.props index 247c50653e20b8..17c95600f15e76 100644 --- a/src/coreclr/tools/aot/ILCompiler/ILCompiler.props +++ b/src/coreclr/tools/aot/ILCompiler/ILCompiler.props @@ -33,10 +33,6 @@ linux - - osx.10.12 - osx.11.0 - $(ObjWriterRidWithoutPlatform)-$(ObjWriterRidPlatform) $(runtimelinuxarm64MicrosoftNETCoreRuntimeObjWriterVersion) @@ -45,8 +41,8 @@ $(runtimelinuxmuslx64MicrosoftNETCoreRuntimeObjWriterVersion) $(runtimewinarm64MicrosoftNETCoreRuntimeObjWriterVersion) $(runtimewinx64MicrosoftNETCoreRuntimeObjWriterVersion) - $(runtimeosx110arm64MicrosoftNETCoreRuntimeObjWriterVersion) - $(runtimeosx1012x64MicrosoftNETCoreRuntimeObjWriterVersion) + $(runtimeosxarm64MicrosoftNETCoreRuntimeObjWriterVersion) + $(runtimeosxx64MicrosoftNETCoreRuntimeObjWriterVersion) $(runtimefreebsdx64MicrosoftNETCoreRuntimeObjWriterVersion) $(runtimefreebsdarm64MicrosoftNETCoreRuntimeObjWriterVersion) diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props index 36ee8d1a757104..f13859dc199322 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props @@ -199,6 +199,9 @@ + + + diff --git a/src/mono/CMakeLists.txt b/src/mono/CMakeLists.txt index 97c2ac015caf4d..a351ab717d0b28 100644 --- a/src/mono/CMakeLists.txt +++ b/src/mono/CMakeLists.txt @@ -602,27 +602,58 @@ if(LLVM_PREFIX) set(MONO_llvm_core_libs "LLVMOrcJIT" "LLVMPasses" "LLVMCoroutines" "LLVMipo" "LLVMInstrumentation" "LLVMVectorize" "LLVMScalarOpts" "LLVMLinker" "LLVMIRReader" "LLVMAsmParser" "LLVMInstCombine" "LLVMFrontendOpenMP" "LLVMAggressiveInstCombine" "LLVMTransformUtils" "LLVMJITLink" "LLVMMCJIT" "LLVMExecutionEngine" "LLVMTarget" "LLVMRuntimeDyld" "LLVMBitWriter" "LLVMAnalysis" "LLVMProfileData" "LLVMObject" "LLVMTextAPI" "LLVMMCParser" "LLVMMC" "LLVMDebugInfoCodeView" "LLVMBitReader" "LLVMCore" "LLVMRemarks" "LLVMBitstreamReader" "LLVMBinaryFormat" "LLVMSupport" "LLVMDemangle") if(${llvm_api_version} LESS 1200) set(MONO_llvm_core_libs ${MONO_llvm_core_libs} "LLVMOrcError" "LLVMDebugInfoMSF") - else() + elseif(${llvm_api_version} LESS 1600) set(MONO_llvm_core_libs ${MONO_llvm_core_libs} "LLVMObjCARCOpts" "LLVMMCDisassembler" "LLVMOrcTargetProcess" "LLVMOrcShared" "LLVMDebugInfoDWARF") + else() + set(MONO_llvm_core_libs ${MONO_llvm_core_libs} "LLVMIRPrinter" "LLVMCodeGen" "LLVMObjCARCOpts" "LLVMMCDisassembler" "LLVMWindowsDriver" "LLVMOption" "LLVMOrcTargetProcess" "LLVMOrcShared" "LLVMSymbolize" "LLVMDebugInfoPDB" "LLVMDebugInfoMSF" "LLVMDebugInfoDWARF" "LLVMTargetParser") endif() # llvm-config --libs x86codegen set(MONO_llvm_extra_libs_x86codegen "LLVMX86CodeGen" "LLVMCFGuard" "LLVMGlobalISel" "LLVMX86Desc" "LLVMX86Info" "LLVMMCDisassembler" "LLVMSelectionDAG" "LLVMAsmPrinter" "LLVMDebugInfoDWARF" "LLVMCodeGen" "LLVMTarget" "LLVMScalarOpts" "LLVMInstCombine" "LLVMAggressiveInstCombine" "LLVMTransformUtils" "LLVMBitWriter" "LLVMAnalysis" "LLVMProfileData" "LLVMObject" "LLVMTextAPI" "LLVMMCParser" "LLVMMC" "LLVMDebugInfoCodeView" "LLVMDebugInfoMSF" "LLVMBitReader" "LLVMCore" "LLVMRemarks" "LLVMBitstreamReader" "LLVMBinaryFormat" "LLVMSupport" "LLVMDemangle") + if(${llvm_api_version} GREATER_EQUAL 1600) + set(MONO_llvm_extra_libs_x86codegen ${MONO_llvm_extra_libs_x86codegen} "LLVMInstrumentation" "LLVMObjCARCOpts" "LLVMSymbolize" "LLVMDebugInfoPDB" "LLVMIRReader" "LLVMAsmParser" "LLVMTargetParser") + endif() # llvm-config --libs armcodegen set(MONO_llvm_extra_libs_armcodegen "LLVMARMCodeGen" "LLVMCFGuard" "LLVMGlobalISel" "LLVMSelectionDAG" "LLVMAsmPrinter" "LLVMDebugInfoDWARF" "LLVMCodeGen" "LLVMTarget" "LLVMScalarOpts" "LLVMInstCombine" "LLVMAggressiveInstCombine" "LLVMTransformUtils" "LLVMBitWriter" "LLVMAnalysis" "LLVMProfileData" "LLVMObject" "LLVMTextAPI" "LLVMMCParser" "LLVMBitReader" "LLVMCore" "LLVMRemarks" "LLVMBitstreamReader" "LLVMARMDesc" "LLVMMCDisassembler" "LLVMMC" "LLVMDebugInfoCodeView" "LLVMDebugInfoMSF" "LLVMBinaryFormat" "LLVMARMUtils" "LLVMARMInfo" "LLVMSupport" "LLVMDemangle") + if(${llvm_api_version} GREATER_EQUAL 1600) + set(MONO_llvm_extra_libs_armcodegen ${MONO_llvm_extra_libs_armcodegen} "LLVMipo" "LLVMInstrumentation" "LLVMVectorize" "LLVMLinker" "LLVMFrontendOpenMP" "LLVMObjCARCOpts" "LLVMSymbolize" "LLVMDebugInfoPDB" "LLVMIRReader" "LLVMAsmParser" "LLVMTargetParser") + endif() # llvm-config --libs aarch64codegen set(MONO_llvm_extra_libs_aarch64codegen "LLVMAArch64CodeGen" "LLVMCFGuard" "LLVMGlobalISel" "LLVMSelectionDAG" "LLVMAsmPrinter" "LLVMDebugInfoDWARF" "LLVMCodeGen" "LLVMTarget" "LLVMScalarOpts" "LLVMInstCombine" "LLVMAggressiveInstCombine" "LLVMTransformUtils" "LLVMBitWriter" "LLVMAnalysis" "LLVMProfileData" "LLVMObject" "LLVMTextAPI" "LLVMMCParser" "LLVMBitReader" "LLVMCore" "LLVMRemarks" "LLVMBitstreamReader" "LLVMAArch64Desc" "LLVMMC" "LLVMDebugInfoCodeView" "LLVMDebugInfoMSF" "LLVMBinaryFormat" "LLVMAArch64Utils" "LLVMAArch64Info" "LLVMSupport" "LLVMDemangle") + if(${llvm_api_version} GREATER_EQUAL 1600) + set(MONO_llvm_extra_libs_aarch64codegen ${MONO_llvm_extra_libs_aarch64codegen} "LLVMObjCARCOpts" "LLVMSymbolize" "LLVMDebugInfoPDB" "LLVMIRReader" "LLVMAsmParser" "LLVMTargetParser") + endif() + + if(HOST_LINUX AND NOT HOST_WASM AND NOT HOST_WASI AND ${llvm_api_version} GREATER_EQUAL 1600) + set(MONO_stdlib "-stdlib=libc++") + set(MONO_cxx_lib "-L${LLVM_PREFIX}/lib -lc++") + set(MONO_cxx_include "-I${LLVM_PREFIX}/include/c++/v1") + endif() + + if(${llvm_api_version} GREATER_EQUAL 1600) + if(HOST_WIN32) + set(MONO_cxx_std_version "/std:c++17") + else() + set(MONO_cxx_std_version "-std=c++17") + endif() + else() + if(HOST_WIN32) + set(MONO_cxx_std_version "/std:c++14") + else() + set(MONO_cxx_std_version "-std=c++14") + endif() + endif() # llvm-config --cflags set(llvm_cflags "-I${LLVM_PREFIX}/include -D__STDC_CONSTANT_MACROS -D__STD_FORMAT_MACROS -D__STDC_LIMIT_MACROS") - set(llvm_cxxflags "-I${LLVM_PREFIX}/include -std=c++14 -fno-exceptions -fno-rtti -D__STDC_CONSTANT_MACROS -D__STD_FORMAT_MACROS -D__STDC_LIMIT_MACROS") + set(llvm_cxxflags "-I${LLVM_PREFIX}/include ${MONO_cxx_include} ${MONO_cxx_std_version} ${MONO_stdlib} -fno-exceptions -fno-rtti -D__STDC_CONSTANT_MACROS -D__STD_FORMAT_MACROS -D__STDC_LIMIT_MACROS") set(llvm_includedir "${LLVM_PREFIX}/include") if(HOST_LINUX) # llvm-config --system-libs - set(llvm_system_libs "-lz" "-lrt" "-ldl" "-lpthread" "-lm") + set(llvm_system_libs ${MONO_cxx_lib} "-lz" "-lrt" "-ldl" "-lpthread" "-lm") elseif(HOST_OSX) # llvm-config --system-libs set(llvm_system_libs "-lz" "-lm") diff --git a/src/mono/Directory.Build.props b/src/mono/Directory.Build.props index a7a5977b72e90d..3bf460330a1c9c 100644 --- a/src/mono/Directory.Build.props +++ b/src/mono/Directory.Build.props @@ -50,8 +50,8 @@ true true true - <_MonoUseLLVMPackage Condition="'$(MonoLLVMDir)' == '' and ('$(MonoEnableLLVM)' == 'true' or $(MonoAOTEnableLLVM) == 'true')">true - $([MSBuild]::NormalizeDirectory('$(MonoObjDir)', 'llvm')) + true + $([MSBuild]::NormalizeDirectory('$(MonoObjDir)', 'llvm')) diff --git a/src/mono/mono.proj b/src/mono/mono.proj index 3947c7b4b4eab9..7cfff98ac8eb37 100644 --- a/src/mono/mono.proj +++ b/src/mono/mono.proj @@ -55,6 +55,8 @@ false true true + $(runtimelinuxx64MicrosoftNETCoreRuntimeMonoLLVMSdkVersion.Substring(0, $(runtimelinuxx64MicrosoftNETCoreRuntimeMonoLLVMSdkVersion.IndexOf('.')))) + true @@ -253,8 +255,8 @@ - <_MonoLLVMTargetArchitecture Condition="'$(TargetArchitecture)' == 'wasm'">$(BuildArchitecture) - <_MonoLLVMTargetArchitecture Condition="'$(TargetArchitecture)' != 'wasm'">$(TargetArchitecture) + <_MonoLLVMTargetArchitecture Condition="'$(TargetArchitecture)' == 'wasm' and '$(MonoUseLLVMPackage)' == 'true'">$(BuildArchitecture) + <_MonoLLVMTargetArchitecture Condition="'$(TargetArchitecture)' != 'wasm' and '$(MonoUseLLVMPackage)' == 'true'">$(TargetArchitecture) <_MonoCMakeArgs Condition="'$(_MonoUseNinja)' == 'true'" Include="-G Ninja"/> @@ -270,20 +272,11 @@ <_MonoCMakeArgs Include="-DMONO_SHARED_LIB_NAME=$(MonoSharedLibName)" /> - - - <_MonoCXXFLAGS Include="-D_GLIBCXX_USE_CXX11_ABI=0" /> - - - <_MonoAOTCXXFLAGS Include="-D_GLIBCXX_USE_CXX11_ABI=0" /> - - - - - <_MonoCXXFLAGS Include="-D_GLIBCXX_USE_CXX11_ABI=1" /> - - - <_MonoAOTCXXFLAGS Include="-D_GLIBCXX_USE_CXX11_ABI=1" /> + + <_MonoCXXFLAGS Include="-I$(MonoLLVMDir)\$(_MonoLLVMTargetArchitecture)\include\c++\v1" /> + <_MonoCXXFLAGS Include="-L$(MonoLLVMDir)\$(_MonoLLVMTargetArchitecture)\lib" /> + <_MonoCXXFLAGS Include="-stdlib=libc++" /> + <_MonoCMakeArgs Include="-DMONO_SET_RPATH_ORIGIN=true" /> @@ -706,16 +699,23 @@ - <_MonoLLVMTargetArchitecture>$(BuildArchitecture) - <_MonoLLVMTargetArchitecture Condition="'$(AotHostArchitecture)' != ''">$(AotHostArchitecture) + <_MonoLLVMTargetArchitecture Condition="'$(MonoUseLLVMPackage)' == 'true'">$(BuildArchitecture) + <_MonoLLVMTargetArchitecture Condition="'$(AotHostArchitecture)' != '' and '$(MonoUseLLVMPackage)' == 'true'">$(AotHostArchitecture) + + <_MonoAOTCXXFLAGS Include="-I$(MonoLLVMDir)\$(_MonoLLVMTargetArchitecture)\include\c++\v1" /> + <_MonoAOTCXXFLAGS Include="-L$(MonoLLVMDir)\$(_MonoLLVMTargetArchitecture)\lib" /> + <_MonoAOTCXXFLAGS Include="-stdlib=libc++" /> + + + - - - - + + + + <_MonoAOTCFLAGS Condition="'$(AotHostArchitecture)' == 'arm64'" Include="-arch arm64" /> @@ -951,6 +951,18 @@ <_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath)"> $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossFileName) + <_MonoRuntimeArtifacts Condition="'$(HostOS)' == 'Linux' and '$(MonoEnableLLVM)' == 'true' and '$(TargetArchitecture)' != 'wasm' and '$(MonoUseLibCxx)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMTargetArchitecture)\lib\libc++.so.1"> + $(RuntimeBinDir)libc++.so.1 + + <_MonoRuntimeArtifacts Condition="'$(HostOS)' == 'Linux' and '$(MonoEnableLLVM)' == 'true' and '$(TargetArchitecture)' != 'wasm' and '$(MonoUseLibCxx)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMTargetArchitecture)\lib\libc++abi.so.1"> + $(RuntimeBinDir)libc++abi.so.1 + + <_MonoRuntimeArtifacts Condition="'$(HostOS)' == 'Linux' and (('$(MonoAOTEnableLLVM)' == 'true' and '$(MonoUseLibCxx)' == 'true') or '$(TargetArchitecture)' == 'wasm')" Include="$(MonoLLVMDir)\$(_MonoLLVMTargetArchitecture)\lib\libc++.so.1"> + $(RuntimeBinDir)cross\$(OutputRID)\libc++.so.1 + + <_MonoRuntimeArtifacts Condition="'$(HostOS)' == 'Linux' and (('$(MonoAOTEnableLLVM)' == 'true' and '$(MonoUseLibCxx)' == 'true') or '$(TargetArchitecture)' == 'wasm')" Include="$(MonoLLVMDir)\$(_MonoLLVMTargetArchitecture)\lib\libc++abi.so.1"> + $(RuntimeBinDir)cross\$(OutputRID)\libc++abi.so.1 + <_MonoRuntimeArtifacts Include="$(_MonoAotCrossPdbFilePath)" Condition="Exists('$(_MonoAotCrossPdbFilePath)')"> $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossPdbFileName) diff --git a/src/mono/mono/mini/CMakeLists.txt b/src/mono/mono/mini/CMakeLists.txt index 54f20529261c86..324d09809ceaf2 100644 --- a/src/mono/mono/mini/CMakeLists.txt +++ b/src/mono/mono/mini/CMakeLists.txt @@ -383,6 +383,9 @@ if(NOT DISABLE_SHARED_LIBS) target_link_libraries(monosgen-shared PRIVATE ucontext) endif(CLR_CMAKE_HOST_ALPINE_LINUX AND TARGET_S390X) set_target_properties(monosgen-shared PROPERTIES OUTPUT_NAME ${MONO_SHARED_LIB_NAME}) + if(MONO_SET_RPATH_ORIGIN) + set_target_properties(monosgen-shared PROPERTIES INSTALL_RPATH "$ORIGIN") + endif() target_link_libraries(monosgen-shared PRIVATE monoapi eglib_objects utils_objects sgen_objects metadata_objects) if(HAVE_ICU_SHIM) target_link_libraries(monosgen-shared PRIVATE icu_shim_objects) @@ -548,6 +551,9 @@ if(NOT DISABLE_EXECUTABLES) add_executable(mono-sgen "${sgen_sources}") if(MONO_CROSS_COMPILE_EXECUTABLE_NAME) set_target_properties(mono-sgen PROPERTIES OUTPUT_NAME mono-aot-cross) + if(MONO_SET_RPATH_ORIGIN) + set_target_properties(mono-sgen PROPERTIES INSTALL_RPATH "$ORIGIN") + endif() endif() target_link_libraries(mono-sgen PRIVATE monoapi eglib_api monosgen-static) if(HAVE_ICU_SHIM) diff --git a/src/mono/mono/mini/aot-compiler.c b/src/mono/mono/mini/aot-compiler.c index 35d73ccccfa05a..faa6be18c08fc2 100644 --- a/src/mono/mono/mini/aot-compiler.c +++ b/src/mono/mono/mini/aot-compiler.c @@ -10726,7 +10726,14 @@ emit_llvm_file (MonoAotCompile *acfg) // FIXME: This doesn't work yet opts = g_strdup (""); } else { -#if LLVM_API_VERSION >= 1300 +#if LLVM_API_VERSION >= 1600 + /* The safepoints pass requires new pass manager syntax*/ + opts = g_strdup ("-disable-tail-calls -passes='"); + if (!acfg->aot_opts.llvm_only) { + opts = g_strdup_printf ("%sdefault,", opts); + } + opts = g_strdup_printf ("%splace-safepoints' -spp-all-backedges", opts); +#elif LLVM_API_VERSION >= 1300 /* The safepoints pass requires the old pass manager */ opts = g_strdup ("-disable-tail-calls -place-safepoints -spp-all-backedges -enable-new-pm=0"); #else @@ -10736,8 +10743,10 @@ emit_llvm_file (MonoAotCompile *acfg) if (acfg->aot_opts.llvm_opts) { opts = g_strdup_printf ("%s %s", acfg->aot_opts.llvm_opts, opts); +#if LLVM_API_VERSION < 1600 } else if (!acfg->aot_opts.llvm_only) { opts = g_strdup_printf ("-O2 %s", opts); +#endif } if (acfg->aot_opts.use_current_cpu) { diff --git a/src/mono/mono/mini/mini-llvm-cpp.cpp b/src/mono/mono/mini/mini-llvm-cpp.cpp index cd8503aee38285..b50eb471fa924b 100644 --- a/src/mono/mono/mini/mini-llvm-cpp.cpp +++ b/src/mono/mono/mini/mini-llvm-cpp.cpp @@ -37,6 +37,15 @@ #pragma warning(disable:4800) // type' : forcing value to bool 'true' or 'false' (performance warning) #endif +// ArrayRef API is deprecated on C++17 +#if defined(__clang__) && (_LIBCPP_STD_VER > 17 || defined(__APPLE__)) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif +#ifdef _MSC_VER +#pragma warning(disable:4996) +#endif + #include #include #include diff --git a/src/mono/mono/mini/mini-llvm.c b/src/mono/mono/mini/mini-llvm.c index 2c7e25a9276880..c0b8cda575aecd 100644 --- a/src/mono/mono/mini/mini-llvm.c +++ b/src/mono/mono/mini/mini-llvm.c @@ -2151,9 +2151,11 @@ get_callee_llvmonly (EmitContext *ctx, LLVMTypeRef llvm_sig, MonoJumpInfoType ty g_hash_table_insert (ctx->module->direct_callables, (char*)callee_name, callee); } else { +#ifndef USE_OPAQUE_POINTERS /* LLVMTypeRef's are uniqued */ if (LLVMGetElementType (LLVMTypeOf (callee)) != llvm_sig) return LLVMConstBitCast (callee, pointer_type (llvm_sig)); +#endif g_free (callee_name); } @@ -4411,7 +4413,8 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, vretaddr = (cinfo->ret.storage == LLVMArgVtypeRetAddr || cinfo->ret.storage == LLVMArgVtypeByRef || cinfo->ret.storage == LLVMArgGsharedvtFixed || cinfo->ret.storage == LLVMArgGsharedvtVariable || cinfo->ret.storage == LLVMArgGsharedvtFixedVtype); - llvm_sig = sig_to_llvm_sig_full (ctx, sig, cinfo, NULL); + LLVMTypeRef *param_etypes; + llvm_sig = sig_to_llvm_sig_full (ctx, sig, cinfo, ¶m_etypes); if (!ctx_ok (ctx)) return; @@ -4767,7 +4770,7 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, #endif if (is_byval) - mono_llvm_add_instr_byval_attr (lcall, 1 + ainfo->pindex, LLVMGetElementType (param_types [ainfo->pindex])); + mono_llvm_add_instr_byval_attr (lcall, 1 + ainfo->pindex, param_etypes [ainfo->pindex]); } MonoClass *retclass = mono_class_from_mono_type_internal (sig->ret); @@ -5053,7 +5056,7 @@ emit_llvmonly_landing_pad (EmitContext *ctx, int group_index, int group_size) /* Return the value set in ctx->il_state_ret */ - LLVMTypeRef ret_type = LLVMGetReturnType (LLVMGetElementType (LLVMTypeOf (ctx->lmethod))); + LLVMTypeRef ret_type = LLVMGetReturnType (ctx->method_type); LLVMValueRef addr, retval, gep, indexes [2]; builder = ctx->builder; @@ -5956,9 +5959,11 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) int width = mono_type_size (sig->ret, NULL); int elems = width / TARGET_SIZEOF_VOID_P; /* The return value might not be set if there is a throw */ - LLVMValueRef val = build_ptr_cast (builder, lhs, LLVMVectorType (IntPtrType (), elems)); + LLVMValueRef val = LLVMBuildBitCast (builder, lhs, LLVMVectorType (IntPtrType (), elems), ""); for (int i = 0; i < elems; ++i) { + LLVMTypeRef etype = LLVMStructGetTypeAtIndex (LLVMTypeOf (retval), i); LLVMValueRef element = LLVMBuildExtractElement (builder, val, const_int32 (i), ""); + element = convert (ctx, element, etype); retval = LLVMBuildInsertValue (builder, retval, element, i, "setret_simd_vtype_in_reg"); } } else { @@ -6432,6 +6437,32 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) case OP_SHR_UN_IMM: { LLVMValueRef imm; + gboolean shift_ovf = FALSE; + gboolean shift_i8 = FALSE; + switch (ins->opcode) { + case OP_ISHL_IMM: + case OP_ISHR_IMM: + case OP_ISHR_UN_IMM: + if (ins->inst_imm < 0 || ins->inst_imm >= 32) + shift_ovf = TRUE; + break; + case OP_LSHL_IMM: + case OP_LSHR_IMM: + case OP_LSHR_UN_IMM: + if (ins->inst_imm < 0 || ins->inst_imm >= 64) + shift_ovf = TRUE; + shift_i8 = TRUE; + break; + case OP_SHL_IMM: + case OP_SHR_IMM: + case OP_SHR_UN_IMM: + if (ins->inst_imm < 0 || ins->inst_imm >= TARGET_SIZEOF_VOID_P * 8) + shift_ovf = TRUE; + break; + default: + break; + } + if (spec [MONO_INST_SRC1] == 'l') { imm = const_int64 (GET_LONG_IMM (ins)); } else { @@ -6444,9 +6475,12 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) builder = ctx->builder; #if TARGET_SIZEOF_VOID_P == 4 - if (ins->opcode == OP_LSHL_IMM || ins->opcode == OP_LSHR_IMM || ins->opcode == OP_LSHR_UN_IMM) + if (shift_i8) imm = const_int32 (ins->inst_imm); #endif + if (shift_i8) + /* The IL might not be regular */ + lhs = convert (ctx, lhs, LLVMInt64Type ()); if (LLVMGetTypeKind (LLVMTypeOf (lhs)) == LLVMPointerTypeKind) lhs = convert (ctx, lhs, IntPtrType ()); @@ -6496,7 +6530,10 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) break; case OP_ISHL_IMM: case OP_LSHL_IMM: - values [ins->dreg] = LLVMBuildShl (builder, lhs, imm, dname); + if (shift_ovf) + values [ins->dreg] = LLVMConstNull (LLVMTypeOf (lhs)); + else + values [ins->dreg] = LLVMBuildShl (builder, lhs, imm, dname); break; case OP_SHL_IMM: MONO_DISABLE_WARNING(4127) /* conditional expression is constant */ @@ -6506,22 +6543,34 @@ MONO_DISABLE_WARNING(4127) /* conditional expression is constant */ imm = convert (ctx, imm, LLVMInt64Type ()); } MONO_RESTORE_WARNING - values [ins->dreg] = LLVMBuildShl (builder, lhs, imm, dname); + if (shift_ovf) + values [ins->dreg] = LLVMConstNull (LLVMTypeOf (lhs)); + else + values [ins->dreg] = LLVMBuildShl (builder, lhs, imm, dname); break; case OP_ISHR_IMM: case OP_LSHR_IMM: case OP_SHR_IMM: - values [ins->dreg] = LLVMBuildAShr (builder, lhs, imm, dname); + if (shift_ovf) + values [ins->dreg] = LLVMConstNull (LLVMTypeOf (lhs)); + else + values [ins->dreg] = LLVMBuildAShr (builder, lhs, imm, dname); break; case OP_ISHR_UN_IMM: /* This is used to implement conv.u4, so the lhs could be an i8 */ lhs = convert (ctx, lhs, LLVMInt32Type ()); imm = convert (ctx, imm, LLVMInt32Type ()); - values [ins->dreg] = LLVMBuildLShr (builder, lhs, imm, dname); + if (shift_ovf) + values [ins->dreg] = LLVMConstNull (LLVMTypeOf (lhs)); + else + values [ins->dreg] = LLVMBuildLShr (builder, lhs, imm, dname); break; case OP_LSHR_UN_IMM: case OP_SHR_UN_IMM: - values [ins->dreg] = LLVMBuildLShr (builder, lhs, imm, dname); + if (shift_ovf) + values [ins->dreg] = LLVMConstNull (LLVMTypeOf (lhs)); + else + values [ins->dreg] = LLVMBuildLShr (builder, lhs, imm, dname); break; default: g_assert_not_reached (); @@ -11967,6 +12016,12 @@ MONO_RESTORE_WARNING if (!ctx_ok (ctx)) break; +#if LLVM_API_VERSION >= 1600 + if (spec [MONO_INST_DEST] != ' ' && values [ins->dreg] && LLVMIsPoison (values [ins->dreg])) + /* These could be generated by float<->int conversions etc. */ + values [ins->dreg] = LLVMBuildFreeze (builder, values [ins->dreg], ""); +#endif + /* Convert the value to the type required by phi nodes */ if (spec [MONO_INST_DEST] != ' ' && !MONO_IS_STORE_MEMBASE (ins) && ctx->vreg_types [ins->dreg]) { if (ctx->is_vphi [ins->dreg]) @@ -12623,8 +12678,10 @@ emit_method_inner (EmitContext *ctx) is_byval |= ainfo->storage == LLVMArgVtypeByRef; #endif - if (is_byval) - mono_llvm_add_param_byval_attr (LLVMGetParam (method, pindex), LLVMGetElementType (LLVMTypeOf (LLVMGetParam (method, pindex)))); + if (is_byval) { + g_assert (ctx->param_etypes [pindex]); + mono_llvm_add_param_byval_attr (LLVMGetParam (method, pindex), ctx->param_etypes [pindex]); + } if (ainfo->storage == LLVMArgVtypeByRef || ainfo->storage == LLVMArgVtypeAddr) { /* For OP_LDADDR */ diff --git a/src/mono/mono/tools/offsets-tool/offsets-tool.py b/src/mono/mono/tools/offsets-tool/offsets-tool.py index 5f52ab268adc49..ab555b8d9db752 100644 --- a/src/mono/mono/tools/offsets-tool/offsets-tool.py +++ b/src/mono/mono/tools/offsets-tool/offsets-tool.py @@ -372,8 +372,11 @@ def gen (self): if type.size == -1: continue f.write ("DECL_SIZE2(%s,%s)\n" % (type.name, type.size)) + done_fields = {} for field in type.fields: - f.write ("DECL_OFFSET2(%s,%s,%s)\n" % (type.name, field.name, field.offset)) + if field.name not in done_fields: + f.write ("DECL_OFFSET2(%s,%s,%s)\n" % (type.name, field.name, field.offset)) + done_fields [field.name] = field.name f.write ("#endif //disable metadata check\n") f.write ("#ifndef DISABLE_JIT_OFFSETS\n") @@ -383,8 +386,11 @@ def gen (self): if type.size == -1: continue f.write ("DECL_SIZE2(%s,%s)\n" % (type.name, type.size)) + done_fields = {} for field in type.fields: - f.write ("DECL_OFFSET2(%s,%s,%s)\n" % (type.name, field.name, field.offset)) + if field.name not in done_fields: + f.write ("DECL_OFFSET2(%s,%s,%s)\n" % (type.name, field.name, field.offset)) + done_fields [field.name] = field.name f.write ("#endif //disable jit check\n") f.write ("#endif //cross compiler checks\n") diff --git a/src/tests/Common/Directory.Build.targets b/src/tests/Common/Directory.Build.targets index fd1d1af2c512ee..fec20452b87bcd 100644 --- a/src/tests/Common/Directory.Build.targets +++ b/src/tests/Common/Directory.Build.targets @@ -176,6 +176,8 @@ + +