diff options
author | Pat Gavlin <pagavlin@microsoft.com> | 2017-05-24 12:34:09 -0700 |
---|---|---|
committer | Pat Gavlin <pagavlin@microsoft.com> | 2017-05-24 13:27:12 -0700 |
commit | e1bc678f35adb2d3f1ca40d0414bde2407159c2d (patch) | |
tree | ec48fe8379587ee1e1b1938e69798d5401c6ce36 /tests | |
parent | b2164d274f13023e5546fab849f6f15381ba4475 (diff) | |
download | coreclr-e1bc678f35adb2d3f1ca40d0414bde2407159c2d.tar.gz coreclr-e1bc678f35adb2d3f1ca40d0414bde2407159c2d.tar.bz2 coreclr-e1bc678f35adb2d3f1ca40d0414bde2407159c2d.zip |
Never enregister type-punned regStruct lclVars.
Type-punned lclVars--i.e. lclVars that are accessed via
`(INDIR Tx (ADDR (LCLVAR Ty V)))`--are currently considered
enregisterable if they are SIMD-typed, have not been the accessed by
field, and have not otherwise been declared unenregisterable. This
appears to be an oversight, as the JIT is not able to generate correct
code for the type-punned access if the lclVar is in fact enregistered.
This change removes the special case for these SIMD-typed lclVars.
Fixes #11804.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/JIT/Regression/JitBlue/GitHub_11804/GitHub_11804.il | 85 | ||||
-rw-r--r-- | tests/src/JIT/Regression/JitBlue/GitHub_11804/GitHub_11804.ilproj | 37 |
2 files changed, 122 insertions, 0 deletions
diff --git a/tests/src/JIT/Regression/JitBlue/GitHub_11804/GitHub_11804.il b/tests/src/JIT/Regression/JitBlue/GitHub_11804/GitHub_11804.il new file mode 100644 index 0000000000..50d89734d9 --- /dev/null +++ b/tests/src/JIT/Regression/JitBlue/GitHub_11804/GitHub_11804.il @@ -0,0 +1,85 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +.assembly extern System.Private.CoreLib +{ + .publickeytoken = (7C EC 85 D7 BE A7 79 8E ) // |.....y. + .ver 4:0:0:0 +} +.assembly extern System.Numerics.Vectors +{ + .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: + .ver 4:1:3:0 +} +.assembly extern System.Runtime.CompilerServices.Unsafe +{ + .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: + .ver 4:0:3:0 +} +.assembly GitHub_11804 +{ + .custom instance void [System.Private.CoreLib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) + .custom instance void [System.Private.CoreLib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx + 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows. + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.module GitHub_11804.exe +// MVID: {9CC2AC15-DDA3-4ADF-9566-89AB25A8CF63} +.imagebase 0x00400000 +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 // WINDOWS_CUI +.corflags 0x00000001 // ILONLY +// Image base: 0x01590000 + + +.class private abstract auto ansi sealed beforefieldinit C + extends [System.Private.CoreLib]System.Object +{ + .method private hidebysig static int32 + UnsafeGrab() cil managed noinlining + { + // Code size 18 (0x12) + .maxstack 2 + .locals init (valuetype [System.Numerics.Vectors]System.Numerics.Vector`1<int32> V_0) + IL_0000: ldloca.s V_0 + IL_0002: ldc.i4.s 50 + IL_0004: call instance void valuetype [System.Numerics.Vectors]System.Numerics.Vector`1<int32>::.ctor(!0) + IL_0009: ldloca.s V_0 + IL_000b: call !!1& [System.Runtime.CompilerServices.Unsafe]System.Runtime.CompilerServices.Unsafe::As<valuetype [System.Numerics.Vectors]System.Numerics.Vector`1<int32>,int32>(!!0&) + IL_0010: ldind.i4 + IL_0011: ret + } // end of method C::UnsafeGrab + + .method private hidebysig static int32 + IndexerGrab() cil managed noinlining + { + // Code size 18 (0x12) + .maxstack 2 + .locals init (valuetype [System.Numerics.Vectors]System.Numerics.Vector`1<int32> V_0) + IL_0000: ldloca.s V_0 + IL_0002: ldc.i4.s 50 + IL_0004: call instance void valuetype [System.Numerics.Vectors]System.Numerics.Vector`1<int32>::.ctor(!0) + IL_0009: ldloca.s V_0 + IL_000b: ldc.i4.0 + IL_000c: call instance !0 valuetype [System.Numerics.Vectors]System.Numerics.Vector`1<int32>::get_Item(int32) + IL_0011: ret + } // end of method C::IndexerGrab + + .method private hidebysig static int32 + Main() cil managed + { + .entrypoint + // Code size 20 (0x14) + .maxstack 8 + + IL_0008: call int32 C::IndexerGrab() + IL_000d: call int32 C::UnsafeGrab() + IL_0012: add + IL_0013: ret + } // end of method C::Main + +} // end of class C diff --git a/tests/src/JIT/Regression/JitBlue/GitHub_11804/GitHub_11804.ilproj b/tests/src/JIT/Regression/JitBlue/GitHub_11804/GitHub_11804.ilproj new file mode 100644 index 0000000000..93c281624b --- /dev/null +++ b/tests/src/JIT/Regression/JitBlue/GitHub_11804/GitHub_11804.ilproj @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <AssemblyName>$(MSBuildProjectName)</AssemblyName> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid> + <OutputType>Exe</OutputType> + <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir> + </PropertyGroup> + <!-- Default configurations to help VS understand the configurations --> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + </PropertyGroup> + <ItemGroup> + <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies"> + <Visible>False</Visible> + </CodeAnalysisDependentAssemblyPaths> + </ItemGroup> + <PropertyGroup> + <DebugType>None</DebugType> + <Optimize>True</Optimize> + </PropertyGroup> + <ItemGroup> + <Compile Include="GitHub_11804.il" /> + </ItemGroup> + <ItemGroup> + <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" /> + </ItemGroup> + <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" /> + <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' "> + </PropertyGroup> +</Project> |