<div dir="ltr">Hi All,<div><br></div><div>We're working DWARF-5 support in clang, c++11 Defaulted, deleted member functions. </div><div>We're facing an issue while parsing attributes of a destructor which is defined out of class. as default.</div><div>as in</div><div>class foo {</div><div>      public;</div><div>           foo();</div><div>           ~foo();</div><div>};</div><div>foo::foo() = default;</div><div>foo::~foo() = default;</div><div><br></div><div>Here's the code snippet of clang changes--</div><div><br></div><div>if (const auto *DXXC = dyn_cast<CXXDestructorDecl>(Method)) {<br>1624       if (DXXC->getCanonicalDecl()->isDeleted())<br>1625         SPFlags |= llvm::DISubprogram::SPFlagDeleted;<br>1626<br>1627       if (DXXC->getCanonicalDecl()->isDefaulted())<br>1628         SPFlags |= llvm::DISubprogram::SPFlagDefaultedInClass;<br>1629       else if (DXXC->isDefined()) {<br>1630         if (DXXC->getDefinition()->isDefaulted()) {<br>1631           SPFlags |= llvm::DISubprogram::SPFlagDefaultedOutOfClass;<br>1632         }<br>1633         else {<br>1634           SPFlags |= llvm::DISubprogram::SPFlagNotDefaulted;<br>1635         }<br>1636       }<br>1637     }<br></div><div><br></div><div>For, out of class  destructor definition defaulted, as mentioned above. We're not able get 

SPFlagDefaultedOutOfClass or 

SPFlagNotDefaulted.</div><div><br></div><div>seems like their is no definition of destructor, even when, we are defining them out of class as default; ??</div><div>  1629       else if (DXXC->isDefined())  -- evaluates as false <br></div><div><br></div><div>On the other side, If we declare our destructor as virtual, then above checks passes gracefully -- suggesting clang created a non-trivial destructor definition. </div><div><br></div><div>Is this behavior okay  ?? , -- this behavior is also prevalent in copy/move constructor and assignments. </div><div><br></div><div>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.</div><div><br></div><div>Any thoughts, greatly appreciated.</div><div><br></div><div>Thanks!</div><div>Sourabh Singh Tomar</div></div>