Commit 2e4f5e62 authored by Erik Pilkington's avatar Erik Pilkington
Browse files

[Sema] Fix an assert when objc_externally_retained was applied to an unprototyped function

parent f668baa4
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -6561,7 +6561,9 @@ static void handleObjCExternallyRetainedAttr(Sema &S, Decl *D,

  // If D is a function-like declaration (method, block, or function), then we
  // make every parameter psuedo-strong.
  for (unsigned I = 0, E = getFunctionOrMethodNumParams(D); I != E; ++I) {
  unsigned NumParams =
      hasFunctionProto(D) ? getFunctionOrMethodNumParams(D) : 0;
  for (unsigned I = 0; I != NumParams; ++I) {
    auto *PVD = const_cast<ParmVarDecl *>(getFunctionOrMethodParam(D, I));
    QualType Ty = PVD->getType();

+3 −0
Original line number Diff line number Diff line
@@ -118,3 +118,6 @@ void test13(ObjCTy *first, __weak ObjCTy *second, __unsafe_unretained ObjCTy *th
}

#pragma clang attribute ext_ret.pop

__attribute__((objc_externally_retained))
void unprototyped();