[clang] [Clang] Fix Microsoft ABI inheritance model when member pointer is used in a base specifier (PR #91990)
Mital Ashok via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 17 14:38:43 PDT 2024
================
@@ -9015,11 +9015,20 @@ bool Sema::RequireCompleteTypeImpl(SourceLocation Loc, QualType T,
if (const MemberPointerType *MPTy = T->getAs<MemberPointerType>()) {
if (!MPTy->getClass()->isDependentType()) {
- if (getLangOpts().CompleteMemberPointers &&
- !MPTy->getClass()->getAsCXXRecordDecl()->isBeingDefined() &&
- RequireCompleteType(Loc, QualType(MPTy->getClass(), 0), Kind,
- diag::err_memptr_incomplete))
- return true;
+ if (getLangOpts().CompleteMemberPointers) {
+ const CXXRecordDecl *RD = MPTy->getClass()->getAsCXXRecordDecl();
+ if (RD->isBeingDefined()) {
+ if (RD->isParsingBaseSpecifiers()) {
----------------
MitalAshok wrote:
I really only want to call `RequireCompleteType`in the else branch when `!RD->isBeingDefined()` (when called while `RD->isParsingBaseSpecifiers()`, there's an extra note 'definition of "[class name]" is incomplete until the closing "}"', which is misleading since for CompleteMemberPointers purposes it's complete after the bases are parsed)
https://github.com/llvm/llvm-project/pull/91990
More information about the cfe-commits
mailing list