| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
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
|
| |
|
|
|
|
|
| |
This patch tries to avoid unrelated changes other than fixing a few
hyphen-related ambiguities in nearby lines.
llvm-svn: 196466
|
| |
|
|
| |
llvm-svn: 195777
|
| |
|
|
|
|
| |
Currently supported only with -Wthread-safety-beta.
llvm-svn: 194275
|
| |
|
|
|
|
| |
test case.
llvm-svn: 194157
|
| |
|
|
|
|
| |
on smart pointers. -Wthread-safety-beta only.
llvm-svn: 194103
|
| |
|
|
|
|
|
|
|
|
| |
* NamedDecl and CXXMethodDecl were missing getMostRecentDecl.
* The const version can just forward to the non const.
* getMostRecentDecl can use cast instead of cast_or_null.
This then removes some casts from the callers.
llvm-svn: 193039
|
| |
|
|
| |
llvm-svn: 188505
|
| |
|
|
| |
llvm-svn: 188465
|
| |
|
|
| |
llvm-svn: 185013
|
| |
|
|
| |
llvm-svn: 182305
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
These were previously enabled as a "beta" feature, but they have now been
extensively tested.
llvm-svn: 178478
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Use Optional<CFG*> where invalid states were needed previously. In the one case
where that's not possible (beginAutomaticObjDtorsInsert) just use a dummy
CFGAutomaticObjDtor.
Thanks for the help from Jordan Rose & discussion/feedback from Ted Kremenek
and Doug Gregor.
Post commit code review feedback on r175796 by Ted Kremenek.
llvm-svn: 175938
|
| |
|
|
|
|
| |
See r175462 for another example/more details.
llvm-svn: 175796
|
| |
|
|
| |
llvm-svn: 172858
|
| |
|
|
|
|
| |
brought into 'clang' namespace by clang/Basic/LLVM.h
llvm-svn: 172323
|
| |
|
|
| |
llvm-svn: 169669
|
| |
|
|
|
|
| |
copy constructors.
llvm-svn: 169350
|
| |
|
|
|
|
| |
adjust checkAccess. No change in functionality.
llvm-svn: 169348
|