GCC supports a __thread storage class, used to indicate thread-local storage. It may be used alone, or with extern or static. This patch makes sparse aware of it, but ignores it completely. Signed-off-by: Alberto Bertogli <albertito@xxxxxxxxxxxxxx> --- parse.c | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) diff --git a/parse.c b/parse.c index 14ae25d..e49cb39 100644 --- a/parse.c +++ b/parse.c @@ -41,7 +41,7 @@ static declarator_t attribute_specifier, typeof_specifier, parse_asm_declarator, typedef_specifier, inline_specifier, auto_specifier, register_specifier, static_specifier, extern_specifier, - const_qualifier, volatile_qualifier; + thread_specifier, const_qualifier, volatile_qualifier; static struct token *parse_if_statement(struct token *token, struct statement *stmt); static struct token *parse_return_statement(struct token *token, struct statement *stmt); @@ -125,6 +125,11 @@ static struct symbol_op extern_op = { .declarator = extern_specifier, }; +static struct symbol_op thread_op = { + .type = KW_MODIFIER, + .declarator = thread_specifier, +}; + static struct symbol_op const_op = { .type = KW_QUALIFIER, .declarator = const_qualifier, @@ -407,6 +412,7 @@ static struct init_keyword { { "register", NS_TYPEDEF, .op = ®ister_op }, { "static", NS_TYPEDEF, .op = &static_op }, { "extern", NS_TYPEDEF, .op = &extern_op }, + { "__thread", NS_TYPEDEF, .op = &thread_op }, /* Statement */ { "if", NS_KEYWORD, .op = &if_op }, @@ -1210,6 +1216,12 @@ static struct token *extern_specifier(struct token *next, struct decl_state *ctx return next; } +static struct token *thread_specifier(struct token *next, struct decl_state *ctx) +{ + /* Ignore __thread */ + return next; +} + static struct token *attribute_force(struct token *token, struct symbol *attr, struct decl_state *ctx) { set_storage_class(&token->pos, ctx, SForced); -- 1.6.2.2.646.gb214 -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html