summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSergey Andreenko <seandree@microsoft.com>2018-12-21 12:24:52 -0800
committerGitHub <noreply@github.com>2018-12-21 12:24:52 -0800
commita9ceb1534e5a205bc1b56d0c097595ef8c2ff7f6 (patch)
tree32fca9f2a3f9ae2cde333c7270aa1f00067d0ed2 /tests
parenta8ed07a5ee70f0864290f3e9870d53665c2aef4a (diff)
downloadcoreclr-a9ceb1534e5a205bc1b56d0c097595ef8c2ff7f6.tar.gz
coreclr-a9ceb1534e5a205bc1b56d0c097595ef8c2ff7f6.tar.bz2
coreclr-a9ceb1534e5a205bc1b56d0c097595ef8c2ff7f6.zip
Fix arm64 prolog generation for register masks with holes. (#21395)
* Check that `genSaveCalleeSavedRegistersHelp` doesn't accept `REG_LR`. There are two callers and both save `LR` with `FP` before calling this helper. In case if somebody calls this function wth`REG_LR` it won't work because unwinding info doesn't expect holes in the reg pairs. * Extract `genPushOrPopCalleeSavedRegisters`. It will be used for both float and int types. * Extend `genSaveCaleeSavedRegisterGroup` to support float. The previous version was a copy-paste with an additional case for `REG_LR` that was unreachable. Fix that. * Use `genSaveCaleeSavedRegisterGroup` for floats. * Extract `genRestoreCaleeSavedRegisterGroup`. It will be used for both int and float groups. * Prepare `genPopCalleeSavedRegisters` to work with float. * Use `genRestoreCaleeSavedRegisterGroup` for float. * Check that `genRestoreCalleeSavedRegistersHelp` doesn't restore `REG_LR`. Both callers do it later. * Extract `CheckSPOffset`. and move it out of loops because it works only before the first save intruction. * Format `genRestoreCaleeSavedRegisterGroup` as `genSaveCalleeSavedRegistersHelp`. * Extract `buildRegPairsStack` from `genSaveCaleeSavedRegisterGroup` and `genRestoreCaleeSavedRegisterGroup`. Build a stack of registers that we want to save/restore and then iterate over it doing the actual saving/restoring. * Extract `GetSlotSizeForRegsInMask`. * Tolerate holes in arm64 prolog/epilog register masks. Fixes #21363 * Reenable the test. * Add new methods headers. * Fix typos. * Do not use non-const references. * Describe `buildRegPairsStack` better. * Change signature of `buildRegPairsStack` to avoid copyings of big structs. * Return the logic for `RBM_LR`. For future use. * Clean-up some unused variables. * Fix comments. * Get rid of file-level functions. * Make new methods static.
Diffstat (limited to 'tests')
-rw-r--r--tests/issues.targets3
1 files changed, 0 insertions, 3 deletions
diff --git a/tests/issues.targets b/tests/issues.targets
index b3bed8a126..7c44b6ef25 100644
--- a/tests/issues.targets
+++ b/tests/issues.targets
@@ -239,9 +239,6 @@
<ExcludeList Include="$(XunitTestBinBase)/readytorun/r2rdump/R2RDumpTest/*">
<Issue>19441</Issue>
</ExcludeList>
- <ExcludeList Include="$(XunitTestBinBase)/JIT/Regression/JitBlue/DevDiv_736188/DevDiv_736188/*">
- <Issue>21363</Issue>
- </ExcludeList>
</ItemGroup>
<ItemGroup Condition="'$(XunitTestBinBase)' != ''">