[PATCH] D33333: Emit warning when throw exception in destruct or dealloc functions which has a (possible implicit) noexcept specifier
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Jun 16 06:15:50 PDT 2017
aaron.ballman added inline comments.
================
Comment at: lib/Sema/AnalysisBasedWarnings.cpp:304
+ ->getUnqualifiedDesugaredType();
+ if (CaughtType == nullptr || CaughtType == ThrowType)
+ return true;
----------------
aaron.ballman wrote:
> The check for a null `CaughtType` can be hoisted above the if statements, which can then be simplified.
This can still be hoisted higher in the function.
================
Comment at: lib/Sema/AnalysisBasedWarnings.cpp:297
+
+ if (ThrowType == nullptr)
+ return false;
----------------
nit: `!ThrowType`
================
Comment at: lib/Sema/AnalysisBasedWarnings.cpp:299
+ return false;
+ if (ThrowType && ThrowType->isReferenceType())
+ ThrowType = ThrowType->castAs<ReferenceType>()
----------------
No need for testing `ThrowType` for null here.
================
Comment at: lib/Sema/AnalysisBasedWarnings.cpp:305
+ return true;
+ if (CaughtType && CaughtType->isReferenceType())
+ CaughtType = CaughtType->castAs<ReferenceType>()
----------------
No need for testing `CaughtType` for null here.
================
Comment at: lib/Sema/AnalysisBasedWarnings.cpp:332
+ continue;
+ const CXXThrowExpr *CE =
+ dyn_cast<CXXThrowExpr>(B.getAs<CFGStmt>()->getStmt());
----------------
`const auto *`
================
Comment at: lib/Sema/AnalysisBasedWarnings.cpp:341
+ continue;
+ if (const CXXTryStmt *Terminator =
+ dyn_cast_or_null<CXXTryStmt>(I->getTerminator()))
----------------
Oops, I should have suggested `const auto *` here with my original comment (sorry about that).
================
Comment at: lib/Sema/AnalysisBasedWarnings.cpp:393
+
+static void EmitDiagForCXXThrowInNonThrowingFunc(SourceLocation OpLoc, Sema &S,
+ const FunctionDecl *FD) {
----------------
For consistency with other code in the compiler, can you move the `Sema` param to be the first parameter?
https://reviews.llvm.org/D33333
More information about the cfe-commits
mailing list