DeLesley Hutchins
a5a00e830a
Thread-safety analysis: Add support for selectively turning off warnings
...
within part of a particular method.
llvm-svn: 163397
2012-09-07 17:34:53 +00:00
Roman Divacky
e637711ae0
Dont cast away const needlessly. Found by gcc48 -Wcast-qual.
...
llvm-svn: 163325
2012-09-06 15:59:27 +00:00
DeLesley Hutchins
93b1b031c1
Thread-safety analysis: bugfix for case where a trylock occurs in an
...
expression involving temporaries.
llvm-svn: 163237
2012-09-05 20:01:16 +00:00
DeLesley Hutchins
f5cf7903d9
Thread-safety analysis: fix handling of LOCK_RETURNED attribute so that the
...
latest definition of a function is always used when computing lock expressions.
llvm-svn: 163028
2012-08-31 22:09:53 +00:00
DeLesley Hutchins
3c3d57bc16
Thread-safety analysis: fix handling of string constants in mutex
...
expressions, which should be ignored right now.
llvm-svn: 163026
2012-08-31 21:57:32 +00:00
Ted Kremenek
78094caa56
Fix an assortment of doxygen comment issues found by -Wdocumentation.
...
llvm-svn: 162412
2012-08-22 23:50:41 +00:00
DeLesley Hutchins
0c90c2bc4b
Thread-safety-analysis: adds existential quantification over lock
...
expressions. The syntax &MyClass::mutex is interpreted as a
pattern that matches m->mutex for any object m of type MyClass.
llvm-svn: 161691
2012-08-10 20:29:46 +00:00
DeLesley Hutchins
9b1d72f3e3
Thread safety analysis: refactor to support more sophisticated handling
...
of expressions, and better error messages.
llvm-svn: 161690
2012-08-10 20:19:55 +00:00
DeLesley Hutchins
c9776faa4f
Refactor thread safety analysis to use a different data structure
...
to track locksets. This is in preparation for further changes.
llvm-svn: 161680
2012-08-10 18:39:05 +00:00
Sylvestre Ledru
830885ca64
Fix a typo (the the => the)
...
llvm-svn: 160622
2012-07-23 08:59:39 +00:00
DeLesley Hutchins
868830f727
Thread safety analysis: impove handling of trylock expressions.
...
llvm-svn: 160018
2012-07-10 21:47:55 +00:00
DeLesley Hutchins
09bcefcb6d
Thread-safety analysis: eliminate false positives in case where the definition
...
duplicates attributes on the declaration. Also eliminates a false negative in
ReleasableMutexLock. Fixing this bug required some refactoring.
llvm-svn: 159780
2012-07-05 21:16:29 +00:00
DeLesley Hutchins
3a8d6cff14
Thread safety analysis: improve handling of smart pointers.
...
llvm-svn: 159679
2012-07-03 19:47:18 +00:00
DeLesley Hutchins
0c1da20bf8
Thread Safety Analysis: handle expressions involving temporaries,
...
e.g. ExprWithCleanups.
llvm-svn: 159674
2012-07-03 18:25:56 +00:00
DeLesley Hutchins
ab0d4e6cd8
Thread safety analysis: fixed bug that occurs when very silly people
...
use scoped_lockable without putting unlock_function on the
destructor.
llvm-svn: 159609
2012-07-02 22:26:29 +00:00
DeLesley Hutchins
6e6dbb7618
Thread safety analysis: fixed incorrect error message at the end of a locks_required function.
...
llvm-svn: 159607
2012-07-02 22:16:54 +00:00
DeLesley Hutchins
2a15baf968
Thread safety analysis: don't warn in case of duplicate annotation.
...
llvm-svn: 159606
2012-07-02 22:12:12 +00:00
DeLesley Hutchins
c4a6e51596
Thread Safety Analysis: turn off checking within trylock functions.
...
llvm-svn: 159601
2012-07-02 21:59:24 +00:00
DeLesley Hutchins
d162c91b1a
Thread safety analysis: support release() function on scoped
...
lockable objects.
llvm-svn: 159387
2012-06-28 22:42:48 +00:00
DeLesley Hutchins
49979f2e38
Thread safety analysis: implement lock_returned attribute.
...
llvm-svn: 159152
2012-06-25 18:33:18 +00:00
DeLesley Hutchins
ebbf77016d
Thread safety analysis: fixes a bug in which locksets are not handled
...
properly if there is a join point in the control flow graph that involves
a trylock. Also changes the source locations of some warnings to be
more consistent.
llvm-svn: 159008
2012-06-22 17:07:28 +00:00
DeLesley Hutchins
8c9d9579c4
Refactor the thread safety analysis so that it is easier to do
...
path-sensitive analysis like handling of trylock expressions.
llvm-svn: 155137
2012-04-19 16:48:43 +00:00
John McCall
113bee0536
Remove BlockDeclRefExpr and introduce a bit on DeclRefExpr to
...
track whether the referenced declaration comes from an enclosing
local context. I'm amenable to suggestions about the exact meaning
of this bit.
llvm-svn: 152491
2012-03-10 09:33:50 +00:00
DeLesley Hutchins
e2a3f75a12
Thread safety analysis: expand set of expressions that can be used to denote locks.
...
llvm-svn: 151956
2012-03-02 23:36:05 +00:00
DeLesley Hutchins
a2587ef26d
Thread safety analysis: handle CFG blocks which call functions marked as noreturn.
...
llvm-svn: 151944
2012-03-02 22:02:58 +00:00
DeLesley Hutchins
c2286f6402
Thread-safety analysis: Disable checking inside constructors, destructors, lock, and unlock functions
...
llvm-svn: 150701
2012-02-16 17:13:43 +00:00
DeLesley Hutchins
bc8ffdb68c
Thread-Safety: added support for 'this' as a lock expression.
...
llvm-svn: 150700
2012-02-16 17:03:24 +00:00
Richard Smith
922866783b
Thread safety analysis:
...
* When we detect that a CFG block has inconsistent lock sets, point the
diagnostic at the location where we found the inconsistency, and point a note
at somewhere the inconsistently-locked mutex was locked.
* Fix the wording of the normal (non-loop, non-end-of-function) case of this
diagnostic to not suggest that the mutex is going out of scope.
* Fix the diagnostic emission code to keep a warning and its note together when
sorting the diagnostics into source location order.
llvm-svn: 149669
2012-02-03 04:45:26 +00:00
Richard Smith
815b29d7c9
Thread safety analysis: at a CFG join point between a block terminating in a
...
'continue' and another block, prefer the lockset from the other block, and
diagnose the 'continue' block as being the end of a loop.
llvm-svn: 149666
2012-02-03 03:30:07 +00:00
DeLesley Hutchins
68f7b1a647
Handle thread safety attributes on functions with separate definitions and declarations.
...
llvm-svn: 148599
2012-01-20 23:24:41 +00:00
DeLesley Hutchins
9d53033de6
Thread safety analysis: added support for trylock attribute.
...
llvm-svn: 147672
2012-01-06 19:16:50 +00:00
DeLesley Hutchins
9b7022e570
Added LocalVariableMap
...
llvm-svn: 147670
2012-01-06 18:36:09 +00:00
DeLesley Hutchins
714296cb31
Support for thread safety attributes on functions
...
llvm-svn: 147331
2011-12-29 00:56:48 +00:00
DeLesley Hutchins
f7faa6a69b
This patch extends thread safety analysis with support for the scoped_lockable attribute.
...
llvm-svn: 146174
2011-12-08 20:23:06 +00:00
Ted Kremenek
81ce1c8a99
Rename AnalysisContext to AnalysisDeclContext. Not only is this name more accurate, but it frees up the name AnalysisContext for other uses.
...
llvm-svn: 142782
2011-10-24 01:32:45 +00:00
Ted Kremenek
4b4c51c323
Refactor ThreadSafety to use PostOrderCFGView instead of its own copy (of TopologicallySortedCFG).
...
llvm-svn: 142714
2011-10-22 02:14:27 +00:00
DeLesley Hutchins
f893e8ab87
Added support for thread safety attributes on destructors.
...
llvm-svn: 142685
2011-10-21 20:51:27 +00:00
DeLesley Hutchins
c20905110a
Thread safety analysis refactoring: invalid lock expressions.
...
llvm-svn: 142666
2011-10-21 18:10:14 +00:00
DeLesley Hutchins
db917bdea2
Thread safety analysis: add support for attributes on constructors.
...
llvm-svn: 142665
2011-10-21 18:06:53 +00:00
DeLesley Hutchins
3d312b175a
Refactoring and code cleanup.
...
llvm-svn: 142654
2011-10-21 16:14:33 +00:00
DeLesley Hutchins
30abeb1680
Substitute for arguments in method calls -- functionality
...
llvm-svn: 142267
2011-10-17 21:38:02 +00:00
DeLesley Hutchins
a088f67bee
Substitute for arguments in method calls -- refactoring
...
llvm-svn: 142260
2011-10-17 21:33:35 +00:00
DeLesley Hutchins
08e094aee3
Test commit
...
llvm-svn: 140149
2011-09-20 17:25:59 +00:00
Caitlin Sadowski
086fb95da5
Thread safety: Adding FIXMEs and a couple cleanups
...
llvm-svn: 139894
2011-09-16 00:35:54 +00:00
Caitlin Sadowski
6525fb25cb
Thread safety: completeing the implementation of shared/exclusive locks required attributes
...
llvm-svn: 139804
2011-09-15 17:43:08 +00:00
Caitlin Sadowski
af9b7c5f8b
Thread safety: refactoring various out of scope warnings to use the same inteface. This eliminates a lot of unnecessary duplicated code.
...
llvm-svn: 139801
2011-09-15 17:25:19 +00:00
Caitlin Sadowski
5b34a2fd6e
Thread safety: adding additional documentation to the main thread safety interface, and making the destructor for the thread safety handler pure virtual
...
llvm-svn: 139722
2011-09-14 20:05:09 +00:00
Caitlin Sadowski
787c2a1b09
Thread safety: adding test cases for unparseable lock expressions and expanding the handling of these expressions
...
llvm-svn: 139720
2011-09-14 20:00:24 +00:00
Caitlin Sadowski
eecd273951
Thread safety: small formatting change
...
llvm-svn: 139548
2011-09-12 22:28:41 +00:00
Benjamin Kramer
8a8051f2cd
Silence "end of non-void function" warnings with llvm_unreachable and add an assert.
...
llvm-svn: 139474
2011-09-10 21:52:04 +00:00