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/CodeGen/CGExpr.cpp | |
| parent | 1ba8b36fef84bedb0a657b570076ec1a47e9061d (diff) | |
[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/CodeGen/CGExpr.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGExpr.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index 0f9de6fe3e0c..e8942aceb9b0 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -414,14 +414,11 @@ pushTemporaryCleanup(CodeGenFunction &CGF, const MaterializeTemporaryExpr *M, case SD_Static: case SD_Thread: { CXXDestructorDecl *ReferenceTemporaryDtor = nullptr; - if (const RecordType *RT = - E->getType()->getBaseElementTypeUnsafe()->getAs<RecordType>()) { + if (const auto *ClassDecl = + E->getType()->getBaseElementTypeUnsafe()->getAsCXXRecordDecl(); + ClassDecl && !ClassDecl->hasTrivialDestructor()) // Get the destructor for the reference temporary. - if (auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getOriginalDecl()); - ClassDecl && !ClassDecl->hasTrivialDestructor()) - ReferenceTemporaryDtor = - ClassDecl->getDefinitionOrSelf()->getDestructor(); - } + ReferenceTemporaryDtor = ClassDecl->getDestructor(); if (!ReferenceTemporaryDtor) return; @@ -2038,7 +2035,7 @@ bool CodeGenFunction::EmitScalarRangeCheck(llvm::Value *Value, QualType Ty, bool IsBool = (Ty->hasBooleanRepresentation() && !Ty->isVectorType()) || NSAPI(CGM.getContext()).isObjCBOOLType(Ty); bool NeedsBoolCheck = HasBoolCheck && IsBool; - bool NeedsEnumCheck = HasEnumCheck && Ty->getAs<EnumType>(); + bool NeedsEnumCheck = HasEnumCheck && Ty->isEnumeralType(); if (!NeedsBoolCheck && !NeedsEnumCheck) return false; |
