[PATCH] D39438: [analyzer] Diagnose stack leaks via block captures
Gábor Horváth via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 17 06:57:33 PST 2017
xazax.hun added a comment.
I found some nits, but overall I think this is getting close.
================
Comment at: lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp:76
range = CL->getSourceRange();
- }
- else if (const AllocaRegion* AR = dyn_cast<AllocaRegion>(R)) {
+ } else if (const AllocaRegion *AR = dyn_cast<AllocaRegion>(R)) {
const Expr *ARE = AR->getExpr();
----------------
In case you already change these lines you could replace the type name on the left side with `auto` to avoid repeating types.
================
Comment at: lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp:123
+ for (const auto &C : B.captures()) {
+ const TypedefType *T = C.getVariable()->getType()->getAs<TypedefType>();
+ if (T && T->getDecl()->getIdentifier() == dispatch_semaphore_tII)
----------------
You can also use auto here to avoid mentioning the type twice.
================
Comment at: lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp:192
+ this, "Address of stack-allocated memory is captured");
+ SmallString<512> Buf;
+ llvm::raw_svector_ostream Out(Buf);
----------------
How long usually these error messages are? Maybe 512 is a bit large buffer for this? Note that in case the error message is longer this is still not a hard error, it just will hit the slow path (allocating the buffer on the heap).
================
Comment at: lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp:214
+ BT_capturedstackret = llvm::make_unique<BuiltinBug>(
+ this, "Address of stack-allocated memory");
+ SmallString<512> Buf;
----------------
Maybe you wanted to mention "captured" here as well?
================
Comment at: lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp:215
+ this, "Address of stack-allocated memory");
+ SmallString<512> Buf;
+ llvm::raw_svector_ostream Out(Buf);
----------------
Maybe the error reporting part could be abstracted out to avoid code duplication with the function above?
Repository:
rL LLVM
https://reviews.llvm.org/D39438
More information about the cfe-commits
mailing list