diff --git a/src/kernel_internals/parsing/clexer.mll b/src/kernel_internals/parsing/clexer.mll
index 765ee47bd84fb34a4f24a9eb05c3976eb636e912..603bab87c565977c17eece7e50293bb4e86baaff 100644
--- a/src/kernel_internals/parsing/clexer.mll
+++ b/src/kernel_internals/parsing/clexer.mll
@@ -208,7 +208,7 @@ let init_lexicon _ =
       ("__builtin_offsetof", fun loc -> BUILTIN_OFFSETOF loc);
       ("_Thread_local",
        fun loc ->
-         if Kernel.C11.get () then THREAD loc
+         if Kernel.C11.get () then THREAD_LOCAL loc
          else begin
            Kernel.(
              warning
diff --git a/src/kernel_internals/parsing/cparser.mly b/src/kernel_internals/parsing/cparser.mly
index c77c2f75cdbe34e57f13140ee4f7f04c75869c70..95a4c0e88dd64826296785b7eb21e683f74534c1 100644
--- a/src/kernel_internals/parsing/cparser.mly
+++ b/src/kernel_internals/parsing/cparser.mly
@@ -334,7 +334,7 @@ let in_ghost_block ?(battrs=[]) l =
 %token<Cabs.cabsloc> ENUM STRUCT TYPEDEF UNION
 %token<Cabs.cabsloc> SIGNED UNSIGNED LONG SHORT
 %token<Cabs.cabsloc> VOLATILE EXTERN STATIC CONST RESTRICT AUTO REGISTER
-%token<Cabs.cabsloc> THREAD
+%token<Cabs.cabsloc> THREAD THREAD_LOCAL
 %token<Cabs.cabsloc> GHOST
 
 %token<Cabs.cabsloc> SIZEOF ALIGNOF
@@ -1510,11 +1510,10 @@ attribute_nocv:
 |   DECLSPEC paren_attr_list_ne         { ("__declspec", $2), $1 }
 |   MSATTR                              { (fst $1, []), snd $1 }
                                         /* ISO 6.7.3 */
-|   THREAD                              { ("__thread",
-                                           if Kernel.C11.get() then [make_expr (VARIABLE "c11")]
-                                           else []
-                                          ), $1 }
-
+|   THREAD                              { ("__thread", []), $1 }
+|   THREAD_LOCAL                        { ("__thread",
+                                           [make_expr (VARIABLE "c11")]),
+                                          $1 }
 ;
 
 attribute_nocv_list:
diff --git a/tests/syntax/oracle/thread.res.oracle b/tests/syntax/oracle/thread.res.oracle
index 1d65cdc4dc26f609ee94fe672ffafea4013325ca..8d43c550e321296cff6ae5af57f6241b748fd96f 100644
--- a/tests/syntax/oracle/thread.res.oracle
+++ b/tests/syntax/oracle/thread.res.oracle
@@ -1,8 +1,8 @@
 [kernel] Parsing tests/syntax/thread.i (no preprocessing)
 /* Generated by Frama-C */
- _Thread_local int a;
-static  _Thread_local int b;
-extern  _Thread_local int c;
+ __thread int a;
+static  __thread int b;
+extern  __thread int c;
 
  _Thread_local int d;
 int main(void)