<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/test/CodeGen/Generic, branch release_22</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/test/CodeGen/Generic?h=release_22</id>
<link rel='self' href='https://git.amat.us/llvm/atom/test/CodeGen/Generic?h=release_22'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2008-01-15T22:17:26Z</updated>
<entry>
<title>new testcase for llvm.trap.</title>
<updated>2008-01-15T22:17:26Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-01-15T22:17:26Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=9a856b049d767e9da43736e9f05c7a7c772fb404'/>
<id>urn:sha1:9a856b049d767e9da43736e9f05c7a7c772fb404</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46020 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>new testcase for PR1845</title>
<updated>2008-01-10T00:30:38Z</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2008-01-10T00:30:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=314286f6bd7e7d1c4833866831aa576583c2d7b3'/>
<id>urn:sha1:314286f6bd7e7d1c4833866831aa576583c2d7b3</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45795 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Setting GlobalDirective in TargetAsmInfo by default rather than</title>
<updated>2008-01-07T02:31:11Z</updated>
<author>
<name>Gordon Henriksen</name>
<email>gordonhenriksen@mac.com</email>
</author>
<published>2008-01-07T02:31:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=572742e876478d3ec7ff0750c0473d7621804b15'/>
<id>urn:sha1:572742e876478d3ec7ff0750c0473d7621804b15</id>
<content type='text'>
providing a misleading facility. It's used once in the MIPS backend
and hardcoded as "\t.globl\t" everywhere else.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45676 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>With this patch, the LowerGC transformation becomes the</title>
<updated>2008-01-07T01:30:53Z</updated>
<author>
<name>Gordon Henriksen</name>
<email>gordonhenriksen@mac.com</email>
</author>
<published>2008-01-07T01:30:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=8fa89291774a29ee30adb9d0fd01655c84eaac13'/>
<id>urn:sha1:8fa89291774a29ee30adb9d0fd01655c84eaac13</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>Fix PR1833 - eh.exception and eh.selector return two</title>
<updated>2007-12-31T18:35:50Z</updated>
<author>
<name>Duncan Sands</name>
<email>baldrick@free.fr</email>
</author>
<published>2007-12-31T18:35:50Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=b027fa001f16660a231a54ecea6a79f5c7855d7c'/>
<id>urn:sha1:b027fa001f16660a231a54ecea6a79f5c7855d7c</id>
<content type='text'>
values, which means doing extra legalization work.
It would be easier to get this kind of thing right if
there was some documentation...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45472 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Tests for changes made in r45356, where IPO optimizations would drop</title>
<updated>2007-12-26T02:47:37Z</updated>
<author>
<name>Gordon Henriksen</name>
<email>gordonhenriksen@mac.com</email>
</author>
<published>2007-12-26T02:47:37Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=e86ce7d94abaf7883a5d84dcb9a79c118b63672b'/>
<id>urn:sha1:e86ce7d94abaf7883a5d84dcb9a79c118b63672b</id>
<content type='text'>
collector algorithms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45357 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>GC poses hazards to the inliner. Consider:</title>
<updated>2007-12-25T03:10:07Z</updated>
<author>
<name>Gordon Henriksen</name>
<email>gordonhenriksen@mac.com</email>
</author>
<published>2007-12-25T03:10:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=0e13821c96937830ec817f08095c3cef1fdcac8d'/>
<id>urn:sha1:0e13821c96937830ec817f08095c3cef1fdcac8d</id>
<content type='text'>
    define void @f() {
            ...
            call i32 @g()
            ...
    }

    define void @g() {
            ...
    }

The hazards are:

  - @f and @g have GC, but they differ GC. Inlining is invalid. This
    may never occur.
  - @f has no GC, but @g does. g's GC must be propagated to @f.

The other scenarios are safe:

  - @f and @g have the same GC.
  - @f and @g have no GC.
  - @g has no GC.

This patch adds inliner checks for the former two scenarios.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45351 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Noting and enforcing that GC intrinsics are valid only within a</title>
<updated>2007-12-25T02:31:26Z</updated>
<author>
<name>Gordon Henriksen</name>
<email>gordonhenriksen@mac.com</email>
</author>
<published>2007-12-25T02:31:26Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=e1433f24cf714c49b266e8cefdbbb8a464ffcb8e'/>
<id>urn:sha1:e1433f24cf714c49b266e8cefdbbb8a464ffcb8e</id>
<content type='text'>
function with GC.

This will catch the error when the inliner inlines a function with
GC into a caller with no GC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45350 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Adjusting verification of "llvm.gc*" intrinsic prototypes to match</title>
<updated>2007-12-25T02:02:10Z</updated>
<author>
<name>Gordon Henriksen</name>
<email>gordonhenriksen@mac.com</email>
</author>
<published>2007-12-25T02:02:10Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=27acd3a999ec3790e6af1d6416295caab5033320'/>
<id>urn:sha1:27acd3a999ec3790e6af1d6416295caab5033320</id>
<content type='text'>
LangRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45349 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Make invokes of inline asm legal.  Teach codegen</title>
<updated>2007-12-17T18:08:19Z</updated>
<author>
<name>Duncan Sands</name>
<email>baldrick@free.fr</email>
</author>
<published>2007-12-17T18:08:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=fd7b326bea39c077eea8d378156bcf09051cc4ec'/>
<id>urn:sha1:fd7b326bea39c077eea8d378156bcf09051cc4ec</id>
<content type='text'>
how to lower them (with no attempt made to be
efficient, since they should only occur for
unoptimized code).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45108 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
</feed>
