[cfe-commits] r128396 - /cfe/trunk/lib/Sema/SemaDeclCXX.cpp
Chandler Carruth
chandlerc at gmail.com
Sun Mar 27 14:26:48 PDT 2011
Author: chandlerc
Date: Sun Mar 27 16:26:48 2011
New Revision: 128396
URL: http://llvm.org/viewvc/llvm-project?rev=128396&view=rev
Log:
Reduce indentation using early exits and add a couple of comments. No
functionality changed.
Modified:
cfe/trunk/lib/Sema/SemaDeclCXX.cpp
Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=128396&r1=128395&r2=128396&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Sun Mar 27 16:26:48 2011
@@ -6091,24 +6091,29 @@
}
void Sema::FinalizeVarWithDestructor(VarDecl *VD, const RecordType *Record) {
- CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Record->getDecl());
- if (!ClassDecl->isInvalidDecl() && !VD->isInvalidDecl() &&
- !ClassDecl->hasTrivialDestructor() && !ClassDecl->isDependentContext()) {
- CXXDestructorDecl *Destructor = LookupDestructor(ClassDecl);
- MarkDeclarationReferenced(VD->getLocation(), Destructor);
- CheckDestructorAccess(VD->getLocation(), Destructor,
- PDiag(diag::err_access_dtor_var)
- << VD->getDeclName()
- << VD->getType());
-
- if (!VD->isInvalidDecl() && VD->hasGlobalStorage()) {
- // TODO: this should be re-enabled for static locals by !CXAAtExit
- if (!VD->isStaticLocal())
- Diag(VD->getLocation(), diag::warn_global_destructor);
+ if (VD->isInvalidDecl()) return;
- Diag(VD->getLocation(), diag::warn_exit_time_destructor);
- }
- }
+ CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Record->getDecl());
+ if (ClassDecl->isInvalidDecl()) return;
+ if (ClassDecl->hasTrivialDestructor()) return;
+ if (ClassDecl->isDependentContext()) return;
+
+ CXXDestructorDecl *Destructor = LookupDestructor(ClassDecl);
+ MarkDeclarationReferenced(VD->getLocation(), Destructor);
+ CheckDestructorAccess(VD->getLocation(), Destructor,
+ PDiag(diag::err_access_dtor_var)
+ << VD->getDeclName()
+ << VD->getType());
+
+ if (!VD->hasGlobalStorage()) return;
+
+ // Emit warning for non-trivial dtor in global scope (a real global,
+ // class-static, function-static).
+ Diag(VD->getLocation(), diag::warn_exit_time_destructor);
+
+ // TODO: this should be re-enabled for static locals by !CXAAtExit
+ if (!VD->isStaticLocal())
+ Diag(VD->getLocation(), diag::warn_global_destructor);
}
/// AddCXXDirectInitializerToDecl - This action is called immediately after
More information about the cfe-commits
mailing list