Add __has_feature(cxx_raw_string_literals) and

__has_feature(cxx_unicode_literals), from Michel Morin!

llvm-svn: 143412
This commit is contained in:
Douglas Gregor 2011-11-01 01:23:44 +00:00
parent 3c469769a2
commit a7efb88baa
2 changed files with 20 additions and 2 deletions

View File

@ -642,13 +642,13 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
.Case("cxx_nullptr", LangOpts.CPlusPlus0x)
.Case("cxx_override_control", LangOpts.CPlusPlus0x)
.Case("cxx_range_for", LangOpts.CPlusPlus0x)
//.Case("cxx_raw_string_literals", false)
.Case("cxx_raw_string_literals", LangOpts.CPlusPlus0x)
.Case("cxx_reference_qualified_functions", LangOpts.CPlusPlus0x)
.Case("cxx_rvalue_references", LangOpts.CPlusPlus0x)
.Case("cxx_strong_enums", LangOpts.CPlusPlus0x)
.Case("cxx_static_assert", LangOpts.CPlusPlus0x)
.Case("cxx_trailing_return", LangOpts.CPlusPlus0x)
//.Case("cxx_unicode_literals", false)
.Case("cxx_unicode_literals", LangOpts.CPlusPlus0x)
//.Case("cxx_unrestricted_unions", false)
//.Case("cxx_user_literals", false)
.Case("cxx_variadic_templates", LangOpts.CPlusPlus0x)

View File

@ -190,3 +190,21 @@ int no_alignas();
// CHECK-0X: has_alignas
// CHECK-NO-0X: no_alignas
#if __has_feature(cxx_raw_string_literals)
int has_raw_string_literals();
#else
int no_raw_string_literals();
#endif
// CHECK-0X: has_raw_string_literals
// CHECK-NO-0X: no_raw_string_literals
#if __has_feature(cxx_unicode_literals)
int has_unicode_literals();
#else
int no_unicode_literals();
#endif
// CHECK-0X: has_unicode_literals
// CHECK-NO-0X: no_unicode_literals