Remove accidentally-committed debugging statement. Thanks to Faisal Vali for
spotting this!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201871 91177308-0d34-0410-b5e6-96231b3b80d8
[ObjC] Condense logic for diagnosing unimplemented setter/getters into help method.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201877 91177308-0d34-0410-b5e6-96231b3b80d8
[ObjC] Change default property synthesis logic to not completely skip DiagnoseUnimplementedProperties.

We're going to extend DiagnoseUnimplementedProperties shortly to look for more cases
that aren't handled by default property synthesis.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201878 91177308-0d34-0410-b5e6-96231b3b80d8
Remove 'followsSuper' argument from lookupPropertyAccessor.  Turns out I didn't need it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201879 91177308-0d34-0410-b5e6-96231b3b80d8
[ObjC] add support for properties in attribute 'objc_protocol_requires_explicit_implementation'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201880 91177308-0d34-0410-b5e6-96231b3b80d8
Adding role-based capability attributes that allow you to express role management: asserting a capability is held, acquiring a capability and releasing a capability. Also includes some skeleton documentation for these new attributes.

This functionality should be considered a WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201890 91177308-0d34-0410-b5e6-96231b3b80d8
Add test that -Wunreachable-code warnings are suppressed in headers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201893 91177308-0d34-0410-b5e6-96231b3b80d8
Default to ARMv5e for NetBSD/EABI, ARMv4 for APCS.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201894 91177308-0d34-0410-b5e6-96231b3b80d8
Add requirement that attribute 'objc_protocol_requires_explicit_implementation' can only be applied to protocol definitions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201899 91177308-0d34-0410-b5e6-96231b3b80d8
Reapply 201734 but with appropriate gcc compatibility
Because GCC incorrectly defines _mm_prefetch to take anything that casts 
to void*, people have started using that behavior.  The previous patch 
that made _mm_prefetch actually take a const char * broke compatibility 
with existing code.  This update to the patch leaves the macro that 
defines _mm_prefetch with the (void*) cast when _MSC_VER is not defined.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201901 91177308-0d34-0410-b5e6-96231b3b80d8
Add a VFSFromYAML class and a parser to create it

Provides a way to create a virtual file system using a YAML file that
supports mapping a file to a path on an 'external' file system. The
external file system will typically be the 'real' file system, but for
testing it can be changed.

A future patch will add a clang option to allow the user to specify such
a file and overlay it, but for now this code is only exercised by the
unit tests.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201905 91177308-0d34-0410-b5e6-96231b3b80d8
Complete Rewrite of CGRecordLayoutBuilder

CGRecordLayoutBuilder was aging, complex, multi-pass, and shows signs of 
existing before ASTRecordLayoutBuilder.  It redundantly performed many 
layout operations that are now performed by ASTRecordLayoutBuilder and 
asserted that the results were the same.  With the addition of support 
for the MS-ABI, such as placement of vbptrs, vtordisps, different 
bitfield layout and a variety of other features, CGRecordLayoutBuilder 
was growing unwieldy in its redundancy.

This patch re-architects CGRecordLayoutBuilder to not perform any 
redundant layout but rather, as directly as possible, lower an 
ASTRecordLayout to an llvm::type.  The new architecture is significantly 
smaller and simpler than the CGRecordLayoutBuilder and contains fewer 
ABI-specific code paths.  It's also one pass.

The architecture of the new system is described in the comments. For the 
most part, the new system simply takes all of the fields and bases from 
an ASTRecordLayout, sorts them, inserts padding and dumps a record. 
Bitfields, unions and primary virtual bases make this process a bit more 
complicated.  See the inline comments.

In addition, this patch updates a few lit tests due to the fact that the 
new system computes more accurate llvm types than CGRecordLayoutBuilder. 
Each change is commented individually in the review.

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



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201907 91177308-0d34-0410-b5e6-96231b3b80d8
[ObjC] Make attribute 'objc_protocol_requires_explicit_implementation' behave correctly with default property synthesis.

In particular, if we see an @property within the @interface of a class
conforming to a protocol with this attribute, we treat that as
if the implementation were available, per the rules of default
property synthesis.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201911 91177308-0d34-0410-b5e6-96231b3b80d8
Sema: Don't crash when trying to instantiate a local class with an invalid base specifier

It was previously thought that Sema::InstantiateClass could not fail
from within this point in instantiate.

However, it can happen if the class is invalid some way (i.e. invalid
base specifier).

This fixes PR18907.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201913 91177308-0d34-0410-b5e6-96231b3b80d8
Fix two warnings introduced r201907

Unused variable is removed.  Construction order is changed to match 
declaration order.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201914 91177308-0d34-0410-b5e6-96231b3b80d8
[MS-ABI] Fix MSRecordLayout to handel MultiDimensionalArrays
A recent change caused multi-dimensional arrays not to be handled 
correctly, this patch fixes that.  Also, it adds a lit test for 
multi-dimensional arrays.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201917 91177308-0d34-0410-b5e6-96231b3b80d8
IRGen: Fix build breakage

MSVC allows extra-qualification on member functions, it lets you repeat
the class name on the method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201918 91177308-0d34-0410-b5e6-96231b3b80d8
Silence a warning from r201905

Avoid a warning about reaching the end of a non-void function after a
covered switch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201919 91177308-0d34-0410-b5e6-96231b3b80d8
[_mm_prefetch] Returning previously deleted comment.
No functional change.  It's unclear if the word FIXME is relevant given 
that the macro behaves as intended.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201920 91177308-0d34-0410-b5e6-96231b3b80d8
Per feedback from Aaron Ballman, push cast-to-ObjCProtocolDecl inside handleObjCSuppresProtocolAttr().

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