Zhongxing Xu
08a2ede018
Add logic for invalidating array region to CFRefCount.cpp. When invalidating
...
array region, set its default value to conjured symbol. When retrieving its
element, create new region value symbol for the element.
Also fix some 80 columns violations.
llvm-svn: 71548
2009-05-12 10:10:00 +00:00
Ted Kremenek
95d181936a
Fix <rdar://problem/6877235> Classes typedef-ed to CF objects should get the same treatment as CF objects
...
This was accomplished by having 'isTypeRef' recursively walk the typedef stack.
llvm-svn: 71538
2009-05-12 04:53:03 +00:00
Ted Kremenek
97f75f8bda
When stripping element regions for invalidating region values, treat FieldRegions and ObjCIvarRegions as "base" regions in addition to VarRegions.
...
llvm-svn: 71488
2009-05-11 22:55:17 +00:00
Ted Kremenek
d0e3ab2196
Fix regression reported in <rdar://problem/6866843>. The analyzer should extend the lifetime of an object stored to a container.
...
llvm-svn: 71452
2009-05-11 18:30:24 +00:00
Ted Kremenek
dc7853cd98
Fix a bug found by Thomas Clement where 'return [[[NSString alloc] init] autorelease]' would emit a false 'too many overreleases' error.
...
llvm-svn: 71432
2009-05-11 15:26:06 +00:00
Zhongxing Xu
52091db11f
TypedRegion is a too general assumption. Usually we only want to invalidate
...
the VarRegion as a super region of an ElementRegion.
llvm-svn: 71431
2009-05-11 14:28:14 +00:00
Ted Kremenek
1f8e4346fa
Add special warning about returning a retained object where a GC'ed object is expected.
...
llvm-svn: 71397
2009-05-10 16:52:15 +00:00
Ted Kremenek
dee56e37fc
retain/release checker: Flag a warning for non-owned objects returned
...
where an owned one is expected. Also add preliminary checking for
returning a positive retain count object in GC mode where an owned GC
object is expected.
llvm-svn: 71388
2009-05-10 06:25:57 +00:00
Ted Kremenek
3978f7972d
analyzer:
...
- Improve -autorelease diagnostics.
- Improve VLA diagnostics.
- Use "short description" for bug when outputting to TextDiagnostics
llvm-svn: 71383
2009-05-10 05:11:21 +00:00
Zhongxing Xu
34d04b3ca9
As discussed with Ted, rename TypedRegion::getObjectType() to
...
TypedRegion::getValueType().
llvm-svn: 71321
2009-05-09 03:57:34 +00:00
Ted Kremenek
c2de72776c
Add back analyzer support for ns_returns_retained and cf_returns_retained.
...
llvm-svn: 71309
2009-05-09 02:58:13 +00:00
Ted Kremenek
2d0ff62a0d
It lives! The retain/release checker now tracks objects that are sent
...
'autorelease'.
llvm-svn: 71307
2009-05-09 01:50:57 +00:00
Zhongxing Xu
8038f7b30f
rename: MemRegion:
...
RValueType => ObjectType
LValueType => LocationType
No functionality change.
llvm-svn: 71304
2009-05-09 00:50:33 +00:00
Ted Kremenek
9ec08aa3f7
More hacking on autorelease errors. We now can emit basic errors (disabled for
...
now until ready).
llvm-svn: 71303
2009-05-09 00:44:07 +00:00
Ted Kremenek
d35272f96b
Put most of the boilerplate logic in place for reporting autorelease errors.
...
llvm-svn: 71301
2009-05-09 00:10:05 +00:00
Ted Kremenek
8c8fb488e6
retain/release checker: Add stub for HandleAutoreleaseCounts.
...
llvm-svn: 71290
2009-05-08 23:32:51 +00:00
Ted Kremenek
884a8996c5
retain/release checker: Refactor error-reporting code in EvalDeadSymbols and
...
EvalEndPath. This sets the stage for handling autorelease counts.
llvm-svn: 71283
2009-05-08 23:09:42 +00:00
Ted Kremenek
3a0516b25a
retain checker: Track the number of times a tracked object is sent
...
'autorelease'. This isn't used yet to flag errors.
llvm-svn: 71244
2009-05-08 20:01:42 +00:00
Ted Kremenek
062c14ba24
Remove experimental ownership attributes from Clang.
...
llvm-svn: 71216
2009-05-08 15:19:25 +00:00
Ted Kremenek
9157fbb6a6
Minor code cleanup in retain/release checker in preparation for some
...
other changes. Instead of repeatedly checking for GC mode when
getting the return effect, just do this computation once.
llvm-svn: 71193
2009-05-07 23:40:42 +00:00
Ted Kremenek
bb8d546208
Refactor BugReporter interface to have a new 'BugReporterContext' and
...
'BugReporterVisitor'. This simplifies callbacks from BugReporter to BugReports
(via VisitNode). It also lays the foundation for arbitrary visitor "call backs"
that can be registered to a BugReporterContext as a PathDiagnostic is
constructed. These call backs can help operate as separate "experts" that can
work on constructed pieces of a PathDiagnostic for which they possess special
knowledge.
llvm-svn: 71121
2009-05-06 21:39:49 +00:00
Ted Kremenek
0626df4eeb
Fix analyzer regression reported in PR 4164:
...
- Update the old StoreManager::CastRegion to strip off 'ElementRegions' when
casting to void* (Zhongxing: please validate)
- Pass-by-reference argument invalidation logic in CFRefCount.cpp:
- Strip ElementRegions when the ElementRegion is just a 'raw data' view
on top of the underlying typed region.
llvm-svn: 71094
2009-05-06 18:19:24 +00:00
Ted Kremenek
213ff5a98e
Implement attribute 'ns_autorelease'.
...
llvm-svn: 70990
2009-05-05 18:44:20 +00:00
Ted Kremenek
94c464ef22
Implement attribute 'cf_returns_owned' (mirrors 'ns_returns_owned').
...
llvm-svn: 70952
2009-05-05 00:46:09 +00:00
Ted Kremenek
6bdfcf47ad
Remove experimental attribute 'ns_ownership_make_collectable.'
...
llvm-svn: 70940
2009-05-04 23:46:06 +00:00
Ted Kremenek
0836a19931
Rename attributes 'objc_ownership...' to 'ns_ownership...'.
...
llvm-svn: 70897
2009-05-04 19:10:19 +00:00
Ted Kremenek
5dbfa3fadd
Rename attributes:
...
'objc_ownership_cfretain' -> 'cf_ownership_retain'
'objc_ownership_cfrelease' -> 'cf_ownership_release'
Motivation: Core Foundation objects can be used in isolation from Objective-C,
and this forces users to reason about the separate semantics of CF objects. More
Sema support pending.
llvm-svn: 70884
2009-05-04 17:29:57 +00:00
Ted Kremenek
49a844e1a6
retain checker: Add checker support for FunctionDecl ownership annotations. Need to add Sema support.
...
llvm-svn: 70873
2009-05-04 16:43:50 +00:00
Ted Kremenek
863f68aa06
retain checker: Pull out logic for parameter annotations into a
...
separate method.
llvm-svn: 70870
2009-05-04 15:40:58 +00:00
Ted Kremenek
df76e6d09d
retain checker: Don't treat function's declared in macros differently.
...
llvm-svn: 70869
2009-05-04 15:34:07 +00:00
Ted Kremenek
1d9a267b2e
retain checker:
...
- Fix retain checker test failures.
- Update retain checker to have annotations override default summary effects, not completely redefine them.
llvm-svn: 70828
2009-05-04 05:31:22 +00:00
Ted Kremenek
ff606a1259
retain checker: RetainSummaryManager now has a 'DefaultSummary' object
...
which is returned instead of a null pointer. This helps centralize
the logic concerning "default effects".
llvm-svn: 70826
2009-05-04 04:57:00 +00:00
Ted Kremenek
1bff64e309
retain checker: Don't bother using a FoldingSet to unique summaries.
...
We never compare summaries by their pointers, and we create only a
handful of them when analyzing a given function.
llvm-svn: 70824
2009-05-04 04:30:18 +00:00
Ted Kremenek
4b59ccb563
Fix: <rdar://problem/6850275> CF objects returned from methods with "new" or "copy" in their name should be treated as owned
...
For methods that follow the "fundamental rule" and return Core
Foundation objects, treat those objects as owned by the caller.
llvm-svn: 70665
2009-05-03 06:08:32 +00:00
Ted Kremenek
7d79a5f87d
Convert ArgEffects from an std::vector to an ImmutableMap. This will make it much easier to clean up the summary generation logic with annotations.
...
llvm-svn: 70660
2009-05-03 05:20:50 +00:00
Ted Kremenek
b4cf4a52ab
Rename isTrackedObjectType() -> isTrackedObjCObjectType().
...
llvm-svn: 70657
2009-05-03 04:42:10 +00:00
Ted Kremenek
f1e7667099
retain/release checker: Enhance leak description to say that the bug
...
occurs in GC mode.
llvm-svn: 70638
2009-05-02 19:05:19 +00:00
Ted Kremenek
2ff8a79d27
retain/release checker: Hook up attributes 'objc_ownership_retain' and
...
'objc_ownership_release' to the effects on receivers.
llvm-svn: 70507
2009-04-30 20:00:31 +00:00
Ted Kremenek
b4e27a1838
Handle case in EvalReturn where we cache out in the ExplodedGraph.
...
llvm-svn: 70475
2009-04-30 05:51:50 +00:00
Ted Kremenek
497df9126f
retain/release checker: Use the ObjCMethodDecl in the @implementation if no
...
matching ObjCMethodDecl exists in the @interface.
llvm-svn: 70474
2009-04-30 05:47:23 +00:00
Ted Kremenek
b2a143fad6
retain/release checker: Resolve method decl in @interface after getting the
...
ObjCInterfaceDecl, not before.
llvm-svn: 70473
2009-04-30 05:41:14 +00:00
Ted Kremenek
223a7d5445
retain/release checker: When determining whether an analyzed method can return
...
an owned object, consult its summary instead of inspecting the selector. This
picks up annotations, and is just more general.
llvm-svn: 70429
2009-04-29 23:03:22 +00:00
Ted Kremenek
d6bef2edab
Format cleanup. No functionality change.
...
llvm-svn: 70420
2009-04-29 22:25:52 +00:00
Ted Kremenek
53cce5c195
Reformat long line. No functionality change.
...
llvm-svn: 70412
2009-04-29 21:31:59 +00:00
Ted Kremenek
6bd78709f2
retain/release checker: Hoist code for bug reports above transfer function logic
...
(those diffs are just code moving) and move the logic for "return of owned
object" leak reporting to EvalReturnStmt.
llvm-svn: 70399
2009-04-29 18:50:19 +00:00
Ted Kremenek
99fe1695c7
Add version of getMethodSummary() that can be used to query the summary for the
...
method currently being analyzed.
llvm-svn: 70388
2009-04-29 17:17:48 +00:00
Ted Kremenek
387243067a
Rename getMethodSummary() -> getInstanceMethodSummary().
...
llvm-svn: 70387
2009-04-29 17:09:14 +00:00
Ted Kremenek
0b50fb1de1
retain/release checker: Refactor getMethodSummary() to not depend on ObjCMessageExpr.
...
llvm-svn: 70369
2009-04-29 05:04:30 +00:00
Zhongxing Xu
3ee3044bd7
As discussed with Ted offline, re-apply r70293.
...
llvm-svn: 70358
2009-04-29 02:30:09 +00:00
Ted Kremenek
7686ffaf07
retain/release checker: Refactor the guts of getClassMethodSummary to not depend
...
on ObjCMessageExpr. This will enable us to use it elsewhere. This should not
change any functionality.
llvm-svn: 70352
2009-04-29 00:42:39 +00:00