diff options
author | Nico Weber <nicolasweber@gmx.de> | 2011-08-22 17:25:57 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2011-08-22 17:25:57 +0000 |
commit | 715abaf21390bb75eb1f822c41ee99408ed45045 (patch) | |
tree | 2fc35ccf936eb5a8aa44fa17df6f2fe3bedb372c /clang/lib/Sema/SemaDecl.cpp | |
parent | 41c6dcc7341db47e59e1cb3d60a08b420efd2bfc (diff) | |
download | bcm5719-llvm-715abaf21390bb75eb1f822c41ee99408ed45045.tar.gz bcm5719-llvm-715abaf21390bb75eb1f822c41ee99408ed45045.zip |
Warn on missing [super dealloc] calls.
This matches gcc's logic. Half of PR10661.
llvm-svn: 138240
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 26af6ef97d1..e45e7dafc62 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -6690,10 +6690,17 @@ Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, DiagnoseSizeOfParametersAndReturnValue(MD->param_begin(), MD->param_end(), MD->getResultType(), MD); } + if (ObjCShouldCallSuperDealloc) { + Diag(MD->getLocEnd(), diag::warn_objc_missing_super_dealloc); + ObjCShouldCallSuperDealloc = false; + } } else { return 0; } + assert(!ObjCShouldCallSuperDealloc && "This should only be set for " + "ObjC methods, which should have been handled in the block above."); + // Verify and clean out per-function state. if (Body) { // C++ constructors that have function-try-blocks can't have return |