Revision tags: llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4 |
|
#
6070aeb3 |
| 05-Nov-2024 |
Nuno Lopes <nuno.lopes@tecnico.ulisboa.pt> |
[Coro] Use poison instead of undef as placeholder [NFC]
|
Revision tags: llvmorg-19.1.3, llvmorg-19.1.2 |
|
#
3737a532 |
| 10-Oct-2024 |
Tyler Nowicki <tyler.nowicki@amd.com> |
[Coroutines] Support for Custom ABIs (#111755)
This change extends the current method for creating ABI object to allow
users (plugin libraries) to create custom ABI objects for their needs.
This i
[Coroutines] Support for Custom ABIs (#111755)
This change extends the current method for creating ABI object to allow
users (plugin libraries) to create custom ABI objects for their needs.
This is accomplished by inheriting one of the common ABIs and overriding
one or more of the methods to create a custom ABI. To use a custom ABI
for a given coroutine the coro.begin.custom.abi intrinsic is used in
place of the coro.begin intrinsic. This takes an additional i32 arg that
specifies the index of an ABI generator for the custom ABI object in a
SmallVector passed to the CoroSplitPass ctor.
The detailed changes include:
* Add the llvm.coro.begin.custom intrinsic used to specify the index of
the custom ABI to use for the given coroutine.
* Add constructors to CoroSplit that take a list of generators that
create the custom ABI object.
* Extend the CreateNewABI function used by CoroSplit to return a
unique_ptr to an ABI object.
* Add has/getCustomABI methods to CoroBeginInst class.
* Add a unittest for a custom ABI.
See doc update here: https://github.com/llvm/llvm-project/pull/111781
show more ...
|
Revision tags: llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init |
|
#
74deadf1 |
| 29-Jun-2024 |
Nikita Popov <llvm@npopov.com> |
[IRBuilder] Don't include Module.h (NFC) (#97159)
This used to be necessary to fetch the DataLayout, but isn't anymore.
|
Revision tags: llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6 |
|
#
f42eb15c |
| 26-Nov-2023 |
Youngsuk Kim <joseph942010@gmail.com> |
[llvm][Coroutines] Remove no-op ptr-to-ptr bitcasts (NFC) (#73427)
Opaque ptr cleanup effort
|
#
aba04018 |
| 22-Nov-2023 |
Craig Topper <craig.topper@sifive.com> |
[IR] Replace uses of IRBuilder::getInt8PtrTy with getPtrTy. NFC (#73154)
|
Revision tags: llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0 |
|
#
3fd42f50 |
| 14-Mar-2023 |
Arthur Eubanks <aeubanks@google.com> |
[CoroCleanup] Invalidate analyses on changed functions before running SimplifyCFG
Or else the sub-FunctionPassManager may see out of date analyses.
|
Revision tags: llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
#
bc4870f0 |
| 18-Jul-2022 |
Arnold Schwaighofer <aschwaighofer@apple.com> |
[coro async] Add missing llvm.coro.id.async intrinsic to declaresCoroCleanupIntrinsics
rdar://97214593
Differential Revision: https://reviews.llvm.org/D130038
|
Revision tags: llvmorg-14.0.6, llvmorg-14.0.5 |
|
#
735e6c40 |
| 10-Jun-2022 |
Chuanqi Xu <yedeng.yd@linux.alibaba.com> |
[Coroutines] Convert coroutine.presplit to enum attr
This is required by @nikic in https://reviews.llvm.org/D127383 to decrease the cost to check whether a function is a coroutine and this fixes a F
[Coroutines] Convert coroutine.presplit to enum attr
This is required by @nikic in https://reviews.llvm.org/D127383 to decrease the cost to check whether a function is a coroutine and this fixes a FIXME too.
Reviewed By: rjmccall, ezhulenev
Differential Revision: https://reviews.llvm.org/D127471
show more ...
|
#
fb67d683 |
| 25-May-2022 |
serge-sans-paille <sguelton@redhat.com> |
[iwyu] Handle regressions in libLLVM header include
Running iwyu-diff on LLVM codebase since 7030654296a0416bd9402a0278 detected a few regressions, fixing them.
Differential Revision: https://revie
[iwyu] Handle regressions in libLLVM header include
Running iwyu-diff on LLVM codebase since 7030654296a0416bd9402a0278 detected a few regressions, fixing them.
Differential Revision: https://reviews.llvm.org/D126417
show more ...
|
Revision tags: llvmorg-14.0.4 |
|
#
beeed099 |
| 10-May-2022 |
Chuanqi Xu <yedeng.yd@linux.alibaba.com> |
[Coroutines] Use PassManager instead of Legacy PassManager internally
This is a following cleanup for the previous work D123918. I missed serveral places which still use legacy pass managers. This p
[Coroutines] Use PassManager instead of Legacy PassManager internally
This is a following cleanup for the previous work D123918. I missed serveral places which still use legacy pass managers. This patch tries to remove them.
show more ...
|
#
405bf902 |
| 05-May-2022 |
Chuanqi Xu <yedeng.yd@linux.alibaba.com> |
[NFC] [Pipelines] Hoist CoroCleanup as Module Pass
This is similar to previous patch https://reviews.llvm.org/D123925. It could also reduce the time we call declaresCoroCleanupIntrinsics. And it is
[NFC] [Pipelines] Hoist CoroCleanup as Module Pass
This is similar to previous patch https://reviews.llvm.org/D123925. It could also reduce the time we call declaresCoroCleanupIntrinsics. And it is helpful for further changes.
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D124362
show more ...
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2 |
|
#
483efc9a |
| 21-Apr-2022 |
Chuanqi Xu <yedeng.yd@linux.alibaba.com> |
[Pipelines] Remove Legacy Passes in Coroutines
The legacy passes are deprecated now and would be removed in near future. This patch tries to remove legacy passes in coroutines.
Reviewed By: aeubank
[Pipelines] Remove Legacy Passes in Coroutines
The legacy passes are deprecated now and would be removed in near future. This patch tries to remove legacy passes in coroutines.
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D123918
show more ...
|
Revision tags: llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
#
7d11c5da |
| 16-Nov-2021 |
Arnold Schwaighofer <aschwaighofer@apple.com> |
Coro: Remove coro_end and coro_suspend_retcon in private unprocessed functions
We might emit functions that are private and never called. The coro split pass only processes functions that might be
Coro: Remove coro_end and coro_suspend_retcon in private unprocessed functions
We might emit functions that are private and never called. The coro split pass only processes functions that might be called. Remove intrinsics that we can't generate code for.
rdar://84619859
Differential Revision: https://reviews.llvm.org/D114021
show more ...
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4 |
|
#
2df2b27d |
| 21-Sep-2021 |
Arnold Schwaighofer <aschwaighofer@apple.com> |
[cora async] Cleanup undefined llvm.coro.async.resume
In situations where the coroutine function is not split we can just replace the async.resume by null.
rdar://82591919
Differential Revision: h
[cora async] Cleanup undefined llvm.coro.async.resume
In situations where the coroutine function is not split we can just replace the async.resume by null.
rdar://82591919
Differential Revision: https://reviews.llvm.org/D110191
show more ...
|
#
24c8eaec |
| 16-Sep-2021 |
Kazu Hirata <kazu@google.com> |
[Transforms] Use make_early_inc_range (NFC)
|
Revision tags: llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2 |
|
#
01b4890e |
| 22-Feb-2021 |
Nate Chandler <nate_chandler@apple.com> |
Add @llvm.coro.async.size.replace intrinsic.
The new intrinsic replaces the size in one specified AsyncFunctionPointer with the size in another. This ability is necessary for functions which merely
Add @llvm.coro.async.size.replace intrinsic.
The new intrinsic replaces the size in one specified AsyncFunctionPointer with the size in another. This ability is necessary for functions which merely forward to async functions such as those defined for partial applications.
Reviewed By: aschwaighofer
Differential Revision: https://reviews.llvm.org/D97229
show more ...
|
Revision tags: llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1 |
|
#
ea5989b4 |
| 21-Oct-2020 |
Arnold Schwaighofer <aschwaighofer@apple.com> |
Start of an llvm.coro.async implementation
This patch adds the `async` lowering of coroutines.
This will be used by the Swift frontend to lower async functions. In contrast to the `retcon` lowering
Start of an llvm.coro.async implementation
This patch adds the `async` lowering of coroutines.
This will be used by the Swift frontend to lower async functions. In contrast to the `retcon` lowering the frontend needs to be in control over control-flow at suspend points as execution might be suspended at these points.
This is very much work in progress and the implementation will change as it evolves with the frontend. As such the documentation is lacking detail as some of it might change.
rdar://70097093
Reapply with fix for memory sanitizer failure and sphinx failure.
Differential Revision: https://reviews.llvm.org/D90612
show more ...
|
#
42f19166 |
| 04-Nov-2020 |
Arnold Schwaighofer <aschwaighofer@apple.com> |
Revert "Start of an llvm.coro.async implementation"
This reverts commit ea606cced0583d1dbd4c44680601d1d4e9a56e58.
This patch causes memory sanitizer failures sanitizer-x86_64-linux-fast.
|
#
ea606cce |
| 21-Oct-2020 |
Arnold Schwaighofer <aschwaighofer@apple.com> |
Start of an llvm.coro.async implementation
This patch adds the `async` lowering of coroutines.
This will be used by the Swift frontend to lower async functions. In contrast to the `retcon` lowering
Start of an llvm.coro.async implementation
This patch adds the `async` lowering of coroutines.
This will be used by the Swift frontend to lower async functions. In contrast to the `retcon` lowering the frontend needs to be in control over control-flow at suspend points as execution might be suspended at these points.
This is very much work in progress and the implementation will change as it evolves with the frontend. As such the documentation is lacking detail as some of it might change.
rdar://70097093
Differential Revision: https://reviews.llvm.org/D90612
show more ...
|
Revision tags: llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3, llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1, llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2, llvmorg-10.0.0-rc1, llvmorg-11-init |
|
#
5a187d8e |
| 26-Dec-2019 |
Brian Gesiak <modocache@gmail.com> |
[Coroutines][4/6] New pass manager: coro-cleanup
Summary: Depends on https://reviews.llvm.org/D71900.
The fourth in a series of patches that ports the LLVM coroutines passes to the new pass manager
[Coroutines][4/6] New pass manager: coro-cleanup
Summary: Depends on https://reviews.llvm.org/D71900.
The fourth in a series of patches that ports the LLVM coroutines passes to the new pass manager infrastructure. This patch implements 'coro-cleanup'.
No existing regression tests check the behavior of coro-cleanup on its own, so this patch adds one. (A test named 'coro-cleanup.ll' exists, but it relies on the entire coroutines pipeline being run. It's updated to test the new pass manager in the 5th patch of this series.)
Reviewers: GorNishanov, lewissbaker, chandlerc, junparser, deadalnix, wenlei
Reviewed By: wenlei
Subscribers: wenlei, EricWF, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71901
show more ...
|
#
2fcf7691 |
| 02-Jan-2020 |
Brian Gesiak <modocache@gmail.com> |
[Coroutines] Rename "legacy" passes (NFC)
A series of patches beginning with https://reviews.llvm.org/D71898 propose to add an implementation of the coroutine passes to the new pass manager. As part
[Coroutines] Rename "legacy" passes (NFC)
A series of patches beginning with https://reviews.llvm.org/D71898 propose to add an implementation of the coroutine passes to the new pass manager. As part of these changes, the coroutine passes that implement the legacy pass manager interface are renamed, to `<PassName>Legacy`. This mirrors similar changes that have been made to many other passes in LLVM as they've been transitioned to support both old and new pass managers.
This commit splits out the renaming portion of that patch and commits it in advance as an NFC (no functional change intended) commit. It renames:
* `CoroEarly` => `CoroEarlyLegacy` * `CoroSplit` => `CoroSplitLegacy` * `CoroElide` => `CoroElideLegacy` * `CoroCleanup` => `CoroCleanupLegacy`
show more ...
|
Revision tags: llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1, llvmorg-9.0.0, llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4, llvmorg-9.0.0-rc3 |
|
#
0eaee545 |
| 15-Aug-2019 |
Jonas Devlieghere <jonas@devlieghere.com> |
[llvm] Migrate llvm::make_unique to std::make_unique
Now that we've moved to C++14, we no longer need the llvm::make_unique implementation from STLExtras.h. This patch is a mechanical replacement of
[llvm] Migrate llvm::make_unique to std::make_unique
Now that we've moved to C++14, we no longer need the llvm::make_unique implementation from STLExtras.h. This patch is a mechanical replacement of (hopefully) all the llvm::make_unique instances across the monorepo.
llvm-svn: 369013
show more ...
|
#
94010b2b |
| 14-Aug-2019 |
John McCall <rjmccall@apple.com> |
Extend coroutines to support a "returned continuation" lowering.
A quick contrast of this ABI with the currently-implemented ABI:
- Allocation is implicitly managed by the lowering passes, which is
Extend coroutines to support a "returned continuation" lowering.
A quick contrast of this ABI with the currently-implemented ABI:
- Allocation is implicitly managed by the lowering passes, which is fine for frontends that are fine with assuming that allocation cannot fail. This assumption is necessary to implement dynamic allocas anyway.
- The lowering attempts to fit the coroutine frame into an opaque, statically-sized buffer before falling back on allocation; the same buffer must be provided to every resume point. A buffer must be at least pointer-sized.
- The resume and destroy functions have been combined; the continuation function takes a parameter indicating whether it has succeeded.
- Conversely, every suspend point begins its own continuation function.
- The continuation function pointer is directly returned to the caller instead of being stored in the frame. The continuation can therefore directly destroy the frame when exiting the coroutine instead of having to leave it in a defunct state.
- Other values can be returned directly to the caller instead of going through a promise allocation. The frontend provides a "prototype" function declaration from which the type, calling convention, and attributes of the continuation functions are taken.
- On the caller side, the frontend can generate natural IR that directly uses the continuation functions as long as it prevents IPO with the coroutine until lowering has happened. In combination with the point above, the frontend is almost totally in charge of the ABI of the coroutine.
- Unique-yield coroutines are given some special treatment.
llvm-svn: 368788
show more ...
|
Revision tags: llvmorg-9.0.0-rc2, llvmorg-9.0.0-rc1, llvmorg-10-init, llvmorg-8.0.1, llvmorg-8.0.1-rc4, llvmorg-8.0.1-rc3, llvmorg-8.0.1-rc2, llvmorg-8.0.1-rc1, llvmorg-8.0.0, llvmorg-8.0.0-rc5, llvmorg-8.0.0-rc4, llvmorg-8.0.0-rc3, llvmorg-7.1.0, llvmorg-7.1.0-rc1, llvmorg-8.0.0-rc2 |
|
#
14359ef1 |
| 01-Feb-2019 |
James Y Knight <jyknight@google.com> |
[opaque pointer types] Pass value type to LoadInst creation.
This cleans up all LoadInst creation in LLVM to explicitly pass the value type rather than deriving it from the pointer's element-type.
[opaque pointer types] Pass value type to LoadInst creation.
This cleans up all LoadInst creation in LLVM to explicitly pass the value type rather than deriving it from the pointer's element-type.
Differential Revision: https://reviews.llvm.org/D57172
llvm-svn: 352911
show more ...
|
Revision tags: llvmorg-8.0.0-rc1 |
|
#
2946cd70 |
| 19-Jan-2019 |
Chandler Carruth <chandlerc@gmail.com> |
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the ne
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach.
Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository.
llvm-svn: 351636
show more ...
|