| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
functions with deduced return types.
Summary: The title says it all. Additionally this patch refactors the diagnostic code into a separate function.
Reviewers: GorNishanov, rsmith
Subscribers: majnemer, mehdi_amini, cfe-commits
Differential Revision: https://reviews.llvm.org/D25292
llvm-svn: 285331
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
SemaCoroutine: Add allocation / deallocation substatements.
CGCoroutine/Test: Emit allocation and deallocation + test.
Reviewers: rsmith
Subscribers: ABataev, EricWF, llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D25879
llvm-svn: 285306
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This patch adds semantic checking and building of the fall-through `co_return;` statement as well as the `p.set_exception(std::current_exception())` call for handling uncaught exceptions.
The fall-through statement is built and checked according to:
> [dcl.fct.def.coroutine]/4
> The unqualified-ids return_void and return_value are looked up in the scope of class P. If
> both are found, the program is ill-formed. If the unqualified-id return_void is found, flowing
> off the end of a coroutine is equivalent to a co_return with no operand. Otherwise, flowing off
> the end of a coroutine results in undefined behavior.
Similarly the `set_exception` call is only built when that unqualified-id is found in the scope of class P.
Additionally this patch adds fall-through warnings for non-void returning coroutines. Since it's surprising undefined behavior I thought it would be important to add the warning right away.
Reviewers: majnemer, GorNishanov, rsmith
Subscribers: mehdi_amini, cfe-commits
Differential Revision: https://reviews.llvm.org/D25349
llvm-svn: 285271
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Previously the statement `co_return {42}` would be transformed into `P.return_void()`, since the type of `{42}` is represented as `void` by Clang.
This patch fixes the bug by checking for `InitListExpr` arguments and transforming them accordingly.
Reviewers: majnemer, GorNishanov, rsmith
Subscribers: mehdi_amini, cfe-commits
Differential Revision: https://reviews.llvm.org/D25296
llvm-svn: 283495
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Look for coroutine_traits and friends in std::experimental namespace.
Patch (mostly) by EricWF.
Reviewers: cfe-commits, EricWF, rsmith
Subscribers: majnemer, mehdi_amini
Differential Revision: https://reviews.llvm.org/D25068
llvm-svn: 283170
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: The title says it all.
Reviewers: rsmith, GorNishanov
Subscribers: mehdi_amini, cfe-commits
Differential Revision: https://reviews.llvm.org/D25078
llvm-svn: 282973
|
|
|
|
|
|
| |
co_await/co_yield/co_return expressions
llvm-svn: 282792
|
|
|
|
|
|
|
|
|
|
| |
MaterializeTemporaryExpr."
Since D21243 fixes relative clang-tidy tests.
This reverts commit a71d9fbd41e99def9159af2b01ef6509394eaeed.
llvm-svn: 273312
|
|
|
|
|
|
|
|
|
| |
MaterializeTemporaryExpr."
This reverts r272296, since there are clang-tidy failures that appear to
be caused by this change.
llvm-svn: 272310
|
|
|
|
|
|
|
|
|
|
|
| |
These ExprWithCleanups are added for holding a RunCleanupsScope not
for destructor calls; rather, they are for lifetime marks. This requires
ExprWithCleanups to keep a bit to indicate whether it have cleanups with
side effects (e.g. dtor calls).
Differential Revision: http://reviews.llvm.org/D20498
llvm-svn: 272296
|
|
|
|
|
|
| |
and form the initial_suspend, final_suspend, and get_return_object calls.
llvm-svn: 253946
|
|
|
|
|
|
| |
resolved by a call to yield_value / return_value before rejecting them.
llvm-svn: 253817
|
|
|
|
| |
llvm-svn: 253816
|
|
|
|
| |
llvm-svn: 253812
|
|
|
|
|
|
| |
co_await and co_yield, and use it to hold await_* calls.
llvm-svn: 253811
|
|
|
|
| |
llvm-svn: 253731
|
|
|
|
| |
llvm-svn: 253725
|
|
|
|
|
|
| |
unevaluated operands.
llvm-svn: 253641
|
|
|
|
|
|
| |
std::coroutine_traits.
llvm-svn: 253535
|
|
|
|
|
|
| |
of await_* calls, and AST representation for same.
llvm-svn: 251387
|
|
yield / return.
llvm-svn: 250993
|