[cfe-dev] Triviality of C++11 Copy/Move Constructor, Destructor in clang AST.
Sourabh Singh Tomar via cfe-dev
cfe-dev at lists.llvm.org
Fri Sep 20 05:03:38 PDT 2019
Hi All,
We're working DWARF-5 support in clang, c++11 Defaulted, deleted member
functions.
We're facing an issue while parsing attributes of a destructor which is
defined out of class. as default.
as in
class foo {
public;
foo();
~foo();
};
foo::foo() = default;
foo::~foo() = default;
Here's the code snippet of clang changes--
if (const auto *DXXC = dyn_cast<CXXDestructorDecl>(Method)) {
1624 if (DXXC->getCanonicalDecl()->isDeleted())
1625 SPFlags |= llvm::DISubprogram::SPFlagDeleted;
1626
1627 if (DXXC->getCanonicalDecl()->isDefaulted())
1628 SPFlags |= llvm::DISubprogram::SPFlagDefaultedInClass;
1629 else if (DXXC->isDefined()) {
1630 if (DXXC->getDefinition()->isDefaulted()) {
1631 SPFlags |= llvm::DISubprogram::SPFlagDefaultedOutOfClass;
1632 }
1633 else {
1634 SPFlags |= llvm::DISubprogram::SPFlagNotDefaulted;
1635 }
1636 }
1637 }
For, out of class destructor definition defaulted, as mentioned above.
We're not able get SPFlagDefaultedOutOfClass or SPFlagNotDefaulted.
seems like their is no definition of destructor, even when, we are defining
them out of class as default; ??
1629 else if (DXXC->isDefined()) -- evaluates as false
On the other side, If we declare our destructor as virtual, then above
checks passes gracefully -- suggesting clang created a non-trivial
destructor definition.
Is this behavior okay ?? , -- this behavior is also prevalent in copy/move
constructor and assignments.
Note-- For Constructor out of class definition as default -- clang create
non-trivial constructor definition, and above check passes and we're are
able to check capture the information about, whether the constructor is
defaulted in class or out of class.
Any thoughts, greatly appreciated.
Thanks!
Sourabh Singh Tomar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190920/d020bbba/attachment.html>
More information about the cfe-dev
mailing list