| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
Rather than storing BeforeInfo in the DenseMap by value, this stores a
unique_ptr to it, so that we can keep a pointer to it live across
subsequent DenseMap insertions.
This change also removes the unique_ptr wrapper around BeforeVect
because now we're indirecting at a higher level.
llvm-svn: 253694
|
|
|
|
|
|
|
|
|
|
| |
Summary: It breaks the build for the ASTMatchers
Subscribers: klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D13893
llvm-svn: 250827
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Replace empty bodies of default constructors and destructors with '= default'.
Reviewers: bkramer, klimek
Subscribers: klimek, alexfh, cfe-commits
Differential Revision: http://reviews.llvm.org/D13890
llvm-svn: 250822
|
|
|
|
|
|
| |
SourceLocation.isValid().
llvm-svn: 249228
|
|
|
|
|
|
|
| |
disable checking of arguments to the function, which is done by
-Wthread-safety-reference.
llvm-svn: 246806
|
|
|
|
|
|
| |
Otherwise, Expr will assert during construction with a reference type.
llvm-svn: 232425
|
|
|
|
|
|
|
|
| |
namespaces
NFC.
llvm-svn: 231653
|
|
|
|
|
|
|
|
| |
std::lock_guard. If EXCLUSIVE_LOCKS_REQUIRED is placed on the constructor of
a SCOPED_LOCKABLE class, then that constructor is assumed to adopt the lock;
e.g. the lock must be held on construction, and will be released on destruction.
llvm-svn: 228194
|
|
|
|
|
|
| |
functionality.
llvm-svn: 228176
|
|
|
|
|
|
|
|
|
|
| |
These checks detect potential deadlocks caused by inconsistent lock
ordering. The checks are implemented under the -Wthread-safety-beta flag.
This patch also replaces calls to getAttrs() with calls to attrs() throughout
ThreadSafety.cpp, which fixes the earlier issue that cause assert failures.
llvm-svn: 228051
|
|
|
|
|
|
|
|
|
| |
mutexes."
This reverts r227997, as well as r228009. It does not pass check-clang
for me locally on Linux.
llvm-svn: 228020
|
|
|
|
|
|
| |
MSVC cannot infer move ctors yet.
llvm-svn: 228009
|
|
|
|
|
|
|
| |
These checks detect potential deadlocks caused by inconsistent lock
ordering. The checks are implemented under the -Wthread-safety-beta flag.
llvm-svn: 227997
|
|
|
|
|
|
|
|
|
|
| |
Sorry for the noise, I managed to miss a bunch of recent regressions of
include orderings here. This should actually sort all the includes for
Clang. Again, no functionality changed, this is just a mechanical
cleanup that I try to run periodically to keep the #include lines as
regular as possible across the project.
llvm-svn: 225979
|
|
|
|
|
|
| |
and into -Wthread-safety.
llvm-svn: 221410
|
|
|
|
|
|
|
|
| |
warns when a guarded variable is passed by reference as a function argument.
This is released as a separate warning flag, because it could potentially
break existing code that uses thread safety analysis.
llvm-svn: 218087
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Scoped lockable objects (mutex guards) are implemented as if it is a
lock itself that is acquired upon construction and unlocked upon
destruction. As it if course needs to be used to actually lock down
something else (a mutex), it keeps track of this knowledge through its
underlying mutex field in its FactEntry.
The problem with this approach is that this only allows us to lock down
a single mutex, so extend the code to use a vector of underlying
mutexes. This, however, makes the code a bit more complex than
necessary, so subclass FactEntry into LockableFactEntry and
ScopedLockableFactEntry and move all the logic that differs between
regular locks and scoped lockables into member functions.
llvm-svn: 217016
|
|
|
|
| |
llvm-svn: 215704
|
|
|
|
|
|
| |
additional notes that are helpful when compiling statistics on thread safety warnings.
llvm-svn: 215677
|
|
|
|
|
|
| |
data members and range based for loops.
llvm-svn: 215671
|
|
|
|
| |
llvm-svn: 214796
|
|
|
|
| |
llvm-svn: 214795
|
|
|
|
|
|
|
| |
a mutex is acquired, but corresponding mutex is not provably not-held. This
is based on the earlier negative requirements patch.
llvm-svn: 214789
|
|
|
|
|
|
|
| |
capability expressions of the form !expr, and denote a capability that must
not be held.
llvm-svn: 214725
|
|
|
|
|
|
|
|
| |
til::SExpr. This is a large patch, with many small changes to pretty printing
and expression lowering to make the new SExpr representation equivalent in
functionality to the old.
llvm-svn: 214089
|
|
|
|
| |
llvm-svn: 209191
|
|
|
|
|
|
| |
changes intended.
llvm-svn: 208810
|
|
|
|
| |
llvm-svn: 208800
|
|
|
|
|
|
| |
changes intended.
llvm-svn: 208783
|
|
|
|
| |
llvm-svn: 208774
|
|
|
|
|
|
| |
yet, and fixes a dead code warning.
llvm-svn: 208440
|
|
|
|
|
|
|
|
|
|
| |
is to allow requirements to be expressed not just in terms of lists, but in terms of logical expressions. Eg)
void foo(void) __attribute__((requires_capability((FlightControl || Worker) && !Logger)));
This is WIP code.
llvm-svn: 208439
|
|
|
|
| |
llvm-svn: 207870
|
|
|
|
|
|
| |
range accessor in addition to the iterators. Updated code using iterators to use range-based for loops.
llvm-svn: 207837
|
|
|
|
|
|
| |
changes.
llvm-svn: 206590
|
|
|
|
|
|
| |
more const-correctness, and now uses some range-based for loops. No functional changes intended.
llvm-svn: 206503
|
|
|
|
|
|
| |
functionality.
llvm-svn: 205936
|
|
|
|
|
|
|
|
|
|
| |
This patch is the first part of a significant refactoring that seeks to restore
sanity to way thread safety analysis deals with capability expressions. The
current patch merely provides an outline of the structure of the new system.
It's not yet connected to the actual analysis, so there's no change in
functionality.
llvm-svn: 205728
|
|
|
|
|
|
| |
Instead of using terminology such as "lock", "unlock" and "locked", the new terminology is "acquire", "release" and "held". Additionally, the capability attribute's name argument is now reported as part of the diagnostic, instead of hard coding as "mutex."
llvm-svn: 205359
|
|
|
|
|
|
| |
release_generic_capability functions are now functionally distinct for capability analysis. The unlock_function attribute maps directly to release_generic_capability.
llvm-svn: 204469
|
|
|
|
|
|
|
|
| |
unlock_function attributes with the acquire_capability and release_capability attributes. The old spellings will continue to work, but the underlying semantic attributes have been replaced.
Downgraded the capability diagnostics from error to warning to match the desired behavior, and updated the existing test cases.
llvm-svn: 204350
|
|
|
|
|
|
| |
to -Wthread-safety.
llvm-svn: 203510
|
|
|
|
|
|
| |
specific_attr_end() with iterator_range specific_attrs(). Updating all of the usages of the iterators with range-based for loops.
llvm-svn: 203474
|
|
|
|
|
|
|
|
| |
CallingContext, but none of the other optional parameters are. Removing the optional parameters, and making the NamedDecl required.
No functional changes intended.
llvm-svn: 203149
|
|
|
|
|
|
|
|
| |
an SExprNode and returning the position in which it was inserted.
No functional change intended.
llvm-svn: 203148
|
|
|
|
| |
llvm-svn: 203144
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
functionality) and I have agreed to start migrating from lock-specific terminology to "capability"-specific terminology. This opens the door for future threading-related analysis passes so that a common nomenclature can be used.
The following attributes have been (silently) deprecated, with their replacements listed:
lockable => capability
exclusive_locks_required => requires_capability
shared_locks_required => requires_shared_capability
locks_excluded => requires_capability
There are no functional changes intended.
llvm-svn: 201585
|
|
|
|
|
|
| |
functional changes intended.
llvm-svn: 197681
|
|
|
|
|
|
| |
change intended -- this only replaces Boolean uses of getAttr.
llvm-svn: 197648
|
|
|
|
| |
llvm-svn: 196510
|