diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index 9e8dfb0825c7..e2ad3e1b56c0 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -701,6 +701,12 @@ CGDebugInfo::CreateCXXMemberFunction(const CXXMethodDecl *Method, unsigned Flags = 0; if (Method->isImplicit()) Flags |= llvm::DIDescriptor::FlagArtificial; + AccessSpecifier Access = Method->getAccess(); + if (Access == clang::AS_private) + Flags |= llvm::DIDescriptor::FlagPrivate; + else if (Access == clang::AS_protected) + Flags |= llvm::DIDescriptor::FlagProtected; + llvm::DISubprogram SP = DebugFactory.CreateSubprogram(RecordTy , MethodName, MethodName, MethodLinkageName, diff --git a/clang/test/CodeGenCXX/debug-info-method.cpp b/clang/test/CodeGenCXX/debug-info-method.cpp new file mode 100644 index 000000000000..593572785155 --- /dev/null +++ b/clang/test/CodeGenCXX/debug-info-method.cpp @@ -0,0 +1,6 @@ +// RUN: %clang -fverbose-asm -cc1 -g -S %s -o - | grep DW_ACCESS_protected +class A { +protected: + int foo(); +}; +A a;