[clang] [Sema] Instantiate destructors for initialized members (PR #128866)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 5 04:44:06 PST 2025
================
@@ -5450,10 +5546,25 @@ bool Sema::SetCtorInitializers(CXXConstructorDecl *Constructor, bool AnyErrors,
NumInitializers * sizeof(CXXCtorInitializer*));
Constructor->setCtorInitializers(baseOrMemberInitializers);
+ SourceLocation Location = Constructor->getLocation();
+
// Constructors implicitly reference the base and member
// destructors.
- MarkBaseAndMemberDestructorsReferenced(Constructor->getLocation(),
- Constructor->getParent());
+
+ for (CXXCtorInitializer *Initializer : Info.AllToInit) {
+ FieldDecl *Field = Initializer->getAnyMember();
+ if (!Field)
+ continue;
+
+ // C++ [class.base.init]p12:
+ // In a non-delegating constructor, the destructor for each
+ // potentially constructed subobject of class type is potentially
+ // invoked
+ // ([class.dtor]).
----------------
AaronBallman wrote:
```suggestion
// invoked.
```
https://github.com/llvm/llvm-project/pull/128866
More information about the cfe-commits
mailing list