llvm-6502/test
Gordon Henriksen 8fa8929177 With this patch, the LowerGC transformation becomes the
ShadowStackCollector, which additionally has reduced overhead with
no sacrifice in portability.

Considering a function @fun with 8 loop-local roots,
ShadowStackCollector introduces the following overhead
(x86):

; shadowstack prologue
        movl    L_llvm_gc_root_chain$non_lazy_ptr, %eax
        movl    (%eax), %ecx
        movl    $___gc_fun, 20(%esp)
        movl    $0, 24(%esp)
        movl    $0, 28(%esp)
        movl    $0, 32(%esp)
        movl    $0, 36(%esp)
        movl    $0, 40(%esp)
        movl    $0, 44(%esp)
        movl    $0, 48(%esp)
        movl    $0, 52(%esp)
        movl    %ecx, 16(%esp)
        leal    16(%esp), %ecx
        movl    %ecx, (%eax)

; shadowstack loop overhead
        (none)

; shadowstack epilogue
        movl    48(%esp), %edx
        movl    %edx, (%ecx)

; shadowstack metadata
        .align  3
___gc_fun:                              # __gc_fun
        .long   8
        .space  4

In comparison to LowerGC:

; lowergc prologue
        movl    L_llvm_gc_root_chain$non_lazy_ptr, %eax
        movl    (%eax), %ecx
        movl    %ecx, 48(%esp)
        movl    $8, 52(%esp)
        movl    $0, 60(%esp)
        movl    $0, 56(%esp)
        movl    $0, 68(%esp)
        movl    $0, 64(%esp)
        movl    $0, 76(%esp)
        movl    $0, 72(%esp)
        movl    $0, 84(%esp)
        movl    $0, 80(%esp)
        movl    $0, 92(%esp)
        movl    $0, 88(%esp)
        movl    $0, 100(%esp)
        movl    $0, 96(%esp)
        movl    $0, 108(%esp)
        movl    $0, 104(%esp)
        movl    $0, 116(%esp)
        movl    $0, 112(%esp)

; lowergc loop overhead
        leal    44(%esp), %eax
        movl    %eax, 56(%esp)
        leal    40(%esp), %eax
        movl    %eax, 64(%esp)
        leal    36(%esp), %eax
        movl    %eax, 72(%esp)
        leal    32(%esp), %eax
        movl    %eax, 80(%esp)
        leal    28(%esp), %eax
        movl    %eax, 88(%esp)
        leal    24(%esp), %eax
        movl    %eax, 96(%esp)
        leal    20(%esp), %eax
        movl    %eax, 104(%esp)
        leal    16(%esp), %eax
        movl    %eax, 112(%esp)

; lowergc epilogue
        movl    48(%esp), %edx
        movl    %edx, (%ecx)

; lowergc metadata
        (none)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45670 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 01:30:53 +00:00
..
Analysis Accept both %y, %x and %x, %y as valid answers. 2008-01-06 03:12:44 +00:00
Archive Delete the svn:executable property on these files, which aren't executable. 2007-07-23 19:26:08 +00:00
Assembler Don't redirect stderr when it isn't needed. 2007-12-14 15:15:11 +00:00
Bindings/Ocaml Another backwards compatibility fix. 2007-12-30 22:48:58 +00:00
Bitcode Bring back int_x86_sse2_movl_dq intrinsic for backward compatibility. Make sure 2007-12-17 22:33:23 +00:00
BugPoint Convert .cvsignore files 2007-06-29 16:35:07 +00:00
C++Frontend Rename these tests to use the appropriate suffixes. 2007-12-11 15:55:52 +00:00
CFrontend Testcase for PR1386. 2008-01-04 13:15:39 +00:00
CodeGen With this patch, the LowerGC transformation becomes the 2008-01-07 01:30:53 +00:00
DebugInfo For PR1558: 2007-07-17 06:20:38 +00:00
ExecutionEngine Teach the interpreter to read and write memory in the 2007-12-14 19:38:31 +00:00
Feature Use not instead of ignore when an exit status is expected to always 2007-12-11 15:50:23 +00:00
FrontendAda Testcase with non-integer "bitfields" (in quotes, 2008-01-04 17:31:56 +00:00
FrontendObjC Rename these tests to use the appropriate suffixes. 2007-12-11 15:55:52 +00:00
Integer Fix PR1146: parameter attributes are longer part of 2007-11-27 13:23:08 +00:00
lib Fix bug in regression tests that ignored stderr output in RUN lines. Updated tests and fixed broken run lines. 2007-11-28 04:57:00 +00:00
Linker Use not instead of ignore when an exit status is expected to always 2007-12-11 15:50:23 +00:00
Other New test. 2007-09-10 18:12:52 +00:00
Scripts Add a test script for counting lines. This can be used instead of the 2007-08-10 15:07:05 +00:00
TableGen Convert tests using "| wc -l | grep ..." to use the count script. 2007-08-15 13:36:28 +00:00
Transforms The transform that tries to turn calls to bitcast functions into 2008-01-06 18:27:01 +00:00
Verifier Get the verifier to check attributes on calls as well 2007-12-21 19:19:01 +00:00
Makefile remove attributions from the rest of the llvm makefiles. 2007-12-29 20:11:13 +00:00
Makefile.tests Failure.sh is dead, remove it. 2007-04-21 20:46:55 +00:00
TestRunner.sh Avoid an infinite loop when TestRunner.sh is run outside of the test dir. 2007-05-18 02:06:03 +00:00