mirror of https://github.com/microsoft/clang.git
[coroutines] Rename driver flag -fcoroutines to -fcoroutines-ts
Summary: Also makes -fcoroutines_ts to be both a Driver and CC1 flag. Patch mostly by EricWF. Reviewers: rnk, cfe-commits, rsmith, EricWF Subscribers: mehdi_amini Differential Revision: https://reviews.llvm.org/D25130 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@283064 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2127f33091
commit
05da52cced
|
@ -133,7 +133,7 @@ LANGOPT(Freestanding, 1, 0, "freestanding implementation")
|
|||
LANGOPT(NoBuiltin , 1, 0, "disable builtin functions")
|
||||
LANGOPT(NoMathBuiltin , 1, 0, "disable math builtin functions")
|
||||
LANGOPT(GNUAsm , 1, 1, "GNU-style inline assembly")
|
||||
LANGOPT(Coroutines , 1, 0, "C++ coroutines")
|
||||
LANGOPT(CoroutinesTS , 1, 0, "C++ coroutines TS")
|
||||
|
||||
BENIGN_LANGOPT(ThreadsafeStatics , 1, 1, "thread-safe static initializers")
|
||||
LANGOPT(POSIXThreads , 1, 0, "POSIX thread support")
|
||||
|
|
|
@ -638,10 +638,6 @@ def fdefault_calling_conv_EQ : Joined<["-"], "fdefault-calling-conv=">,
|
|||
def finclude_default_header : Flag<["-"], "finclude-default-header">,
|
||||
HelpText<"Include the default header file for OpenCL">;
|
||||
|
||||
// C++ TSes.
|
||||
def fcoroutines : Flag<["-"], "fcoroutines">,
|
||||
HelpText<"Enable support for the C++ Coroutines TS">;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Header Search Options
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -481,6 +481,13 @@ def fno_autolink : Flag <["-"], "fno-autolink">, Group<f_Group>,
|
|||
Flags<[DriverOption, CC1Option]>,
|
||||
HelpText<"Disable generation of linker directives for automatic library linking">;
|
||||
|
||||
// C++ Coroutines TS
|
||||
def fcoroutines_ts : Flag <["-"], "fcoroutines-ts">, Group<f_Group>,
|
||||
Flags<[DriverOption, CC1Option]>,
|
||||
HelpText<"Enable support for the C++ Coroutines TS">;
|
||||
def fno_coroutines_ts : Flag <["-"], "fno-coroutines-ts">, Group<f_Group>,
|
||||
Flags<[DriverOption]>;
|
||||
|
||||
def fembed_bitcode_EQ : Joined<["-"], "fembed-bitcode=">,
|
||||
Group<f_Group>, Flags<[DriverOption, CC1Option]>, MetaVarName<"<option>">,
|
||||
HelpText<"Embed LLVM bitcode (option: off, all, bitcode, marker)">;
|
||||
|
|
|
@ -150,7 +150,7 @@ static KeywordStatus getKeywordStatus(const LangOptions &LangOpts,
|
|||
if (LangOpts.ObjC2 && (Flags & KEYARC)) return KS_Enabled;
|
||||
if (LangOpts.ObjC2 && (Flags & KEYOBJC2)) return KS_Enabled;
|
||||
if (LangOpts.ConceptsTS && (Flags & KEYCONCEPTS)) return KS_Enabled;
|
||||
if (LangOpts.Coroutines && (Flags & KEYCOROUTINES)) return KS_Enabled;
|
||||
if (LangOpts.CoroutinesTS && (Flags & KEYCOROUTINES)) return KS_Enabled;
|
||||
if (LangOpts.ModulesTS && (Flags & KEYMODULES)) return KS_Enabled;
|
||||
if (LangOpts.CPlusPlus && (Flags & KEYCXX11)) return KS_Future;
|
||||
return KS_Disabled;
|
||||
|
|
|
@ -5416,6 +5416,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
CmdArgs.push_back("-fblocks-runtime-optional");
|
||||
}
|
||||
|
||||
if (Args.hasFlag(options::OPT_fcoroutines_ts, options::OPT_fno_coroutines_ts,
|
||||
false) &&
|
||||
types::isCXX(InputType)) {
|
||||
CmdArgs.push_back("-fcoroutines-ts");
|
||||
}
|
||||
|
||||
// -fmodules enables the use of precompiled modules (off by default).
|
||||
// Users can pass -fno-cxx-modules to turn off modules support for
|
||||
// C++/Objective-C++ programs.
|
||||
|
|
|
@ -1916,7 +1916,7 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
|
|||
Opts.Blocks = Args.hasArg(OPT_fblocks) || (Opts.OpenCL
|
||||
&& Opts.OpenCLVersion >= 200);
|
||||
Opts.BlocksRuntimeOptional = Args.hasArg(OPT_fblocks_runtime_optional);
|
||||
Opts.Coroutines = Args.hasArg(OPT_fcoroutines);
|
||||
Opts.CoroutinesTS = Args.hasArg(OPT_fcoroutines_ts);
|
||||
Opts.ModulesTS = Args.hasArg(OPT_fmodules_ts);
|
||||
Opts.Modules = Args.hasArg(OPT_fmodules) || Opts.ModulesTS;
|
||||
Opts.ModulesStrictDeclUse = Args.hasArg(OPT_fmodules_strict_decluse);
|
||||
|
|
|
@ -526,7 +526,7 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts,
|
|||
// TS features.
|
||||
if (LangOpts.ConceptsTS)
|
||||
Builder.defineMacro("__cpp_experimental_concepts", "1");
|
||||
if (LangOpts.Coroutines)
|
||||
if (LangOpts.CoroutinesTS)
|
||||
Builder.defineMacro("__cpp_coroutines", "1");
|
||||
}
|
||||
|
||||
|
|
|
@ -11602,7 +11602,7 @@ Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body,
|
|||
sema::AnalysisBasedWarnings::Policy WP = AnalysisWarnings.getDefaultPolicy();
|
||||
sema::AnalysisBasedWarnings::Policy *ActivePolicy = nullptr;
|
||||
|
||||
if (getLangOpts().Coroutines && !getCurFunction()->CoroutineStmts.empty())
|
||||
if (getLangOpts().CoroutinesTS && !getCurFunction()->CoroutineStmts.empty())
|
||||
CheckCompletedCoroutineBody(FD, Body);
|
||||
|
||||
if (FD) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc18.0.0 -fcoroutines -emit-llvm %s -o - -std=c++14 -disable-llvm-passes | FileCheck %s
|
||||
// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc18.0.0 -fcoroutines-ts -emit-llvm %s -o - -std=c++14 -disable-llvm-passes | FileCheck %s
|
||||
struct no_suspend {
|
||||
bool await_ready() { return true; }
|
||||
template <typename F> void await_suspend(F) {}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
// 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
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
// 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: -fcoroutines-ts
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only %s
|
||||
// RUN: %clang_cc1 -fcoroutines -DCORO -fsyntax-only %s
|
||||
// RUN: %clang_cc1 -fcoroutines-ts -DCORO -fsyntax-only %s
|
||||
|
||||
#ifdef CORO
|
||||
#define CORO_KEYWORD(NAME) _Static_assert(!__is_identifier(NAME), #NAME)
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// RUN: %clang_cc1 -std=c++1z -fcxx-exceptions -fsized-deallocation -verify %s
|
||||
// RUN: %clang_cc1 -std=c++1z -fcxx-exceptions -fsized-deallocation -fconcepts-ts -DCONCEPTS_TS=1 -verify %s
|
||||
// RUN: %clang_cc1 -fno-rtti -verify %s -DNO_EXCEPTIONS -DNO_RTTI
|
||||
// RUN: %clang_cc1 -fcoroutines -DNO_EXCEPTIONS -DCOROUTINES -verify %s
|
||||
// RUN: %clang_cc1 -fcoroutines-ts -DNO_EXCEPTIONS -DCOROUTINES -verify %s
|
||||
|
||||
// expected-no-diagnostics
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -std=c++11 -fcoroutines %s -verify
|
||||
// RUN: %clang_cc1 -std=c++11 -fcoroutines-ts %s -verify
|
||||
|
||||
template<typename T, typename U>
|
||||
U f(T t) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -std=c++14 -fcoroutines -verify %s
|
||||
// RUN: %clang_cc1 -std=c++14 -fcoroutines-ts -verify %s
|
||||
|
||||
void no_coroutine_traits_bad_arg_await() {
|
||||
co_await a; // expected-error {{include <coroutine>}}
|
||||
|
|
Loading…
Reference in New Issue