Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision 39920986889716a2f255137c48088e8dbb2a897c)
+++ src/AST/Print.cpp	(revision 1bcbf025a64d88a84a86c7b5d07e08eaeefc8b36)
@@ -86,5 +86,5 @@
 
 		static constexpr auto StorageClasses = make_array<const char*>(
-			"extern", "static", "auto", "register", "_Thread_local"
+			"extern", "static", "auto", "register", "__thread", "_Thread_local"
 		);
 
@@ -215,5 +215,5 @@
 			++indent;
 			ptrToEnum->base->accept( *this );
-			--indent;  
+			--indent;
 		}
 
@@ -1623,5 +1623,5 @@
 // if the wrong size is specified
 constexpr array<const char*, 3> Printer::Names::FuncSpecifiers;
-constexpr array<const char*, 5> Printer::Names::StorageClasses;
+constexpr array<const char*, 6> Printer::Names::StorageClasses;
 constexpr array<const char*, 6> Printer::Names::Qualifiers;
 }
Index: src/AST/StorageClasses.hpp
===================================================================
--- src/AST/StorageClasses.hpp	(revision 39920986889716a2f255137c48088e8dbb2a897c)
+++ src/AST/StorageClasses.hpp	(revision 1bcbf025a64d88a84a86c7b5d07e08eaeefc8b36)
@@ -24,10 +24,11 @@
 	/// Bitflags for storage classes
 	enum {
-		Extern      = 1 << 0,
-		Static      = 1 << 1,
-		Auto        = 1 << 2,
-		Register    = 1 << 3,
-		ThreadLocal = 1 << 4,
-		NumClasses       = 5
+		Extern         = 1 << 0,
+		Static         = 1 << 1,
+		Auto           = 1 << 2,
+		Register       = 1 << 3,
+		ThreadLocalGcc = 1 << 4,
+		ThreadLocalC11 = 1 << 5,
+		NumClasses          = 6
 	};
 
@@ -37,9 +38,10 @@
 			unsigned int val;
 			struct {
-				bool is_extern      : 1;
-				bool is_static      : 1;
-				bool is_auto        : 1;
-				bool is_register    : 1;
-				bool is_threadlocal : 1;
+				bool is_extern         : 1;
+				bool is_static         : 1;
+				bool is_auto           : 1;
+				bool is_register       : 1;
+				bool is_threadlocalGcc : 1;
+				bool is_threadlocalC11 : 1;
 			};
 
@@ -48,4 +50,6 @@
 
 		constexpr class_flags( unsigned int val = 0 ) : val(val) {}
+
+		bool is_threadlocal_any() { return this->is_threadlocalC11 || this->is_threadlocalGcc; }
 	};
 
