diff --git a/dir.props b/dir.props
index e160c1dce0aa..31003b176049 100644
--- a/dir.props
+++ b/dir.props
@@ -160,7 +160,7 @@
$(Version)-$(ExternalExpectedPrerelease)
- false
+ true
$(Version)
$(StableVersion)
diff --git a/src/vm/argdestination.h b/src/vm/argdestination.h
index 857e596079d6..d8f6c854b223 100644
--- a/src/vm/argdestination.h
+++ b/src/vm/argdestination.h
@@ -136,7 +136,7 @@ class ArgDestination
_ASSERTE(eightByteSize == 4);
*(UINT32*)floatRegDest = *(UINT32*)src;
}
- floatRegDest += 8;
+ floatRegDest += 16;
}
else
{
diff --git a/tests/src/Regressions/coreclr/GitHub_7685/Test7685.csproj b/tests/src/Regressions/coreclr/GitHub_7685/Test7685.csproj
new file mode 100644
index 000000000000..56bc99ce4f7b
--- /dev/null
+++ b/tests/src/Regressions/coreclr/GitHub_7685/Test7685.csproj
@@ -0,0 +1,48 @@
+
+
+
+
+ Debug
+ AnyCPU
+ 2.0
+ {E55A6F8B-B9E3-45CE-88F4-22AE70F606CB}
+ Exe
+ Properties
+ 512
+ {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages
+ ..\..\
+ 7a9bfb7d
+ true
+ false
+ BuildAndRun
+ 1
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/src/Regressions/coreclr/GitHub_7685/app.config b/tests/src/Regressions/coreclr/GitHub_7685/app.config
new file mode 100644
index 000000000000..62803f59720a
--- /dev/null
+++ b/tests/src/Regressions/coreclr/GitHub_7685/app.config
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/src/Regressions/coreclr/GitHub_7685/project.json b/tests/src/Regressions/coreclr/GitHub_7685/project.json
new file mode 100644
index 000000000000..025841ec29fc
--- /dev/null
+++ b/tests/src/Regressions/coreclr/GitHub_7685/project.json
@@ -0,0 +1,44 @@
+{
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1-rc3-24117-00",
+ "System.Collections": "4.0.10",
+ "System.Collections.NonGeneric": "4.0.1-rc3-24117-00",
+ "System.Collections.Specialized": "4.0.1-rc3-24117-00",
+ "System.ComponentModel": "4.0.1-rc3-24117-00",
+ "System.Console": "4.0.0-rc3-24117-00",
+ "System.Diagnostics.Process": "4.1.0-rc3-24117-00",
+ "System.Globalization": "4.0.10",
+ "System.Globalization.Calendars": "4.0.0",
+ "System.IO": "4.0.10",
+ "System.IO.FileSystem": "4.0.1-rc3-24117-00",
+ "System.IO.FileSystem.Primitives": "4.0.0",
+ "System.Linq": "4.1.0-rc3-24117-00",
+ "System.Linq.Queryable": "4.0.1-rc3-24117-00",
+ "System.Reflection": "4.1.0-rc3-24117-00",
+ "System.Reflection.Primitives": "4.0.0",
+ "System.Runtime": "4.1.0-rc3-24117-00",
+ "System.Runtime.Extensions": "4.0.10",
+ "System.Runtime.Handles": "4.0.0",
+ "System.Runtime.InteropServices": "4.1.0-rc3-24117-00",
+ "System.Runtime.Loader": "4.0.0-rc3-24117-00",
+ "System.Text.Encoding": "4.0.10",
+ "System.Threading": "4.0.10",
+ "System.Threading.Thread": "4.0.0-rc3-24117-00",
+ "System.Xml.ReaderWriter": "4.0.11-rc3-24117-00",
+ "System.Xml.XDocument": "4.0.11-rc3-24117-00",
+ "System.Xml.XmlDocument": "4.0.1-rc3-24117-00",
+ "System.Xml.XmlSerializer": "4.0.11-rc3-24117-00"
+ },
+ "frameworks": {
+ "dnxcore50": {}
+ },
+ "runtimes": {
+ "win7-x86": {},
+ "win7-x64": {},
+ "ubuntu.14.04-x64": {},
+ "osx.10.10-x64": {},
+ "centos.7-x64": {},
+ "rhel.7-x64": {},
+ "debian.8-x64": {}
+ }
+}
diff --git a/tests/src/Regressions/coreclr/GitHub_7685/test7685.cs b/tests/src/Regressions/coreclr/GitHub_7685/test7685.cs
new file mode 100644
index 000000000000..a1d35bc11c9f
--- /dev/null
+++ b/tests/src/Regressions/coreclr/GitHub_7685/test7685.cs
@@ -0,0 +1,48 @@
+// 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.Reflection;
+
+public class Test7685
+{
+ static RectangleF argumentInDStuff;
+
+ public static int Main()
+ {
+ int iRetVal = 100;
+
+ var r = new RectangleF(1.2f, 3.4f, 5.6f, 7.8f);
+ typeof(Test7685).GetTypeInfo().GetDeclaredMethod("DoStuff").Invoke(null, new object[] { r });
+
+ if (!RectangleF.Equals(ref argumentInDStuff, ref r))
+ {
+ TestLibrary.Logging.WriteLine($"Error: passing struct with floats via reflection. Callee received {argumentInDStuff} instead of {r}");
+ iRetVal = 0;
+ }
+
+ return iRetVal;
+ }
+
+ public static void DoStuff(RectangleF r)
+ {
+ argumentInDStuff = r;
+ }
+}
+
+public struct RectangleF
+{
+ private float _x, _y, _width, _height;
+
+ public RectangleF(float x, float y, float width, float height)
+ {
+ _x = x; _y = y; _width = width; _height = height;
+ }
+
+ public static bool Equals(ref RectangleF r1, ref RectangleF r2)
+ {
+ return (r2._x == r1._x) && (r2._y == r1._y) && (r2._width == r1._width) && (r2._height == r1._height);
+ }
+
+ public override string ToString() => $"[{_x}, {_y}, {_width}, {_height}]";
+}