Don't crash when emitting a glvalue conditional where one arm is a
throw-expression. Based on a patch by Marius Wachtler!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211388 91177308-0d34-0410-b5e6-96231b3b80d8
[C++1z] Implement N3981: Disable trigraphs by default in C++1z mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211392 91177308-0d34-0410-b5e6-96231b3b80d8
[C++1z] Implement N3928: message in static_assert is optional.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211394 91177308-0d34-0410-b5e6-96231b3b80d8
Fix typo in r211394.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211395 91177308-0d34-0410-b5e6-96231b3b80d8
[C++1z] Add C++1z to the C++ status page.


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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211397 91177308-0d34-0410-b5e6-96231b3b80d8
C++ status page: restore the convention of saying "SVN" until we reach a release.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211398 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGen: Refactor dynamic_cast and typeid

This refactors the emission of dynamic_cast and typeid expressions so
that ABI specific knowledge lives in appropriate places.  There are
quite a few benefits for having the two implementations share a common
core like sharing logic for optimization opportunities.

While we are at it, clean up the tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211402 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Remove some superfluous calls to Arg->claim()

Args.getLastArg() claims the Arg it returns, so calling claim on these
results is unnecessary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211403 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGen: typeid/dynamic_cast tests don't need asserts

These tests relied on information that was only available for clang
builds that included asserts.  Fix these tests to lift that restriction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211408 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGen: Fix test to work with assertions as well

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211410 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Record that we're in crashdump and push flags to ConstructJob

It's more flexible and arguably better layering to set flags to modify
compiling for diagnostics in the CC1 job themselves, rather than
tweaking the driver flags and letting them propagate.

There is one visible change this causes: crash report files will now
get preprocessed names (.i and friends).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211411 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: enhance MSC version compatibility

The version information for Visual Studio is spread over multiple variables.
The newer Windows SDK has started making use of some of the extended versioning
variables that were previously undefined.  Enhance our compatibility definitions
for these cases.

_MSC_VER is defined to be the Major * 100 + Minor.  _MSC_FULL_VER is defined to
be Major * 10000000 + Minor * 100000 + Build.  And _MSC_BUILD is the build
revision of the compiler.

Extend the -fmsc-version option in a compatible manner.  If the value is the
previous form of MMmm, then we assume that the build number is 0.  Otherwise, a
specific build number may be passed by using the form MMmmbbbbb.  Due to
bitwidth limitations of the option, it is currently not possible to define a
revision value.

The version information can be passed as either the decimal encoded value
(_MSC_FULL_VER or _MSC_VER) or as a dot-delimited value.

The change to the TextDiagnostic is to deal with the updated encoding of the
version information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211420 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: In crashdumps with -fmodule, dump the module dependencies

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211421 91177308-0d34-0410-b5e6-96231b3b80d8
Lex: Use the correct types for MS integer suffixes

We didn't properly implement support for the sized integer suffixes.
Suffixes like i16 were essentially ignored instead of mapping them to
the appropriately sized integer type.

This fixes PR20008.

Differential Revision: http://reviews.llvm.org/D4132

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211426 91177308-0d34-0410-b5e6-96231b3b80d8
Revert "Lex: Use the correct types for MS integer suffixes"

This reverts commit r211426.

This broke the arm bots. The crash can be reproduced on X86 by running.
./bin/clang -cc1  -fsyntax-only -verify -fms-extensions ~/llvm/clang/test/Lexer/ms-extensions.c -triple arm-linux

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211434 91177308-0d34-0410-b5e6-96231b3b80d8
[PCH] Remove the BackingIvarReferencedInAccessor field from DECL_OBJC_IVAR abbreviation record.

Patch by Yiding Jia!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211438 91177308-0d34-0410-b5e6-96231b3b80d8
[test] Add '-target' option to fix bot failure.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211439 91177308-0d34-0410-b5e6-96231b3b80d8
Lex: Use the correct types for MS integer suffixes

Something went wrong with r211426, it is an older version of this code
and should not have been committed.  It was reverted with r211434.

Original commit message:
We didn't properly implement support for the sized integer suffixes.
Suffixes like i16 were essentially ignored instead of mapping them to
the appropriately sized integer type.

This fixes PR20008.

Differential Revision: http://reviews.llvm.org/D4132

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211441 91177308-0d34-0410-b5e6-96231b3b80d8
The i128 suffix isn't always available.

This Lexer test unconditionally used the i128 integer literal suffix.
This suffix is only available to targets that have 128-bit arithmetic
support.

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