SemaType.cpp - use castAs<> instead of getAs<> for dereferenced pointers
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 8 Dec 2020 16:37:05 +0000 (16:37 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 8 Dec 2020 16:37:20 +0000 (16:37 +0000)
Fix static analyzer warnings - castAs<> will assert the type is correct, but getAs<> just returns null, which would just result in a dereferenced null pointer.

clang/lib/Sema/SemaType.cpp

index df46aa3..fbdbfbc 100644 (file)
@@ -7967,7 +7967,7 @@ static void HandleOpenCLAccessAttr(QualType &CurType, const ParsedAttr &Attr,
            diag::note_opencl_typedef_access_qualifier) << PrevAccessQual;
   } else if (CurType->isPipeType()) {
     if (Attr.getSemanticSpelling() == OpenCLAccessAttr::Keyword_write_only) {
-      QualType ElemType = CurType->getAs<PipeType>()->getElementType();
+      QualType ElemType = CurType->castAs<PipeType>()->getElementType();
       CurType = S.Context.getWritePipeType(ElemType);
     }
   }
@@ -9021,7 +9021,7 @@ QualType Sema::BuildUnaryTransformType(QualType BaseType,
           return QualType();
         }
 
-        EnumDecl *ED = BaseType->getAs<EnumType>()->getDecl();
+        EnumDecl *ED = BaseType->castAs<EnumType>()->getDecl();
         assert(ED && "EnumType has no EnumDecl");
 
         DiagnoseUseOfDecl(ED, Loc);