diff options
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 13 | 
1 files changed, 3 insertions, 10 deletions
| diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index a5314bb075e..bb3f8694250 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -4114,16 +4114,9 @@ Sema::DeclPtrTy Sema::ActOnFinishFunctionBody(DeclPtrTy D, StmtArg BodyArg,      if (!FD->isInvalidDecl())        DiagnoseUnusedParameters(FD->param_begin(), FD->param_end()); -    if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(FD)) { -      // C++ [basic.def.odr]p2: -      //   [...] A virtual member function is used if it is not pure. [...] -      if (Method->isVirtual() && !Method->isPure()) -        MarkDeclarationReferenced(Method->getLocation(), Method); - -      if (!Method->isInlined()) -        MaybeMarkVirtualImplicitMembersReferenced(Method->getLocation(),  -                                                  Method); -    } +    if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(FD)) +      MaybeMarkVirtualMembersReferenced(Method->getLocation(), Method); +      assert(FD == getCurFunctionDecl() && "Function parsing confused");    } else if (ObjCMethodDecl *MD = dyn_cast_or_null<ObjCMethodDecl>(dcl)) {      assert(MD == getCurMethodDecl() && "Method parsing confused"); | 

