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)