r179219 - [analyzer] Cleanup leak warnings: do not print the names of variables from other functions.
Anna Zaks
ganna at apple.com
Wed Apr 10 17:30:43 PDT 2013
Addressed in r179235.
On Apr 10, 2013, at 2:50 PM, Jordan Rose <jordan_rose at apple.com> wrote:
>
> On Apr 10, 2013, at 14:42 , Anna Zaks <ganna at apple.com> wrote:
>
>> Author: zaks
>> Date: Wed Apr 10 16:42:02 2013
>> New Revision: 179219
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=179219&view=rev
>> Log:
>> [analyzer] Cleanup leak warnings: do not print the names of variables from other functions.
>>
>> Modified:
>> cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
>> cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
>> cfe/trunk/test/Analysis/malloc-plist.c
>> cfe/trunk/test/Analysis/retain-release.m
>>
>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp?rev=179219&r1=179218&r2=179219&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp (original)
>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp Wed Apr 10 16:42:02 2013
>> @@ -1527,13 +1527,19 @@ MallocChecker::getAllocationSite(const E
>>
>> // Find the most recent expression bound to the symbol in the current
>> // context.
>> - if (!ReferenceRegion) {
>> - if (const MemRegion *MR = C.getLocationRegionIfPostStore(N)) {
>> - SVal Val = State->getSVal(MR);
>> - if (Val.getAsLocSymbol() == Sym)
>> - ReferenceRegion = MR;
>> + if (!ReferenceRegion) {
>> + if (const MemRegion *MR = C.getLocationRegionIfPostStore(N)) {
>> + SVal Val = State->getSVal(MR);
>> + if (Val.getAsLocSymbol() == Sym) {
>> + const VarRegion* VR = MR->getAs<VarRegion>();
>> + // Do not show local variables belonging to a function other than
>> + // where the error is reported.
>> + if (!VR ||
>> + (VR->getStackFrame() == LeakContext->getCurrentStackFrame()))
>> + ReferenceRegion = MR;
>
> This probably isn't good enough; consider storing into a field of a local variable in the wrong stack frame. Maybe use MR->getBaseRegion()?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130410/c2834d14/attachment.html>
More information about the cfe-commits
mailing list