================ @@ -296,10 +296,16 @@ bool CodeGen::isEmptyRecord(ASTContext &Context, QualType T, bool AllowArrays, return false; // If this is a C++ record, check the bases first. - if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) + if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) { for (const auto &I : CXXRD->bases()) if (!isEmptyRecord(Context, I.getType(), true, AsIfNoUniqueAddr)) return false; + // C++ object size >= 1 byte, empty struct is 1 byte. ---------------- erichkeane wrote:
This addition makes this not match the comment above, and makes me think that we're doing this wrong. This ends up applying to only C++ and not C, which seems wrong. Additionally, I don't think that the assumption of 'greater than 1 byte' is the right way to determine this empty. Perhaps one of the codegen folks would have a better idea. https://github.com/llvm/llvm-project/pull/72197 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits