Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit

Permalink
Add test cases for 6 byte structs showing the various situations the
Browse files Browse the repository at this point in the history
jit must handle: callee is not an inline candidate, is an inline candidate
and gets inlined, or inline candidate that does not get inlined.

In the case where the callee gets inlined, handle the transitive cases
where the callee's returne value itself comes from a call.

Add a 3 byte test case to get coverage on arm32.

Add new tests to the arm32/arm64 test lists.
  • Loading branch information
AndyAyersMS committed Jun 26, 2018
1 parent aabba68 commit eecd311
Show file tree
Hide file tree
Showing 18 changed files with 875 additions and 0 deletions.
64 changes: 64 additions & 0 deletions tests/arm/Tests.lst
Original file line number Diff line number Diff line change
Expand Up @@ -94740,3 +94740,67 @@ MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522.cmd_11903]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522\GitHub_18522.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_1.cmd_11904]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_1\GitHub_18522_1.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_1
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_2.cmd_11905]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_2\GitHub_18522_2.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_2
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_3.cmd_11906]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_3\GitHub_18522_3.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_3
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_4.cmd_11907]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_4\GitHub_18522_4.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_4
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_5.cmd_11908]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_5\GitHub_18522_5.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_5
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_6.cmd_11909]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_6\GitHub_18522_6.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_6
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_7.cmd_11910]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_7\GitHub_18522_7.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_7
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

64 changes: 64 additions & 0 deletions tests/arm64/Tests.lst
Original file line number Diff line number Diff line change
Expand Up @@ -94763,3 +94763,67 @@ Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522.cmd_12223]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522\GitHub_18522.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_1.cmd_12224]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_1\GitHub_18522_1.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_1
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_2.cmd_12225]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_2\GitHub_18522_2.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_2
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_3.cmd_12226]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_3\GitHub_18522_3.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_3
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_4.cmd_12227]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_4\GitHub_18522_4.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_4
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_5.cmd_12228]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_5\GitHub_18522_5.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_5
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_6.cmd_12229]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_6\GitHub_18522_6.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_6
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0

[GitHub_18522_7.cmd_12230]
RelativePath=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_7\GitHub_18522_7.cmd
WorkingDir=JIT\Regression\JitBlue\GitHub_18522\GitHub_18522_7
Expected=0
MaxAllowedDurationSeconds=600
Categories=EXPECTED_PASS
HostStyle=0
39 changes: 39 additions & 0 deletions tests/src/JIT/Regression/JitBlue/GitHub_18522/GitHub_18522.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// 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.

using System;

// Based on a program generated by Fuzzlyn

struct S0
{
public ushort F0;
}

struct S1
{
public S0 F0;
public ushort F1;
}

public class GitHub_18522
{
static S1 s_36;

// When generating code for the x64 SysV ABI, the jit was
// incorrectly typing the return type from M113, and so
// inadvertently overwriting the F1 field of s_36 on return from
// the (inlined) call.
public static int Main()
{
s_36.F1 = 0xAA;
s_36.F0 = M113();
return (s_36.F1 == 0xAA ? 100 : 0);
}

static S0 M113()
{
return new S0();
}
}
34 changes: 34 additions & 0 deletions tests/src/JIT/Regression/JitBlue/GitHub_18522/GitHub_18522.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?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></DebugType>
<Optimize>True</Optimize>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildProjectName).cs" />
</ItemGroup>
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
<PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' "></PropertyGroup>
</Project>
52 changes: 52 additions & 0 deletions tests/src/JIT/Regression/JitBlue/GitHub_18522/GitHub_18522_1.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// 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.

using System;

// Based on
// Original generated by Fuzzlyn on 2018-06-20 00:58:58
// Seed: 11049252875418439527
// Reduced from 97.5 KiB to 0.5 KiB
// Debug: Outputs -1
// Release: Outputs -65536

struct S0
{
public sbyte F0;
public char F1;
public ushort F2;
}

struct S1
{
public short F0;
public S0 F1;
public S0 F2;
public S0 F3;
public int F4;
public S1(int f4): this()
{
F4 = f4;
}
}

public class GitHub_18522_1
{
static S1 s_6;
static S1[] s_13 = new S1[]{new S1(-1)};
public static int Main()
{
// When generating code for the x64 SysV ABI, the jit was
// incorrectly typing the return type from M16, and so
// inadvertently overwriting the F4 field of s_13[0] on return
// from the (inlined) call.
s_13[0].F3 = M16();
return s_13[0].F4 == -1 ? 100 : 0;
}

static S0 M16()
{
return s_6.F3;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?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></DebugType>
<Optimize>True</Optimize>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildProjectName).cs" />
</ItemGroup>
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
<PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' "></PropertyGroup>
</Project>
54 changes: 54 additions & 0 deletions tests/src/JIT/Regression/JitBlue/GitHub_18522/GitHub_18522_2.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// 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.

using System;
using System.Runtime.CompilerServices;

// Based on
// Original generated by Fuzzlyn on 2018-06-20 00:58:58
// Seed: 11049252875418439527
// Reduced from 97.5 KiB to 0.5 KiB
// Debug: Outputs -1
// Release: Outputs -65536

struct S0
{
public sbyte F0;
public char F1;
public ushort F2;
}

struct S1
{
public short F0;
public S0 F1;
public S0 F2;
public S0 F3;
public int F4;
public S1(int f4): this()
{
F4 = f4;
}
}

public class GitHub_18522_2
{
static S1 s_6;
static S1[] s_13 = new S1[]{new S1(-1)};
public static int Main()
{
// When generating code for the x64 SysV ABI, the jit was
// incorrectly typing the return type from M16, and so
// inadvertently overwriting the F4 field of s_13[0] on return
// from the (not inlined) call.
s_13[0].F3 = M16();
return s_13[0].F4 == -1 ? 100 : 0;
}

[MethodImpl(MethodImplOptions.NoInlining)]
static S0 M16()
{
return s_6.F3;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?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></DebugType>
<Optimize>True</Optimize>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildProjectName).cs" />
</ItemGroup>
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
<PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' "></PropertyGroup>
</Project>
Loading

0 comments on commit eecd311

Please sign in to comment.