diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/include/clang/Basic/LangOptions.def | 2 | ||||
-rw-r--r-- | clang/include/clang/Driver/CC1Options.td | 4 | ||||
-rw-r--r-- | clang/include/clang/Driver/Options.td | 7 | ||||
-rw-r--r-- | clang/lib/Basic/IdentifierTable.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 6 | ||||
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 2 | ||||
-rw-r--r-- | clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp | 2 | ||||
-rw-r--r-- | clang/test/Driver/coroutines.c | 6 | ||||
-rw-r--r-- | clang/test/Driver/coroutines.cpp | 9 | ||||
-rw-r--r-- | clang/test/Lexer/coroutines.cpp | 2 | ||||
-rw-r--r-- | clang/test/Lexer/cxx-features.cpp | 2 | ||||
-rw-r--r-- | clang/test/Parser/cxx1z-coroutines.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaCXX/coroutines.cpp | 2 |
15 files changed, 38 insertions, 14 deletions
diff --git a/clang/include/clang/Basic/LangOptions.def b/clang/include/clang/Basic/LangOptions.def index aed11ffd39a..e65811b3611 100644 --- a/clang/include/clang/Basic/LangOptions.def +++ b/clang/include/clang/Basic/LangOptions.def @@ -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") diff --git a/clang/include/clang/Driver/CC1Options.td b/clang/include/clang/Driver/CC1Options.td index 66e1ad6fc6e..73ab5e68e93 100644 --- a/clang/include/clang/Driver/CC1Options.td +++ b/clang/include/clang/Driver/CC1Options.td @@ -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 //===----------------------------------------------------------------------===// diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index f9390a971da..80ec5946158 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -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)">; diff --git a/clang/lib/Basic/IdentifierTable.cpp b/clang/lib/Basic/IdentifierTable.cpp index 537a2b702d8..dcd1e8b8dca 100644 --- a/clang/lib/Basic/IdentifierTable.cpp +++ b/clang/lib/Basic/IdentifierTable.cpp @@ -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; diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 97ffd2b4a8f..5138d7528d8 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -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. diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 3406c324645..0dd05b5d9a9 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -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); diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index d7dccb1340b..1c3374f1f45 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -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"); } diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index cf3ea30bd2c..d85a612e0b7 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -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) { diff --git a/clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp b/clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp index e87fed09f19..1921c06e5af 100644 --- a/clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp +++ b/clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp @@ -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) {} diff --git a/clang/test/Driver/coroutines.c b/clang/test/Driver/coroutines.c new file mode 100644 index 00000000000..d61023450ad --- /dev/null +++ b/clang/test/Driver/coroutines.c @@ -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 + diff --git a/clang/test/Driver/coroutines.cpp b/clang/test/Driver/coroutines.cpp new file mode 100644 index 00000000000..99e0ff57dda --- /dev/null +++ b/clang/test/Driver/coroutines.cpp @@ -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 + diff --git a/clang/test/Lexer/coroutines.cpp b/clang/test/Lexer/coroutines.cpp index 86d5f969374..186c84b36ed 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 -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) diff --git a/clang/test/Lexer/cxx-features.cpp b/clang/test/Lexer/cxx-features.cpp index 5a4c45ddc1a..2f751acc816 100644 --- a/clang/test/Lexer/cxx-features.cpp +++ b/clang/test/Lexer/cxx-features.cpp @@ -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 diff --git a/clang/test/Parser/cxx1z-coroutines.cpp b/clang/test/Parser/cxx1z-coroutines.cpp index 3e698404a60..68ef91c8172 100644 --- a/clang/test/Parser/cxx1z-coroutines.cpp +++ b/clang/test/Parser/cxx1z-coroutines.cpp @@ -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) { diff --git a/clang/test/SemaCXX/coroutines.cpp b/clang/test/SemaCXX/coroutines.cpp index 92fdc794744..17bf5d04819 100644 --- a/clang/test/SemaCXX/coroutines.cpp +++ b/clang/test/SemaCXX/coroutines.cpp @@ -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>}} |