================
@@ -1165,14 +1165,30 @@ static bool EvaluateUnaryTypeTrait(Sema &Self, 
TypeTrait UTT,
     const CXXDestructorDecl *Dtor = RD->getDestructor();
     if (UnqualT->isAggregateType() && (!Dtor || !Dtor->isUserProvided()))
       return true;
-    if (RD->hasTrivialDestructor() && (!Dtor || !Dtor->isDeleted())) {
-      for (CXXConstructorDecl *Ctr : RD->ctors()) {
-        if (Ctr->isIneligibleOrNotSelected() || Ctr->isDeleted())
-          continue;
-        if (Ctr->isTrivial())
-          return true;
-      }
+    if (!(RD->hasTrivialDestructor() && (!Dtor || !Dtor->isDeleted())))
+      return false;
+    if (RD->hasTrivialDefaultConstructor())
+      return true;
----------------
bolshakov-a wrote:

`UTT_HasTrivialDefaultConstructor` handler checks 
`RD->hasTrivialDefaultConstructor() && !RD->hasNonTrivialDefaultConstructor()` 
for some reason. Not sure if this is really needed.

https://github.com/llvm/llvm-project/pull/162612
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to