diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2009-04-19 20:27:55 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2009-04-19 20:27:55 +0000 |
commit | 63054b39a27ff333487e88247d495a444838b44a (patch) | |
tree | 9bbd7a6ddad4d021c1dc6d6a72e9bbab818c1679 /lib/Parse/DeclSpec.cpp | |
parent | 1768fabfbae60202ba497b98dd9be9eb09bb2e20 (diff) |
Add more thorough/correct checking for invalid __thread specifiers.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69542 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/DeclSpec.cpp')
-rw-r--r-- | lib/Parse/DeclSpec.cpp | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/lib/Parse/DeclSpec.cpp b/lib/Parse/DeclSpec.cpp index 40675de989..bcf14d916c 100644 --- a/lib/Parse/DeclSpec.cpp +++ b/lib/Parse/DeclSpec.cpp @@ -94,6 +94,7 @@ const char *DeclSpec::getSpecifierName(DeclSpec::SCS S) { case DeclSpec::SCS_static: return "static"; case DeclSpec::SCS_auto: return "auto"; case DeclSpec::SCS_register: return "register"; + case DeclSpec::SCS_private_extern: return "__private_extern__"; case DeclSpec::SCS_mutable: return "mutable"; } } @@ -345,18 +346,6 @@ void DeclSpec::Finish(Diagnostic &D, Preprocessor &PP) { TypeSpecComplex = TSC_unspecified; } } - - // Verify __thread. - if (SCS_thread_specified) { - if (StorageClassSpec == SCS_unspecified) { - StorageClassSpec = SCS_extern; // '__thread int' -> 'extern __thread int' - } else if (StorageClassSpec != SCS_extern && - StorageClassSpec != SCS_static) { - Diag(D, getStorageClassSpecLoc(), SrcMgr, diag::err_invalid_thread_spec) - << getSpecifierName((SCS)StorageClassSpec); - SCS_thread_specified = false; - } - } // Okay, now we can infer the real type. |