[analyzer] Fix for PR18394.

Additional conditions that prevent useful nodes before call from being reclaimed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202553 91177308-0d34-0410-b5e6-96231b3b80d8
Fix leak in MicrosoftVTableContext

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202558 91177308-0d34-0410-b5e6-96231b3b80d8
Add Clang docs about MSVC compatibility

This documents some of the status of supported functionality in MSVC
quirks mode.  Some of this should be in
http://clang.llvm.org/compatibility.html instead when things have
stabilized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202559 91177308-0d34-0410-b5e6-96231b3b80d8
If a module A exports a macro M, and a module B imports that macro and #undef's
it, importers of B should not see the macro. This is complicated by the fact
that A's macro could also be visible through a different path. The rules (as
hashed out on cfe-commits) are included as a documentation update in this
change.

With this, the number of regressions in libc++'s testsuite when modules are
enabled drops from 47 to 7. Those remaining 7 are also macro-related, and are
due to remaining bugs in this change (in particular, the handling of submodules
is imperfect).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202560 91177308-0d34-0410-b5e6-96231b3b80d8
Fixed an assertion failure related to bitfield lowering.

When lowering a bitfield, CGRecordLowering would assign the wrong 
storage type to a bitfield in some cases and trigger an assertion.  In 
these cases the layout was still correct, just the bitfield info was 
wrong.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202562 91177308-0d34-0410-b5e6-96231b3b80d8
[C++11] Remove use of LLVM_HAS_RVALUE_REFERENCES from Clang. This macro
is now always 1, as we're requiring C++11 now!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202584 91177308-0d34-0410-b5e6-96231b3b80d8
ASTReader.h: Prune \param ImportLoc according to r202560. [-Wdocumentation]

FIXME: Give appropriate \param to llvm::ArrayRef<SubmoduleID> Overrides.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202589 91177308-0d34-0410-b5e6-96231b3b80d8
[C++11] Replace verbose functors with succinct lambdas

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202590 91177308-0d34-0410-b5e6-96231b3b80d8
Move private classes into anonymous namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202595 91177308-0d34-0410-b5e6-96231b3b80d8
[C++11] Drop legacy conditionals for TokenKind's underlying type

This relies on forward declaration of enums.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202605 91177308-0d34-0410-b5e6-96231b3b80d8
[C++11] Expand and eliminate the LLVM_ENUM_INT_TYPE() macro

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202606 91177308-0d34-0410-b5e6-96231b3b80d8
[C++11] Switch from the llvm_move macro to directly calling std::move.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202611 91177308-0d34-0410-b5e6-96231b3b80d8
Add [extern_c] attribute for modules, allowing a C module to be imported within an extern "C" block in C++ code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202615 91177308-0d34-0410-b5e6-96231b3b80d8
Switch all uses of LLVM_OVERRIDE to just use 'override' directly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202625 91177308-0d34-0410-b5e6-96231b3b80d8
[C++11] Remove an LLVM_OVERRIDE use that I missed in my previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202630 91177308-0d34-0410-b5e6-96231b3b80d8
[C++11] Replace llvm::next and llvm::prior with std::next and std::prev.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202635 91177308-0d34-0410-b5e6-96231b3b80d8
[C++11] Switch the clang-format LLVM style to use C++11 style braced
init list formatting. This suggestion has now gone into the LLVM coding
standards, and is particularly relevant now that we're using C++11.

Updated a really ridiculous number of tests to reflect this change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202637 91177308-0d34-0410-b5e6-96231b3b80d8
[C++11] Replace llvm::tie with std::tie.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202639 91177308-0d34-0410-b5e6-96231b3b80d8
[C++11] Switch from LLVM_STATIC_ASSERT to static_assert now that we
require host toolchains which support this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202640 91177308-0d34-0410-b5e6-96231b3b80d8
[C++11] Work around an incompatibility between llvm::tie and std::tie.

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