]> granicus.if.org Git - clang/commitdiff
Only evaluate __has_feature(c_thread_local) and __has_feature(cxx_thread_local) true...
authorDouglas Gregor <dgregor@apple.com>
Thu, 2 May 2013 05:28:32 +0000 (05:28 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 2 May 2013 05:28:32 +0000 (05:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180909 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Lex/PPMacroExpansion.cpp
test/Lexer/has_feature_cxx0x.cpp

index 9a530c68018b7f0a5f31357bccaeb19feff72263..e5b00d6bb88e9799a7a0ae6c0be38c04e6a5d0aa 100644 (file)
@@ -751,7 +751,8 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
            .Case("c_atomic", LangOpts.C11)
            .Case("c_generic_selections", LangOpts.C11)
            .Case("c_static_assert", LangOpts.C11)
-           .Case("c_thread_local", LangOpts.C11)
+           .Case("c_thread_local", 
+                 LangOpts.C11 && PP.getTargetInfo().isTLSSupported())
            // C++11 features
            .Case("cxx_access_control_sfinae", LangOpts.CPlusPlus11)
            .Case("cxx_alias_templates", LangOpts.CPlusPlus11)
@@ -783,7 +784,8 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
            .Case("cxx_rvalue_references", LangOpts.CPlusPlus11)
            .Case("cxx_strong_enums", LangOpts.CPlusPlus11)
            .Case("cxx_static_assert", LangOpts.CPlusPlus11)
-           .Case("cxx_thread_local", LangOpts.CPlusPlus11)
+           .Case("cxx_thread_local", 
+                 LangOpts.CPlusPlus11 && PP.getTargetInfo().isTLSSupported())
            .Case("cxx_trailing_return", LangOpts.CPlusPlus11)
            .Case("cxx_unicode_literals", LangOpts.CPlusPlus11)
            .Case("cxx_unrestricted_unions", LangOpts.CPlusPlus11)
index d68675afcf599f0f89cff79e51d02f3f2c174de5..0b7cbd15e0f3c914d9ff06a33137a52e169c3adf 100644 (file)
@@ -1,5 +1,6 @@
-// RUN: %clang_cc1 -E -std=c++11 %s -o - | FileCheck --check-prefix=CHECK-0X %s
-// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-0X %s
+// RUN: %clang_cc1 -E -triple x86_64-linux-gnu -std=c++11 %s -o - | FileCheck --check-prefix=CHECK-0X %s
+// RUN: %clang_cc1 -E -triple armv7-apple-darwin -std=c++11 %s -o - | FileCheck --check-prefix=CHECK-NO-TLS %s
+// RUN: %clang_cc1 -E -triple x86_64-linux-gnu %s -o - | FileCheck --check-prefix=CHECK-NO-0X %s
 
 #if __has_feature(cxx_atomic)
 int has_atomic();
@@ -290,3 +291,4 @@ int no_thread_local();
 
 // CHECK-0X: has_thread_local
 // CHECK-NO-0X: no_thread_local
+// CHECK-NO-TLS: no_thread_local