Top-level asm is parsed as a fake anonymous function. Obviously it also doesn't have a return type and such and this may complicate things if we continue to treat it as a function. Avoid potential problems by special casing it and returning early in linearize_fn(). Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> --- linearize.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linearize.c b/linearize.c index e3d234e7e..298991dcd 100644 --- a/linearize.c +++ b/linearize.c @@ -2200,6 +2200,11 @@ static struct entrypoint *linearize_fn(struct symbol *sym, struct symbol *base_t add_one_insn(ep, entry); ep->entry = entry; + if (!sym->ident) { // top-level asm + linearize_statement(ep, base_type->stmt); + return ep; + } + concat_symbol_list(base_type->arguments, &ep->syms); /* FIXME!! We should do something else about varargs.. */ -- 2.14.0 -- 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