Hi Chuanqi, I know the warning mentions it to be removed in clang-17, but a heads up "landing in a week" or so would have been great :)
I understand that the name "coroutines-ts" isn't meaningful these days, but it also sounds like this commit does more than remove the flag, it caps useful functionality. How are users supposed to use c++17 with coroutines now? It's very common in our codebase and we have users relying on it. Thanks, On Wed, Feb 22, 2023 at 10:44 PM Chuanqi Xu via cfe-commits <cfe-commits@lists.llvm.org> wrote: > > > Author: Chuanqi Xu > Date: 2023-02-23T14:40:58+08:00 > New Revision: 6ed67ccba7e4699e9e42302f2f9b7653444258ba > > URL: > https://github.com/llvm/llvm-project/commit/6ed67ccba7e4699e9e42302f2f9b7653444258ba > DIFF: > https://github.com/llvm/llvm-project/commit/6ed67ccba7e4699e9e42302f2f9b7653444258ba.diff > > LOG: [Coroutines] Remove -fcoroutines-ts > > Since we decided to remove the support for `-fcoroutines-ts` in > clang/llvm17 and the clang16/llvm16 is branched. So we're going to > remove the `-fcoroutines-ts` option. > > Added: > clang/test/Parser/cxx20-coroutines.cpp > > Modified: > clang/docs/ReleaseNotes.rst > clang/include/clang/AST/Stmt.h > clang/include/clang/Basic/DiagnosticDriverKinds.td > clang/include/clang/Basic/DiagnosticGroups.td > clang/include/clang/Basic/StmtNodes.td > clang/include/clang/Basic/TokenKinds.def > clang/include/clang/Driver/Options.td > clang/include/clang/Sema/Sema.h > clang/lib/AST/StmtPrinter.cpp > clang/lib/Driver/ToolChains/Clang.cpp > clang/lib/Sema/TreeTransform.h > clang/test/AST/Inputs/std-coroutine-exp-namespace.h > clang/test/AST/Inputs/std-coroutine.h > clang/test/CodeGen/no-skipped-passes-O0-opt-bisect.c > clang/test/CodeGenCoroutines/coro-builtins-err.c > clang/test/CodeGenCoroutines/coro-builtins.c > clang/test/CodeGenCoroutines/coro-gro2.cpp > clang/test/CodeGenCoroutines/coro-params.cpp > clang/test/CoverageMapping/coroutine.cpp > clang/test/Driver/coroutines.c > clang/test/Driver/coroutines.cpp > clang/test/Index/coroutines.cpp > clang/test/Lexer/coroutines.cpp > clang/test/Lexer/cxx-features.cpp > clang/test/Modules/requires-coroutines.mm > clang/test/PCH/coroutines.cpp > clang/test/SemaCXX/coroutine-builtins.cpp > clang/test/SemaCXX/thread-safety-coro.cpp > > Removed: > clang/test/Parser/cxx1z-coroutines.cpp > clang/test/SemaCXX/Inputs/std-coroutine-exp-namespace.h > > > ################################################################################ > diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst > index 9c89bbc0d1786..be3ea5ff63cde 100644 > --- a/clang/docs/ReleaseNotes.rst > +++ b/clang/docs/ReleaseNotes.rst > @@ -115,6 +115,8 @@ Removed Compiler Flags > ------------------------- > - The deprecated flag `-fmodules-ts` is removed. Please use ``-std=c++20`` > or higher to use standard C++ modules instead. > +- The deprecated flag `-fcoroutines-ts` is removed. Please use ``-std=c++20`` > + or higher to use standard C++ coroutines instead. > > Attribute Changes in Clang > -------------------------- > > diff --git a/clang/include/clang/AST/Stmt.h b/clang/include/clang/AST/Stmt.h > index b70cf3aec5d6c..45010f19b69b2 100644 > --- a/clang/include/clang/AST/Stmt.h > +++ b/clang/include/clang/AST/Stmt.h > @@ -978,7 +978,7 @@ class alignas(void *) Stmt { > SourceLocation RequiresKWLoc; > }; > > - //===--- C++ Coroutines TS bitfields classes ---===// > + //===--- C++ Coroutines bitfields classes ---===// > > class CoawaitExprBitfields { > friend class CoawaitExpr; > @@ -1082,7 +1082,7 @@ class alignas(void *) Stmt { > LambdaExprBitfields LambdaExprBits; > RequiresExprBitfields RequiresExprBits; > > - // C++ Coroutines TS expressions > + // C++ Coroutines expressions > CoawaitExprBitfields CoawaitBits; > > // Obj-C Expressions > > diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td > b/clang/include/clang/Basic/DiagnosticDriverKinds.td > index 77fb1e00585a0..4c922650e100f 100644 > --- a/clang/include/clang/Basic/DiagnosticDriverKinds.td > +++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td > @@ -637,11 +637,6 @@ def warn_drv_libstdcxx_not_found : Warning< > "command line to use the libc++ standard library instead">, > InGroup<DiagGroup<"stdlibcxx-not-found">>; > > -def warn_deperecated_fcoroutines_ts_flag : Warning< > - "the '-fcoroutines-ts' flag is deprecated and it will be removed in Clang > 17; " > - "use '-std=c++20' or higher to use standard C++ coroutines instead">, > - InGroup<DeprecatedExperimentalCoroutine>; > - > def err_drv_cannot_mix_options : Error<"cannot specify '%1' along with > '%0'">; > > def err_drv_invalid_object_mode : Error< > > diff --git a/clang/include/clang/Basic/DiagnosticGroups.td > b/clang/include/clang/Basic/DiagnosticGroups.td > index 17fdcffa2d427..d56aba34ac0a3 100644 > --- a/clang/include/clang/Basic/DiagnosticGroups.td > +++ b/clang/include/clang/Basic/DiagnosticGroups.td > @@ -60,10 +60,8 @@ def CompoundTokenSplit : DiagGroup<"compound-token-split", > CompoundTokenSplitBySpace]>; > def CoroutineMissingUnhandledException : > DiagGroup<"coroutine-missing-unhandled-exception">; > -def DeprecatedExperimentalCoroutine : > - DiagGroup<"deprecated-experimental-coroutine">; > def DeprecatedCoroutine : > - DiagGroup<"deprecated-coroutine", [DeprecatedExperimentalCoroutine]>; > + DiagGroup<"deprecated-coroutine">; > def AlwaysInlineCoroutine : > DiagGroup<"always-inline-coroutine">; > def CoroNonAlignedAllocationFunction : > > diff --git a/clang/include/clang/Basic/StmtNodes.td > b/clang/include/clang/Basic/StmtNodes.td > index eeec01dd8c84d..4b31e06eb2cdb 100644 > --- a/clang/include/clang/Basic/StmtNodes.td > +++ b/clang/include/clang/Basic/StmtNodes.td > @@ -50,7 +50,7 @@ def CXXCatchStmt : StmtNode<Stmt>; > def CXXTryStmt : StmtNode<Stmt>; > def CXXForRangeStmt : StmtNode<Stmt>; > > -// C++ Coroutines TS statements > +// C++ Coroutines statements > def CoroutineBodyStmt : StmtNode<Stmt>; > def CoreturnStmt : StmtNode<Stmt>; > > @@ -162,7 +162,7 @@ def LambdaExpr : StmtNode<Expr>; > def CXXFoldExpr : StmtNode<Expr>; > def CXXParenListInitExpr: StmtNode<Expr>; > > -// C++ Coroutines TS expressions > +// C++ Coroutines expressions > def CoroutineSuspendExpr : StmtNode<Expr, 1>; > def CoawaitExpr : StmtNode<CoroutineSuspendExpr>; > def DependentCoawaitExpr : StmtNode<Expr>; > > diff --git a/clang/include/clang/Basic/TokenKinds.def > b/clang/include/clang/Basic/TokenKinds.def > index b9da4711a5c2d..aa6951e68ebc2 100644 > --- a/clang/include/clang/Basic/TokenKinds.def > +++ b/clang/include/clang/Basic/TokenKinds.def > @@ -394,7 +394,7 @@ CXX11_KEYWORD(nullptr , KEYC2X) > CXX11_KEYWORD(static_assert , KEYMSCOMPAT|KEYC2X) > CXX11_KEYWORD(thread_local , KEYC2X) > > -// C++20 / coroutines TS keywords > +// C++20 / coroutines keywords > COROUTINES_KEYWORD(co_await) > COROUTINES_KEYWORD(co_return) > COROUTINES_KEYWORD(co_yield) > > diff --git a/clang/include/clang/Driver/Options.td > b/clang/include/clang/Driver/Options.td > index a25854daf6a1b..5b6c0e6e914d0 100644 > --- a/clang/include/clang/Driver/Options.td > +++ b/clang/include/clang/Driver/Options.td > @@ -1241,10 +1241,10 @@ defm autolink : BoolFOption<"autolink", > def offload_EQ : CommaJoined<["--"], "offload=">, Flags<[NoXarchOption]>, > HelpText<"Specify comma-separated list of offloading target triples (CUDA > and HIP only)">; > > -// C++ Coroutines TS > -defm coroutines_ts : BoolFOption<"coroutines-ts", > +// C++ Coroutines > +defm coroutines : BoolFOption<"coroutines", > LangOpts<"Coroutines">, Default<cpp20.KeyPath>, > - PosFlag<SetTrue, [CC1Option], "Enable support for the C++ Coroutines TS">, > + PosFlag<SetTrue, [CC1Option], "Enable support for the C++ Coroutines">, > NegFlag<SetFalse>>; > > defm coro_aligned_allocation : BoolFOption<"coro-aligned-allocation", > > diff --git a/clang/include/clang/Sema/Sema.h > b/clang/include/clang/Sema/Sema.h > index ecc031ce116e6..41691eab4972b 100644 > --- a/clang/include/clang/Sema/Sema.h > +++ b/clang/include/clang/Sema/Sema.h > @@ -10868,7 +10868,7 @@ class Sema final { > bool checkNSReturnsRetainedReturnType(SourceLocation loc, QualType type); > > > //===--------------------------------------------------------------------===// > - // C++ Coroutines TS > + // C++ Coroutines > // > bool ActOnCoroutineBodyStart(Scope *S, SourceLocation KwLoc, > StringRef Keyword); > > diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp > index 552789ad81142..bc618e2e53d06 100644 > --- a/clang/lib/AST/StmtPrinter.cpp > +++ b/clang/lib/AST/StmtPrinter.cpp > @@ -2539,7 +2539,7 @@ void StmtPrinter::VisitRequiresExpr(RequiresExpr *E) { > OS << "}"; > } > > -// C++ Coroutines TS > +// C++ Coroutines > > void StmtPrinter::VisitCoroutineBodyStmt(CoroutineBodyStmt *S) { > Visit(S->getBody()); > > diff --git a/clang/lib/Driver/ToolChains/Clang.cpp > b/clang/lib/Driver/ToolChains/Clang.cpp > index 3703a1e78d8b2..d6339541ae17a 100644 > --- a/clang/lib/Driver/ToolChains/Clang.cpp > +++ b/clang/lib/Driver/ToolChains/Clang.cpp > @@ -6530,13 +6530,6 @@ void Clang::ConstructJob(Compilation &C, const > JobAction &JA, > if (TC.IsEncodeExtendedBlockSignatureDefault()) > CmdArgs.push_back("-fencode-extended-block-signature"); > > - if (Args.hasFlag(options::OPT_fcoroutines_ts, > options::OPT_fno_coroutines_ts, > - false) && > - types::isCXX(InputType)) { > - D.Diag(diag::warn_deperecated_fcoroutines_ts_flag); > - CmdArgs.push_back("-fcoroutines-ts"); > - } > - > if (Args.hasFlag(options::OPT_fcoro_aligned_allocation, > options::OPT_fno_coro_aligned_allocation, false) && > types::isCXX(InputType)) > > diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h > index 09b4ac814c4d9..44326d705cfd2 100644 > --- a/clang/lib/Sema/TreeTransform.h > +++ b/clang/lib/Sema/TreeTransform.h > @@ -7944,8 +7944,7 @@ TreeTransform<Derived>::TransformMSAsmStmt(MSAsmStmt > *S) { > TransformedExprs, S->getEndLoc()); > } > > -// C++ Coroutines TS > - > +// C++ Coroutines > template<typename Derived> > StmtResult > TreeTransform<Derived>::TransformCoroutineBodyStmt(CoroutineBodyStmt *S) { > > diff --git a/clang/test/AST/Inputs/std-coroutine-exp-namespace.h > b/clang/test/AST/Inputs/std-coroutine-exp-namespace.h > index 8234a19cba139..2aa5bbf93e101 100644 > --- a/clang/test/AST/Inputs/std-coroutine-exp-namespace.h > +++ b/clang/test/AST/Inputs/std-coroutine-exp-namespace.h > @@ -1,4 +1,4 @@ > -// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -std=c++14 > -fcoroutines-ts -fsyntax-only -Wignored-qualifiers -Wno-error=return-type > -verify -fblocks -Wno-unreachable-code -Wno-unused-value > +// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -std=c++20 -fsyntax-only > -Wignored-qualifiers -Wno-error=return-type -verify -fblocks > -Wno-unreachable-code -Wno-unused-value > #ifndef STD_COROUTINE_H > #define STD_COROUTINE_H > > > diff --git a/clang/test/AST/Inputs/std-coroutine.h > b/clang/test/AST/Inputs/std-coroutine.h > index 98ddb91a60082..c3ce6543ea5db 100644 > --- a/clang/test/AST/Inputs/std-coroutine.h > +++ b/clang/test/AST/Inputs/std-coroutine.h > @@ -1,4 +1,4 @@ > -// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -std=c++20 > -fcoroutines-ts -fsyntax-only -Wignored-qualifiers -Wno-error=return-type > -verify -fblocks -Wno-unreachable-code -Wno-unused-value > +// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -std=c++20 -fsyntax-only > -Wignored-qualifiers -Wno-error=return-type -verify -fblocks > -Wno-unreachable-code -Wno-unused-value > #ifndef STD_COROUTINE_H > #define STD_COROUTINE_H > > > diff --git a/clang/test/CodeGen/no-skipped-passes-O0-opt-bisect.c > b/clang/test/CodeGen/no-skipped-passes-O0-opt-bisect.c > index 548f331899a81..381803a00ede7 100644 > --- a/clang/test/CodeGen/no-skipped-passes-O0-opt-bisect.c > +++ b/clang/test/CodeGen/no-skipped-passes-O0-opt-bisect.c > @@ -1,7 +1,7 @@ > // Test that no passes are skipped under NPM with -O0/opt-bisect > // > // RUN: %clang_cc1 -triple x86_64-linux-gnu -O0 %s -fdebug-pass-manager > -emit-llvm -o /dev/null 2>&1 | FileCheck %s > -// RUN: %clang_cc1 -triple x86_64-linux-gnu -O0 %s -fdebug-pass-manager > -emit-llvm -o /dev/null -fcoroutines-ts 2>&1 | FileCheck %s > +// RUN: %clang_cc1 -triple x86_64-linux-gnu -O0 %s -fdebug-pass-manager > -emit-llvm -o /dev/null -fcoroutines 2>&1 | FileCheck %s > // RUN: %clang_cc1 -triple x86_64-linux-gnu -O0 %s -fdebug-pass-manager > -emit-llvm -o /dev/null -fsanitize=address 2>&1 | FileCheck %s > // RUN: %clang_cc1 -triple x86_64-linux-gnu -O0 %s -fdebug-pass-manager > -emit-llvm -o /dev/null -fsanitize=hwaddress 2>&1 | FileCheck %s > // RUN: %clang_cc1 -triple x86_64-linux-gnu -O0 %s -fdebug-pass-manager > -emit-llvm -o /dev/null -fsanitize=memory 2>&1 | FileCheck %s > @@ -12,7 +12,7 @@ > // RUN: %clang_cc1 -triple x86_64-linux-gnu -O0 %s -fdebug-pass-manager > -emit-llvm -o /dev/null -fmemory-profile 2>&1 | FileCheck %s > > // RUN: %clang_cc1 -triple x86_64-linux-gnu -mllvm -opt-bisect-limit=0 %s > -fdebug-pass-manager -emit-llvm -o /dev/null 2>&1 | FileCheck %s > -// RUN: %clang_cc1 -triple x86_64-linux-gnu -mllvm -opt-bisect-limit=0 %s > -fdebug-pass-manager -emit-llvm -o /dev/null -fcoroutines-ts 2>&1 | FileCheck > %s > +// RUN: %clang_cc1 -triple x86_64-linux-gnu -mllvm -opt-bisect-limit=0 %s > -fdebug-pass-manager -emit-llvm -o /dev/null -fcoroutines 2>&1 | FileCheck %s > // RUN: %clang_cc1 -triple x86_64-linux-gnu -mllvm -opt-bisect-limit=0 %s > -fdebug-pass-manager -emit-llvm -o /dev/null -fsanitize=address 2>&1 | > FileCheck %s > // RUN: %clang_cc1 -triple x86_64-linux-gnu -mllvm -opt-bisect-limit=0 %s > -fdebug-pass-manager -emit-llvm -o /dev/null -fsanitize=hwaddress 2>&1 | > FileCheck %s > // RUN: %clang_cc1 -triple x86_64-linux-gnu -mllvm -opt-bisect-limit=0 %s > -fdebug-pass-manager -emit-llvm -o /dev/null -fsanitize=memory 2>&1 | > FileCheck %s > > diff --git a/clang/test/CodeGenCoroutines/coro-builtins-err.c > b/clang/test/CodeGenCoroutines/coro-builtins-err.c > index 17a29dd04ca20..37312bba563b6 100644 > --- a/clang/test/CodeGenCoroutines/coro-builtins-err.c > +++ b/clang/test/CodeGenCoroutines/coro-builtins-err.c > @@ -1,4 +1,4 @@ > -// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc18.0.0 -fcoroutines-ts > -emit-llvm %s -o - -verify > +// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc18.0.0 -fcoroutines > -emit-llvm %s -o - -verify > > void f(void) { > __builtin_coro_alloc(); // expected-error {{this builtin expect that > __builtin_coro_id}} > > diff --git a/clang/test/CodeGenCoroutines/coro-builtins.c > b/clang/test/CodeGenCoroutines/coro-builtins.c > index 316ca4250a7ed..e58820db67839 100644 > --- a/clang/test/CodeGenCoroutines/coro-builtins.c > +++ b/clang/test/CodeGenCoroutines/coro-builtins.c > @@ -1,4 +1,4 @@ > -// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc18.0.0 -fcoroutines-ts > -emit-llvm %s -o - -disable-llvm-passes | FileCheck %s > +// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc18.0.0 -fcoroutines > -emit-llvm %s -o - -disable-llvm-passes | FileCheck %s > > void *myAlloc(long long); > > > diff --git a/clang/test/CodeGenCoroutines/coro-gro2.cpp > b/clang/test/CodeGenCoroutines/coro-gro2.cpp > index bb52d21af746c..b0faa66edd333 100644 > --- a/clang/test/CodeGenCoroutines/coro-gro2.cpp > +++ b/clang/test/CodeGenCoroutines/coro-gro2.cpp > @@ -1,4 +1,4 @@ > -// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fcoroutines-ts > -std=c++20 -emit-llvm %s -o - -disable-llvm-passes | FileCheck %s > +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -std=c++20 -emit-llvm %s > -o - -disable-llvm-passes | FileCheck %s > > #include "Inputs/coroutine.h" > > > diff --git a/clang/test/CodeGenCoroutines/coro-params.cpp > b/clang/test/CodeGenCoroutines/coro-params.cpp > index 44753c6a7ba77..09b3b6d583738 100644 > --- a/clang/test/CodeGenCoroutines/coro-params.cpp > +++ b/clang/test/CodeGenCoroutines/coro-params.cpp > @@ -150,8 +150,7 @@ void call_dependent_params() { > } > > // Test that, when the promise type has a constructor whose signature matches > -// that of the coroutine function, that constructor is used. This is an > -// experimental feature that will be proposed for the Coroutines TS. > +// that of the coroutine function, that constructor is used. > > struct promise_matching_constructor {}; > > > diff --git a/clang/test/CoverageMapping/coroutine.cpp > b/clang/test/CoverageMapping/coroutine.cpp > index da38acc442be2..0105005d198a1 100644 > --- a/clang/test/CoverageMapping/coroutine.cpp > +++ b/clang/test/CoverageMapping/coroutine.cpp > @@ -1,4 +1,4 @@ > -// RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -triple > x86_64-unknown-linux-gnu -fcoroutines-ts -std=c++14 -emit-llvm > -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping %s -o - > | FileCheck %s > +// RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -triple > x86_64-unknown-linux-gnu -std=c++20 -emit-llvm -fprofile-instrument=clang > -fcoverage-mapping -dump-coverage-mapping %s -o - | FileCheck %s > > namespace std { > template <typename... T> > > diff --git a/clang/test/Driver/coroutines.c b/clang/test/Driver/coroutines.c > index d61023450ad1e..eee6fb6bdc1a5 100644 > --- a/clang/test/Driver/coroutines.c > +++ b/clang/test/Driver/coroutines.c > @@ -1,6 +1,3 @@ > // RUN: %clang -### %s 2>&1 | FileCheck -check-prefix=CHECK-NO-CORO %s > -// RUN: %clang -fcoroutines-ts -### %s 2>&1 | FileCheck > -check-prefix=CHECK-NO-CORO %s > -// RUN: %clang -fno-coroutines-ts -### %s 2>&1 | FileCheck > -check-prefix=CHECK-NO-CORO %s > -// RUN: %clang -fno-coroutines-ts -fcoroutines-ts -### %s 2>&1 | FileCheck > -check-prefix=CHECK-NO-CORO %s > -// CHECK-NO-CORO-NOT: -fcoroutines-ts > +// CHECK-NO-CORO-NOT: -fcoroutines > > > diff --git a/clang/test/Driver/coroutines.cpp > b/clang/test/Driver/coroutines.cpp > index ae5f268994ed5..f2ee480f04b2c 100644 > --- a/clang/test/Driver/coroutines.cpp > +++ b/clang/test/Driver/coroutines.cpp > @@ -1,10 +1,2 @@ > // RUN: %clang -### %s 2>&1 | FileCheck -check-prefix=CHECK-NO-CORO %s > -// RUN: %clang -fcoroutines-ts -fno-coroutines-ts -### %s 2>&1 | FileCheck > -check-prefix=CHECK-NO-CORO %s > -// RUN: %clang -fno-coroutines-ts -### %s 2>&1 | FileCheck > -check-prefix=CHECK-NO-CORO %s > -// CHECK-NO-CORO-NOT: -fcoroutines-ts > - > -// RUN: %clang -fcoroutines-ts -### %s 2>&1 | FileCheck > -check-prefix=CHECK-HAS-CORO %s > -// RUN: %clang -fno-coroutines-ts -fcoroutines-ts -### %s 2>&1 | FileCheck > -check-prefix=CHECK-HAS-CORO %s > -// CHECK-HAS-CORO: the '-fcoroutines-ts' flag is deprecated and it will be > removed in Clang 17; use '-std=c++20' or higher to use standard C++ > coroutines instead > -// CHECK-HAS-CORO: -fcoroutines-ts > - > +// CHECK-NO-CORO-NOT: -fcoroutines > > diff --git a/clang/test/Index/coroutines.cpp > b/clang/test/Index/coroutines.cpp > index 9adda03ebc187..eafca475419b7 100644 > --- a/clang/test/Index/coroutines.cpp > +++ b/clang/test/Index/coroutines.cpp > @@ -1,4 +1,4 @@ > -// RUN: c-index-test -test-load-source all -c %s -fsyntax-only -target > x86_64-apple-darwin9 -fcoroutines-ts -std=c++1z -I%S/../SemaCXX/Inputs | > FileCheck %s > +// RUN: c-index-test -test-load-source all -c %s -fsyntax-only -target > x86_64-apple-darwin9 -std=c++20 -I%S/../SemaCXX/Inputs | FileCheck %s > #include "std-coroutine.h" > > using std::suspend_always; > > diff --git a/clang/test/Lexer/coroutines.cpp > b/clang/test/Lexer/coroutines.cpp > index 186c84b36ed6f..261f34e75a21b 100644 > --- a/clang/test/Lexer/coroutines.cpp > +++ b/clang/test/Lexer/coroutines.cpp > @@ -1,5 +1,5 @@ > // RUN: %clang_cc1 -fsyntax-only %s > -// RUN: %clang_cc1 -fcoroutines-ts -DCORO -fsyntax-only %s > +// RUN: %clang_cc1 -std=c++20 -DCORO -fsyntax-only %s > > #ifdef CORO > #define CORO_KEYWORD(NAME) _Static_assert(!__is_identifier(NAME), #NAME) > > diff --git a/clang/test/Lexer/cxx-features.cpp > b/clang/test/Lexer/cxx-features.cpp > index 4a2bf56450df8..5dee2c8197c89 100644 > --- a/clang/test/Lexer/cxx-features.cpp > +++ b/clang/test/Lexer/cxx-features.cpp > @@ -8,7 +8,6 @@ > // RUN: %clang_cc1 -std=c++17 -fcxx-exceptions -fsized-deallocation > -frelaxed-template-template-args -DRELAXED_TEMPLATE_TEMPLATE_ARGS=1 -verify %s > // RUN: %clang_cc1 -std=c++17 -fcxx-exceptions -fsized-deallocation > -DCONCEPTS_TS=1 -verify %s > // RUN: %clang_cc1 -std=c++14 -fno-rtti -fno-threadsafe-statics -verify %s > -DNO_EXCEPTIONS -DNO_RTTI -DNO_THREADSAFE_STATICS -fsized-deallocation > -// RUN: %clang_cc1 -std=c++14 -fcoroutines-ts -DNO_EXCEPTIONS -DCOROUTINES > -verify -fsized-deallocation %s > // RUN: %clang_cc1 -std=c++14 -fchar8_t -DNO_EXCEPTIONS -DCHAR8_T -verify > -fsized-deallocation %s > // RUN: %clang_cc1 -std=c++2a -fno-char8_t -DNO_EXCEPTIONS -DNO_CHAR8_T > -verify -fsized-deallocation %s > > @@ -360,6 +359,6 @@ > > // --- TS features -- > > -#if defined(COROUTINES) ? check(coroutines, 201703, 201703, 201703, 201703, > 201703, 201703) : check(coroutines, 0, 0, 0, 0, 201703, 201703) > +#if check(coroutines, 0, 0, 0, 0, 201703, 201703) > #error "wrong value for __cpp_coroutines" > #endif > > diff --git a/clang/test/Modules/requires-coroutines.mm > b/clang/test/Modules/requires-coroutines.mm > index 4e9c9d19cd800..21b8b8b097e91 100644 > --- a/clang/test/Modules/requires-coroutines.mm > +++ b/clang/test/Modules/requires-coroutines.mm > @@ -1,13 +1,6 @@ > // RUN: rm -rf %t > // RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -fimplicit-module-maps > -Wno-private-module -F %S/Inputs -I %S/Inputs/DependsOnModule.framework %s > -verify > -// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -fimplicit-module-maps > -Wno-private-module -F %S/Inputs -I %S/Inputs/DependsOnModule.framework %s > -verify -fcoroutines-ts -DCOROUTINES > > -#ifdef COROUTINES > -@import DependsOnModule.Coroutines; > -// expected-er...@module.map:29 {{module 'DependsOnModule.NotCoroutines' is > incompatible with feature 'coroutines'}} > -@import DependsOnModule.NotCoroutines; // expected-note {{module imported > here}} > -#else > @import DependsOnModule.NotCoroutines; > // expected-er...@module.map:25 {{module 'DependsOnModule.Coroutines' > requires feature 'coroutines'}} > @import DependsOnModule.Coroutines; // expected-note {{module imported here}} > -#endif > > diff --git a/clang/test/PCH/coroutines.cpp b/clang/test/PCH/coroutines.cpp > index e5e84d01a7de1..55c098bc27a70 100644 > --- a/clang/test/PCH/coroutines.cpp > +++ b/clang/test/PCH/coroutines.cpp > @@ -1,9 +1,9 @@ > // Test this without pch. > -// RUN: %clang_cc1 -include %s -verify -std=c++1z -fcoroutines-ts %s > +// RUN: %clang_cc1 -include %s -verify -std=c++20 %s > > // Test with pch. > -// RUN: %clang_cc1 -std=c++1z -fcoroutines-ts -emit-pch -o %t %s > -// RUN: %clang_cc1 -include-pch %t -verify -std=c++1z -fcoroutines-ts %s > +// RUN: %clang_cc1 -std=c++20 -emit-pch -o %t %s > +// RUN: %clang_cc1 -include-pch %t -verify -std=c++20 %s > > #ifndef HEADER > #define HEADER > > diff --git a/clang/test/Parser/cxx1z-coroutines.cpp > b/clang/test/Parser/cxx20-coroutines.cpp > similarity index 82% > rename from clang/test/Parser/cxx1z-coroutines.cpp > rename to clang/test/Parser/cxx20-coroutines.cpp > index 68ef91c81727e..7207fb98587ab 100644 > --- a/clang/test/Parser/cxx1z-coroutines.cpp > +++ b/clang/test/Parser/cxx20-coroutines.cpp > @@ -1,4 +1,4 @@ > -// RUN: %clang_cc1 -std=c++11 -fcoroutines-ts %s -verify > +// RUN: %clang_cc1 -std=c++20 %s -verify > > template<typename T, typename U> > U f(T t) { > @@ -11,7 +11,7 @@ U f(T t) { > auto x = co_await t; > auto y = co_yield t; > > - for co_await (int x : t) {} > + for co_await (int x : t) {} // expected-warning {{'for co_await' belongs > to CoroutineTS instead of C++20, which is deprecated}} > for co_await (int x = 0; x != 10; ++x) {} // expected-error {{'co_await' > modifier can only be applied to range-based for loop}} > > if (t) > > diff --git a/clang/test/SemaCXX/Inputs/std-coroutine-exp-namespace.h > b/clang/test/SemaCXX/Inputs/std-coroutine-exp-namespace.h > deleted file mode 100644 > index 27702b516fafc..0000000000000 > --- a/clang/test/SemaCXX/Inputs/std-coroutine-exp-namespace.h > +++ /dev/null > @@ -1,35 +0,0 @@ > -// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -std=c++14 > -fcoroutines-ts -fsyntax-only -Wignored-qualifiers -Wno-error=return-type > -verify -fblocks -Wno-unreachable-code -Wno-unused-value > -#ifndef STD_COROUTINE_EXPERIMENTAL_H > -#define STD_COROUTINE_EXPERIMENTAL_H > - > -namespace std { > -namespace experimental { > -template <class Ret, typename... T> > -struct coroutine_traits { using promise_type = typename Ret::promise_type; }; > - > -template <class Promise = void> > -struct coroutine_handle { > - static coroutine_handle from_address(void *) noexcept; > -}; > -template <> > -struct coroutine_handle<void> { > - template <class PromiseType> > - coroutine_handle(coroutine_handle<PromiseType>) noexcept; > - static coroutine_handle from_address(void *); > -}; > - > -struct suspend_always { > - bool await_ready() noexcept { return false; } > - void await_suspend(coroutine_handle<>) noexcept {} > - void await_resume() noexcept {} > -}; > - > -struct suspend_never { > - bool await_ready() noexcept { return true; } > - void await_suspend(coroutine_handle<>) noexcept {} > - void await_resume() noexcept {} > -}; > -} // namespace experimental > -} // namespace std > - > -#endif // STD_COROUTINE_EXPERIMENTAL_H > > diff --git a/clang/test/SemaCXX/coroutine-builtins.cpp > b/clang/test/SemaCXX/coroutine-builtins.cpp > index 7fa1b49172c2f..f2d0eda37d707 100644 > --- a/clang/test/SemaCXX/coroutine-builtins.cpp > +++ b/clang/test/SemaCXX/coroutine-builtins.cpp > @@ -1,4 +1,3 @@ > -// RUN: %clang_cc1 -fsyntax-only -verify -fcoroutines-ts %s > // RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s > // RUN: %clang_cc1 -fsyntax-only -verify -DERRORS %s > > > diff --git a/clang/test/SemaCXX/thread-safety-coro.cpp > b/clang/test/SemaCXX/thread-safety-coro.cpp > index 9d40c3bf492a5..349efcfa7eb05 100644 > --- a/clang/test/SemaCXX/thread-safety-coro.cpp > +++ b/clang/test/SemaCXX/thread-safety-coro.cpp > @@ -1,4 +1,4 @@ > -// RUN: %clang_cc1 -fsyntax-only -verify -Wthread-safety -std=c++17 > -fcoroutines-ts %s > +// RUN: %clang_cc1 -fsyntax-only -verify -Wthread-safety -std=c++20 %s > > // expected-no-diagnostics > > > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits -- Bruno Cardoso Lopes http://www.brunocardoso.cc _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits