MS ABI: Stick internal vftables in a comdat if they have RTTI data

Previously, we would have a private backing variable and an internal
alias pointing at it.

However, -fdata-sections only fires if a global variable has non-private
linkage.  This means that an unreferenced vftable wouldn't get
discarded, bloating the object file.

Instead, stick the backing variable in a comdat even if the alias has
internal linkage.  This will allow the linker to drop the vftable if it
is unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212901 91177308-0d34-0410-b5e6-96231b3b80d8
PrintFunctionNames/CMakeLists.txt: Fix a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212905 91177308-0d34-0410-b5e6-96231b3b80d8
[CMake] Give explicit dependencies to a couple of modules, PrintFunctionNames and SampleAnalyzerPlugin, for Win32.DLL.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212906 91177308-0d34-0410-b5e6-96231b3b80d8
Add test cases for AArch64 hints codegen


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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212911 91177308-0d34-0410-b5e6-96231b3b80d8
Superficial fix for PR20218: binding a function lvalue to a const reference to
a function pointer is neither better nor worse than binding a function lvalue
to a function rvalue reference. Don't get confused and think that both bindings
are binding to a function lvalue (which would make the lvalue form win); the
const reference is binding to an rvalue.

The "real" bug in PR20218 is still present: we're getting the wrong answer from
template argument deduction, and that's what leads us to this weird overload
set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212916 91177308-0d34-0410-b5e6-96231b3b80d8
[CMake] Reorder libdeps by alphabetical order.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212919 91177308-0d34-0410-b5e6-96231b3b80d8
[CMake] Update libdeps.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212920 91177308-0d34-0410-b5e6-96231b3b80d8
[x32] Add __ILP32__ macro for ILP32 platforms

Summary:
Add __ILP32__ and _ILP32 macro for corresponding platforms.
Cover x86_64-*-*-gnux32 with test.

Test Plan: test added

Reviewers: chandlerc, atanasyan

Subscribers: cfe-commits, dschuff, zinovy.nis

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212931 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Improve cast detection (fix false positive).

Before:
  fn(a)(b)+1;

After:
  fn(a)(b) + 1;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212935 91177308-0d34-0410-b5e6-96231b3b80d8
[ASTMatchers] Make hasOverloadedOperatorName also match freestanding overloads.

Freestanding overloads are represented as FunctionDecls in the AST, make
the matcher also match them.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212940 91177308-0d34-0410-b5e6-96231b3b80d8
ARM: Implement __builtin_arm_nop intrinsic

This patch implements __builtin_arm_nop intrinsic for AArch32 and AArch64,
which generates hint 0x0, the alias of NOP instruction.

This intrinsic is necessary to implement ACLE __nop intrinsic.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212947 91177308-0d34-0410-b5e6-96231b3b80d8
ARM: Add NOP intrinsic mapping in arm_acle.h



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212950 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGen: Let arrays be inputs to inline asm

An array showing up in an inline assembly input is accepted in ICC and
GCC 4.8

This fixes PR20201.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212954 91177308-0d34-0410-b5e6-96231b3b80d8
Improve error recovery around colon.

Recognize additional cases, when '::' is mistyped as ':'.
This is a fix to RP18587 - colons have too much protection in member-declarations.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212957 91177308-0d34-0410-b5e6-96231b3b80d8
Change the diagnostic group for unsupported gcc optimizations added r212805

Use -Winvalid-command-line-argument here to align with existing gcc opt
diagnostics. Meanwhile -Wunused-command-line-argument is for flags that we
support but were, say, fed into the wrong invocation.

Also tweak wording to make sense with -Werror.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212964 91177308-0d34-0410-b5e6-96231b3b80d8
Revert "Improve error recovery around colon."

This reverts commit r212957.  It broke the self-host on code like this
from LLVM's option library:
  for (auto Arg: filtered(Id0, Id1, Id2))

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212965 91177308-0d34-0410-b5e6-96231b3b80d8
Document the warning triggered by the unsupported gcc optimization flags (r212805)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212968 91177308-0d34-0410-b5e6-96231b3b80d8
Document the forward of the -u option (r211756)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212969 91177308-0d34-0410-b5e6-96231b3b80d8
Avoid non-attributive uses of 'unsupported' in diagnostics

We don't have a style guide for diagnostic messages, but convention strongly
favours the forms:

  'attribute is not supported', 'unsupported attribute'

We generally avoid:

  'attribute is unsupported', 'non-supported attribute'

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