Driver: implement addClangWarningOptions

This function allows certain platforms to enable or disable diagnostics
by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205095 91177308-0d34-0410-b5e6-96231b3b80d8
ObjC: allow targets to decide when to use stret for blocks.

This was originally part of the ARM64 patch, but seems semantically
separate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205097 91177308-0d34-0410-b5e6-96231b3b80d8
ARM64: parametrise IVar offset type (long on ARM64, int elsewhere).

This is part of the ARM64 patch, but can only be tested properly when
the full codegen gets committed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205098 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGen: Don't crash when replacing functions

The peculiarities of C99 create scenario where an LLVM IR function
declaration may need to be replaced with a definition baring a different
type because the prototype and definition are not required to agree.

However, we were not properly deferring this when it occurred.

This fixes PR19280.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205099 91177308-0d34-0410-b5e6-96231b3b80d8
ARM64: initial clang support commit.

This adds Clang support for the ARM64 backend. There are definitely
still some rough edges, so please bring up any issues you see with
this patch.

As with the LLVM commit though, we think it'll be more useful for
merging with AArch64 from within the tree.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205100 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGen: Allow different RTTI emission strategies

Some ABIs and C++ libraries may make different trade-offs in how RTTI
is emitted (currently with respect to visibility and so on). This
implements one scheme, as used by ARM64.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205101 91177308-0d34-0410-b5e6-96231b3b80d8
Remove stray references to aarch64_simd.h

They were causing the autotools builds to fail.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205103 91177308-0d34-0410-b5e6-96231b3b80d8
ARM64: Fix GCC warning in CGBuiltin.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205104 91177308-0d34-0410-b5e6-96231b3b80d8
Avoid a local Twine variable.

Harmless in this case but potentially dangerous if it gets extended some day.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205107 91177308-0d34-0410-b5e6-96231b3b80d8
Install: add arm_neon.h header back

I'd gone too far pruning aarch64_simd.h this time and took out one
instance of arm_neon.h. This should restore us to the status quo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205111 91177308-0d34-0410-b5e6-96231b3b80d8
Tests for dr475-dr500.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205127 91177308-0d34-0410-b5e6-96231b3b80d8
MS ABI: Simplify MangleByte

The delta between '\xe1' and '\xc1' is equivalent to the one between 'a'
and 'A'.  This allows us to reuse the computation between '\xe1' and
'\xfa' for the '\xc1' to '\xda' case.

No functionality change.

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

Summary:
Declaring a function as inline after it has been defined is in violation
of [dcl.fct.spec]p4.  The program would get a strong definition instead
of getting a function with linkonce_odr linkage.

Reviewers: rsmith

CC: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205129 91177308-0d34-0410-b5e6-96231b3b80d8
[Allocator] Remove forward declarations of BumpPtrAllocator. These
aren't necessary and will break when it changes to be a typedef of
a class template.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205142 91177308-0d34-0410-b5e6-96231b3b80d8
[PowerPC] Make -pg generate calls to _mcount not mcount

At least on REL6 (Linux/glibc 2.12), the proper symbol for generating gprof
data is _mcount, not mcount. Prior to this change, compiling with -pg would
generate linking errors (because of unresolved references to mcount), after
this change -pg seems at least minimally functional.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205144 91177308-0d34-0410-b5e6-96231b3b80d8
[ARM64] Use %clang_cc1 consistently in the new arm64 codegen tests.
Really, all tests outside of the Driver tree should use %clang_cc1, but
these are new and easy to fix, and many of them use buitlin headers
which don't work as well without using %clang_cc1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205147 91177308-0d34-0410-b5e6-96231b3b80d8
Force a header file input to the headermap test to have different
contents than the header file by the same name under the system header
search root. Surprisingly, this is required to get the test to pass on
some systems.

So, it turns out that there exist filesystems in the world which unique
the inode of all files based on their contents. This results in two
files with the same contents at different paths suddenly having the same
inode. This doesn't actually cause any problems in practice as the
contents are the same, and the path used to access the files are the
same. However, it can cause tests like this one to be more brittle
because the file manager ends up de-duplicating the file entries by
inode. We don't have any other really easy ways to observe the behavior
shift because the whole point is that the #include written in the source
code doesn't contain the information -- instead it is contained in the
header map.

If folks have other solutions they would prefer, I'm more than happy to
work on them, but this seems a reasonable way to ensure that the test in
question exercises the code it wants to exercise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205149 91177308-0d34-0410-b5e6-96231b3b80d8
clang/test/Preprocessor/headermap-rel2.c: Recognize dos path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205152 91177308-0d34-0410-b5e6-96231b3b80d8
MS ABI: Simplify mangleTemplateArgs

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205154 91177308-0d34-0410-b5e6-96231b3b80d8
MS ABI: Correct typo in mangleStringLiteral

No functionality change.

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