diff options
author | Matheus Izvekov <mizvekov@gmail.com> | 2025-08-25 20:18:56 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-25 20:18:56 -0300 |
commit | dc8596d5485a52abee2967cec72f81ef4872270c (patch) | |
tree | 5d0b5cbc1fed95f3b9aae2b39387c0f2b4d0e47c /clang/lib/Sema/SemaChecking.cpp | |
parent | 1ba8b36fef84bedb0a657b570076ec1a47e9061d (diff) | |
download | llvm-dc8596d5485a52abee2967cec72f81ef4872270c.zip llvm-dc8596d5485a52abee2967cec72f81ef4872270c.tar.gz llvm-dc8596d5485a52abee2967cec72f81ef4872270c.tar.bz2 |
[clang] NFC: change more places to use Type::getAsTagDecl and friends (#155313)
This changes a bunch of places which use getAs<TagType>, including
derived types, just to obtain the tag definition.
This is preparation for #155028, offloading all the changes that PR used
to introduce which don't depend on any new helpers.
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 6e777fb..908ac31 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -7891,16 +7891,10 @@ bool DecomposePrintfHandler::HandlePrintfSpecifier( template<typename MemberKind> static llvm::SmallPtrSet<MemberKind*, 1> CXXRecordMembersNamed(StringRef Name, Sema &S, QualType Ty) { - const RecordType *RT = Ty->getAs<RecordType>(); + auto *RD = Ty->getAsCXXRecordDecl(); llvm::SmallPtrSet<MemberKind*, 1> Results; - if (!RT) - return Results; - CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(RT->getOriginalDecl()); - if (!RD) - return Results; - RD = RD->getDefinition(); - if (!RD) + if (!RD || !(RD->isBeingDefined() || RD->isCompleteDefinition())) return Results; LookupResult R(S, &S.Context.Idents.get(Name), SourceLocation(), @@ -10063,17 +10057,16 @@ void Sema::CheckMemaccessArguments(const CallExpr *Call, PDiag(diag::warn_arc_object_memaccess) << ArgIdx << FnName << PointeeTy << Call->getCallee()->getSourceRange()); - else if (const auto *RT = PointeeTy->getAs<RecordType>()) { + else if (const auto *RD = PointeeTy->getAsRecordDecl()) { // FIXME: Do not consider incomplete types even though they may be // completed later. GCC does not diagnose such code, but we may want to // consider diagnosing it in the future, perhaps under a different, but // related, diagnostic group. bool NonTriviallyCopyableCXXRecord = - getLangOpts().CPlusPlus && !RT->isIncompleteType() && - !RT->desugar().isTriviallyCopyableType(Context); + getLangOpts().CPlusPlus && RD->isCompleteDefinition() && + !PointeeTy.isTriviallyCopyableType(Context); - const auto *RD = RT->getOriginalDecl()->getDefinitionOrSelf(); if ((BId == Builtin::BImemset || BId == Builtin::BIbzero) && RD->isNonTrivialToPrimitiveDefaultInitialize()) { DiagRuntimeBehavior(Dest->getExprLoc(), Dest, |