Merge pull request #2874 from lateralusX/jlorenss/win-x64-support
authormonojenkins <jo.shields+jenkins@xamarin.com>
Wed, 13 Apr 2016 16:35:31 +0000 (17:35 +0100)
committermonojenkins <jo.shields+jenkins@xamarin.com>
Wed, 13 Apr 2016 16:35:31 +0000 (17:35 +0100)
commit46f9cc2f973a76ef767172579ebb87f9342e599c
tree156ad5989d3d40f8d79ea3f0248fe5cf7cb6d7b8
parent90611f918522633f3d88aff0d54980c6f275f0f6
parent9de5079322a48c997cf1f1ed12f36484e8fd047b
Merge pull request #2874 from lateralusX/jlorenss/win-x64-support

jlorenss/win x64 support

Initial fixes needed in order to get pass on mono regression tests for windows x64 visual studio build,

--regression basic.exe basic-float.exe basic-long.exe basic-calls.exe objects.exe arrays.exe basic-math.exe exceptions.exe iltests.exe devirtualization.exe generics.exe basic-simd.exe

Before fixes there were failures in basic.exe, exceptions.exe and objects.exe for windows x64  Visual studio build.

Failures in basic.exe and exceptions.exe was due to a mix up of signal defines on windows platform in Visual Studio build  where SIGILL and SIGFPE was defined differently in different source files causing incorrect signal handler to be invoked at runtime, causing incorrect thrown .NET exception. Fix is to make sure signal.h is always included giving the same value for SIGILl and SIGFPE over all source files.

Failures in objects.exe test_0_mul_ovf_regress_36052 caused a stack overflow crash when running togehter with branch optimization mode. This was due to incorrect lowering of x64 test instruction when optimization moved over to use R8 instead of RAX and current lowering didn't handle that correctly meaning that the actual test was performed against wrong register causing a loop that caused a stack overflow error. The specific amd64 codegen , amd64_test_reg_imm, is currently only used on x64 windows platform for the stackalloc call.