summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-10-22 04:27:47 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-10-22 04:27:47 +0000
commit3fa73f36028ee1c4874ffb387d83f59c7f246452 (patch)
treeda9a87d91d6ee99befe45efc39d66d1f10418109 /clang
parent76a2d615add9ac345cf967e39b00cd365bb286c2 (diff)
downloadbcm5719-llvm-3fa73f36028ee1c4874ffb387d83f59c7f246452.tar.gz
bcm5719-llvm-3fa73f36028ee1c4874ffb387d83f59c7f246452.zip
[coroutines] Add feature-test macro for coroutines, defined to 1 to indicate
the implementation is incomplete. llvm-svn: 250982
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Frontend/InitPreprocessor.cpp2
-rw-r--r--clang/test/Lexer/cxx-features.cpp5
2 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
index 0b445e8b65c..dc075793ac8 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -456,6 +456,8 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts,
Builder.defineMacro("__cpp_sized_deallocation", "201309");
if (LangOpts.ConceptsTS)
Builder.defineMacro("__cpp_experimental_concepts", "1");
+ if (LangOpts.Coroutines)
+ Builder.defineMacro("__cpp_coroutines", "1");
}
static void InitializePredefinedMacros(const TargetInfo &TI,
diff --git a/clang/test/Lexer/cxx-features.cpp b/clang/test/Lexer/cxx-features.cpp
index 4ec4d55ac08..6c4a092b1c4 100644
--- a/clang/test/Lexer/cxx-features.cpp
+++ b/clang/test/Lexer/cxx-features.cpp
@@ -2,6 +2,7 @@
// RUN: %clang_cc1 -std=c++11 -verify %s
// RUN: %clang_cc1 -std=c++1y -fsized-deallocation -verify %s
// RUN: %clang_cc1 -std=c++1y -fsized-deallocation -fconcepts-ts -DCONCEPTS_TS=1 -verify %s
+// RUN: %clang_cc1 -fcoroutines -DCOROUTINES -verify %s
// expected-no-diagnostics
@@ -128,3 +129,7 @@
#if check(experimental_concepts, 0, 0, CONCEPTS_TS)
#error "wrong value for __cpp_experimental_concepts"
#endif
+
+#if (COROUTINES && !__cpp_coroutines) || (!COROUTINES && __cpp_coroutines)
+#error "wrong value for __cpp_coroutines"
+#endif
OpenPOWER on IntegriCloud