Thread-safety analysis: adding in a basic lockset tracking system. This
system flags an error when unlocking a lock which was not held, locking
the same lock twice, having a different lockset on each iteration of a
loop, or going out of scope while still holding a lock. In order to
successfully use the lockset, this patch also makes sure that attribute
arguments are attached correctly for later parsing.

This patch was also worked on by DeLesley Hutchins.

Note: This patch has been reviewed by Chandler Carruth and Jeffrey
Yasskin. Feel free to provide post-commit review comments for a
subsequent patch.

llvm-svn: 138350
7 files changed
tree: c16ccc1d985d9a9ec1bcba27d0b41657bf8632af
  1. clang/
  2. compiler-rt/
  3. debuginfo-tests/
  4. libcxx/
  5. libcxxabi/
  6. lldb/
  7. llvm/
  8. polly/