diff options
author | Adrian Prantl <aprantl@apple.com> | 2019-10-29 09:20:14 -0700 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2019-10-29 13:44:06 -0700 |
commit | f919be336583349d883ba0dfdb3b2479a190b67c (patch) | |
tree | 8abf8bb775e050414bcd735d6702bfeb00418637 /clang/lib/CodeGen/CGDebugInfo.cpp | |
parent | 3260fa2cb09b78ad55e91d95a522d9dc455575f0 (diff) | |
download | bcm5719-llvm-f919be336583349d883ba0dfdb3b2479a190b67c.tar.gz bcm5719-llvm-f919be336583349d883ba0dfdb3b2479a190b67c.zip |
[DWARF5] Added support for deleted C++ special member functions.
This patch adds support for deleted C++ special member functions in
clang and llvm. Also added Defaulted member encodings for future
support for defaulted member functions.
Patch by Sourabh Singh Tomar!
Differential Revision: https://reviews.llvm.org/D69215
Diffstat (limited to 'clang/lib/CodeGen/CGDebugInfo.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index 7c63743f3b4..292d13e62bd 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -1607,8 +1607,31 @@ llvm::DISubprogram *CGDebugInfo::CreateCXXMemberFunction( ContainingType = RecordTy; } + // We're checking for deleted C++ special member functions + // [Ctors,Dtors, Copy/Move] + auto checkAttrDeleted = [&SPFlags](const auto *Method) { + if (Method->getCanonicalDecl()->isDeleted()) + SPFlags |= llvm::DISubprogram::SPFlagDeleted; + }; + + switch (Method->getKind()) { + + case Decl::CXXConstructor: + case Decl::CXXDestructor: + checkAttrDeleted(Method); + break; + case Decl::CXXMethod: + if (Method->isCopyAssignmentOperator() || + Method->isMoveAssignmentOperator()) + checkAttrDeleted(Method); + break; + default: + break; + } + if (Method->isNoReturn()) Flags |= llvm::DINode::FlagNoReturn; + if (Method->isStatic()) Flags |= llvm::DINode::FlagStaticMember; if (Method->isImplicit()) |