diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index ba02161f9c829..e9c202e4d39d2 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -1380,9 +1380,9 @@ void CodeGenModule::Release() { for (const auto &Type : TypesWithAspects) { StringRef Name = Type.first; const RecordDecl *RD = Type.second; - AspectsMD->addOperand(getAspectsMD(Context, TheModule.getContext(), - Name, - RD->getAttr())); + if (const auto *Attr = RD->getAttr()) + AspectsMD->addOperand( + getAspectsMD(Context, TheModule.getContext(), Name, Attr)); } } diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index a9fa63a5e3fa9..fbafc428be6cb 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -16542,16 +16542,19 @@ Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, DiscardCleanupsInEvaluationContext(); } - if (FD && ((LangOpts.OpenMP && (LangOpts.OpenMPIsTargetDevice || - !LangOpts.OMPTargetTriples.empty())) || - LangOpts.CUDA || LangOpts.SYCLIsDevice)) { + if (!FD) + return dcl; + + if ((LangOpts.OpenMP && + (LangOpts.OpenMPIsTargetDevice || !LangOpts.OMPTargetTriples.empty())) || + LangOpts.CUDA || LangOpts.SYCLIsDevice) { auto ES = getEmissionStatus(FD); if (ES == Sema::FunctionEmissionStatus::Emitted || ES == Sema::FunctionEmissionStatus::Unknown) DeclsToCheckForDeferredDiags.insert(FD); } - if (FD && !FD->isDeleted()) + if (!FD->isDeleted()) checkTypeSupport(FD->getType(), FD->getLocation(), FD); // Handle free functions.