[clang] [Clang] prevent assertion failure by avoiding required literal type checking in C context (PR #101426)
Mariya Podchishchaeva via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 1 03:08:56 PDT 2024
================
@@ -9267,14 +9267,14 @@ bool Sema::RequireLiteralType(SourceLocation Loc, QualType T,
if (!RT)
return true;
- const CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
-
// A partially-defined class type can't be a literal type, because a literal
// class type must have a trivial destructor (which can't be checked until
// the class definition is complete).
if (RequireCompleteType(Loc, ElemType, diag::note_non_literal_incomplete, T))
return true;
+ const CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
----------------
Fznamznon wrote:
> should I move const CXXRecordDecl *RD back to its original position after RequireCompleteType?
I think yes. It also makes sense to add `assert(LangOpts.CPlusPlus)` in the beginning of `RequireLiteralType` as @MitalAshok already mentioned.
https://github.com/llvm/llvm-project/pull/101426
More information about the cfe-commits
mailing list