[clang] [llvm] [clang] Add support for emitting DW_AT_defaulted (PR #213188)

Michael Buch via cfe-commits cfe-commits at lists.llvm.org
Fri Jul 31 02:01:48 PDT 2026


================
@@ -2504,6 +2504,19 @@ llvm::DISubprogram *CGDebugInfo::CreateCXXMemberFunction(
   if (Method->getCanonicalDecl()->isDeleted())
     SPFlags |= llvm::DISubprogram::SPFlagDeleted;
 
+  const bool isExplicitlyDefaultable =
+      isa<CXXDestructorDecl>(Method) ||
+      (isa<CXXConstructorDecl>(Method) &&
+       cast<CXXConstructorDecl>(Method)->isDefaultConstructor()) ||
+      Method->isCopyOrMoveConstructorOrAssignment();
+  if (Method->isExplicitlyDefaulted())
+    SPFlags |= Method->isOutOfLine()
+                   ? llvm::DISubprogram::SPFlagDefaultedOutOfClass
+                   : llvm::DISubprogram::SPFlagDefaultedInClass;
+  else if (isExplicitlyDefaultable && !Method->isImplicit() &&
----------------
Michael137 wrote:

Should this be `isDefaulted` instead of `isImplicit`. For compiler-generated functions they'd always be `isImplicit`.

Actually that's already checked in `isThisDeclarationADefinition`. So maybe one can drop the `isImplicit` entirely?

https://github.com/llvm/llvm-project/pull/213188


More information about the cfe-commits mailing list