ARM: Prefetch intrinsics

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215569 91177308-0d34-0410-b5e6-96231b3b80d8
Simplify a few loops over CallArgList/FunctionArgList. NFC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215571 91177308-0d34-0410-b5e6-96231b3b80d8
Objective-C. This patch is to resolve the method used in method
expression to the best method found in global method pools. 
This is wip.  // rdar://16808765


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215577 91177308-0d34-0410-b5e6-96231b3b80d8
[modules] Fix a rejects-valid resulting from emitting an inline function
recursively within the emission of another inline function. This ultimately
led to us emitting the same inline function definition twice, which we then
rejected because we believed we had a mangled name conflict.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215579 91177308-0d34-0410-b5e6-96231b3b80d8
Objective-C. Minor refactoring of my last patch.
// rdar://16808765


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215581 91177308-0d34-0410-b5e6-96231b3b80d8
test/CodeGen: Don't rely on a value's number in check lines

The tests in r215568 hard code a value as %0 in their checks. This
isn't correct in asserts builds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215585 91177308-0d34-0410-b5e6-96231b3b80d8
clang/test/Index/index-module.m: Tweak expressions to meet dos path on win32.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215592 91177308-0d34-0410-b5e6-96231b3b80d8
ARM: Add mappings for ACLE prefetch intrinsics

Implement __pld, __pldx, __pli and __plix builtin intrinsics as specified in
ARM ACLE 2.0.

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

Sorry about the noise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215601 91177308-0d34-0410-b5e6-96231b3b80d8
Objective-C. Handle case of multiple class methods
found in global pool as well. rdar://16808765


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215603 91177308-0d34-0410-b5e6-96231b3b80d8
Simplify some CodeGenTypes::arrangeXXX functions. No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215606 91177308-0d34-0410-b5e6-96231b3b80d8
clang/test/Modules/cxx-irgen.cpp: Let it tolerant of x86_thiscallcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215607 91177308-0d34-0410-b5e6-96231b3b80d8
Sema: Permit nullptr template args in MSVC compat mode

This fixes a regression I caused back in r211766.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215609 91177308-0d34-0410-b5e6-96231b3b80d8
[modules] When we merge together multiple class template specialization
definitions (because some other declaration declares a special member that
isn't present in the canonical definition), we need to search *all* of them; we
can't just stop when we find the requested name in any of the definitions,
because that can fail to find things (and in particular, it can fail to find
the member of the canonical declaration and return a bogus ODR failure).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215612 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGen: When bitfields fall on natural boundaries, split them up

Currently when laying out bitfields that don't need any padding, we
represent them as a wide enough int to contain all of the bits. This
can be hard on the backend since we'll do things like represent stores
to a few bits as loading an i144, masking it with a large constant,
and storing it back.

This turns up in less pathological cases where we load and mask 64 bit
word on a 32 bit platform when we actually only need to access 32 bits.
This leads to bad code being generated in most of our 32 bit backends.

In practice, there are often natural breaks in bitfields, and it's a
fairly simple and effective heuristic to split these fields into legal
integer sized chunks when it will be equivalent (ie, it won't force us
to add any extra padding).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215614 91177308-0d34-0410-b5e6-96231b3b80d8
[modules] Don't assert if the same imported class template specialization
declaration has its definition instantiated in two sibling modules and they use
a partial specialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215616 91177308-0d34-0410-b5e6-96231b3b80d8
[modules] Factor .td-generated diagnostics stuff out into its own module; this
avoids users of AllDiagnostics.h from needing to pregenerate *all* generated
headers. Hopefully this will make my modules buildbot happier...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215617 91177308-0d34-0410-b5e6-96231b3b80d8
Parse: Don't attempt to act on #pragma init_seg when not targeting MSVC

It doesn't really make sense to try and do stuff with #pragma init_seg
when targeting non-Microsoft platforms; notions like library vs user
initializers don't exist for other targets.

This fixes PR20639.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215618 91177308-0d34-0410-b5e6-96231b3b80d8
Fix a crash when compiling blocks in OpenCL with multiple
address spaces.



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