Index: cfe/trunk/lib/Sema/SemaDecl.cpp =================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp +++ cfe/trunk/lib/Sema/SemaDecl.cpp @@ -10426,7 +10426,7 @@ if (FD && FD->hasAttr()) { for (const Stmt *S : Body->children()) { - if (!isa(S)) { + if (!isa(S) && !isa(S)) { Diag(S->getLocStart(), diag::err_non_asm_stmt_in_naked_function); Diag(FD->getAttr()->getLocation(), diag::note_attribute); FD->setInvalidDecl(); Index: cfe/trunk/test/Sema/attr-naked.c =================================================================== --- cfe/trunk/test/Sema/attr-naked.c +++ cfe/trunk/test/Sema/attr-naked.c @@ -23,3 +23,12 @@ asm("movl x, %eax"); asm("retl"); } + +__attribute__((naked)) void t6() { + ; +} + +__attribute__((naked)) void t7() { + asm("movl $42, %eax"); + ; +}