diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index a036c520211a3..caec2fdcb9b10 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3215,8 +3215,12 @@ static void adjustDeclContextForDeclaratorDecl(DeclaratorDecl *NewD, template static void checkDimensionsAndSetDiagnostics(Sema &S, FunctionDecl *New, FunctionDecl *Old) { - AttributeType *NewDeclAttr = New->getAttr(); - AttributeType *OldDeclAttr = Old->getAttr(); + const auto *NewDeclAttr = New->getAttr(); + const auto *OldDeclAttr = Old->getAttr(); + + if (!NewDeclAttr || !OldDeclAttr) + return; + if ((NewDeclAttr->getXDim() != OldDeclAttr->getXDim()) || (NewDeclAttr->getYDim() != OldDeclAttr->getYDim()) || (NewDeclAttr->getZDim() != OldDeclAttr->getZDim())) { @@ -3302,12 +3306,8 @@ bool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, } } - if (New->hasAttr() && - Old->hasAttr()) checkDimensionsAndSetDiagnostics(*this, New, Old); - if (New->hasAttr() && - Old->hasAttr()) checkDimensionsAndSetDiagnostics(*this, New, Old);