NDK 26 renamed the directory in which it places the Android compiler-rt from
`lib64/`, and added a bunch of nullability annotations to the Bionic libc.
This adds SIL-level support and LLVM codegen for normal results of a coroutine.
The main user of this will be autodiff as VJP of a coroutine must be a coroutine itself (in order to produce the yielded result) and return a pullback closure as a normal result.
For now only direct results are supported, but this seems to be enough for autodiff purposes.
Rather than just on or off, I've changed it to allow "off", "fast",
or "full". "fast" means that we'll do symbol lookup, but we won't
try to find inline frames and we won't run line number programs
(those are the things that are taking considerable time in some
cases).
rdar://122302117
Specifies that the optimizer and IRGen must not add runtime calls which are not in the function originally.
This attribute is set for functions with performance constraints or functions which are called from functions with performance.
Just writing some tests for the pack instructions and I would have found having
a textual SIL example in SIL.rst of how to write them to be useful. Just paying
it forward.
commit bcc59744b7da00395708f41984ee2be70924cb6c
Author: Ruslan Alikhamov <r.alikhamov@gmail.com>
Date: Sat Jan 13 15:28:42 2024 +0400
applied suggested phrasing
commit b5b0f9622a5dca80cf79df41e4834959021329ca
Author: Ruslan Alikhamov <r.alikhamov@gmail.com>
Date: Fri Jan 12 23:48:12 2024 +0400
Added a note about hardware requirements for compiling on Linux
commit 863c1d98dd8c3c3e67610fe9ea9ac00e161d687a
Author: Ruslan Alikhamov <r.alikhamov@gmail.com>
Date: Fri Jan 12 23:47:19 2024 +0400
Moved note to Requirements section
commit 307d0027967945cdc5c0d28b9c4525fc27149f66
Author: Ruslan Alikhamov <r.alikhamov@gmail.com>
Date: Wed Jan 10 19:45:54 2024 +0400
Added a note about hardware requirements for compiling on Linux
commit 943ccc2726aa2f8850f38670b848304acb3359aa
Author: Ruslan Alikhamov <r.alikhamov@gmail.com>
Date: Wed Jan 10 19:45:13 2024 +0400
Replaced 'and' with 'plus' to ease comprehension
commit 3427ace37d63d398542aa80be6c30a27a940eef9
Author: Ruslan Alikhamov <r.alikhamov@gmail.com>
Date: Thu Jan 4 21:02:22 2024 +0400
Added a note about hardware requirements for compiling on Linux
commit 49bafe98a3c938e83af3de351094b47650836aee
Author: Ruslan Alikhamov <r.alikhamov@gmail.com>
Date: Thu Jan 4 20:49:35 2024 +0400
Added "of RAM" to each reference
commit 9dc879cb30e9c9507d78d5de3a1d0de2808979c6
Author: Ruslan Alikhamov <r.alikhamov@gmail.com>
Date: Thu Jan 4 14:13:20 2024 +0400
Updated text according to comment, removed mention of VM for Linux
commit b652195dcbedc7fa3a770075457880d544a78a60
Author: Ruslan Alikhamov <r.alikhamov@gmail.com>
Date: Wed Jan 3 00:06:18 2024 +0400
Added more information about different RAM requirements
commit 2aa1be00ce6ab66f50928484727e684a9eb5c243
Author: Ruslan Alikhamov <r.alikhamov@gmail.com>
Date: Mon Jan 1 03:19:22 2024 +0400
Added a note about Linux inside of a VM hardware requirements
Optionally, the dependency to the initialization of the global can be specified with a dependency token `depends_on <token>`.
This is usually a `builtin "once"` which calls the initializer for the global variable.
The dependent 'value' may be marked 'nonescaping', which guarantees that the
lifetime dependence is statically enforceable. In this case, the compiler
must be able to follow all values forwarded from the dependent 'value', and
recognize all final (non-forwarded, non-escaping) use points. This implies
that `findPointerEscape` is false. A diagnostic pass checks that the
incoming SIL to verify that these use points are all initially within the
'base' lifetime. Regular 'mark_dependence' semantics ensure that
optimizations cannot violate the lifetime dependence after diagnostics.