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 @@
+
+