[analyzer] Improve misleading RetainCountChcker diagnostic under ARC
authorDevin Coughlin <dcoughlin@apple.com>
Sat, 12 Nov 2016 01:03:06 +0000 (01:03 +0000)
committerDevin Coughlin <dcoughlin@apple.com>
Sat, 12 Nov 2016 01:03:06 +0000 (01:03 +0000)
commitd1fe08b8a9abe19d5ba5d96465d20601542b3040
tree807545fc9ab738ac83a944bd27ec54f924c2f806
parent03136efd1bbdbfca898cbbd3cc2ca6e21410d628
[analyzer] Improve misleading RetainCountChcker diagnostic under ARC

Under automated reference counting the analyzer treats a methods -- even those
starting with  'copy' and friends -- as returning an unowned value. This is
because ownership of CoreFoundation objects must be transferred to ARC
with __bridge_transfer or CFBridgingRelease() before being returned as
ARC-managed bridged objects.

Unfortunately this could lead to a poor diagnostic inside copy methods under
ARC where the analyzer would complain about a leak of a returned CF value inside
a method "whose name does not start with 'copy'" -- even though the name did
start with 'copy'.

This commit improves the diagnostic under ARC to say inside a method "returned
from a method managed by Automated Reference Counting".

rdar://problem/28849667

llvm-svn: 286694
clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
clang/test/Analysis/retain-release-arc.m [new file with mode: 0644]