Index: lib/CodeGen/ItaniumCXXABI.cpp =================================================================== --- lib/CodeGen/ItaniumCXXABI.cpp +++ lib/CodeGen/ItaniumCXXABI.cpp @@ -1390,6 +1390,10 @@ } void ItaniumCXXABI::EmitInstanceFunctionProlog(CodeGenFunction &CGF) { + // Naked functions have no prolog. + if (CGF.CurFuncDecl->hasAttr()) + return; + /// Initialize the 'this' slot. EmitThisParam(CGF); Index: test/CodeGenCXX/naked.cpp =================================================================== --- /dev/null +++ test/CodeGenCXX/naked.cpp @@ -0,0 +1,12 @@ +// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s + +class TestNaked { +public: + void NakedFunction(); +}; + +__attribute__((naked)) void TestNaked::NakedFunction() { + // CHECK-LABEL: define void @ + // CHECK: call void asm sideeffect + asm(""); +}