[clang] [clang] Remove hasValue() check in `RecordExprEvaluator::VisitCXXConstructExpr()` (PR #154610)

Eli Friedman via cfe-commits cfe-commits at lists.llvm.org
Sun Aug 24 20:25:15 PDT 2025


================
@@ -11045,10 +11045,6 @@ bool RecordExprEvaluator::VisitCXXConstructExpr(const CXXConstructExpr *E,
 
   bool ZeroInit = E->requiresZeroInitialization();
   if (CheckTrivialDefaultConstructor(Info, E->getExprLoc(), FD, ZeroInit)) {
-    // If we've already performed zero-initialization, we're already done.
-    if (Result.hasValue())
----------------
efriedma-quic wrote:

When it's working correctly, it allows skipping work zero-initializing something that's already zero-initialized, I think.  But that assumes we maintain an invariant about exactly when values are absent, vs. uninitialized.  We don't maintain that invariant for anonymous structs.  (We probably could, but it's a little tricky to implement correctly for nested anonymous structs.)

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


More information about the cfe-commits mailing list