[interpreter] Fix incorrect arg storage for arm softfp interpreter (#35643)
authormonojenkins <jo.shields+jenkins@xamarin.com>
Wed, 6 May 2020 09:53:12 +0000 (05:53 -0400)
committerGitHub <noreply@github.com>
Wed, 6 May 2020 09:53:12 +0000 (11:53 +0200)
commitdbe04a966bda3d3695d517cf3c23fdeecce17fec
tree43d92a3f39e60b7725052b1c6bd7b44efd61fcd8
parent09501e33ca6e7decb1b9c13a3d84dc798023a0c8
[interpreter] Fix incorrect arg storage for arm softfp interpreter (#35643)

In get_call_info, IS_HARD_FLOAT is checked to switch between using the FP registers and the GP registers. This was not done in arg_get_storage, which was always using the hard float registers. This would mean parameters to the native trampoline wouldn't get copied correctly, and return values would be incorrect as well.

I can't find a way to add this to tests, since no softfp test systems seem to be built. I'm working on testing the use cases I can think of on my softfp system just to be sure.

Any assignments to type RegTypeHFA were locked behind a IS_HARD_FLOAT check as well, so I think its safe to modify that case too.

Fixes mono/mono#14591
src/mono/mono/mini/mini-arm.c