Signed-Off-By: Christopher Li <[EMAIL PROTECTED]>
Index: sparse/parse.h
===================================================================
Index: sparse/symbol.c
===================================================================
Index: sparse/parse.c
===================================================================
--- sparse.orig/parse.c 2007-03-07 00:03:18.000000000 -0800
+++ sparse/parse.c 2007-03-07 00:03:50.000000000 -0800
@@ -56,6 +56,7 @@ static struct token *parse_goto_statemen
static struct token *parse_context_statement(struct token *token, struct
statement *stmt);
static struct token *parse_range_statement(struct token *token, struct
statement *stmt);
static struct token *parse_asm(struct token *token, struct statement *stmt);
+static struct token *toplevel_asm_declaration(struct token *token, struct
symbol_list **list);
static struct symbol_op modifier_op = {
@@ -143,6 +144,7 @@ static struct symbol_op range_op = {
static struct symbol_op asm_op = {
.statement = parse_asm,
+ .toplevel = toplevel_asm_declaration,
};
static struct init_keyword {
@@ -1977,8 +1979,11 @@ struct token *external_declaration(struc
int is_typedef;
/* Top-level inline asm? */
- if (match_idents(token, &asm_ident, &__asm___ident, &__asm_ident, NULL))
- return toplevel_asm_declaration(token, list);
+ if (token_type(token) == TOKEN_IDENT) {
+ struct symbol *s = lookup_keyword(token->ident, NS_KEYWORD);
+ if (s && s->op->toplevel)
+ return s->op->toplevel(token, list);
+ }
/* Parse declaration-specifiers, if any */
token = declaration_specifiers(token, &ctype, 0);
Index: sparse/symbol.h
===================================================================
--- sparse.orig/symbol.h 2007-03-07 00:03:18.000000000 -0800
+++ sparse/symbol.h 2007-03-07 00:03:20.000000000 -0800
@@ -93,6 +93,7 @@ struct symbol_op {
/* keywrods */
struct token *(*declarator)(struct token *token, struct ctype *ctype);
struct token *(*statement)(struct token *token, struct statement *stmt);
+ struct token *(*toplevel)(struct token *token, struct symbol_list
**list);
};
extern int expand_safe_p(struct expression *expr, int cost);
Index: sparse/lib.c
===================================================================
Index: sparse/ident-list.h
===================================================================
-
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html