From a7d64db0648e08bf58c162fff88eefc9bf292ef5 Mon Sep 17 00:00:00 2001 From: Alexander Soldatov Date: Wed, 2 Aug 2017 16:17:32 +0300 Subject: [PATCH] [RyuJIT] Regression test dotnet/coreclr#13057 LEA[b+0] was not eliminated on ARM which cause assertion on code generation Commit migrated from https://github.com/dotnet/coreclr/commit/98dcb19161c640a27aaee37f793dac7712e51729 --- .../JitBlue/GitHub_13057/GitHub_13057.cs | 80 ++++++++++++++++++++++ .../JitBlue/GitHub_13057/GitHub_13057.csproj | 38 ++++++++++ 2 files changed, 118 insertions(+) create mode 100644 src/coreclr/tests/src/JIT/Regression/JitBlue/GitHub_13057/GitHub_13057.cs create mode 100644 src/coreclr/tests/src/JIT/Regression/JitBlue/GitHub_13057/GitHub_13057.csproj diff --git a/src/coreclr/tests/src/JIT/Regression/JitBlue/GitHub_13057/GitHub_13057.cs b/src/coreclr/tests/src/JIT/Regression/JitBlue/GitHub_13057/GitHub_13057.cs new file mode 100644 index 0000000..8076706 --- /dev/null +++ b/src/coreclr/tests/src/JIT/Regression/JitBlue/GitHub_13057/GitHub_13057.cs @@ -0,0 +1,80 @@ +// 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; +using System.Collections; +using System.Collections.Generic; +using System.Resources; + +public class Program +{ + const int Pass = 100; + const int Fail = -1; + + struct RetSt2 { + public Object _key; + public Object _value; + + public RetSt2(Object value) + { + _key = "f"; + _value = value; + } + } + + class Test { + private Object lockObject; + + internal Test(Object reader) + { + lockObject = reader; + } + + [MethodImplAttribute(MethodImplOptions.NoInlining)] + Object FirstValue() + { + return "FirstValue"; + } + + [MethodImplAttribute(MethodImplOptions.NoInlining)] + Object SecondValue() + { + return "SecondValue"; + } + + [MethodImplAttribute(MethodImplOptions.NoInlining)] + public RetSt2 foo(int d) { + Object value = null; + lock (lockObject) + { + lock (lockObject) + { + if (d == -1) { + value = FirstValue(); + } else { + value = SecondValue(); + } + } + } + return new RetSt2(value); + } + } + + + + public static int Main() + { + RetSt2 r = new Test("Lock").foo(-1); + Console.WriteLine("r._key: " + r._key); + Console.WriteLine("r._value: " + r._value); + + r = new Test("Lock").foo(-2); + Console.WriteLine("r._key: " + r._key); + Console.WriteLine("r._value: " + r._value); + + return Pass; + } +} diff --git a/src/coreclr/tests/src/JIT/Regression/JitBlue/GitHub_13057/GitHub_13057.csproj b/src/coreclr/tests/src/JIT/Regression/JitBlue/GitHub_13057/GitHub_13057.csproj new file mode 100644 index 0000000..2cafa4c --- /dev/null +++ b/src/coreclr/tests/src/JIT/Regression/JitBlue/GitHub_13057/GitHub_13057.csproj @@ -0,0 +1,38 @@ + + + + + Debug + AnyCPU + $(MSBuildProjectName) + 2.0 + {95DFC527-4DC1-495E-97D7-E94EE1F7140D} + Exe + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + ..\..\ + + + + + + + + + + False + + + + + True + + + + + + + + + + + -- 2.7.4