[-cxx-abi microsoft] Mangle local TagDecls appropriately

Summary:
When selecting a mangling for an anonymous tag type:
- We should first try it's typedef'd name.
- If that doesn't work, we should mangle in the name of the declarator
  that specified it as a declaration specifier.
- If that doesn't work, fall back to a static mangling of
  <unnamed-type>.

This should make our anonymous type mangling compatible.

This partially fixes PR16994; we would need to have an implementation of
scope numbering to get it right (a separate issue).

Reviewers: rnk, rsmith, rjmccall, cdavis5x

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1540

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190892 91177308-0d34-0410-b5e6-96231b3b80d8
ObjectiveC migrator: Don't infer property from
'deprected' setters either. // rdar://14989365


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190894 91177308-0d34-0410-b5e6-96231b3b80d8
Revert "[-cxx-abi microsoft] Mangle local TagDecls appropriately"

This reverts commit r190892.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190895 91177308-0d34-0410-b5e6-96231b3b80d8
clang-cl: ignore ths /GS- flag

The /GS- flag is used to turn off run-time buffer security checks (/GS).
Since no such checks are enabled in the first place, I think we should just
ignore this flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190900 91177308-0d34-0410-b5e6-96231b3b80d8
ObjectiveC migrator. infer NS_OPTIONS correctly in the
presense of parenthesized enumerator initializers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190901 91177308-0d34-0410-b5e6-96231b3b80d8
Move using directive from Job.h to Job.cpp

I don't think it belongs in the header, but seems handy in the .cpp file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190902 91177308-0d34-0410-b5e6-96231b3b80d8
Revert "Revert "[-cxx-abi microsoft] Mangle local TagDecls appropriately""

This reverts commit r190895 which reverted r190892.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190904 91177308-0d34-0410-b5e6-96231b3b80d8
Revert "Move using directive from Job.h to Job.cpp" (r190902)

Seems like it was intentional to export ArgStringList as
driver::ArgStringList, and e.g. examples/clang-interpreter/main.cpp
uses it this way.

However, exporting it with a typedef seems like a more common way to do it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190906 91177308-0d34-0410-b5e6-96231b3b80d8
Revert r190902 and r190906

The first one broke the build, and the latter one made it worse.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190907 91177308-0d34-0410-b5e6-96231b3b80d8
Claim compatibility with VS 2012 by default

This will define _MSC_VER to 1700 by default and avoid linker errors
from /failifmismatch linker directives in the C++ standard headers.

Most people trying out the Visual Studio integration are using 2012,
since that's the only version that clang-format works with.  This way
they don't have to pass funky -Xclang -fmsc-version=1700 flags just to
link against the standard C++ runtime.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190908 91177308-0d34-0410-b5e6-96231b3b80d8
Add comment about exporting clang::driver::ArgStringList,
as suggested by Jordan on IRC. Also, use the unqualified name
in Job.cpp.

And while we're here, refer to StringRef with the unqualified
name, because we have a using directive for that too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190909 91177308-0d34-0410-b5e6-96231b3b80d8
If a variable template specialization with an incomplete array type is
referenced, try to instantiate its definition in order to complete the type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190910 91177308-0d34-0410-b5e6-96231b3b80d8
-ast-dump support for variable templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190911 91177308-0d34-0410-b5e6-96231b3b80d8
Fix ObjC @encode for C++ classes w/virtual bases.

PR17142.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190912 91177308-0d34-0410-b5e6-96231b3b80d8
Fix accepts-invalid if a variable template explicit instantiation is missing an
argument list, but could be instantiated with argument list of <>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190913 91177308-0d34-0410-b5e6-96231b3b80d8
Remove unnecessary comment regarding AsTypeExpr base class

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190914 91177308-0d34-0410-b5e6-96231b3b80d8
Add the intrinsic __builtin_convertvector

LLVM supports applying conversion instructions to vectors of the same number of
elements (fptrunc, fptosi, etc.) but there had been no way for a Clang user to
cause such instructions to be generated when using builtin vector types.

C-style casting on vectors is already defined in terms of bitcasts, and so
cannot be used for these conversions as well (without leading to a very
confusing set of semantics). As a result, this adds a __builtin_convertvector
intrinsic (patterned after the OpenCL __builtin_astype intrinsic). This is
intended to aid the creation of vector intrinsic headers that create generic IR
instead of target-dependent intrinsics (in other words, this is a generic
_mm_cvtepi32_ps). As noted in the documentation, the action of
__builtin_convertvector is defined in terms of the action of a C-style cast on
each vector element.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190915 91177308-0d34-0410-b5e6-96231b3b80d8
Add new libm LIBBUILTIN definitions, synchronizing with __builtin_*

For all libm __builtin_* functions that are defined, this adds the
corresponding LIBBUILTIN definitions (tagged, as necessary, with "e" instead of
"c" when the function may set errno).

Note that this changes the current definitions for lrint and fma
(unfortunately). The Linux man page documents that these don't set errno, but
the POSIX standard says that they should.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190922 91177308-0d34-0410-b5e6-96231b3b80d8
Add support for poly16 vtst and vtstq

vtst and vtstq currently support poly8 types, but they should also work on
poly16.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190925 91177308-0d34-0410-b5e6-96231b3b80d8
Recommited:
Fix for PR16752. Second commit.

PR16752: 'mode' attribute for unusual targets doesn't work properly
Description:
Troubles could be happened due to some assumptions in handleModeAttr function (see SemaDeclAttr.cpp).
For example, it assumes that 32 bit integer is 'int', while it could be 16 bit only.
Instead of asking target: 'which type do you want to use for int32_t ?' it just hardcodes general opinion. That doesn't looks pretty correct.
Please consider the next solution:
1. In Basic/TargetInfo add getIntTypeByWidth and getRealTypeByWidth methods. Methods asks target for proper type for given bit width.
2. Fix handleModeAttr according to new methods in TargetInfo.

Fixes:
1st Commit (Done): Add new methods for TargetInfo:
     getRealTypeByWidth and getIntTypeByWidth
  for ASTContext names are almost same(invokes new methods from TargetInfo):
     getIntTypeForBitwidth and getRealTypeForBitwidth

2nd Commit (Current): Fix SemaDeclAttr, handleModeAttr function.

Also test/Sema/attr-mode.c was fixed. 'XC' mode test was disabled for PPC64 machines.



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