Tests for DR525-550.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216834 91177308-0d34-0410-b5e6-96231b3b80d8
cxx_status: the name C++14 isn't provisional any more.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216836 91177308-0d34-0410-b5e6-96231b3b80d8
cxx_status: we did support some of C++14 in Clang 3.3.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216837 91177308-0d34-0410-b5e6-96231b3b80d8
clang/test/CXX/drs/dr5xx.cpp: Suppress dr547 for targeting MSVC x86 for now, due to incompatibility of attribute(thiscall).

With targeting i686-win32,

  error: 'error' diagnostics seen but not expected:
    File clang/test/CXX/drs/dr5xx.cpp Line 521: implicit instantiation of undefined template 'dr547::X<void () __attribute__((thiscall)) const>'
    File clang/test/CXX/drs/dr5xx.cpp Line 518: implicit instantiation of undefined template 'dr547::X<void () __attribute__((thiscall)) const>'
    File clang/test/CXX/drs/dr5xx.cpp Line 518: implicit instantiation of undefined template 'dr547::X<void () __attribute__((thiscall)) const>'
  error: 'note' diagnostics seen but not expected:
    File clang/test/CXX/drs/dr5xx.cpp Line 516: template is declared here
    File clang/test/CXX/drs/dr5xx.cpp Line 521: in instantiation of function template specialization 'dr547::f<void () __attribute__((thiscall)) const, dr547::S>' requested here
    File clang/test/CXX/drs/dr5xx.cpp Line 516: template is declared here
    File clang/test/CXX/drs/dr5xx.cpp Line 516: template is declared here
  7 errors generated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216841 91177308-0d34-0410-b5e6-96231b3b80d8
Typo fix, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216876 91177308-0d34-0410-b5e6-96231b3b80d8
MS ABI: Reindent MicrosoftCXXABI::GetVirtualBaseClassOffset

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216887 91177308-0d34-0410-b5e6-96231b3b80d8
Frontend: Reindent Opts.CoverageFile

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216888 91177308-0d34-0410-b5e6-96231b3b80d8
Test cleanup: move CHECK close to code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216892 91177308-0d34-0410-b5e6-96231b3b80d8
Fix for LLVM API change to SpecialCaseList::create

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216926 91177308-0d34-0410-b5e6-96231b3b80d8
Fixing a typo in the documented __builtin_convertvector example.
  "vf[0]" ==> "vs[0]"



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216935 91177308-0d34-0410-b5e6-96231b3b80d8
Don't allow lambdas to capture invalid decls during template instantiations.

Fixes PR20731.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216936 91177308-0d34-0410-b5e6-96231b3b80d8
Don't indent inside a namespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216937 91177308-0d34-0410-b5e6-96231b3b80d8
Use /usr/bin/env python instead of /usr/bin/python.

On operating systems like the BSDs, it is typically the case that
/usr/bin/python does not exist. We should therefore use /usr/bin/env
instead. This is also done in various other scripts in tools/.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216945 91177308-0d34-0410-b5e6-96231b3b80d8
Tests for DR550-572.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216953 91177308-0d34-0410-b5e6-96231b3b80d8
Add --analyze to clang-cl

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216964 91177308-0d34-0410-b5e6-96231b3b80d8
Avoid test failure on platforms where size_t is long long (and thus can't be
directly written in strictly-conforming source code).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216969 91177308-0d34-0410-b5e6-96231b3b80d8
Fix up formatting.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216976 91177308-0d34-0410-b5e6-96231b3b80d8
Reinstate "Update for llvm API change.""

This reinstates r215113.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216986 91177308-0d34-0410-b5e6-96231b3b80d8
[modules] Use DeclContext::equals rather than == on DeclContext* when
determining whether a declaration is out of line, instead of assuming
that the semantic and lexical DeclContext will be the same declaration
whenever they're the same entity.

This fixes behavior of declarations within merged classes and enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@217008 91177308-0d34-0410-b5e6-96231b3b80d8
Allow a scoped lockable object to acquire/release multiple locks.

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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@217016 91177308-0d34-0410-b5e6-96231b3b80d8