| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 188505
|
|
|
|
|
|
|
| |
assert_exclusive_lock and assert_shared_lock. These attributes are used to
mark functions that dynamically check (i.e. assert) that a lock is held.
llvm-svn: 182170
|
|
|
|
|
|
| |
These checks are enabled with the -Wthread-safety-beta flag.
llvm-svn: 179046
|
|
|
|
|
|
| |
in an unevaluated context.
llvm-svn: 174644
|
|
|
|
| |
llvm-svn: 172858
|
|
|
|
| |
llvm-svn: 169669
|
|
|
|
|
|
| |
copy constructors.
llvm-svn: 169350
|
|
|
|
|
|
| |
declarations.
llvm-svn: 165826
|
|
|
|
| |
llvm-svn: 165339
|
|
|
|
|
|
|
|
|
| |
where an attribute is attached to a forward declaration of a template function,
and refers to parameters of that declaration, but is then inherited by the
definition of that function. When the definition is instantiated, the
parameter references need to be remapped.
llvm-svn: 164710
|
|
|
|
|
|
|
| |
where a call to function marked 'noreturn' is followed by unreachable
implicit destructor calls.
llvm-svn: 164394
|
|
|
|
|
|
| |
as exclusive.
llvm-svn: 164332
|
|
|
|
|
|
| |
lock expressions.
llvm-svn: 164324
|
|
|
|
|
|
| |
is placed on a function that has no path to the exit block.
llvm-svn: 164244
|
|
|
|
|
|
|
| |
LOCKS_EXCLUDED is used on a method with a name that is is not a simple
identifier.
llvm-svn: 164242
|
|
|
|
| |
llvm-svn: 163656
|
|
|
|
|
|
| |
on templates.
llvm-svn: 163642
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 163404
|
|
|
|
|
|
| |
within part of a particular method.
llvm-svn: 163397
|
|
|
|
|
|
| |
expression involving temporaries.
llvm-svn: 163237
|
|
|
|
|
|
| |
latest definition of a function is always used when computing lock expressions.
llvm-svn: 163028
|
|
|
|
|
|
| |
expressions, which should be ignored right now.
llvm-svn: 163026
|
|
|
|
|
|
|
| |
expressions. The syntax &MyClass::mutex is interpreted as a
pattern that matches m->mutex for any object m of type MyClass.
llvm-svn: 161691
|
|
|
|
|
|
| |
of expressions, and better error messages.
llvm-svn: 161690
|
|
|
|
| |
llvm-svn: 161036
|
|
|
|
| |
llvm-svn: 160018
|
|
|
|
|
|
|
| |
duplicates attributes on the declaration. Also eliminates a false negative in
ReleasableMutexLock. Fixing this bug required some refactoring.
llvm-svn: 159780
|
|
|
|
| |
llvm-svn: 159679
|
|
|
|
|
|
| |
e.g. ExprWithCleanups.
llvm-svn: 159674
|
|
|
|
|
|
|
| |
use scoped_lockable without putting unlock_function on the
destructor.
llvm-svn: 159609
|
|
|
|
|
|
| |
locks_required function.
llvm-svn: 159607
|
|
|
|
| |
llvm-svn: 159606
|
|
|
|
| |
llvm-svn: 159601
|
|
|
|
|
|
| |
lockable objects.
llvm-svn: 159387
|
|
|
|
| |
llvm-svn: 159152
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
being used in an exception specification in a way which isn't otherwise
ill-formed in C++98: this warning also incorrectly triggered on uses of 'this'
inside thread-safety attributes, and the mechanism required to tell these cases
apart is more complex than can be justified by the (minimal) value of this part
of -Wc++98-compat.
llvm-svn: 155857
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This diagnostic seems to be production ready, it's just an oversight that it
wasn't turned on by default.
The test changes are a bit of a mixed bag. Some tests that seemed like they
clearly didn't need to use this behavior have been modified not to use it.
Others that I couldn't be sure about, I added the necessary expected-warnings
to.
It's possible the diagnostic message could be improved to make it clearer that
this warning can be suppressed by using a value that won't lose precision when
converted to the target type (but can still be a floating point literal, such
as "bool b = 1.0;").
llvm-svn: 154068
|
|
|
|
|
|
| |
locks.
llvm-svn: 151956
|
|
|
|
| |
llvm-svn: 151947
|
|
|
|
|
|
|
| |
GNU attributes to a better extent, by allowing them in more
places on a declator.
llvm-svn: 151945
|
|
|
|
|
|
| |
noreturn.
llvm-svn: 151944
|
|
|
|
|
|
|
| |
when a class is forward declared, and the reference to the data
member in question does not occur within a method body.
llvm-svn: 151413
|
|
|
|
|
|
| |
dependent attributes on static members of templatized classes.
llvm-svn: 150704
|
|
|
|
|
|
| |
lock, and unlock functions
llvm-svn: 150701
|
|
|
|
| |
llvm-svn: 150700
|
|
|
|
|
|
|
|
| |
For compatibility with gcc, clang will now parse gcc attributes on
function definitions, but issue a warning if the attribute is not a
thread safety attribute. Warning controlled by -Wgcc-compat.
llvm-svn: 150698
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
| |
'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
|