David Blaikie
2a01f5d426
Replace CFGElement llvm::cast support to be well-defined.
...
See r175462 for another example/more details.
llvm-svn: 175796
2013-02-21 20:58:29 +00:00
DeLesley Hutchins
9fa426a666
Thread-safety analysis: ignore edges from throw expressions in CFG.
...
llvm-svn: 172858
2013-01-18 22:15:45 +00:00
Dmitri Gribenko
f857950d39
Remove useless 'llvm::' qualifier from names like StringRef and others that are
...
brought into 'clang' namespace by clang/Basic/LLVM.h
llvm-svn: 172323
2013-01-12 19:30:44 +00:00
DeLesley Hutchins
0cfa1a5a1d
Thread-safety analysis: check member access on guarded non-primitive types.
...
llvm-svn: 169669
2012-12-08 03:46:30 +00:00
DeLesley Hutchins
f489d2b86c
Thread-safety analysis: check locks on method calls, operator=, and
...
copy constructors.
llvm-svn: 169350
2012-12-05 01:20:45 +00:00
DeLesley Hutchins
5df82f2155
Thread Safety Analysis: refactor to make more methods accept const pointers,
...
adjust checkAccess. No change in functionality.
llvm-svn: 169348
2012-12-05 00:52:33 +00:00
Chandler Carruth
3a02247dc9
Sort all of Clang's files under 'lib', and fix up the broken headers
...
uncovered.
This required manually correcting all of the incorrect main-module
headers I could find, and running the new llvm/utils/sort_includes.py
script over the files.
I also manually added quite a few missing headers that were uncovered by
shuffling the order or moving headers up to be main-module-headers.
llvm-svn: 169237
2012-12-04 09:13:33 +00:00
Benjamin Kramer
ea70eb30a0
Pull the Attr iteration parts out of Attr.h, so including DeclBase.h doesn't pull in all the generated Attr code.
...
Required to pull some functions out of line, but this shouldn't have a perf impact.
No functionality change.
llvm-svn: 169092
2012-12-01 15:09:41 +00:00
DeLesley Hutchins
1fe885614d
Thread-safety analysis: allow attributes on constructors to refer to 'this'.
...
llvm-svn: 165339
2012-10-05 22:38:19 +00:00
DeLesley Hutchins
10958cae09
Thread-safety analysis: better handling of unreachable blocks. Fixes a bug
...
where a call to function marked 'noreturn' is followed by unreachable
implicit destructor calls.
llvm-svn: 164394
2012-09-21 17:57:00 +00:00
DeLesley Hutchins
fcb0ffa622
Thread-safety analysis: fix bug where shared trylock was treated
...
as exclusive.
llvm-svn: 164332
2012-09-20 23:14:43 +00:00
DeLesley Hutchins
b78aeed26e
Thread safety analysis: properly canonicalize calls to virtual methods within
...
lock expressions.
llvm-svn: 164324
2012-09-20 22:18:02 +00:00
DeLesley Hutchins
132f8f6959
Thread-safety analysis: Fix warning when EXCLUSIVE_LOCKS_REQUIRED
...
is placed on a function that has no path to the exit block.
llvm-svn: 164244
2012-09-19 19:49:40 +00:00
DeLesley Hutchins
a15e1b4f63
Thread-safety analysis: fix ICE when EXCLUSIVE_LOCKS_REQUIRED or
...
LOCKS_EXCLUDED is used on a method with a name that is is not a simple
identifier.
llvm-svn: 164242
2012-09-19 19:18:29 +00:00
DeLesley Hutchins
138568b60a
Thread-safety analysis: fix bug in expression matching code.
...
llvm-svn: 163656
2012-09-11 23:04:49 +00:00
DeLesley Hutchins
5ff1644e62
Thread-safety analysis: differentiate between two forms of analysis; a precise
...
analysis that may give false positives because it is confused by aliasing, and
a less precise analysis that has fewer false positives, but may have false
negatives. The more precise warnings are enabled by -Wthread-safety-precise.
An additional note clarify the warnings in the precise case.
llvm-svn: 163537
2012-09-10 19:58:23 +00:00
Chad Rosier
37a8563f36
Ampersand goes with identifier.
...
llvm-svn: 163410
2012-09-07 19:49:55 +00:00
Chad Rosier
78af00f675
Bring buildbots back. Fix scoping issue and coding style from r163397.
...
llvm-svn: 163403
2012-09-07 18:44:15 +00:00
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
Caitlin Sadowski
82e2de512e
Thread safety: removing unnecessary import and reordering import list
...
llvm-svn: 139426
2011-09-09 23:00:59 +00:00
Caitlin Sadowski
0bef2279fb
Thread safety: removing unnecessary import
...
llvm-svn: 139425
2011-09-09 22:49:12 +00:00
Caitlin Sadowski
ff2f3f8105
Thread safety: This patch deals with previously unhandled cases when building lock expressions. We now resolve this expressions, avoid crashing when encountering cast expressions, and have a diagnostic for unresolved lock expressions
...
llvm-svn: 139370
2011-09-09 16:21:55 +00:00
Caitlin Sadowski
33208340bd
Thread Safety: Moving the analysis to a new file
...
llvm-svn: 139369
2011-09-09 16:11:56 +00:00