Various tailcall test improvements (dotnet/coreclr#26818)
authorJakob Botsch Nielsen <t-janie@microsoft.com>
Wed, 25 Sep 2019 21:54:21 +0000 (14:54 -0700)
committerJarret Shook <jashoo@microsoft.com>
Wed, 25 Sep 2019 21:54:21 +0000 (14:54 -0700)
commitfdaf97e3ac1eaa0d44bdb8456efb346c5ef0019e
treeeb7fb48984bf5b16a9849c17779c7ffb122a0a68
parentc245fb854cebb79fc88dbf4d5c5ed76cad24b6ff
Various tailcall test improvements (dotnet/coreclr#26818)

* Remove some illegal tailcall tests

These tests pass address of local stack frame to tail. prefixed calls.

* Add some more tailcall tests

* Tail calls to functions with small return values
* Tail calls to functions with retbuf
* Tail calls to functions with multi-reg returned structs
* Tail calls to functions with void returns
* Tail calls to abstract methods
* Tail calls to interface methods
* tail. calli sequences
* Tail calls to struct instance methods
* Tail calls involving refs
* Tail calls involving byrefs
* Tail calls involving generics

* Improve tailcall hijacking test

* Force this test to use helper on AMD64 too
* Instead of 3 tailcallers and 1 collector, just use 1 collector and 1
tailcaller. Additionally, run it for only 30 iterations of 1 second
sleeps. This should allow it to run for AMD64 and ARM32 in CI too.

* Clarify some reasons for some disabled tests

* Disable new test on everything except x86 Windows

* Add another arg to TailHelper2 to ensure helper-based tailcall on SysV

* Disable hijacking test on anything except x86/x64 Windows

* Update more tailcalls test and add source file

* Pinvoke printf for Unix in TailcallVerifyWithPrefix test

* Clean up TailcallVerifyWithPrefix test

Remove commented tests and tests that do not run from this file

* Clean up reasons for disabling TailcallVerifyWithPrefix

* Update a reason

* Remove more dead code in TailcallVerifyWithPrefix.il

* Fix wrong IL in TailcallVerifyWithPrefix test

* Add a comment describing more_tailcalls.cs

* Clarify issue number

Commit migrated from https://github.com/dotnet/coreclr/commit/2468ce3d56071290a8ac13d6970783dd56975330
25 files changed:
src/coreclr/tests/issues.targets
src/coreclr/tests/src/JIT/Directed/tailcall/more_tailcalls.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/tailcall/more_tailcalls.il [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/tailcall/more_tailcalls.ilproj [moved from src/coreclr/tests/src/JIT/Methodical/tailcall_v4/tailcall_AV.ilproj with 83% similarity]
src/coreclr/tests/src/JIT/Methodical/tailcall_v4/hijacking.il
src/coreclr/tests/src/JIT/Methodical/tailcall_v4/tailcall_AV.il [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call03_dynamic.il [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call03_dynamic.ilproj [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call03_large.il [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call03_large.ilproj [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call03_small.il [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call03_small.ilproj [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call04_dynamic.il [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call04_dynamic.ilproj [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call04_large.il [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call04_large.ilproj [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call04_small.il [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call04_small.ilproj [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call06_dynamic.il [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call06_dynamic.ilproj [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call06_large.il [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call06_large.ilproj [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call06_small.il [deleted file]
src/coreclr/tests/src/JIT/jit64/localloc/call/call06_small.ilproj [deleted file]
src/coreclr/tests/src/JIT/opt/Tailcall/TailcallVerifyWithPrefix.il