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

Reply via email to