[clang] [Clang] Fix a regression introduced by #161163. (PR #162612)

Andrey Ali Khan Bolshakov via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 9 11:13:16 PDT 2025


================
@@ -1167,16 +1167,22 @@ static bool EvaluateUnaryTypeTrait(Sema &Self, TypeTrait UTT,
       return true;
     if (!(RD->hasTrivialDestructor() && (!Dtor || !Dtor->isDeleted())))
       return false;
+    if (RD->hasTrivialDefaultConstructor())
+      return true;
     bool FoundCopyCtr = false;
     bool FoundMoveCtr = false;
+    bool FoundDefaultCtr = false;
     for (CXXConstructorDecl *Ctr : RD->ctors()) {
-      FoundCopyCtr = Ctr->isCopyConstructor();
-      FoundMoveCtr = Ctr->isMoveConstructor();
       if (Ctr->isIneligibleOrNotSelected() || Ctr->isDeleted())
         continue;
       if (Ctr->isTrivial())
         return true;
+      FoundCopyCtr = Ctr->isCopyConstructor();
+      FoundMoveCtr = Ctr->isMoveConstructor();
+      FoundDefaultCtr = Ctr->isDefaultConstructor();
     }
+    if (!FoundDefaultCtr && RD->hasTrivialDefaultConstructor())
+      return true;
----------------
bolshakov-a wrote:

This is never reached because `RD->hasTrivialDefaultConstructor() == true` case has been short-circuited above.

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


More information about the cfe-commits mailing list