[LLVMbugs] [Bug 15649] New: clang-sa should warn when taking the address of __block storage?
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Mon Apr 1 15:54:44 PDT 2013
http://llvm.org/bugs/show_bug.cgi?id=15649
Bug ID: 15649
Summary: clang-sa should warn when taking the address of
__block storage?
Product: clang
Version: 3.2
Hardware: Macintosh
OS: MacOS X
Status: NEW
Severity: normal
Priority: P
Component: Static Analyzer
Assignee: kremenek at apple.com
Reporter: jim.correia at pobox.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
Created attachment 10270
--> http://llvm.org/bugs/attachment.cgi?id=10270&action=edit
sample code
Build and run the attached sample code.
-performTest1 works correctly when built with MRR. (Ignoring the possibility
that it won't if the autorelease pool implementation details of
NSFileCoordinator change.)
It doesn't work correctly when built for ARC. The reason is that the code
that the compiler generates (-performTest2 is written similarly to the what
the method looks like with the compiler generated code) overwrites the value
of error set in the block.
-performTest3 doesn't work correctly (either for MRR or ARC) because we take
the address of __block storage, then copy the block, moving that value to the
heap. We writing to the stale value on the stack.
These are really two separate issues, but both avoidable if clang-sa issued a
warning that taking the address of __block storage is likely going to lead to
heartache.
xcrun clang NSFileCoordinatorErrorPattern.m -fobjc-arc -framework Foundation
xcrun clang --version
Apple LLVM version 4.2 (clang-425.0.27) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.3.0
Thread model: posix
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20130401/c429852d/attachment.html>
More information about the llvm-bugs
mailing list