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 /llvm/lib | |
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 'llvm/lib')
-rw-r--r-- | llvm/lib/BinaryFormat/Dwarf.cpp | 15 | ||||
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 3 |
2 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/BinaryFormat/Dwarf.cpp b/llvm/lib/BinaryFormat/Dwarf.cpp index d06cccdf0df..9ca3317418c 100644 --- a/llvm/lib/BinaryFormat/Dwarf.cpp +++ b/llvm/lib/BinaryFormat/Dwarf.cpp @@ -274,6 +274,19 @@ StringRef llvm::dwarf::AccessibilityString(unsigned Access) { return StringRef(); } +StringRef llvm::dwarf::DefaultedMemberString(unsigned DefaultedEncodings) { + switch (DefaultedEncodings) { + // Defaulted Member Encodings codes + case DW_DEFAULTED_no: + return "DW_DEFAULTED_no"; + case DW_DEFAULTED_in_class: + return "DW_DEFAULTED_in_class"; + case DW_DEFAULTED_out_of_class: + return "DW_DEFAULTED_out_of_class"; + } + return StringRef(); +} + StringRef llvm::dwarf::VisibilityString(unsigned Visibility) { switch (Visibility) { case DW_VIS_local: @@ -615,6 +628,8 @@ StringRef llvm::dwarf::AttributeValueString(uint16_t Attr, unsigned Val) { return ArrayOrderString(Val); case DW_AT_APPLE_runtime_class: return LanguageString(Val); + case DW_AT_defaulted: + return DefaultedMemberString(Val); } return StringRef(); diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index 37c68c08579..9d7fee1d5b3 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -1307,6 +1307,9 @@ void DwarfUnit::applySubprogramAttributes(const DISubprogram *SP, DIE &SPDie, addFlag(SPDie, dwarf::DW_AT_elemental); if (SP->isRecursive()) addFlag(SPDie, dwarf::DW_AT_recursive); + + if (DD->getDwarfVersion() >= 5 && SP->isDeleted()) + addFlag(SPDie, dwarf::DW_AT_deleted); } void DwarfUnit::constructSubrangeDIE(DIE &Buffer, const DISubrange *SR, |