[clang] Add Clang attribute to ensure that fields are initialized explicitly (PR #102040)

via cfe-commits cfe-commits at lists.llvm.org
Fri Sep 27 12:15:59 PDT 2024


================
@@ -4561,6 +4569,13 @@ static void TryConstructorInitialization(Sema &S,
 
   CXXConstructorDecl *CtorDecl = cast<CXXConstructorDecl>(Best->Function);
   if (Result != OR_Deleted) {
+    if (!IsListInit && Kind.getKind() == InitializationKind::IK_Default &&
----------------
higher-performance wrote:

> how do we know that a field marked with the attribute wasn't initialized here?

Because of the `&& DestRecordDecl->hasUninitializedExplicitInitFields()` conditions a couple of lines below.

> Also, we have `DestRecordDecl`, so we have access to the `FieldDecls` associated with it, right?

It might not be in the class itself; it could be in a subobject, etc.

Trying to dig up the exact field is complicated and slow.

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


More information about the cfe-commits mailing list