[cfe-commits] r77972 - /cfe/trunk/lib/CodeGen/CGObjCMac.cpp

Daniel Dunbar daniel at zuster.org
Mon Aug 3 10:06:49 PDT 2009


Author: ddunbar
Date: Mon Aug  3 12:06:42 2009
New Revision: 77972

URL: http://llvm.org/viewvc/llvm-project?rev=77972&view=rev
Log:
Formatting fixes (trailing whitespace, 80-cols, indentation).

Modified:
    cfe/trunk/lib/CodeGen/CGObjCMac.cpp

Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=77972&r1=77971&r2=77972&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Mon Aug  3 12:06:42 2009
@@ -36,7 +36,7 @@
 // don't belong in CGObjCRuntime either so we will live with it for
 // now.
 
-/// FindIvarInterface - Find the interface containing the ivar. 
+/// FindIvarInterface - Find the interface containing the ivar.
 ///
 /// FIXME: We shouldn't need to do this, the containing context should
 /// be fixed.
@@ -55,11 +55,11 @@
       return OID;
     ++Index;
   }
-  
+
   // Otherwise check in the super class.
   if (const ObjCInterfaceDecl *Super = OID->getSuperClass())
     return FindIvarInterface(Context, Super, OIVD, Index);
-    
+
   return 0;
 }
 
@@ -68,13 +68,13 @@
                                      const ObjCImplementationDecl *ID,
                                      const ObjCIvarDecl *Ivar) {
   unsigned Index;
-  const ObjCInterfaceDecl *Container = 
+  const ObjCInterfaceDecl *Container =
     FindIvarInterface(CGM.getContext(), OID, Ivar, Index);
   assert(Container && "Unable to find ivar container");
 
   // If we know have an implementation (and the ivar is in it) then
   // look up in the implementation layout.
-  const ASTRecordLayout *RL;  
+  const ASTRecordLayout *RL;
   if (ID && ID->getClassInterface() == Container)
     RL = &CGM.getContext().getASTObjCImplementationLayout(ID);
   else
@@ -107,7 +107,7 @@
   llvm::Value *V = CGF.Builder.CreateBitCast(BaseValue, I8Ptr);
   V = CGF.Builder.CreateGEP(V, Offset, "add.ptr");
   V = CGF.Builder.CreateBitCast(V, llvm::PointerType::getUnqual(LTy));
-  
+
   if (Ivar->isBitField()) {
     // We need to compute the bit offset for the bit-field, the offset
     // is to the byte. Note, there is a subtle invariant here: we can
@@ -133,15 +133,15 @@
 
 namespace {
 
-  typedef std::vector<llvm::Constant*> ConstantVector;
+typedef std::vector<llvm::Constant*> ConstantVector;
 
-  // FIXME: We should find a nicer way to make the labels for metadata, string
-  // concatenation is lame.
+// FIXME: We should find a nicer way to make the labels for metadata, string
+// concatenation is lame.
 
 class ObjCCommonTypesHelper {
 protected:
   llvm::LLVMContext &VMContext;
-  
+
 private:
   llvm::Constant *getMessageSendFn() const {
     // id objc_msgSend (id, SEL, ...)
@@ -149,23 +149,23 @@
     Params.push_back(ObjectPtrTy);
     Params.push_back(SelectorPtrTy);
     return
-    CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
-                                                      Params, true),
-                              "objc_msgSend");
+      CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
+                                                        Params, true),
+                                "objc_msgSend");
   }
-  
+
   llvm::Constant *getMessageSendStretFn() const {
     // id objc_msgSend_stret (id, SEL, ...)
     std::vector<const llvm::Type*> Params;
     Params.push_back(ObjectPtrTy);
     Params.push_back(SelectorPtrTy);
     return
-    CGM.CreateRuntimeFunction(llvm::FunctionType::get(llvm::Type::VoidTy,
-                                                      Params, true),
-                              "objc_msgSend_stret");
-    
+      CGM.CreateRuntimeFunction(llvm::FunctionType::get(llvm::Type::VoidTy,
+                                                        Params, true),
+                                "objc_msgSend_stret");
+
   }
-  
+
   llvm::Constant *getMessageSendFpretFn() const {
     // FIXME: This should be long double on x86_64?
     // [double | long double] objc_msgSend_fpret(id self, SEL op, ...)
@@ -173,13 +173,13 @@
     Params.push_back(ObjectPtrTy);
     Params.push_back(SelectorPtrTy);
     return
-    CGM.CreateRuntimeFunction(llvm::FunctionType::get(llvm::Type::DoubleTy,
-                                                      Params,
-                                                      true),
-                              "objc_msgSend_fpret");
-    
+      CGM.CreateRuntimeFunction(llvm::FunctionType::get(llvm::Type::DoubleTy,
+                                                        Params,
+                                                        true),
+                                "objc_msgSend_fpret");
+
   }
-  
+
   llvm::Constant *getMessageSendSuperFn() const {
     // id objc_msgSendSuper(struct objc_super *super, SEL op, ...)
     const char *SuperName = "objc_msgSendSuper";
@@ -190,7 +190,7 @@
                                                              Params, true),
                                      SuperName);
   }
-  
+
   llvm::Constant *getMessageSendSuperFn2() const {
     // id objc_msgSendSuper2(struct objc_super *super, SEL op, ...)
     const char *SuperName = "objc_msgSendSuper2";
@@ -201,7 +201,7 @@
                                                              Params, true),
                                      SuperName);
   }
-  
+
   llvm::Constant *getMessageSendSuperStretFn() const {
     // void objc_msgSendSuper_stret(void * stretAddr, struct objc_super *super,
     //                              SEL op, ...)
@@ -210,11 +210,11 @@
     Params.push_back(SuperPtrTy);
     Params.push_back(SelectorPtrTy);
     return CGM.CreateRuntimeFunction(
-                                  llvm::FunctionType::get(llvm::Type::VoidTy,
-                                                             Params, true),
-                                     "objc_msgSendSuper_stret");
+      llvm::FunctionType::get(llvm::Type::VoidTy,
+                              Params, true),
+      "objc_msgSendSuper_stret");
   }
-  
+
   llvm::Constant *getMessageSendSuperStretFn2() const {
     // void objc_msgSendSuper2_stret(void * stretAddr, struct objc_super *super,
     //                               SEL op, ...)
@@ -223,68 +223,68 @@
     Params.push_back(SuperPtrTy);
     Params.push_back(SelectorPtrTy);
     return CGM.CreateRuntimeFunction(
-                                   llvm::FunctionType::get(llvm::Type::VoidTy,
-                                                             Params, true),
-                                     "objc_msgSendSuper2_stret");
+      llvm::FunctionType::get(llvm::Type::VoidTy,
+                              Params, true),
+      "objc_msgSendSuper2_stret");
   }
-  
+
   llvm::Constant *getMessageSendSuperFpretFn() const {
     // There is no objc_msgSendSuper_fpret? How can that work?
     return getMessageSendSuperFn();
   }
-  
+
   llvm::Constant *getMessageSendSuperFpretFn2() const {
     // There is no objc_msgSendSuper_fpret? How can that work?
     return getMessageSendSuperFn2();
   }
-  
+
 protected:
   CodeGen::CodeGenModule &CGM;
-  
+
 public:
   const llvm::Type *ShortTy, *IntTy, *LongTy, *LongLongTy;
   const llvm::Type *Int8PtrTy;
-  
+
   /// ObjectPtrTy - LLVM type for object handles (typeof(id))
   const llvm::Type *ObjectPtrTy;
-  
+
   /// PtrObjectPtrTy - LLVM type for id *
   const llvm::Type *PtrObjectPtrTy;
-  
+
   /// SelectorPtrTy - LLVM type for selector handles (typeof(SEL))
   const llvm::Type *SelectorPtrTy;
   /// ProtocolPtrTy - LLVM type for external protocol handles
   /// (typeof(Protocol))
   const llvm::Type *ExternalProtocolPtrTy;
-  
+
   // SuperCTy - clang type for struct objc_super.
   QualType SuperCTy;
   // SuperPtrCTy - clang type for struct objc_super *.
   QualType SuperPtrCTy;
-  
+
   /// SuperTy - LLVM type for struct objc_super.
   const llvm::StructType *SuperTy;
   /// SuperPtrTy - LLVM type for struct objc_super *.
   const llvm::Type *SuperPtrTy;
-  
+
   /// PropertyTy - LLVM type for struct objc_property (struct _prop_t
   /// in GCC parlance).
   const llvm::StructType *PropertyTy;
-  
+
   /// PropertyListTy - LLVM type for struct objc_property_list
   /// (_prop_list_t in GCC parlance).
   const llvm::StructType *PropertyListTy;
   /// PropertyListPtrTy - LLVM type for struct objc_property_list*.
   const llvm::Type *PropertyListPtrTy;
-  
+
   // MethodTy - LLVM type for struct objc_method.
   const llvm::StructType *MethodTy;
-  
+
   /// CacheTy - LLVM type for struct objc_cache.
   const llvm::Type *CacheTy;
   /// CachePtrTy - LLVM type for struct objc_cache *.
   const llvm::Type *CachePtrTy;
-  
+
   llvm::Constant *getGetPropertyFn() {
     CodeGen::CodeGenTypes &Types = CGM.getTypes();
     ASTContext &Ctx = CGM.getContext();
@@ -300,7 +300,7 @@
       Types.GetFunctionType(Types.getFunctionInfo(IdType, Params), false);
     return CGM.CreateRuntimeFunction(FTy, "objc_getProperty");
   }
-  
+
   llvm::Constant *getSetPropertyFn() {
     CodeGen::CodeGenTypes &Types = CGM.getTypes();
     ASTContext &Ctx = CGM.getContext();
@@ -318,7 +318,7 @@
       Types.GetFunctionType(Types.getFunctionInfo(Ctx.VoidTy, Params), false);
     return CGM.CreateRuntimeFunction(FTy, "objc_setProperty");
   }
-  
+
   llvm::Constant *getEnumerationMutationFn() {
     CodeGen::CodeGenTypes &Types = CGM.getTypes();
     ASTContext &Ctx = CGM.getContext();
@@ -329,17 +329,17 @@
       Types.GetFunctionType(Types.getFunctionInfo(Ctx.VoidTy, Params), false);
     return CGM.CreateRuntimeFunction(FTy, "objc_enumerationMutation");
   }
-  
+
   /// GcReadWeakFn -- LLVM objc_read_weak (id *src) function.
   llvm::Constant *getGcReadWeakFn() {
     // id objc_read_weak (id *)
     std::vector<const llvm::Type*> Args;
     Args.push_back(ObjectPtrTy->getPointerTo());
-    llvm::FunctionType *FTy = 
+    llvm::FunctionType *FTy =
       llvm::FunctionType::get(ObjectPtrTy, Args, false);
     return CGM.CreateRuntimeFunction(FTy, "objc_read_weak");
-  }    
-  
+  }
+
   /// GcAssignWeakFn -- LLVM objc_assign_weak function.
   llvm::Constant *getGcAssignWeakFn() {
     // id objc_assign_weak (id, id *)
@@ -349,7 +349,7 @@
       llvm::FunctionType::get(ObjectPtrTy, Args, false);
     return CGM.CreateRuntimeFunction(FTy, "objc_assign_weak");
   }
-  
+
   /// GcAssignGlobalFn -- LLVM objc_assign_global function.
   llvm::Constant *getGcAssignGlobalFn() {
     // id objc_assign_global(id, id *)
@@ -359,7 +359,7 @@
       llvm::FunctionType::get(ObjectPtrTy, Args, false);
     return CGM.CreateRuntimeFunction(FTy, "objc_assign_global");
   }
-  
+
   /// GcAssignIvarFn -- LLVM objc_assign_ivar function.
   llvm::Constant *getGcAssignIvarFn() {
     // id objc_assign_ivar(id, id *)
@@ -369,7 +369,7 @@
       llvm::FunctionType::get(ObjectPtrTy, Args, false);
     return CGM.CreateRuntimeFunction(FTy, "objc_assign_ivar");
   }
-  
+
   /// GcMemmoveCollectableFn -- LLVM objc_memmove_collectable function.
   llvm::Constant *GcMemmoveCollectableFn() {
     // void *objc_memmove_collectable(void *dst, const void *src, size_t size)
@@ -379,7 +379,7 @@
     llvm::FunctionType *FTy = llvm::FunctionType::get(Int8PtrTy, Args, false);
     return CGM.CreateRuntimeFunction(FTy, "objc_memmove_collectable");
   }
-  
+
   /// GcAssignStrongCastFn -- LLVM objc_assign_strongCast function.
   llvm::Constant *getGcAssignStrongCastFn() {
     // id objc_assign_global(id, id *)
@@ -398,7 +398,7 @@
       llvm::FunctionType::get(llvm::Type::VoidTy, Args, false);
     return CGM.CreateRuntimeFunction(FTy, "objc_exception_throw");
   }
-  
+
   /// SyncEnterFn - LLVM object_sync_enter function.
   llvm::Constant *getSyncEnterFn() {
     // void objc_sync_enter (id)
@@ -407,7 +407,7 @@
       llvm::FunctionType::get(llvm::Type::VoidTy, Args, false);
     return CGM.CreateRuntimeFunction(FTy, "objc_sync_enter");
   }
-  
+
   /// SyncExitFn - LLVM object_sync_exit function.
   llvm::Constant *getSyncExitFn() {
     // void objc_sync_exit (id)
@@ -416,31 +416,31 @@
       llvm::FunctionType::get(llvm::Type::VoidTy, Args, false);
     return CGM.CreateRuntimeFunction(FTy, "objc_sync_exit");
   }
-  
+
   llvm::Constant *getSendFn(bool IsSuper) const {
     return IsSuper ? getMessageSendSuperFn() : getMessageSendFn();
   }
-  
+
   llvm::Constant *getSendFn2(bool IsSuper) const {
     return IsSuper ? getMessageSendSuperFn2() : getMessageSendFn();
   }
-  
+
   llvm::Constant *getSendStretFn(bool IsSuper) const {
     return IsSuper ? getMessageSendSuperStretFn() : getMessageSendStretFn();
   }
-  
+
   llvm::Constant *getSendStretFn2(bool IsSuper) const {
     return IsSuper ? getMessageSendSuperStretFn2() : getMessageSendStretFn();
   }
-  
+
   llvm::Constant *getSendFpretFn(bool IsSuper) const {
     return IsSuper ? getMessageSendSuperFpretFn() : getMessageSendFpretFn();
   }
-  
+
   llvm::Constant *getSendFpretFn2(bool IsSuper) const {
     return IsSuper ? getMessageSendSuperFpretFn2() : getMessageSendFpretFn();
   }
-  
+
   ObjCCommonTypesHelper(CodeGen::CodeGenModule &cgm);
   ~ObjCCommonTypesHelper(){}
 };
@@ -499,18 +499,18 @@
   const llvm::Type *MethodListTy;
   /// MethodListPtrTy - LLVM type for struct objc_method_list *.
   const llvm::Type *MethodListPtrTy;
-  
+
   /// ExceptionDataTy - LLVM type for struct _objc_exception_data.
   const llvm::Type *ExceptionDataTy;
-  
+
   /// ExceptionTryEnterFn - LLVM objc_exception_try_enter function.
   llvm::Constant *getExceptionTryEnterFn() {
     std::vector<const llvm::Type*> Params;
     Params.push_back(llvm::PointerType::getUnqual(ExceptionDataTy));
     return CGM.CreateRuntimeFunction(
-                                   llvm::FunctionType::get(llvm::Type::VoidTy,
-                                                             Params, false),
-                                     "objc_exception_try_enter");
+      llvm::FunctionType::get(llvm::Type::VoidTy,
+                              Params, false),
+      "objc_exception_try_enter");
   }
 
   /// ExceptionTryExitFn - LLVM objc_exception_try_exit function.
@@ -518,9 +518,9 @@
     std::vector<const llvm::Type*> Params;
     Params.push_back(llvm::PointerType::getUnqual(ExceptionDataTy));
     return CGM.CreateRuntimeFunction(
-                                   llvm::FunctionType::get(llvm::Type::VoidTy,
-                                                             Params, false),
-                                     "objc_exception_try_exit");
+      llvm::FunctionType::get(llvm::Type::VoidTy,
+                              Params, false),
+      "objc_exception_try_exit");
   }
 
   /// ExceptionExtractFn - LLVM objc_exception_extract function.
@@ -530,21 +530,21 @@
     return CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
                                                              Params, false),
                                      "objc_exception_extract");
-    
+
   }
-  
+
   /// ExceptionMatchFn - LLVM objc_exception_match function.
   llvm::Constant *getExceptionMatchFn() {
     std::vector<const llvm::Type*> Params;
     Params.push_back(ClassPtrTy);
     Params.push_back(ObjectPtrTy);
-   return CGM.CreateRuntimeFunction(
-                                  llvm::FunctionType::get(llvm::Type::Int32Ty,
-                                                            Params, false),
-                                    "objc_exception_match");
-    
+    return CGM.CreateRuntimeFunction(
+      llvm::FunctionType::get(llvm::Type::Int32Ty,
+                              Params, false),
+      "objc_exception_match");
+
   }
-  
+
   /// SetJmpFn - LLVM _setjmp function.
   llvm::Constant *getSetJmpFn() {
     std::vector<const llvm::Type*> Params;
@@ -553,9 +553,9 @@
       CGM.CreateRuntimeFunction(llvm::FunctionType::get(llvm::Type::Int32Ty,
                                                         Params, false),
                                 "_setjmp");
-    
+
   }
-  
+
 public:
   ObjCTypesHelper(CodeGen::CodeGenModule &cgm);
   ~ObjCTypesHelper() {}
@@ -565,51 +565,51 @@
 /// modern abi
 class ObjCNonFragileABITypesHelper : public ObjCCommonTypesHelper {
 public:
-          
+
   // MethodListnfABITy - LLVM for struct _method_list_t
   const llvm::StructType *MethodListnfABITy;
-  
+
   // MethodListnfABIPtrTy - LLVM for struct _method_list_t*
   const llvm::Type *MethodListnfABIPtrTy;
-  
+
   // ProtocolnfABITy = LLVM for struct _protocol_t
   const llvm::StructType *ProtocolnfABITy;
-  
+
   // ProtocolnfABIPtrTy = LLVM for struct _protocol_t*
   const llvm::Type *ProtocolnfABIPtrTy;
 
   // ProtocolListnfABITy - LLVM for struct _objc_protocol_list
   const llvm::StructType *ProtocolListnfABITy;
-  
+
   // ProtocolListnfABIPtrTy - LLVM for struct _objc_protocol_list*
   const llvm::Type *ProtocolListnfABIPtrTy;
-  
+
   // ClassnfABITy - LLVM for struct _class_t
   const llvm::StructType *ClassnfABITy;
-  
+
   // ClassnfABIPtrTy - LLVM for struct _class_t*
   const llvm::Type *ClassnfABIPtrTy;
-  
+
   // IvarnfABITy - LLVM for struct _ivar_t
   const llvm::StructType *IvarnfABITy;
-  
+
   // IvarListnfABITy - LLVM for struct _ivar_list_t
   const llvm::StructType *IvarListnfABITy;
-  
+
   // IvarListnfABIPtrTy = LLVM for struct _ivar_list_t*
   const llvm::Type *IvarListnfABIPtrTy;
-  
+
   // ClassRonfABITy - LLVM for struct _class_ro_t
   const llvm::StructType *ClassRonfABITy;
-  
+
   // ImpnfABITy - LLVM for id (*)(id, SEL, ...)
   const llvm::Type *ImpnfABITy;
-  
+
   // CategorynfABITy - LLVM for struct _category_t
   const llvm::StructType *CategorynfABITy;
-  
+
   // New types for nonfragile abi messaging.
-  
+
   // MessageRefTy - LLVM for:
   // struct _message_ref_t {
   //   IMP messenger;
@@ -618,22 +618,22 @@
   const llvm::StructType *MessageRefTy;
   // MessageRefCTy - clang type for struct _message_ref_t
   QualType MessageRefCTy;
-  
+
   // MessageRefPtrTy - LLVM for struct _message_ref_t*
   const llvm::Type *MessageRefPtrTy;
   // MessageRefCPtrTy - clang type for struct _message_ref_t*
   QualType MessageRefCPtrTy;
-  
+
   // MessengerTy - Type of the messenger (shown as IMP above)
   const llvm::FunctionType *MessengerTy;
-  
+
   // SuperMessageRefTy - LLVM for:
   // struct _super_message_ref_t {
   //   SUPER_IMP messenger;
   //   SEL name;
   // };
   const llvm::StructType *SuperMessageRefTy;
-  
+
   // SuperMessageRefPtrTy - LLVM for struct _super_message_ref_t*
   const llvm::Type *SuperMessageRefPtrTy;
 
@@ -646,7 +646,7 @@
                                                              Params, true),
                                      "objc_msgSend_fixup");
   }
-  
+
   llvm::Constant *getMessageSendFpretFixupFn() {
     // id objc_msgSend_fpret_fixup(id, struct message_ref_t*, ...)
     std::vector<const llvm::Type*> Params;
@@ -656,7 +656,7 @@
                                                              Params, true),
                                      "objc_msgSend_fpret_fixup");
   }
-  
+
   llvm::Constant *getMessageSendStretFixupFn() {
     // id objc_msgSend_stret_fixup(id, struct message_ref_t*, ...)
     std::vector<const llvm::Type*> Params;
@@ -666,7 +666,7 @@
                                                              Params, true),
                                      "objc_msgSend_stret_fixup");
   }
-  
+
   llvm::Constant *getMessageSendIdFixupFn() {
     // id objc_msgSendId_fixup(id, struct message_ref_t*, ...)
     std::vector<const llvm::Type*> Params;
@@ -676,7 +676,7 @@
                                                              Params, true),
                                      "objc_msgSendId_fixup");
   }
-  
+
   llvm::Constant *getMessageSendIdStretFixupFn() {
     // id objc_msgSendId_stret_fixup(id, struct message_ref_t*, ...)
     std::vector<const llvm::Type*> Params;
@@ -687,7 +687,7 @@
                                      "objc_msgSendId_stret_fixup");
   }
   llvm::Constant *getMessageSendSuper2FixupFn() {
-    // id objc_msgSendSuper2_fixup (struct objc_super *, 
+    // id objc_msgSendSuper2_fixup (struct objc_super *,
     //                              struct _super_message_ref_t*, ...)
     std::vector<const llvm::Type*> Params;
     Params.push_back(SuperPtrTy);
@@ -696,9 +696,9 @@
                                                               Params, true),
                                       "objc_msgSendSuper2_fixup");
   }
-  
+
   llvm::Constant *getMessageSendSuper2StretFixupFn() {
-    // id objc_msgSendSuper2_stret_fixup(struct objc_super *, 
+    // id objc_msgSendSuper2_stret_fixup(struct objc_super *,
     //                                   struct _super_message_ref_t*, ...)
     std::vector<const llvm::Type*> Params;
     Params.push_back(SuperPtrTy);
@@ -707,16 +707,16 @@
                                                               Params, true),
                                       "objc_msgSendSuper2_stret_fixup");
   }
-  
-  
-  
+
+
+
   /// EHPersonalityPtr - LLVM value for an i8* to the Objective-C
   /// exception personality function.
   llvm::Value *getEHPersonalityPtr() {
-    llvm::Constant *Personality = 
+    llvm::Constant *Personality =
       CGM.CreateRuntimeFunction(llvm::FunctionType::get(llvm::Type::Int32Ty,
                                                         true),
-                              "__objc_personality_v0");
+                                "__objc_personality_v0");
     return llvm::ConstantExpr::getBitCast(Personality, Int8PtrTy);
   }
 
@@ -724,18 +724,18 @@
     std::vector<const llvm::Type*> Params;
     Params.push_back(Int8PtrTy);
     return CGM.CreateRuntimeFunction(
-                                   llvm::FunctionType::get(llvm::Type::VoidTy,
-                                                             Params, false),
-                                     "_Unwind_Resume_or_Rethrow");
+      llvm::FunctionType::get(llvm::Type::VoidTy,
+                              Params, false),
+      "_Unwind_Resume_or_Rethrow");
   }
-  
+
   llvm::Constant *getObjCEndCatchFn() {
     return CGM.CreateRuntimeFunction(llvm::FunctionType::get(llvm::Type::VoidTy,
                                                              false),
                                      "objc_end_catch");
-    
+
   }
-  
+
   llvm::Constant *getObjCBeginCatchFn() {
     std::vector<const llvm::Type*> Params;
     Params.push_back(Int8PtrTy);
@@ -750,7 +750,7 @@
   ObjCNonFragileABITypesHelper(CodeGen::CodeGenModule &cgm);
   ~ObjCNonFragileABITypesHelper(){}
 };
-  
+
 class CGObjCCommonMac : public CodeGen::CGObjCRuntime {
 public:
   // FIXME - accessibility
@@ -759,126 +759,126 @@
     unsigned ivar_bytepos;
     unsigned ivar_size;
     GC_IVAR(unsigned bytepos = 0, unsigned size = 0)
-       : ivar_bytepos(bytepos), ivar_size(size) {}
+      : ivar_bytepos(bytepos), ivar_size(size) {}
 
     // Allow sorting based on byte pos.
     bool operator<(const GC_IVAR &b) const {
       return ivar_bytepos < b.ivar_bytepos;
     }
   };
-  
+
   class SKIP_SCAN {
   public:
     unsigned skip;
     unsigned scan;
-    SKIP_SCAN(unsigned _skip = 0, unsigned _scan = 0) 
+    SKIP_SCAN(unsigned _skip = 0, unsigned _scan = 0)
       : skip(_skip), scan(_scan) {}
   };
-  
+
 protected:
   CodeGen::CodeGenModule &CGM;
   llvm::LLVMContext &VMContext;
   // FIXME! May not be needing this after all.
   unsigned ObjCABI;
-  
+
   // gc ivar layout bitmap calculation helper caches.
   llvm::SmallVector<GC_IVAR, 16> SkipIvars;
   llvm::SmallVector<GC_IVAR, 16> IvarsInfo;
-  
+
   /// LazySymbols - Symbols to generate a lazy reference for. See
   /// DefinedSymbols and FinishModule().
   std::set<IdentifierInfo*> LazySymbols;
-  
+
   /// DefinedSymbols - External symbols which are defined by this
   /// module. The symbols in this list and LazySymbols are used to add
   /// special linker symbols which ensure that Objective-C modules are
   /// linked properly.
   std::set<IdentifierInfo*> DefinedSymbols;
-  
+
   /// ClassNames - uniqued class names.
   llvm::DenseMap<IdentifierInfo*, llvm::GlobalVariable*> ClassNames;
-  
+
   /// MethodVarNames - uniqued method variable names.
   llvm::DenseMap<Selector, llvm::GlobalVariable*> MethodVarNames;
-  
+
   /// MethodVarTypes - uniqued method type signatures. We have to use
   /// a StringMap here because have no other unique reference.
   llvm::StringMap<llvm::GlobalVariable*> MethodVarTypes;
-  
+
   /// MethodDefinitions - map of methods which have been defined in
   /// this translation unit.
   llvm::DenseMap<const ObjCMethodDecl*, llvm::Function*> MethodDefinitions;
-  
+
   /// PropertyNames - uniqued method variable names.
   llvm::DenseMap<IdentifierInfo*, llvm::GlobalVariable*> PropertyNames;
-  
+
   /// ClassReferences - uniqued class references.
   llvm::DenseMap<IdentifierInfo*, llvm::GlobalVariable*> ClassReferences;
-  
+
   /// SelectorReferences - uniqued selector references.
   llvm::DenseMap<Selector, llvm::GlobalVariable*> SelectorReferences;
-  
+
   /// Protocols - Protocols for which an objc_protocol structure has
   /// been emitted. Forward declarations are handled by creating an
   /// empty structure whose initializer is filled in when/if defined.
   llvm::DenseMap<IdentifierInfo*, llvm::GlobalVariable*> Protocols;
-  
+
   /// DefinedProtocols - Protocols which have actually been
   /// defined. We should not need this, see FIXME in GenerateProtocol.
   llvm::DenseSet<IdentifierInfo*> DefinedProtocols;
-  
+
   /// DefinedClasses - List of defined classes.
   std::vector<llvm::GlobalValue*> DefinedClasses;
 
   /// DefinedNonLazyClasses - List of defined "non-lazy" classes.
   std::vector<llvm::GlobalValue*> DefinedNonLazyClasses;
-  
+
   /// DefinedCategories - List of defined categories.
   std::vector<llvm::GlobalValue*> DefinedCategories;
-  
+
   /// DefinedNonLazyCategories - List of defined "non-lazy" categories.
   std::vector<llvm::GlobalValue*> DefinedNonLazyCategories;
-  
+
   /// GetNameForMethod - Return a name for the given method.
   /// \param[out] NameOut - The return value.
   void GetNameForMethod(const ObjCMethodDecl *OMD,
                         const ObjCContainerDecl *CD,
                         std::string &NameOut);
-  
+
   /// GetMethodVarName - Return a unique constant for the given
   /// selector's name. The return value has type char *.
   llvm::Constant *GetMethodVarName(Selector Sel);
   llvm::Constant *GetMethodVarName(IdentifierInfo *Ident);
   llvm::Constant *GetMethodVarName(const std::string &Name);
-  
+
   /// GetMethodVarType - Return a unique constant for the given
   /// selector's name. The return value has type char *.
-  
+
   // FIXME: This is a horrible name.
   llvm::Constant *GetMethodVarType(const ObjCMethodDecl *D);
   llvm::Constant *GetMethodVarType(const FieldDecl *D);
-  
+
   /// GetPropertyName - Return a unique constant for the given
   /// name. The return value has type char *.
   llvm::Constant *GetPropertyName(IdentifierInfo *Ident);
-  
+
   // FIXME: This can be dropped once string functions are unified.
   llvm::Constant *GetPropertyTypeString(const ObjCPropertyDecl *PD,
                                         const Decl *Container);
-  
+
   /// GetClassName - Return a unique constant for the given selector's
   /// name. The return value has type char *.
   llvm::Constant *GetClassName(IdentifierInfo *Ident);
-  
+
   /// BuildIvarLayout - Builds ivar layout bitmap for the class
   /// implementation for the __strong or __weak case.
   ///
   llvm::Constant *BuildIvarLayout(const ObjCImplementationDecl *OI,
                                   bool ForStrongLayout);
-  
+
   void BuildAggrIvarRecordLayout(const RecordType *RT,
-                           unsigned int BytePos, bool ForStrongLayout,
-                           bool &HasUnion);
+                                 unsigned int BytePos, bool ForStrongLayout,
+                                 bool &HasUnion);
   void BuildAggrIvarLayout(const ObjCImplementationDecl *OI,
                            const llvm::StructLayout *Layout,
                            const RecordDecl *RD,
@@ -890,14 +890,14 @@
   /// ivar layout bitmap.
   llvm::Constant *GetIvarLayoutName(IdentifierInfo *Ident,
                                     const ObjCCommonTypesHelper &ObjCTypes);
-  
+
   /// EmitPropertyList - Emit the given property list. The return
   /// value has type PropertyListPtrTy.
   llvm::Constant *EmitPropertyList(const std::string &Name,
-                                   const Decl *Container, 
+                                   const Decl *Container,
                                    const ObjCContainerDecl *OCD,
                                    const ObjCCommonTypesHelper &ObjCTypes);
-  
+
   /// GetProtocolRef - Return a reference to the internal protocol
   /// description, creating an empty one if it has not been
   /// defined. The return value has type ProtocolPtrTy.
@@ -935,27 +935,27 @@
 public:
   CGObjCCommonMac(CodeGen::CodeGenModule &cgm) :
     CGM(cgm), VMContext(cgm.getLLVMContext())
-  { }
-  
+    { }
+
   virtual llvm::Constant *GenerateConstantString(const ObjCStringLiteral *SL);
-  
+
   virtual llvm::Function *GenerateMethod(const ObjCMethodDecl *OMD,
                                          const ObjCContainerDecl *CD=0);
-  
+
   virtual void GenerateProtocol(const ObjCProtocolDecl *PD);
-  
+
   /// GetOrEmitProtocol - Get the protocol object for the given
   /// declaration, emitting it if necessary. The return value has type
   /// ProtocolPtrTy.
   virtual llvm::Constant *GetOrEmitProtocol(const ObjCProtocolDecl *PD)=0;
-  
+
   /// GetOrEmitProtocolRef - Get a forward reference to the protocol
   /// object for the given declaration, emitting it if needed. These
   /// forward references will be filled in with empty bodies if no
   /// definition is seen. The return value has type ProtocolPtrTy.
   virtual llvm::Constant *GetOrEmitProtocolRef(const ObjCProtocolDecl *PD)=0;
 };
-  
+
 class CGObjCMac : public CGObjCCommonMac {
 private:
   ObjCTypesHelper ObjCTypes;
@@ -964,7 +964,7 @@
   void EmitImageInfo();
 
   /// EmitModuleInfo - Another marker encoding module level
-  /// information. 
+  /// information.
   void EmitModuleInfo();
 
   /// EmitModuleSymols - Emit module symbols, the list of defined
@@ -982,7 +982,7 @@
 
   /// EmitClassRef - Return a Value*, of type ObjCTypes.ClassPtrTy,
   /// for the given class.
-  llvm::Value *EmitClassRef(CGBuilderTy &Builder, 
+  llvm::Value *EmitClassRef(CGBuilderTy &Builder,
                             const ObjCInterfaceDecl *ID);
 
   CodeGen::RValue EmitMessageSend(CodeGen::CodeGenFunction &CGF,
@@ -1000,7 +1000,7 @@
   /// IvarListPtrTy.
   llvm::Constant *EmitIvarList(const ObjCImplementationDecl *ID,
                                bool ForClass);
-                               
+
   /// EmitMetaClass - Emit a forward reference to the class structure
   /// for the metaclass of the given interface. The return value has
   /// type ClassPtrTy.
@@ -1011,9 +1011,9 @@
   llvm::Constant *EmitMetaClass(const ObjCImplementationDecl *ID,
                                 llvm::Constant *Protocols,
                                 const ConstantVector &Methods);
-  
+
   llvm::Constant *GetMethodConstant(const ObjCMethodDecl *MD);
-  
+
   llvm::Constant *GetMethodDescriptionConstant(const ObjCMethodDecl *MD);
 
   /// EmitMethodList - Emit the method list for the given
@@ -1023,7 +1023,7 @@
                                  const ConstantVector &Methods);
 
   /// EmitMethodDescList - Emit a method description list for a list of
-  /// method declarations. 
+  /// method declarations.
   ///  - TypeName: The name for the type containing the methods.
   ///  - IsProtocol: True iff these methods are for a protocol.
   ///  - ClassMethds: True iff these are class methods.
@@ -1066,12 +1066,12 @@
   /// EmitSelector - Return a Value*, of type ObjCTypes.SelectorPtrTy,
   /// for the given selector.
   llvm::Value *EmitSelector(CGBuilderTy &Builder, Selector Sel);
-  
-  public:
+
+public:
   CGObjCMac(CodeGen::CodeGenModule &cgm);
 
   virtual llvm::Function *ModuleInitFunction();
-  
+
   virtual CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
                                               QualType ResultType,
                                               Selector Sel,
@@ -1080,7 +1080,7 @@
                                               const CallArgList &CallArgs,
                                               const ObjCMethodDecl *Method);
 
-  virtual CodeGen::RValue 
+  virtual CodeGen::RValue
   GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
                            QualType ResultType,
                            Selector Sel,
@@ -1089,7 +1089,7 @@
                            llvm::Value *Receiver,
                            bool IsClassMessage,
                            const CallArgList &CallArgs);
-  
+
   virtual llvm::Value *GetClass(CGBuilderTy &Builder,
                                 const ObjCInterfaceDecl *ID);
 
@@ -1106,19 +1106,19 @@
 
   virtual llvm::Value *GenerateProtocolRef(CGBuilderTy &Builder,
                                            const ObjCProtocolDecl *PD);
-    
+
   virtual llvm::Constant *GetPropertyGetFunction();
   virtual llvm::Constant *GetPropertySetFunction();
   virtual llvm::Constant *EnumerationMutationFunction();
-  
+
   virtual void EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
                                          const Stmt &S);
   virtual void EmitThrowStmt(CodeGen::CodeGenFunction &CGF,
                              const ObjCAtThrowStmt &S);
   virtual llvm::Value * EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF,
-                                         llvm::Value *AddrWeakObj); 
+                                         llvm::Value *AddrWeakObj);
   virtual void EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
-                                  llvm::Value *src, llvm::Value *dst); 
+                                  llvm::Value *src, llvm::Value *dst);
   virtual void EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
                                     llvm::Value *src, llvm::Value *dest);
   virtual void EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
@@ -1128,7 +1128,7 @@
   virtual void EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
                                         llvm::Value *dest, llvm::Value *src,
                                         unsigned long size);
-  
+
   virtual LValue EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF,
                                       QualType ObjectTy,
                                       llvm::Value *BaseValue,
@@ -1138,30 +1138,30 @@
                                       const ObjCInterfaceDecl *Interface,
                                       const ObjCIvarDecl *Ivar);
 };
-  
+
 class CGObjCNonFragileABIMac : public CGObjCCommonMac {
 private:
   ObjCNonFragileABITypesHelper ObjCTypes;
   llvm::GlobalVariable* ObjCEmptyCacheVar;
   llvm::GlobalVariable* ObjCEmptyVtableVar;
-  
+
   /// SuperClassReferences - uniqued super class references.
   llvm::DenseMap<IdentifierInfo*, llvm::GlobalVariable*> SuperClassReferences;
-  
+
   /// MetaClassReferences - uniqued meta class references.
   llvm::DenseMap<IdentifierInfo*, llvm::GlobalVariable*> MetaClassReferences;
 
   /// EHTypeReferences - uniqued class ehtype references.
   llvm::DenseMap<IdentifierInfo*, llvm::GlobalVariable*> EHTypeReferences;
-  
+
   /// NonLegacyDispatchMethods - List of methods for which we do *not* generate
   /// legacy messaging dispatch.
   llvm::DenseSet<Selector> NonLegacyDispatchMethods;
-  
+
   /// LegacyDispatchedSelector - Returns true if SEL is not in the list of
   /// NonLegacyDispatchMethods; false otherwise.
   bool LegacyDispatchedSelector(Selector Sel);
-  
+
   /// FinishNonFragileABIModule - Write out global data structures at the end of
   /// processing a translation unit.
   void FinishNonFragileABIModule();
@@ -1172,20 +1172,20 @@
                           const char *SymbolName,
                           const char *SectionName);
 
-  llvm::GlobalVariable * BuildClassRoTInitializer(unsigned flags, 
-                                unsigned InstanceStart,
-                                unsigned InstanceSize,
-                                const ObjCImplementationDecl *ID);
+  llvm::GlobalVariable * BuildClassRoTInitializer(unsigned flags,
+                                              unsigned InstanceStart,
+                                              unsigned InstanceSize,
+                                              const ObjCImplementationDecl *ID);
   llvm::GlobalVariable * BuildClassMetaData(std::string &ClassName,
-                                            llvm::Constant *IsAGV, 
+                                            llvm::Constant *IsAGV,
                                             llvm::Constant *SuperClassGV,
                                             llvm::Constant *ClassRoGV,
                                             bool HiddenVisibility);
-  
+
   llvm::Constant *GetMethodConstant(const ObjCMethodDecl *MD);
-  
+
   llvm::Constant *GetMethodDescriptionConstant(const ObjCMethodDecl *MD);
-  
+
   /// EmitMethodList - Emit the method list for the given
   /// implementation. The return value has type MethodListnfABITy.
   llvm::Constant *EmitMethodList(const std::string &Name,
@@ -1197,28 +1197,28 @@
   /// interface ivars will be emitted. The return value has type
   /// IvarListnfABIPtrTy.
   llvm::Constant *EmitIvarList(const ObjCImplementationDecl *ID);
-  
+
   llvm::Constant *EmitIvarOffsetVar(const ObjCInterfaceDecl *ID,
                                     const ObjCIvarDecl *Ivar,
                                     unsigned long int offset);
-  
+
   /// GetOrEmitProtocol - Get the protocol object for the given
   /// declaration, emitting it if necessary. The return value has type
   /// ProtocolPtrTy.
   virtual llvm::Constant *GetOrEmitProtocol(const ObjCProtocolDecl *PD);
-    
+
   /// GetOrEmitProtocolRef - Get a forward reference to the protocol
   /// object for the given declaration, emitting it if needed. These
   /// forward references will be filled in with empty bodies if no
   /// definition is seen. The return value has type ProtocolPtrTy.
   virtual llvm::Constant *GetOrEmitProtocolRef(const ObjCProtocolDecl *PD);
-    
+
   /// EmitProtocolList - Generate the list of referenced
   /// protocols. The return value has type ProtocolListPtrTy.
   llvm::Constant *EmitProtocolList(const std::string &Name,
                                    ObjCProtocolDecl::protocol_iterator begin,
                                    ObjCProtocolDecl::protocol_iterator end);
-  
+
   CodeGen::RValue EmitMessageSend(CodeGen::CodeGenFunction &CGF,
                                   QualType ResultType,
                                   Selector Sel,
@@ -1230,29 +1230,29 @@
   /// GetClassGlobal - Return the global variable for the Objective-C
   /// class of the given name.
   llvm::GlobalVariable *GetClassGlobal(const std::string &Name);
-                                        
+
   /// EmitClassRef - Return a Value*, of type ObjCTypes.ClassPtrTy,
   /// for the given class reference.
-  llvm::Value *EmitClassRef(CGBuilderTy &Builder, 
+  llvm::Value *EmitClassRef(CGBuilderTy &Builder,
                             const ObjCInterfaceDecl *ID);
-  
+
   /// EmitSuperClassRef - Return a Value*, of type ObjCTypes.ClassPtrTy,
   /// for the given super class reference.
-  llvm::Value *EmitSuperClassRef(CGBuilderTy &Builder, 
-                            const ObjCInterfaceDecl *ID);
-  
+  llvm::Value *EmitSuperClassRef(CGBuilderTy &Builder,
+                                 const ObjCInterfaceDecl *ID);
+
   /// EmitMetaClassRef - Return a Value * of the address of _class_t
   /// meta-data
-  llvm::Value *EmitMetaClassRef(CGBuilderTy &Builder, 
+  llvm::Value *EmitMetaClassRef(CGBuilderTy &Builder,
                                 const ObjCInterfaceDecl *ID);
 
   /// ObjCIvarOffsetVariable - Returns the ivar offset variable for
   /// the given ivar.
   ///
   llvm::GlobalVariable * ObjCIvarOffsetVariable(
-                              const ObjCInterfaceDecl *ID,
-                              const ObjCIvarDecl *Ivar);
-  
+    const ObjCInterfaceDecl *ID,
+    const ObjCIvarDecl *Ivar);
+
   /// EmitSelector - Return a Value*, of type ObjCTypes.SelectorPtrTy,
   /// for the given selector.
   llvm::Value *EmitSelector(CGBuilderTy &Builder, Selector Sel);
@@ -1262,10 +1262,10 @@
   llvm::Value *GetInterfaceEHType(const ObjCInterfaceDecl *ID,
                                   bool ForDefinition);
 
-  const char *getMetaclassSymbolPrefix() const { 
+  const char *getMetaclassSymbolPrefix() const {
     return "OBJC_METACLASS_$_";
   }
-  
+
   const char *getClassSymbolPrefix() const {
     return "OBJC_CLASS_$_";
   }
@@ -1273,13 +1273,13 @@
   void GetClassSizeInfo(const ObjCImplementationDecl *OID,
                         uint32_t &InstanceStart,
                         uint32_t &InstanceSize);
-  
+
   // Shamelessly stolen from Analysis/CFRefCount.cpp
   Selector GetNullarySelector(const char* name) const {
     IdentifierInfo* II = &CGM.getContext().Idents.get(name);
     return CGM.getContext().Selectors.getSelector(0, &II);
   }
-  
+
   Selector GetUnarySelector(const char* name) const {
     IdentifierInfo* II = &CGM.getContext().Idents.get(name);
     return CGM.getContext().Selectors.getSelector(1, &II);
@@ -1293,7 +1293,7 @@
   CGObjCNonFragileABIMac(CodeGen::CodeGenModule &cgm);
   // FIXME. All stubs for now!
   virtual llvm::Function *ModuleInitFunction();
-  
+
   virtual CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
                                               QualType ResultType,
                                               Selector Sel,
@@ -1301,8 +1301,8 @@
                                               bool IsClassMessage,
                                               const CallArgList &CallArgs,
                                               const ObjCMethodDecl *Method);
-  
-  virtual CodeGen::RValue 
+
+  virtual CodeGen::RValue
   GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
                            QualType ResultType,
                            Selector Sel,
@@ -1311,10 +1311,10 @@
                            llvm::Value *Receiver,
                            bool IsClassMessage,
                            const CallArgList &CallArgs);
-  
+
   virtual llvm::Value *GetClass(CGBuilderTy &Builder,
                                 const ObjCInterfaceDecl *ID);
-  
+
   virtual llvm::Value *GetSelector(CGBuilderTy &Builder, Selector Sel)
     { return EmitSelector(Builder, Sel); }
 
@@ -1323,23 +1323,23 @@
   virtual llvm::Value *GetSelector(CGBuilderTy &Builder,
                                    const ObjCMethodDecl *Method)
     { return EmitSelector(Builder, Method->getSelector()); }
-  
+
   virtual void GenerateCategory(const ObjCCategoryImplDecl *CMD);
-  
+
   virtual void GenerateClass(const ObjCImplementationDecl *ClassDecl);
   virtual llvm::Value *GenerateProtocolRef(CGBuilderTy &Builder,
                                            const ObjCProtocolDecl *PD);
-  
-  virtual llvm::Constant *GetPropertyGetFunction() { 
+
+  virtual llvm::Constant *GetPropertyGetFunction() {
     return ObjCTypes.getGetPropertyFn();
   }
-  virtual llvm::Constant *GetPropertySetFunction() { 
-    return ObjCTypes.getSetPropertyFn(); 
+  virtual llvm::Constant *GetPropertySetFunction() {
+    return ObjCTypes.getSetPropertyFn();
   }
   virtual llvm::Constant *EnumerationMutationFunction() {
     return ObjCTypes.getEnumerationMutationFn();
   }
-  
+
   virtual void EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
                                          const Stmt &S);
   virtual void EmitThrowStmt(CodeGen::CodeGenFunction &CGF,
@@ -1366,14 +1366,14 @@
                                       const ObjCInterfaceDecl *Interface,
                                       const ObjCIvarDecl *Ivar);
 };
-  
+
 } // end anonymous namespace
 
 /* *** Helper Functions *** */
 
 /// getConstantGEP() - Help routine to construct simple GEPs.
 static llvm::Constant *getConstantGEP(llvm::LLVMContext &VMContext,
-                                      llvm::Constant *C, 
+                                      llvm::Constant *C,
                                       unsigned idx0,
                                       unsigned idx1) {
   llvm::Value *Idxs[] = {
@@ -1385,7 +1385,7 @@
 
 /// hasObjCExceptionAttribute - Return true if this class or any super
 /// class has the __objc_exception__ attribute.
-static bool hasObjCExceptionAttribute(ASTContext &Context, 
+static bool hasObjCExceptionAttribute(ASTContext &Context,
                                       const ObjCInterfaceDecl *OID) {
   if (OID->hasAttr<ObjCExceptionAttr>())
     return true;
@@ -1395,12 +1395,12 @@
 }
 
 /* *** CGObjCMac Public Interface *** */
- 
+
 CGObjCMac::CGObjCMac(CodeGen::CodeGenModule &cgm) : CGObjCCommonMac(cgm),
                                                     ObjCTypes(cgm)
 {
   ObjCABI = 1;
-  EmitImageInfo();  
+  EmitImageInfo();
 }
 
 /// GetClass - Return a reference to the class for the given interface
@@ -1415,18 +1415,18 @@
   return EmitSelector(Builder, Sel);
 }
 llvm::Value *CGObjCMac::GetSelector(CGBuilderTy &Builder, const ObjCMethodDecl
-    *Method) {
+                                    *Method) {
   return EmitSelector(Builder, Method->getSelector());
 }
 
 /// Generate a constant CFString object.
-/* 
-   struct __builtin_CFString {
-     const int *isa; // point to __CFConstantStringClassReference
-     int flags;
-     const char *str;
-     long length;
-   };
+/*
+  struct __builtin_CFString {
+  const int *isa; // point to __CFConstantStringClassReference
+  int flags;
+  const char *str;
+  long length;
+  };
 */
 
 llvm::Constant *CGObjCCommonMac::GenerateConstantString(
@@ -1448,11 +1448,11 @@
                                     const CodeGen::CallArgList &CallArgs) {
   // Create and init a super structure; this is a (receiver, class)
   // pair we will pass to objc_msgSendSuper.
-  llvm::Value *ObjCSuper = 
+  llvm::Value *ObjCSuper =
     CGF.Builder.CreateAlloca(ObjCTypes.SuperTy, 0, "objc_super");
-  llvm::Value *ReceiverAsObject = 
+  llvm::Value *ReceiverAsObject =
     CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy);
-  CGF.Builder.CreateStore(ReceiverAsObject, 
+  CGF.Builder.CreateStore(ReceiverAsObject,
                           CGF.Builder.CreateStructGEP(ObjCSuper, 0));
 
   // If this is a class message the metaclass is passed as the target.
@@ -1473,24 +1473,24 @@
       llvm::Value *SuperPtr = CGF.Builder.CreateStructGEP(MetaClassPtr, 1);
       llvm::Value *Super = CGF.Builder.CreateLoad(SuperPtr);
       Target = Super;
-   }
+    }
   } else {
     Target = EmitClassRef(CGF.Builder, Class->getSuperClass());
   }
   // FIXME: We shouldn't need to do this cast, rectify the ASTContext and
   // ObjCTypes types.
-  const llvm::Type *ClassTy = 
+  const llvm::Type *ClassTy =
     CGM.getTypes().ConvertType(CGF.getContext().getObjCClassType());
   Target = CGF.Builder.CreateBitCast(Target, ClassTy);
-  CGF.Builder.CreateStore(Target, 
+  CGF.Builder.CreateStore(Target,
                           CGF.Builder.CreateStructGEP(ObjCSuper, 1));
-  return EmitLegacyMessageSend(CGF, ResultType, 
+  return EmitLegacyMessageSend(CGF, ResultType,
                                EmitSelector(CGF.Builder, Sel),
                                ObjCSuper, ObjCTypes.SuperPtrCTy,
                                true, CallArgs, ObjCTypes);
 }
-                                           
-/// Generate code for a message send expression.  
+
+/// Generate code for a message send expression.
 CodeGen::RValue CGObjCMac::GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
                                                QualType ResultType,
                                                Selector Sel,
@@ -1505,14 +1505,14 @@
 }
 
 CodeGen::RValue CGObjCCommonMac::EmitLegacyMessageSend(
-                                      CodeGen::CodeGenFunction &CGF,
-                                      QualType ResultType,
-                                      llvm::Value *Sel,
-                                      llvm::Value *Arg0,
-                                      QualType Arg0Ty,
-                                      bool IsSuper,
-                                      const CallArgList &CallArgs,
-                                      const ObjCCommonTypesHelper &ObjCTypes) {
+  CodeGen::CodeGenFunction &CGF,
+  QualType ResultType,
+  llvm::Value *Sel,
+  llvm::Value *Arg0,
+  QualType Arg0Ty,
+  bool IsSuper,
+  const CallArgList &CallArgs,
+  const ObjCCommonTypesHelper &ObjCTypes) {
   CallArgList ActualArgs;
   if (!IsSuper)
     Arg0 = CGF.Builder.CreateBitCast(Arg0, ObjCTypes.ObjectPtrTy, "tmp");
@@ -1520,23 +1520,23 @@
   ActualArgs.push_back(std::make_pair(RValue::get(Sel),
                                       CGF.getContext().getObjCSelType()));
   ActualArgs.insert(ActualArgs.end(), CallArgs.begin(), CallArgs.end());
-  
+
   CodeGenTypes &Types = CGM.getTypes();
   const CGFunctionInfo &FnInfo = Types.getFunctionInfo(ResultType, ActualArgs);
-  // In 64bit ABI, type must be assumed VARARG. In 32bit abi, 
+  // In 64bit ABI, type must be assumed VARARG. In 32bit abi,
   // it seems not to matter.
   const llvm::FunctionType *FTy = Types.GetFunctionType(FnInfo, (ObjCABI == 2));
-  
+
   llvm::Constant *Fn = NULL;
   if (CGM.ReturnTypeUsesSret(FnInfo)) {
     Fn = (ObjCABI == 2) ?  ObjCTypes.getSendStretFn2(IsSuper)
-    : ObjCTypes.getSendStretFn(IsSuper);
+      : ObjCTypes.getSendStretFn(IsSuper);
   } else if (ResultType->isFloatingType()) {
     if (ObjCABI == 2) {
       if (const BuiltinType *BT = ResultType->getAsBuiltinType()) {
         BuiltinType::Kind k = BT->getKind();
         Fn = (k == BuiltinType::LongDouble) ? ObjCTypes.getSendFpretFn2(IsSuper)
-              : ObjCTypes.getSendFn2(IsSuper);
+          : ObjCTypes.getSendFn2(IsSuper);
       } else {
         Fn = ObjCTypes.getSendFn2(IsSuper);
       }
@@ -1546,15 +1546,15 @@
       Fn = ObjCTypes.getSendFpretFn(IsSuper);
   } else {
     Fn = (ObjCABI == 2) ? ObjCTypes.getSendFn2(IsSuper)
-                        : ObjCTypes.getSendFn(IsSuper);
+      : ObjCTypes.getSendFn(IsSuper);
   }
   assert(Fn && "EmitLegacyMessageSend - unknown API");
   Fn = llvm::ConstantExpr::getBitCast(Fn,
-                                        llvm::PointerType::getUnqual(FTy));
+                                      llvm::PointerType::getUnqual(FTy));
   return CGF.EmitCall(FnInfo, Fn, ActualArgs);
 }
 
-llvm::Value *CGObjCMac::GenerateProtocolRef(CGBuilderTy &Builder, 
+llvm::Value *CGObjCMac::GenerateProtocolRef(CGBuilderTy &Builder,
                                             const ObjCProtocolDecl *PD) {
   // FIXME: I don't understand why gcc generates this, or where it is
   // resolved. Investigate. Its also wasteful to look this up over and over.
@@ -1572,7 +1572,7 @@
   // If we have generated a forward reference to this protocol, emit
   // it now. Otherwise do nothing, the protocol objects are lazily
   // emitted.
-  if (Protocols.count(PD->getIdentifier())) 
+  if (Protocols.count(PD->getIdentifier()))
     GetOrEmitProtocol(PD);
 }
 
@@ -1583,16 +1583,16 @@
 }
 
 /*
-     // APPLE LOCAL radar 4585769 - Objective-C 1.0 extensions
-  struct _objc_protocol {
-    struct _objc_protocol_extension *isa;
-    char *protocol_name;
-    struct _objc_protocol_list *protocol_list;
-    struct _objc__method_prototype_list *instance_methods;
-    struct _objc__method_prototype_list *class_methods
-  };
+// APPLE LOCAL radar 4585769 - Objective-C 1.0 extensions
+struct _objc_protocol {
+struct _objc_protocol_extension *isa;
+char *protocol_name;
+struct _objc_protocol_list *protocol_list;
+struct _objc__method_prototype_list *instance_methods;
+struct _objc__method_prototype_list *class_methods
+};
 
-  See EmitProtocolExtension().
+See EmitProtocolExtension().
 */
 llvm::Constant *CGObjCMac::GetOrEmitProtocol(const ObjCProtocolDecl *PD) {
   llvm::GlobalVariable *&Entry = Protocols[PD->getIdentifier()];
@@ -1610,7 +1610,7 @@
   // Construct method lists.
   std::vector<llvm::Constant*> InstanceMethods, ClassMethods;
   std::vector<llvm::Constant*> OptInstanceMethods, OptClassMethods;
-  for (ObjCProtocolDecl::instmeth_iterator 
+  for (ObjCProtocolDecl::instmeth_iterator
          i = PD->instmeth_begin(), e = PD->instmeth_end(); i != e; ++i) {
     ObjCMethodDecl *MD = *i;
     llvm::Constant *C = GetMethodDescriptionConstant(MD);
@@ -1618,10 +1618,10 @@
       OptInstanceMethods.push_back(C);
     } else {
       InstanceMethods.push_back(C);
-    }      
+    }
   }
 
-  for (ObjCProtocolDecl::classmeth_iterator 
+  for (ObjCProtocolDecl::classmeth_iterator
          i = PD->classmeth_begin(), e = PD->classmeth_end(); i != e; ++i) {
     ObjCMethodDecl *MD = *i;
     llvm::Constant *C = GetMethodDescriptionConstant(MD);
@@ -1629,38 +1629,38 @@
       OptClassMethods.push_back(C);
     } else {
       ClassMethods.push_back(C);
-    }      
+    }
   }
 
   std::vector<llvm::Constant*> Values(5);
   Values[0] = EmitProtocolExtension(PD, OptInstanceMethods, OptClassMethods);
   Values[1] = GetClassName(PD->getIdentifier());
-  Values[2] = 
+  Values[2] =
     EmitProtocolList("\01L_OBJC_PROTOCOL_REFS_" + PD->getNameAsString(),
                      PD->protocol_begin(),
                      PD->protocol_end());
-  Values[3] = 
+  Values[3] =
     EmitMethodDescList("\01L_OBJC_PROTOCOL_INSTANCE_METHODS_"
-                          + PD->getNameAsString(),
+                       + PD->getNameAsString(),
                        "__OBJC,__cat_inst_meth,regular,no_dead_strip",
                        InstanceMethods);
-  Values[4] = 
-    EmitMethodDescList("\01L_OBJC_PROTOCOL_CLASS_METHODS_" 
-                            + PD->getNameAsString(),
+  Values[4] =
+    EmitMethodDescList("\01L_OBJC_PROTOCOL_CLASS_METHODS_"
+                       + PD->getNameAsString(),
                        "__OBJC,__cat_cls_meth,regular,no_dead_strip",
                        ClassMethods);
   llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.ProtocolTy,
                                                    Values);
-  
+
   if (Entry) {
     // Already created, fix the linkage and update the initializer.
     Entry->setLinkage(llvm::GlobalValue::InternalLinkage);
     Entry->setInitializer(Init);
   } else {
-    Entry = 
+    Entry =
       new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ProtocolTy, false,
                                llvm::GlobalValue::InternalLinkage,
-                               Init, 
+                               Init,
                                std::string("\01L_OBJC_PROTOCOL_")+ProtocolName);
     Entry->setSection("__OBJC,__protocol,regular,no_dead_strip");
     Entry->setAlignment(4);
@@ -1679,7 +1679,7 @@
     // We use the initializer as a marker of whether this is a forward
     // reference or not. At module finalization we add the empty
     // contents for protocols which were referenced but never defined.
-    Entry = 
+    Entry =
       new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ProtocolTy, false,
                                llvm::GlobalValue::ExternalLinkage,
                                0,
@@ -1689,59 +1689,59 @@
     // FIXME: Is this necessary? Why only for protocol?
     Entry->setAlignment(4);
   }
-  
+
   return Entry;
 }
 
 /*
   struct _objc_protocol_extension {
-    uint32_t size;
-    struct objc_method_description_list *optional_instance_methods;
-    struct objc_method_description_list *optional_class_methods;
-    struct objc_property_list *instance_properties;
+  uint32_t size;
+  struct objc_method_description_list *optional_instance_methods;
+  struct objc_method_description_list *optional_class_methods;
+  struct objc_property_list *instance_properties;
   };
 */
 llvm::Constant *
 CGObjCMac::EmitProtocolExtension(const ObjCProtocolDecl *PD,
                                  const ConstantVector &OptInstanceMethods,
                                  const ConstantVector &OptClassMethods) {
-  uint64_t Size = 
+  uint64_t Size =
     CGM.getTargetData().getTypeAllocSize(ObjCTypes.ProtocolExtensionTy);
   std::vector<llvm::Constant*> Values(4);
   Values[0] = llvm::ConstantInt::get(ObjCTypes.IntTy, Size);
-  Values[1] = 
-    EmitMethodDescList("\01L_OBJC_PROTOCOL_INSTANCE_METHODS_OPT_" 
-                           + PD->getNameAsString(),
+  Values[1] =
+    EmitMethodDescList("\01L_OBJC_PROTOCOL_INSTANCE_METHODS_OPT_"
+                       + PD->getNameAsString(),
                        "__OBJC,__cat_inst_meth,regular,no_dead_strip",
                        OptInstanceMethods);
-  Values[2] = 
+  Values[2] =
     EmitMethodDescList("\01L_OBJC_PROTOCOL_CLASS_METHODS_OPT_"
-                          + PD->getNameAsString(),
+                       + PD->getNameAsString(),
                        "__OBJC,__cat_cls_meth,regular,no_dead_strip",
                        OptClassMethods);
-  Values[3] = EmitPropertyList("\01L_OBJC_$_PROP_PROTO_LIST_" + 
-                                   PD->getNameAsString(),
+  Values[3] = EmitPropertyList("\01L_OBJC_$_PROP_PROTO_LIST_" +
+                               PD->getNameAsString(),
                                0, PD, ObjCTypes);
 
   // Return null if no extension bits are used.
-  if (Values[1]->isNullValue() && Values[2]->isNullValue() && 
+  if (Values[1]->isNullValue() && Values[2]->isNullValue() &&
       Values[3]->isNullValue())
     return llvm::Constant::getNullValue(ObjCTypes.ProtocolExtensionPtrTy);
 
-  llvm::Constant *Init = 
+  llvm::Constant *Init =
     llvm::ConstantStruct::get(ObjCTypes.ProtocolExtensionTy, Values);
 
   // No special section, but goes in llvm.used
   return CreateMetadataVar("\01L_OBJC_PROTOCOLEXT_" + PD->getNameAsString(),
-                           Init, 
+                           Init,
                            0, 0, true);
 }
 
 /*
   struct objc_protocol_list {
-    struct objc_protocol_list *next;
-    long count;
-    Protocol *list[];
+  struct objc_protocol_list *next;
+  long count;
+  Protocol *list[];
   };
 */
 llvm::Constant *
@@ -1754,7 +1754,7 @@
     ProtocolRefs.push_back(GetProtocolRef(*begin));
 
   // Just return null for empty protocol lists
-  if (ProtocolRefs.empty()) 
+  if (ProtocolRefs.empty())
     return llvm::Constant::getNullValue(ObjCTypes.ProtocolListPtrTy);
 
   // This list is null terminated.
@@ -1764,14 +1764,14 @@
   // This field is only used by the runtime.
   Values[0] = llvm::Constant::getNullValue(ObjCTypes.ProtocolListPtrTy);
   Values[1] = llvm::ConstantInt::get(ObjCTypes.LongTy,
-                                       ProtocolRefs.size() - 1);
-  Values[2] = 
-    llvm::ConstantArray::get(llvm::ArrayType::get(ObjCTypes.ProtocolPtrTy, 
-                                                  ProtocolRefs.size()), 
+                                     ProtocolRefs.size() - 1);
+  Values[2] =
+    llvm::ConstantArray::get(llvm::ArrayType::get(ObjCTypes.ProtocolPtrTy,
+                                                  ProtocolRefs.size()),
                              ProtocolRefs);
-  
+
   llvm::Constant *Init = llvm::ConstantStruct::get(Values);
-  llvm::GlobalVariable *GV = 
+  llvm::GlobalVariable *GV =
     CreateMetadataVar(Name, Init, "__OBJC,__cat_cls_meth,regular,no_dead_strip",
                       4, false);
   return llvm::ConstantExpr::getBitCast(GV, ObjCTypes.ProtocolListPtrTy);
@@ -1779,23 +1779,23 @@
 
 /*
   struct _objc_property {
-    const char * const name;
-    const char * const attributes;
+  const char * const name;
+  const char * const attributes;
   };
 
   struct _objc_property_list {
-    uint32_t entsize; // sizeof (struct _objc_property)
-    uint32_t prop_count;
-    struct _objc_property[prop_count];
+  uint32_t entsize; // sizeof (struct _objc_property)
+  uint32_t prop_count;
+  struct _objc_property[prop_count];
   };
 */
 llvm::Constant *CGObjCCommonMac::EmitPropertyList(const std::string &Name,
-                                      const Decl *Container,
-                                      const ObjCContainerDecl *OCD,
-                                      const ObjCCommonTypesHelper &ObjCTypes) {
+                                       const Decl *Container,
+                                       const ObjCContainerDecl *OCD,
+                                       const ObjCCommonTypesHelper &ObjCTypes) {
   std::vector<llvm::Constant*> Properties, Prop(2);
-  for (ObjCContainerDecl::prop_iterator I = OCD->prop_begin(), 
-       E = OCD->prop_end(); I != E; ++I) {
+  for (ObjCContainerDecl::prop_iterator I = OCD->prop_begin(),
+         E = OCD->prop_end(); I != E; ++I) {
     const ObjCPropertyDecl *PD = *I;
     Prop[0] = GetPropertyName(PD->getIdentifier());
     Prop[1] = GetPropertyTypeString(PD, Container);
@@ -1807,37 +1807,37 @@
   if (Properties.empty())
     return llvm::Constant::getNullValue(ObjCTypes.PropertyListPtrTy);
 
-  unsigned PropertySize = 
+  unsigned PropertySize =
     CGM.getTargetData().getTypeAllocSize(ObjCTypes.PropertyTy);
   std::vector<llvm::Constant*> Values(3);
   Values[0] = llvm::ConstantInt::get(ObjCTypes.IntTy, PropertySize);
   Values[1] = llvm::ConstantInt::get(ObjCTypes.IntTy, Properties.size());
-  llvm::ArrayType *AT = llvm::ArrayType::get(ObjCTypes.PropertyTy, 
+  llvm::ArrayType *AT = llvm::ArrayType::get(ObjCTypes.PropertyTy,
                                              Properties.size());
   Values[2] = llvm::ConstantArray::get(AT, Properties);
   llvm::Constant *Init = llvm::ConstantStruct::get(Values);
 
-  llvm::GlobalVariable *GV = 
-    CreateMetadataVar(Name, Init, 
-                      (ObjCABI == 2) ? "__DATA, __objc_const" : 
+  llvm::GlobalVariable *GV =
+    CreateMetadataVar(Name, Init,
+                      (ObjCABI == 2) ? "__DATA, __objc_const" :
                       "__OBJC,__property,regular,no_dead_strip",
-                      (ObjCABI == 2) ? 8 : 4, 
+                      (ObjCABI == 2) ? 8 : 4,
                       true);
   return llvm::ConstantExpr::getBitCast(GV, ObjCTypes.PropertyListPtrTy);
 }
 
 /*
   struct objc_method_description_list {
-    int count;
-    struct objc_method_description list[];
+  int count;
+  struct objc_method_description list[];
   };
 */
 llvm::Constant *
 CGObjCMac::GetMethodDescriptionConstant(const ObjCMethodDecl *MD) {
   std::vector<llvm::Constant*> Desc(2);
   Desc[0] =
-          llvm::ConstantExpr::getBitCast(GetMethodVarName(MD->getSelector()),
-                                           ObjCTypes.SelectorPtrTy);
+    llvm::ConstantExpr::getBitCast(GetMethodVarName(MD->getSelector()),
+                                   ObjCTypes.SelectorPtrTy);
   Desc[1] = GetMethodVarType(MD);
   return llvm::ConstantStruct::get(ObjCTypes.MethodDescriptionTy,
                                    Desc);
@@ -1852,27 +1852,27 @@
 
   std::vector<llvm::Constant*> Values(2);
   Values[0] = llvm::ConstantInt::get(ObjCTypes.IntTy, Methods.size());
-  llvm::ArrayType *AT = llvm::ArrayType::get(ObjCTypes.MethodDescriptionTy, 
+  llvm::ArrayType *AT = llvm::ArrayType::get(ObjCTypes.MethodDescriptionTy,
                                              Methods.size());
   Values[1] = llvm::ConstantArray::get(AT, Methods);
   llvm::Constant *Init = llvm::ConstantStruct::get(Values);
 
   llvm::GlobalVariable *GV = CreateMetadataVar(Name, Init, Section, 4, true);
-  return llvm::ConstantExpr::getBitCast(GV, 
+  return llvm::ConstantExpr::getBitCast(GV,
                                         ObjCTypes.MethodDescriptionListPtrTy);
 }
 
 /*
   struct _objc_category {
-    char *category_name;
-    char *class_name;
-    struct _objc_method_list *instance_methods;
-    struct _objc_method_list *class_methods;
-    struct _objc_protocol_list *protocols;
-    uint32_t size; // <rdar://4585769>
-    struct _objc_property_list *instance_properties;
+  char *category_name;
+  char *class_name;
+  struct _objc_method_list *instance_methods;
+  struct _objc_method_list *class_methods;
+  struct _objc_protocol_list *protocols;
+  uint32_t size; // <rdar://4585769>
+  struct _objc_property_list *instance_properties;
   };
- */
+*/
 void CGObjCMac::GenerateCategory(const ObjCCategoryImplDecl *OCD) {
   unsigned Size = CGM.getTargetData().getTypeAllocSize(ObjCTypes.CategoryTy);
 
@@ -1881,18 +1881,18 @@
   // w/o an @interface case. Sema should just create one for us as it does for
   // @implementation so everyone else can live life under a clear blue sky.
   const ObjCInterfaceDecl *Interface = OCD->getClassInterface();
-  const ObjCCategoryDecl *Category = 
+  const ObjCCategoryDecl *Category =
     Interface->FindCategoryDeclaration(OCD->getIdentifier());
   std::string ExtName(Interface->getNameAsString() + "_" +
                       OCD->getNameAsString());
 
   std::vector<llvm::Constant*> InstanceMethods, ClassMethods;
-  for (ObjCCategoryImplDecl::instmeth_iterator 
+  for (ObjCCategoryImplDecl::instmeth_iterator
          i = OCD->instmeth_begin(), e = OCD->instmeth_end(); i != e; ++i) {
     // Instance methods should always be defined.
     InstanceMethods.push_back(GetMethodConstant(*i));
   }
-  for (ObjCCategoryImplDecl::classmeth_iterator 
+  for (ObjCCategoryImplDecl::classmeth_iterator
          i = OCD->classmeth_begin(), e = OCD->classmeth_end(); i != e; ++i) {
     // Class methods should always be defined.
     ClassMethods.push_back(GetMethodConstant(*i));
@@ -1902,17 +1902,17 @@
   Values[0] = GetClassName(OCD->getIdentifier());
   Values[1] = GetClassName(Interface->getIdentifier());
   LazySymbols.insert(Interface->getIdentifier());
-  Values[2] = 
-    EmitMethodList(std::string("\01L_OBJC_CATEGORY_INSTANCE_METHODS_") + 
+  Values[2] =
+    EmitMethodList(std::string("\01L_OBJC_CATEGORY_INSTANCE_METHODS_") +
                    ExtName,
                    "__OBJC,__cat_inst_meth,regular,no_dead_strip",
                    InstanceMethods);
-  Values[3] = 
+  Values[3] =
     EmitMethodList(std::string("\01L_OBJC_CATEGORY_CLASS_METHODS_") + ExtName,
                    "__OBJC,__cat_cls_meth,regular,no_dead_strip",
                    ClassMethods);
   if (Category) {
-    Values[4] = 
+    Values[4] =
       EmitProtocolList(std::string("\01L_OBJC_CATEGORY_PROTOCOLS_") + ExtName,
                        Category->protocol_begin(),
                        Category->protocol_end());
@@ -1923,16 +1923,16 @@
 
   // If there is no category @interface then there can be no properties.
   if (Category) {
-    Values[6] = EmitPropertyList(std::string("\01l_OBJC_$_PROP_LIST_") + ExtName,
+    Values[6] = EmitPropertyList(std::string("\01l_OBJC_$_PROP_LIST_")+ExtName,
                                  OCD, Category, ObjCTypes);
   } else {
     Values[6] = llvm::Constant::getNullValue(ObjCTypes.PropertyListPtrTy);
   }
-  
+
   llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.CategoryTy,
                                                    Values);
 
-  llvm::GlobalVariable *GV = 
+  llvm::GlobalVariable *GV =
     CreateMetadataVar(std::string("\01L_OBJC_CATEGORY_")+ExtName, Init,
                       "__OBJC,__category,regular,no_dead_strip",
                       4, true);
@@ -1952,36 +1952,36 @@
 
 /*
   struct _objc_class {
-    Class isa;
-    Class super_class;
-    const char *name;
-    long version;
-    long info;
-    long instance_size;
-    struct _objc_ivar_list *ivars;
-    struct _objc_method_list *methods;
-    struct _objc_cache *cache;
-    struct _objc_protocol_list *protocols;
-    // Objective-C 1.0 extensions (<rdr://4585769>)
-    const char *ivar_layout;
-    struct _objc_class_ext *ext;
+  Class isa;
+  Class super_class;
+  const char *name;
+  long version;
+  long info;
+  long instance_size;
+  struct _objc_ivar_list *ivars;
+  struct _objc_method_list *methods;
+  struct _objc_cache *cache;
+  struct _objc_protocol_list *protocols;
+  // Objective-C 1.0 extensions (<rdr://4585769>)
+  const char *ivar_layout;
+  struct _objc_class_ext *ext;
   };
 
   See EmitClassExtension();
- */
+*/
 void CGObjCMac::GenerateClass(const ObjCImplementationDecl *ID) {
   DefinedSymbols.insert(ID->getIdentifier());
 
   std::string ClassName = ID->getNameAsString();
   // FIXME: Gross
-  ObjCInterfaceDecl *Interface = 
+  ObjCInterfaceDecl *Interface =
     const_cast<ObjCInterfaceDecl*>(ID->getClassInterface());
-  llvm::Constant *Protocols = 
+  llvm::Constant *Protocols =
     EmitProtocolList("\01L_OBJC_CLASS_PROTOCOLS_" + ID->getNameAsString(),
                      Interface->protocol_begin(),
                      Interface->protocol_end());
   unsigned Flags = eClassFlags_Factory;
-  unsigned Size = 
+  unsigned Size =
     CGM.getContext().getASTObjCImplementationLayout(ID).getSize() / 8;
 
   // FIXME: Set CXX-structors flag.
@@ -1989,18 +1989,18 @@
     Flags |= eClassFlags_Hidden;
 
   std::vector<llvm::Constant*> InstanceMethods, ClassMethods;
-  for (ObjCImplementationDecl::instmeth_iterator 
+  for (ObjCImplementationDecl::instmeth_iterator
          i = ID->instmeth_begin(), e = ID->instmeth_end(); i != e; ++i) {
     // Instance methods should always be defined.
     InstanceMethods.push_back(GetMethodConstant(*i));
   }
-  for (ObjCImplementationDecl::classmeth_iterator 
+  for (ObjCImplementationDecl::classmeth_iterator
          i = ID->classmeth_begin(), e = ID->classmeth_end(); i != e; ++i) {
     // Class methods should always be defined.
     ClassMethods.push_back(GetMethodConstant(*i));
   }
 
-  for (ObjCImplementationDecl::propimpl_iterator 
+  for (ObjCImplementationDecl::propimpl_iterator
          i = ID->propimpl_begin(), e = ID->propimpl_end(); i != e; ++i) {
     ObjCPropertyImplDecl *PID = *i;
 
@@ -2022,7 +2022,7 @@
     // Record a reference to the super class.
     LazySymbols.insert(Super->getIdentifier());
 
-    Values[ 1] = 
+    Values[ 1] =
       llvm::ConstantExpr::getBitCast(GetClassName(Super->getIdentifier()),
                                      ObjCTypes.ClassPtrTy);
   } else {
@@ -2034,19 +2034,19 @@
   Values[ 4] = llvm::ConstantInt::get(ObjCTypes.LongTy, Flags);
   Values[ 5] = llvm::ConstantInt::get(ObjCTypes.LongTy, Size);
   Values[ 6] = EmitIvarList(ID, false);
-  Values[ 7] = 
+  Values[ 7] =
     EmitMethodList("\01L_OBJC_INSTANCE_METHODS_" + ID->getNameAsString(),
                    "__OBJC,__inst_meth,regular,no_dead_strip",
                    InstanceMethods);
   // cache is always NULL.
   Values[ 8] = llvm::Constant::getNullValue(ObjCTypes.CachePtrTy);
   Values[ 9] = Protocols;
-  Values[10] = BuildIvarLayout(ID, true); 
+  Values[10] = BuildIvarLayout(ID, true);
   Values[11] = EmitClassExtension(ID);
   llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.ClassTy,
                                                    Values);
 
-  llvm::GlobalVariable *GV = 
+  llvm::GlobalVariable *GV =
     CreateMetadataVar(std::string("\01L_OBJC_CLASS_")+ClassName, Init,
                       "__OBJC,__class,regular,no_dead_strip",
                       4, true);
@@ -2061,20 +2061,20 @@
 
   if (CGM.getDeclVisibilityMode(ID->getClassInterface()) == LangOptions::Hidden)
     Flags |= eClassFlags_Hidden;
- 
+
   std::vector<llvm::Constant*> Values(12);
   // The isa for the metaclass is the root of the hierarchy.
   const ObjCInterfaceDecl *Root = ID->getClassInterface();
   while (const ObjCInterfaceDecl *Super = Root->getSuperClass())
     Root = Super;
-  Values[ 0] = 
+  Values[ 0] =
     llvm::ConstantExpr::getBitCast(GetClassName(Root->getIdentifier()),
                                    ObjCTypes.ClassPtrTy);
   // The super class for the metaclass is emitted as the name of the
   // super class. The runtime fixes this up to point to the
   // *metaclass* for the super class.
   if (ObjCInterfaceDecl *Super = ID->getClassInterface()->getSuperClass()) {
-    Values[ 1] = 
+    Values[ 1] =
       llvm::ConstantExpr::getBitCast(GetClassName(Super->getIdentifier()),
                                      ObjCTypes.ClassPtrTy);
   } else {
@@ -2086,7 +2086,7 @@
   Values[ 4] = llvm::ConstantInt::get(ObjCTypes.LongTy, Flags);
   Values[ 5] = llvm::ConstantInt::get(ObjCTypes.LongTy, Size);
   Values[ 6] = EmitIvarList(ID, true);
-  Values[ 7] = 
+  Values[ 7] =
     EmitMethodList("\01L_OBJC_CLASS_METHODS_" + ID->getNameAsString(),
                    "__OBJC,__cls_meth,regular,no_dead_strip",
                    Methods);
@@ -2122,7 +2122,7 @@
   return GV;
 }
 
-llvm::Constant *CGObjCMac::EmitMetaClassRef(const ObjCInterfaceDecl *ID) {  
+llvm::Constant *CGObjCMac::EmitMetaClassRef(const ObjCInterfaceDecl *ID) {
   std::string Name = "\01L_OBJC_METACLASS_" + ID->getNameAsString();
 
   // FIXME: Should we look these up somewhere other than the module. Its a bit
@@ -2133,7 +2133,8 @@
   // Check for an existing forward reference.
   // Previously, metaclass with internal linkage may have been defined.
   // pass 'true' as 2nd argument so it is returned.
-  if (llvm::GlobalVariable *GV = CGM.getModule().getGlobalVariable(Name, true)) {
+  if (llvm::GlobalVariable *GV = CGM.getModule().getGlobalVariable(Name,
+                                                                   true)) {
     assert(GV->getType()->getElementType() == ObjCTypes.ClassTy &&
            "Forward metaclass reference has incorrect type.");
     return GV;
@@ -2149,14 +2150,14 @@
 
 /*
   struct objc_class_ext {
-    uint32_t size;
-    const char *weak_ivar_layout;
-    struct _objc_property_list *properties;
+  uint32_t size;
+  const char *weak_ivar_layout;
+  struct _objc_property_list *properties;
   };
 */
 llvm::Constant *
 CGObjCMac::EmitClassExtension(const ObjCImplementationDecl *ID) {
-  uint64_t Size = 
+  uint64_t Size =
     CGM.getTargetData().getTypeAllocSize(ObjCTypes.ClassExtensionTy);
 
   std::vector<llvm::Constant*> Values(3);
@@ -2169,25 +2170,25 @@
   if (Values[1]->isNullValue() && Values[2]->isNullValue())
     return llvm::Constant::getNullValue(ObjCTypes.ClassExtensionPtrTy);
 
-  llvm::Constant *Init = 
+  llvm::Constant *Init =
     llvm::ConstantStruct::get(ObjCTypes.ClassExtensionTy, Values);
   return CreateMetadataVar("\01L_OBJC_CLASSEXT_" + ID->getNameAsString(),
-                           Init, "__OBJC,__class_ext,regular,no_dead_strip", 
+                           Init, "__OBJC,__class_ext,regular,no_dead_strip",
                            4, true);
 }
 
 /*
   struct objc_ivar {
-    char *ivar_name;
-    char *ivar_type;
-    int ivar_offset;
+  char *ivar_name;
+  char *ivar_type;
+  int ivar_offset;
   };
 
   struct objc_ivar_list {
-    int ivar_count;
-    struct objc_ivar list[count];
+  int ivar_count;
+  struct objc_ivar list[count];
   };
- */
+*/
 llvm::Constant *CGObjCMac::EmitIvarList(const ObjCImplementationDecl *ID,
                                         bool ForClass) {
   std::vector<llvm::Constant*> Ivars, Ivar(3);
@@ -2199,21 +2200,21 @@
   // for the class.
   if (ForClass)
     return llvm::Constant::getNullValue(ObjCTypes.IvarListPtrTy);
-  
-  ObjCInterfaceDecl *OID = 
+
+  ObjCInterfaceDecl *OID =
     const_cast<ObjCInterfaceDecl*>(ID->getClassInterface());
-  
+
   llvm::SmallVector<ObjCIvarDecl*, 16> OIvars;
   CGM.getContext().ShallowCollectObjCIvars(OID, OIvars);
-    
+
   for (unsigned i = 0, e = OIvars.size(); i != e; ++i) {
     ObjCIvarDecl *IVD = OIvars[i];
     // Ignore unnamed bit-fields.
     if (!IVD->getDeclName())
-      continue;    
+      continue;
     Ivar[0] = GetMethodVarName(IVD->getIdentifier());
     Ivar[1] = GetMethodVarType(IVD);
-    Ivar[2] = llvm::ConstantInt::get(ObjCTypes.IntTy, 
+    Ivar[2] = llvm::ConstantInt::get(ObjCTypes.IntTy,
                                      ComputeIvarBaseOffset(CGM, OID, IVD));
     Ivars.push_back(llvm::ConstantStruct::get(ObjCTypes.IvarTy, Ivar));
   }
@@ -2232,7 +2233,7 @@
   llvm::GlobalVariable *GV;
   if (ForClass)
     GV = CreateMetadataVar("\01L_OBJC_CLASS_VARIABLES_" + ID->getNameAsString(),
-                           Init, "__OBJC,__class_vars,regular,no_dead_strip", 
+                           Init, "__OBJC,__class_vars,regular,no_dead_strip",
                            4, true);
   else
     GV = CreateMetadataVar("\01L_OBJC_INSTANCE_VARIABLES_"
@@ -2244,15 +2245,15 @@
 
 /*
   struct objc_method {
-    SEL method_name;
-    char *method_types;
-    void *method;
+  SEL method_name;
+  char *method_types;
+  void *method;
   };
-  
+
   struct objc_method_list {
-    struct objc_method_list *obsolete;
-    int count;
-    struct objc_method methods_list[count];
+  struct objc_method_list *obsolete;
+  int count;
+  struct objc_method methods_list[count];
   };
 */
 
@@ -2264,9 +2265,9 @@
   llvm::Function *Fn = MethodDefinitions[MD];
   if (!Fn)
     return 0;
-  
+
   std::vector<llvm::Constant*> Method(3);
-  Method[0] = 
+  Method[0] =
     llvm::ConstantExpr::getBitCast(GetMethodVarName(MD->getSelector()),
                                    ObjCTypes.SelectorPtrTy);
   Method[1] = GetMethodVarType(MD);
@@ -2295,14 +2296,14 @@
 }
 
 llvm::Function *CGObjCCommonMac::GenerateMethod(const ObjCMethodDecl *OMD,
-                                                const ObjCContainerDecl *CD) { 
+                                                const ObjCContainerDecl *CD) {
   std::string Name;
   GetNameForMethod(OMD, CD, Name);
 
   CodeGenTypes &Types = CGM.getTypes();
   const llvm::FunctionType *MethodTy =
     Types.GetFunctionType(Types.getFunctionInfo(OMD), OMD->isVariadic());
-  llvm::Function *Method = 
+  llvm::Function *Method =
     llvm::Function::Create(MethodTy,
                            llvm::GlobalValue::InternalLinkage,
                            Name,
@@ -2319,7 +2320,7 @@
                                    unsigned Align,
                                    bool AddToUsed) {
   const llvm::Type *Ty = Init->getType();
-  llvm::GlobalVariable *GV = 
+  llvm::GlobalVariable *GV =
     new llvm::GlobalVariable(CGM.getModule(), Ty, false,
                              llvm::GlobalValue::InternalLinkage, Init, Name);
   if (Section)
@@ -2331,7 +2332,7 @@
   return GV;
 }
 
-llvm::Function *CGObjCMac::ModuleInitFunction() { 
+llvm::Function *CGObjCMac::ModuleInitFunction() {
   // Abuse this interface function as a place to finalize.
   FinishModule();
   return NULL;
@@ -2349,92 +2350,92 @@
   return ObjCTypes.getEnumerationMutationFn();
 }
 
-/* 
+/*
 
-Objective-C setjmp-longjmp (sjlj) Exception Handling
---
+  Objective-C setjmp-longjmp (sjlj) Exception Handling
+  --
 
-The basic framework for a @try-catch-finally is as follows:
-{
+  The basic framework for a @try-catch-finally is as follows:
+  {
   objc_exception_data d;
   id _rethrow = null;
   bool _call_try_exit = true;
- 
+
   objc_exception_try_enter(&d);
   if (!setjmp(d.jmp_buf)) {
-    ... try body ... 
+  ... try body ...
   } else {
-    // exception path
-    id _caught = objc_exception_extract(&d);
-    
-    // enter new try scope for handlers
-    if (!setjmp(d.jmp_buf)) {
-      ... match exception and execute catch blocks ...
-      
-      // fell off end, rethrow.
-      _rethrow = _caught;
-      ... jump-through-finally to finally_rethrow ...
-    } else {
-      // exception in catch block
-      _rethrow = objc_exception_extract(&d);
-      _call_try_exit = false;
-      ... jump-through-finally to finally_rethrow ...
-    }
+  // exception path
+  id _caught = objc_exception_extract(&d);
+
+  // enter new try scope for handlers
+  if (!setjmp(d.jmp_buf)) {
+  ... match exception and execute catch blocks ...
+
+  // fell off end, rethrow.
+  _rethrow = _caught;
+  ... jump-through-finally to finally_rethrow ...
+  } else {
+  // exception in catch block
+  _rethrow = objc_exception_extract(&d);
+  _call_try_exit = false;
+  ... jump-through-finally to finally_rethrow ...
+  }
   }
   ... jump-through-finally to finally_end ...
 
-finally:
+  finally:
   if (_call_try_exit)
-    objc_exception_try_exit(&d);
+  objc_exception_try_exit(&d);
 
   ... finally block ....
   ... dispatch to finally destination ...
 
-finally_rethrow:
+  finally_rethrow:
   objc_exception_throw(_rethrow);
 
-finally_end:
-}
+  finally_end:
+  }
+
+  This framework differs slightly from the one gcc uses, in that gcc
+  uses _rethrow to determine if objc_exception_try_exit should be called
+  and if the object should be rethrown. This breaks in the face of
+  throwing nil and introduces unnecessary branches.
+
+  We specialize this framework for a few particular circumstances:
+
+  - If there are no catch blocks, then we avoid emitting the second
+  exception handling context.
+
+  - If there is a catch-all catch block (i.e. @catch(...) or @catch(id
+  e)) we avoid emitting the code to rethrow an uncaught exception.
 
-This framework differs slightly from the one gcc uses, in that gcc
-uses _rethrow to determine if objc_exception_try_exit should be called
-and if the object should be rethrown. This breaks in the face of
-throwing nil and introduces unnecessary branches.
-
-We specialize this framework for a few particular circumstances:
-
- - If there are no catch blocks, then we avoid emitting the second
-   exception handling context.
-
- - If there is a catch-all catch block (i.e. @catch(...) or @catch(id
-   e)) we avoid emitting the code to rethrow an uncaught exception.
-
- - FIXME: If there is no @finally block we can do a few more
-   simplifications.
-
-Rethrows and Jumps-Through-Finally
---
-
-Support for implicit rethrows and jumping through the finally block is
-handled by storing the current exception-handling context in
-ObjCEHStack.
-
-In order to implement proper @finally semantics, we support one basic
-mechanism for jumping through the finally block to an arbitrary
-destination. Constructs which generate exits from a @try or @catch
-block use this mechanism to implement the proper semantics by chaining
-jumps, as necessary.
-
-This mechanism works like the one used for indirect goto: we
-arbitrarily assign an ID to each destination and store the ID for the
-destination in a variable prior to entering the finally block. At the
-end of the finally block we simply create a switch to the proper
-destination.
- 
-Code gen for @synchronized(expr) stmt;
-Effectively generating code for:
-objc_sync_enter(expr);
- at try stmt @finally { objc_sync_exit(expr); }
+  - FIXME: If there is no @finally block we can do a few more
+  simplifications.
+
+  Rethrows and Jumps-Through-Finally
+  --
+
+  Support for implicit rethrows and jumping through the finally block is
+  handled by storing the current exception-handling context in
+  ObjCEHStack.
+
+  In order to implement proper @finally semantics, we support one basic
+  mechanism for jumping through the finally block to an arbitrary
+  destination. Constructs which generate exits from a @try or @catch
+  block use this mechanism to implement the proper semantics by chaining
+  jumps, as necessary.
+
+  This mechanism works like the one used for indirect goto: we
+  arbitrarily assign an ID to each destination and store the ID for the
+  destination in a variable prior to entering the finally block. At the
+  end of the finally block we simply create a switch to the proper
+  destination.
+
+  Code gen for @synchronized(expr) stmt;
+  Effectively generating code for:
+  objc_sync_enter(expr);
+  @try stmt @finally { objc_sync_exit(expr); }
 */
 
 void CGObjCMac::EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
@@ -2446,14 +2447,14 @@
   llvm::BasicBlock *FinallyNoExit = CGF.createBasicBlock("finally.noexit");
   llvm::BasicBlock *FinallyRethrow = CGF.createBasicBlock("finally.throw");
   llvm::BasicBlock *FinallyEnd = CGF.createBasicBlock("finally.end");
-  
+
   // For @synchronized, call objc_sync_enter(sync.expr). The
   // evaluation of the expression must occur before we enter the
   // @synchronized. We can safely avoid a temp here because jumps into
   // @synchronized are illegal & this will dominate uses.
   llvm::Value *SyncArg = 0;
   if (!isTry) {
-    SyncArg = 
+    SyncArg =
       CGF.EmitScalarExpr(cast<ObjCAtSynchronizedStmt>(S).getSynchExpr());
     SyncArg = CGF.Builder.CreateBitCast(SyncArg, ObjCTypes.ObjectPtrTy);
     CGF.Builder.CreateCall(ObjCTypes.getSyncEnterFn(), SyncArg);
@@ -2464,19 +2465,20 @@
   CGF.PushCleanupBlock(FinallyBlock);
 
   CGF.ObjCEHValueStack.push_back(0);
-  
+
   // Allocate memory for the exception data and rethrow pointer.
   llvm::Value *ExceptionData = CGF.CreateTempAlloca(ObjCTypes.ExceptionDataTy,
                                                     "exceptiondata.ptr");
-  llvm::Value *RethrowPtr = CGF.CreateTempAlloca(ObjCTypes.ObjectPtrTy, 
+  llvm::Value *RethrowPtr = CGF.CreateTempAlloca(ObjCTypes.ObjectPtrTy,
                                                  "_rethrow");
   llvm::Value *CallTryExitPtr = CGF.CreateTempAlloca(llvm::Type::Int1Ty,
                                                      "_call_try_exit");
-  CGF.Builder.CreateStore(llvm::ConstantInt::getTrue(VMContext), CallTryExitPtr);
-  
+  CGF.Builder.CreateStore(llvm::ConstantInt::getTrue(VMContext),
+                          CallTryExitPtr);
+
   // Enter a new try block and call setjmp.
   CGF.Builder.CreateCall(ObjCTypes.getExceptionTryEnterFn(), ExceptionData);
-  llvm::Value *JmpBufPtr = CGF.Builder.CreateStructGEP(ExceptionData, 0, 
+  llvm::Value *JmpBufPtr = CGF.Builder.CreateStructGEP(ExceptionData, 0,
                                                        "jmpbufarray");
   JmpBufPtr = CGF.Builder.CreateStructGEP(JmpBufPtr, 0, "tmp");
   llvm::Value *SetJmpResult = CGF.Builder.CreateCall(ObjCTypes.getSetJmpFn(),
@@ -2484,15 +2486,15 @@
 
   llvm::BasicBlock *TryBlock = CGF.createBasicBlock("try");
   llvm::BasicBlock *TryHandler = CGF.createBasicBlock("try.handler");
-  CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(SetJmpResult, "threw"), 
+  CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(SetJmpResult, "threw"),
                            TryHandler, TryBlock);
 
   // Emit the @try block.
   CGF.EmitBlock(TryBlock);
-  CGF.EmitStmt(isTry ? cast<ObjCAtTryStmt>(S).getTryBody() 
-                     : cast<ObjCAtSynchronizedStmt>(S).getSynchBody());
+  CGF.EmitStmt(isTry ? cast<ObjCAtTryStmt>(S).getTryBody()
+               : cast<ObjCAtSynchronizedStmt>(S).getSynchBody());
   CGF.EmitBranchThroughCleanup(FinallyEnd);
-  
+
   // Emit the "exception in @try" block.
   CGF.EmitBlock(TryHandler);
 
@@ -2502,17 +2504,17 @@
     CGF.Builder.CreateCall(ObjCTypes.getExceptionExtractFn(),
                            ExceptionData, "caught");
   CGF.ObjCEHValueStack.back() = Caught;
-  if (!isTry)
-  {
+  if (!isTry) {
     CGF.Builder.CreateStore(Caught, RethrowPtr);
-    CGF.Builder.CreateStore(llvm::ConstantInt::getFalse(VMContext), CallTryExitPtr);
+    CGF.Builder.CreateStore(llvm::ConstantInt::getFalse(VMContext),
+                            CallTryExitPtr);
     CGF.EmitBranchThroughCleanup(FinallyRethrow);
-  } else if (const ObjCAtCatchStmt* CatchStmt = 
-             cast<ObjCAtTryStmt>(S).getCatchStmts()) {    
+  } else if (const ObjCAtCatchStmt* CatchStmt =
+             cast<ObjCAtTryStmt>(S).getCatchStmts()) {
     // Enter a new exception try block (in case a @catch block throws
     // an exception).
     CGF.Builder.CreateCall(ObjCTypes.getExceptionTryEnterFn(), ExceptionData);
-        
+
     llvm::Value *SetJmpResult = CGF.Builder.CreateCall(ObjCTypes.getSetJmpFn(),
                                                        JmpBufPtr, "result");
     llvm::Value *Threw = CGF.Builder.CreateIsNotNull(SetJmpResult, "threw");
@@ -2520,9 +2522,9 @@
     llvm::BasicBlock *CatchBlock = CGF.createBasicBlock("catch");
     llvm::BasicBlock *CatchHandler = CGF.createBasicBlock("catch.handler");
     CGF.Builder.CreateCondBr(Threw, CatchHandler, CatchBlock);
-    
+
     CGF.EmitBlock(CatchBlock);
-        
+
     // Handle catch list. As a special case we check if everything is
     // matched and avoid generating code for falling off the end if
     // so.
@@ -2538,26 +2540,26 @@
         AllMatched = true;
       } else {
         OPT = CatchParam->getType()->getAsObjCObjectPointerType();
-        
-        // catch(id e) always matches. 
+
+        // catch(id e) always matches.
         // FIXME: For the time being we also match id<X>; this should
         // be rejected by Sema instead.
         if (OPT && (OPT->isObjCIdType() || OPT->isObjCQualifiedIdType()))
           AllMatched = true;
       }
-      
-      if (AllMatched) {   
+
+      if (AllMatched) {
         if (CatchParam) {
           CGF.EmitLocalBlockVarDecl(*CatchParam);
           assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?");
           CGF.Builder.CreateStore(Caught, CGF.GetAddrOfLocalVar(CatchParam));
         }
-        
+
         CGF.EmitStmt(CatchStmt->getCatchBody());
         CGF.EmitBranchThroughCleanup(FinallyEnd);
         break;
       }
-      
+
       assert(OPT && "Unexpected non-object pointer type in @catch");
       QualType T = OPT->getPointeeType();
       const ObjCInterfaceType *ObjCType = T->getAsObjCInterfaceType();
@@ -2565,29 +2567,30 @@
 
       // Check if the @catch block matches the exception object.
       llvm::Value *Class = EmitClassRef(CGF.Builder, ObjCType->getDecl());
-      
+
       llvm::Value *Match =
         CGF.Builder.CreateCall2(ObjCTypes.getExceptionMatchFn(),
                                 Class, Caught, "match");
-      
+
       llvm::BasicBlock *MatchedBlock = CGF.createBasicBlock("matched");
-      
-      CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(Match, "matched"), 
+
+      CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(Match, "matched"),
                                MatchedBlock, NextCatchBlock);
-      
+
       // Emit the @catch block.
       CGF.EmitBlock(MatchedBlock);
       CGF.EmitLocalBlockVarDecl(*CatchParam);
       assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?");
 
-      llvm::Value *Tmp = 
-        CGF.Builder.CreateBitCast(Caught, CGF.ConvertType(CatchParam->getType()), 
+      llvm::Value *Tmp =
+        CGF.Builder.CreateBitCast(Caught,
+                                  CGF.ConvertType(CatchParam->getType()),
                                   "tmp");
       CGF.Builder.CreateStore(Tmp, CGF.GetAddrOfLocalVar(CatchParam));
-      
+
       CGF.EmitStmt(CatchStmt->getCatchBody());
       CGF.EmitBranchThroughCleanup(FinallyEnd);
-      
+
       CGF.EmitBlock(NextCatchBlock);
     }
 
@@ -2597,41 +2600,43 @@
       CGF.Builder.CreateStore(Caught, RethrowPtr);
       CGF.EmitBranchThroughCleanup(FinallyRethrow);
     }
-    
+
     // Emit the exception handler for the @catch blocks.
-    CGF.EmitBlock(CatchHandler);    
+    CGF.EmitBlock(CatchHandler);
     CGF.Builder.CreateStore(
-                    CGF.Builder.CreateCall(ObjCTypes.getExceptionExtractFn(),
-                                           ExceptionData), 
-                            RethrowPtr);
-    CGF.Builder.CreateStore(llvm::ConstantInt::getFalse(VMContext), CallTryExitPtr);
+      CGF.Builder.CreateCall(ObjCTypes.getExceptionExtractFn(),
+                             ExceptionData),
+      RethrowPtr);
+    CGF.Builder.CreateStore(llvm::ConstantInt::getFalse(VMContext),
+                            CallTryExitPtr);
     CGF.EmitBranchThroughCleanup(FinallyRethrow);
   } else {
     CGF.Builder.CreateStore(Caught, RethrowPtr);
-    CGF.Builder.CreateStore(llvm::ConstantInt::getFalse(VMContext), CallTryExitPtr);
+    CGF.Builder.CreateStore(llvm::ConstantInt::getFalse(VMContext),
+                            CallTryExitPtr);
     CGF.EmitBranchThroughCleanup(FinallyRethrow);
   }
-  
+
   // Pop the exception-handling stack entry. It is important to do
   // this now, because the code in the @finally block is not in this
   // context.
   CodeGenFunction::CleanupBlockInfo Info = CGF.PopCleanupBlock();
 
   CGF.ObjCEHValueStack.pop_back();
-  
+
   // Emit the @finally block.
   CGF.EmitBlock(FinallyBlock);
   llvm::Value* CallTryExit = CGF.Builder.CreateLoad(CallTryExitPtr, "tmp");
-  
+
   CGF.Builder.CreateCondBr(CallTryExit, FinallyExit, FinallyNoExit);
-  
+
   CGF.EmitBlock(FinallyExit);
   CGF.Builder.CreateCall(ObjCTypes.getExceptionTryExitFn(), ExceptionData);
 
   CGF.EmitBlock(FinallyNoExit);
   if (isTry) {
-    if (const ObjCAtFinallyStmt* FinallyStmt = 
-          cast<ObjCAtTryStmt>(S).getFinallyStmt())
+    if (const ObjCAtFinallyStmt* FinallyStmt =
+        cast<ObjCAtTryStmt>(S).getFinallyStmt())
       CGF.EmitStmt(FinallyStmt->getFinallyBody());
   } else {
     // Emit objc_sync_exit(expr); as finally's sole statement for
@@ -2644,29 +2649,29 @@
     CGF.EmitBlock(Info.SwitchBlock);
   if (Info.EndBlock)
     CGF.EmitBlock(Info.EndBlock);
-  
+
   CGF.EmitBlock(FinallyRethrow);
-  CGF.Builder.CreateCall(ObjCTypes.getExceptionThrowFn(), 
+  CGF.Builder.CreateCall(ObjCTypes.getExceptionThrowFn(),
                          CGF.Builder.CreateLoad(RethrowPtr));
   CGF.Builder.CreateUnreachable();
-  
+
   CGF.EmitBlock(FinallyEnd);
 }
 
 void CGObjCMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF,
                               const ObjCAtThrowStmt &S) {
   llvm::Value *ExceptionAsObject;
-  
+
   if (const Expr *ThrowExpr = S.getThrowExpr()) {
     llvm::Value *Exception = CGF.EmitScalarExpr(ThrowExpr);
-    ExceptionAsObject = 
+    ExceptionAsObject =
       CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy, "tmp");
   } else {
-    assert((!CGF.ObjCEHValueStack.empty() && CGF.ObjCEHValueStack.back()) && 
+    assert((!CGF.ObjCEHValueStack.empty() && CGF.ObjCEHValueStack.back()) &&
            "Unexpected rethrow outside @catch block.");
     ExceptionAsObject = CGF.ObjCEHValueStack.back();
   }
-  
+
   CGF.Builder.CreateCall(ObjCTypes.getExceptionThrowFn(), ExceptionAsObject);
   CGF.Builder.CreateUnreachable();
 
@@ -2681,8 +2686,9 @@
                                           llvm::Value *AddrWeakObj)
 {
   const llvm::Type* DestTy =
-      cast<llvm::PointerType>(AddrWeakObj->getType())->getElementType();
-  AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj, ObjCTypes.PtrObjectPtrTy); 
+    cast<llvm::PointerType>(AddrWeakObj->getType())->getElementType();
+  AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj,
+                                          ObjCTypes.PtrObjectPtrTy);
   llvm::Value *read_weak = CGF.Builder.CreateCall(ObjCTypes.getGcReadWeakFn(),
                                                   AddrWeakObj, "weakread");
   read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy);
@@ -2700,7 +2706,7 @@
     unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
     assert(Size <= 8 && "does not support size > 8");
     src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
-    : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
+      : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
     src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
   }
   src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
@@ -2721,7 +2727,7 @@
     unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
     assert(Size <= 8 && "does not support size > 8");
     src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
-    : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
+      : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
     src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
   }
   src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
@@ -2742,7 +2748,7 @@
     unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
     assert(Size <= 8 && "does not support size > 8");
     src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
-    : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
+      : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
     src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
   }
   src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
@@ -2763,7 +2769,7 @@
     unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
     assert(Size <= 8 && "does not support size > 8");
     src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
-                      : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
+      : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
     src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
   }
   src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
@@ -2774,9 +2780,9 @@
 }
 
 void CGObjCMac::EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
-                                               llvm::Value *DestPtr, 
-                                               llvm::Value *SrcPtr,
-                                               unsigned long size) {
+                                         llvm::Value *DestPtr,
+                                         llvm::Value *SrcPtr,
+                                         unsigned long size) {
   SrcPtr = CGF.Builder.CreateBitCast(SrcPtr, ObjCTypes.Int8PtrTy);
   DestPtr = CGF.Builder.CreateBitCast(DestPtr, ObjCTypes.Int8PtrTy);
   llvm::Value *N = llvm::ConstantInt::get(ObjCTypes.LongTy, size);
@@ -2802,8 +2808,8 @@
                                        const ObjCIvarDecl *Ivar) {
   uint64_t Offset = ComputeIvarBaseOffset(CGM, Interface, Ivar);
   return llvm::ConstantInt::get(
-                            CGM.getTypes().ConvertType(CGM.getContext().LongTy),
-                            Offset);
+    CGM.getTypes().ConvertType(CGM.getContext().LongTy),
+    Offset);
 }
 
 /* *** Private Interface *** */
@@ -2819,8 +2825,8 @@
 enum ImageInfoFlags {
   eImageInfo_FixAndContinue      = (1 << 0), // FIXME: Not sure what
                                              // this implies.
-  eImageInfo_GarbageCollected    = (1 << 1), 
-  eImageInfo_GCOnly              = (1 << 2),  
+  eImageInfo_GarbageCollected    = (1 << 1),
+  eImageInfo_GCOnly              = (1 << 2),
   eImageInfo_OptimizedByDyld     = (1 << 3), // FIXME: When is this set.
 
   // A flag indicating that the module has no instances of an
@@ -2837,7 +2843,7 @@
     flags |= eImageInfo_GarbageCollected;
   if (CGM.getLangOptions().getGCMode() == LangOptions::GCOnly)
     flags |= eImageInfo_GCOnly;
-  
+
   // We never allow @synthesize of a superclass property.
   flags |= eImageInfo_CorrectedSynthesize;
 
@@ -2846,14 +2852,14 @@
     llvm::ConstantInt::get(llvm::Type::Int32Ty, version),
     llvm::ConstantInt::get(llvm::Type::Int32Ty, flags)
   };
-  llvm::ArrayType *AT = llvm::ArrayType::get(llvm::Type::Int32Ty, 2);  
+  llvm::ArrayType *AT = llvm::ArrayType::get(llvm::Type::Int32Ty, 2);
 
   const char *Section;
   if (ObjCABI == 1)
     Section = "__OBJC, __image_info,regular";
   else
     Section = "__DATA, __objc_imageinfo, regular, no_dead_strip";
-  llvm::GlobalVariable *GV = 
+  llvm::GlobalVariable *GV =
     CreateMetadataVar("\01L_OBJC_IMAGE_INFO",
                       llvm::ConstantArray::get(AT, values, 2),
                       Section,
@@ -2875,14 +2881,14 @@
 
 void CGObjCMac::EmitModuleInfo() {
   uint64_t Size = CGM.getTargetData().getTypeAllocSize(ObjCTypes.ModuleTy);
-  
+
   std::vector<llvm::Constant*> Values(4);
   Values[0] = llvm::ConstantInt::get(ObjCTypes.LongTy, ModuleVersion);
   Values[1] = llvm::ConstantInt::get(ObjCTypes.LongTy, Size);
   // This used to be the filename, now it is unused. <rdr://4327263>
   Values[2] = GetClassName(&CGM.getContext().Idents.get(""));
   Values[3] = EmitModuleSymbols();
-  CreateMetadataVar("\01L_OBJC_MODULES", 
+  CreateMetadataVar("\01L_OBJC_MODULES",
                     llvm::ConstantStruct::get(ObjCTypes.ModuleTy, Values),
                     "__OBJC,__module_info,regular,no_dead_strip",
                     4, true);
@@ -2909,16 +2915,16 @@
     Symbols[i] = llvm::ConstantExpr::getBitCast(DefinedClasses[i],
                                                 ObjCTypes.Int8PtrTy);
   for (unsigned i=0; i<NumCategories; i++)
-    Symbols[NumClasses + i] = 
+    Symbols[NumClasses + i] =
       llvm::ConstantExpr::getBitCast(DefinedCategories[i],
                                      ObjCTypes.Int8PtrTy);
 
-  Values[4] = 
+  Values[4] =
     llvm::ConstantArray::get(llvm::ArrayType::get(ObjCTypes.Int8PtrTy,
                                                   NumClasses + NumCategories),
                              Symbols);
 
-  llvm::Constant *Init = llvm::ConstantStruct::get(Values);  
+  llvm::Constant *Init = llvm::ConstantStruct::get(Values);
 
   llvm::GlobalVariable *GV =
     CreateMetadataVar("\01L_OBJC_SYMBOLS", Init,
@@ -2927,17 +2933,17 @@
   return llvm::ConstantExpr::getBitCast(GV, ObjCTypes.SymtabPtrTy);
 }
 
-llvm::Value *CGObjCMac::EmitClassRef(CGBuilderTy &Builder, 
+llvm::Value *CGObjCMac::EmitClassRef(CGBuilderTy &Builder,
                                      const ObjCInterfaceDecl *ID) {
   LazySymbols.insert(ID->getIdentifier());
 
   llvm::GlobalVariable *&Entry = ClassReferences[ID->getIdentifier()];
-  
+
   if (!Entry) {
-    llvm::Constant *Casted = 
+    llvm::Constant *Casted =
       llvm::ConstantExpr::getBitCast(GetClassName(ID->getIdentifier()),
                                      ObjCTypes.ClassPtrTy);
-    Entry = 
+    Entry =
       CreateMetadataVar("\01L_OBJC_CLASS_REFERENCES_", Casted,
                         "__OBJC,__cls_refs,literal_pointers,no_dead_strip",
                         4, true);
@@ -2948,12 +2954,12 @@
 
 llvm::Value *CGObjCMac::EmitSelector(CGBuilderTy &Builder, Selector Sel) {
   llvm::GlobalVariable *&Entry = SelectorReferences[Sel];
-  
+
   if (!Entry) {
-    llvm::Constant *Casted = 
+    llvm::Constant *Casted =
       llvm::ConstantExpr::getBitCast(GetMethodVarName(Sel),
                                      ObjCTypes.SelectorPtrTy);
-    Entry = 
+    Entry =
       CreateMetadataVar("\01L_OBJC_SELECTOR_REFERENCES_", Casted,
                         "__OBJC,__message_refs,literal_pointers,no_dead_strip",
                         4, true);
@@ -2966,8 +2972,8 @@
   llvm::GlobalVariable *&Entry = ClassNames[Ident];
 
   if (!Entry)
-    Entry = CreateMetadataVar("\01L_OBJC_CLASS_NAME_", 
-                              llvm::ConstantArray::get(Ident->getName()), 
+    Entry = CreateMetadataVar("\01L_OBJC_CLASS_NAME_",
+                              llvm::ConstantArray::get(Ident->getName()),
                               "__TEXT,__cstring,cstring_literals",
                               1, true);
 
@@ -2977,11 +2983,11 @@
 /// GetIvarLayoutName - Returns a unique constant for the given
 /// ivar layout bitmap.
 llvm::Constant *CGObjCCommonMac::GetIvarLayoutName(IdentifierInfo *Ident,
-                                      const ObjCCommonTypesHelper &ObjCTypes) {
+                                       const ObjCCommonTypesHelper &ObjCTypes) {
   return llvm::Constant::getNullValue(ObjCTypes.Int8PtrTy);
 }
 
-static QualType::GCAttrTypes GetGCAttrTypeForType(ASTContext &Ctx, 
+static QualType::GCAttrTypes GetGCAttrTypeForType(ASTContext &Ctx,
                                                   QualType FQT) {
   if (FQT.isObjCGCStrong())
     return QualType::Strong;
@@ -2999,26 +3005,26 @@
 }
 
 void CGObjCCommonMac::BuildAggrIvarRecordLayout(const RecordType *RT,
-                                                unsigned int BytePos, 
+                                                unsigned int BytePos,
                                                 bool ForStrongLayout,
                                                 bool &HasUnion) {
   const RecordDecl *RD = RT->getDecl();
   // FIXME - Use iterator.
   llvm::SmallVector<FieldDecl*, 16> Fields(RD->field_begin(), RD->field_end());
   const llvm::Type *Ty = CGM.getTypes().ConvertType(QualType(RT, 0));
-  const llvm::StructLayout *RecLayout = 
+  const llvm::StructLayout *RecLayout =
     CGM.getTargetData().getStructLayout(cast<llvm::StructType>(Ty));
-  
+
   BuildAggrIvarLayout(0, RecLayout, RD, Fields, BytePos,
                       ForStrongLayout, HasUnion);
 }
 
 void CGObjCCommonMac::BuildAggrIvarLayout(const ObjCImplementationDecl *OI,
-                              const llvm::StructLayout *Layout,
-                              const RecordDecl *RD,
+                             const llvm::StructLayout *Layout,
+                             const RecordDecl *RD,
                              const llvm::SmallVectorImpl<FieldDecl*> &RecFields,
-                              unsigned int BytePos, bool ForStrongLayout,
-                              bool &HasUnion) {
+                             unsigned int BytePos, bool ForStrongLayout,
+                             bool &HasUnion) {
   bool IsUnion = (RD && RD->isUnion());
   uint64_t MaxUnionIvarSize = 0;
   uint64_t MaxSkippedUnionIvarSize = 0;
@@ -3028,7 +3034,7 @@
   uint64_t MaxFieldOffset = 0;
   uint64_t MaxSkippedFieldOffset = 0;
   uint64_t LastBitfieldOffset = 0;
-  
+
   if (RecFields.empty())
     return;
   unsigned WordSizeInBits = CGM.getContext().Target.getPointerWidth(0);
@@ -3041,8 +3047,8 @@
       if (Field->isBitField()) {
         CodeGenTypes::BitFieldInfo Info = CGM.getTypes().getBitFieldInfo(Field);
         FieldOffset = Layout->getElementOffset(Info.FieldNo);
-      } else 
-        FieldOffset = 
+      } else
+        FieldOffset =
           Layout->getElementOffset(CGM.getTypes().getLLVMFieldNo(Field));
     } else
       FieldOffset = ComputeIvarBaseOffset(CGM, OI, cast<ObjCIvarDecl>(Field));
@@ -3060,14 +3066,14 @@
       if (FQT->isUnionType())
         HasUnion = true;
 
-      BuildAggrIvarRecordLayout(FQT->getAs<RecordType>(), 
+      BuildAggrIvarRecordLayout(FQT->getAs<RecordType>(),
                                 BytePos + FieldOffset,
                                 ForStrongLayout, HasUnion);
       continue;
     }
-    
+
     if (const ArrayType *Array = CGM.getContext().getAsArrayType(FQT)) {
-      const ConstantArrayType *CArray = 
+      const ConstantArrayType *CArray =
         dyn_cast_or_null<ConstantArrayType>(Array);
       uint64_t ElCount = CArray->getSize().getZExtValue();
       assert(CArray && "only array with known element size is supported");
@@ -3078,22 +3084,22 @@
         ElCount *= CArray->getSize().getZExtValue();
         FQT = CArray->getElementType();
       }
-        
-      assert(!FQT->isUnionType() && 
+
+      assert(!FQT->isUnionType() &&
              "layout for array of unions not supported");
       if (FQT->isRecordType()) {
         int OldIndex = IvarsInfo.size() - 1;
         int OldSkIndex = SkipIvars.size() -1;
-        
+
         const RecordType *RT = FQT->getAs<RecordType>();
         BuildAggrIvarRecordLayout(RT, BytePos + FieldOffset,
                                   ForStrongLayout, HasUnion);
-                                  
+
         // Replicate layout information for each array element. Note that
         // one element is already done.
         uint64_t ElIx = 1;
-        for (int FirstIndex = IvarsInfo.size() - 1, 
-                 FirstSkIndex = SkipIvars.size() - 1 ;ElIx < ElCount; ElIx++) {
+        for (int FirstIndex = IvarsInfo.size() - 1,
+               FirstSkIndex = SkipIvars.size() - 1 ;ElIx < ElCount; ElIx++) {
           uint64_t Size = CGM.getContext().getTypeSize(RT)/ByteSizeInBits;
           for (int i = OldIndex+1; i <= FirstIndex; ++i)
             IvarsInfo.push_back(GC_IVAR(IvarsInfo[i].ivar_bytepos + Size*ElIx,
@@ -3123,7 +3129,7 @@
         IvarsInfo.push_back(GC_IVAR(BytePos + FieldOffset,
                                     FieldSize / WordSizeInBits));
       }
-    } else if ((ForStrongLayout && 
+    } else if ((ForStrongLayout &&
                 (GCAttr == QualType::GCNone || GCAttr == QualType::Weak))
                || (!ForStrongLayout && GCAttr != QualType::Weak)) {
       if (IsUnion) {
@@ -3150,13 +3156,13 @@
       BitWidth->EvaluateAsInt(CGM.getContext()).getZExtValue();
     GC_IVAR skivar;
     skivar.ivar_bytepos = BytePos + LastBitfieldOffset;
-    skivar.ivar_size = (BitFieldSize / ByteSizeInBits) 
-                         + ((BitFieldSize % ByteSizeInBits) != 0);
-    SkipIvars.push_back(skivar);    
+    skivar.ivar_size = (BitFieldSize / ByteSizeInBits)
+      + ((BitFieldSize % ByteSizeInBits) != 0);
+    SkipIvars.push_back(skivar);
   }
-  
+
   if (MaxField)
-    IvarsInfo.push_back(GC_IVAR(BytePos + MaxFieldOffset, 
+    IvarsInfo.push_back(GC_IVAR(BytePos + MaxFieldOffset,
                                 MaxUnionIvarSize));
   if (MaxSkippedField)
     SkipIvars.push_back(GC_IVAR(BytePos + MaxSkippedFieldOffset,
@@ -3165,60 +3171,60 @@
 
 /// BuildIvarLayout - Builds ivar layout bitmap for the class
 /// implementation for the __strong or __weak case.
-/// The layout map displays which words in ivar list must be skipped 
-/// and which must be scanned by GC (see below). String is built of bytes. 
-/// Each byte is divided up in two nibbles (4-bit each). Left nibble is count 
+/// The layout map displays which words in ivar list must be skipped
+/// and which must be scanned by GC (see below). String is built of bytes.
+/// Each byte is divided up in two nibbles (4-bit each). Left nibble is count
 /// of words to skip and right nibble is count of words to scan. So, each
-/// nibble represents up to 15 workds to skip or scan. Skipping the rest is 
+/// nibble represents up to 15 workds to skip or scan. Skipping the rest is
 /// represented by a 0x00 byte which also ends the string.
 /// 1. when ForStrongLayout is true, following ivars are scanned:
 /// - id, Class
 /// - object *
 /// - __strong anything
-/// 
+///
 /// 2. When ForStrongLayout is false, following ivars are scanned:
 /// - __weak anything
 ///
 llvm::Constant *CGObjCCommonMac::BuildIvarLayout(
-                                      const ObjCImplementationDecl *OMD,
-                                      bool ForStrongLayout) {
+  const ObjCImplementationDecl *OMD,
+  bool ForStrongLayout) {
   bool hasUnion = false;
-  
+
   unsigned int WordsToScan, WordsToSkip;
   const llvm::Type *PtrTy = llvm::PointerType::getUnqual(llvm::Type::Int8Ty);
   if (CGM.getLangOptions().getGCMode() == LangOptions::NonGC)
     return llvm::Constant::getNullValue(PtrTy);
-  
+
   llvm::SmallVector<FieldDecl*, 32> RecFields;
   const ObjCInterfaceDecl *OI = OMD->getClassInterface();
   CGM.getContext().CollectObjCIvars(OI, RecFields);
-  
+
   // Add this implementations synthesized ivars.
   llvm::SmallVector<ObjCIvarDecl*, 16> Ivars;
   CGM.getContext().CollectSynthesizedIvars(OI, Ivars);
   for (unsigned k = 0, e = Ivars.size(); k != e; ++k)
     RecFields.push_back(cast<FieldDecl>(Ivars[k]));
-  
+
   if (RecFields.empty())
     return llvm::Constant::getNullValue(PtrTy);
-  
-  SkipIvars.clear(); 
+
+  SkipIvars.clear();
   IvarsInfo.clear();
-  
+
   BuildAggrIvarLayout(OMD, 0, 0, RecFields, 0, ForStrongLayout, hasUnion);
   if (IvarsInfo.empty())
     return llvm::Constant::getNullValue(PtrTy);
-  
+
   // Sort on byte position in case we encounterred a union nested in
   // the ivar list.
   if (hasUnion && !IvarsInfo.empty())
     std::sort(IvarsInfo.begin(), IvarsInfo.end());
   if (hasUnion && !SkipIvars.empty())
     std::sort(SkipIvars.begin(), SkipIvars.end());
-      
+
   // Build the string of skip/scan nibbles
   llvm::SmallVector<SKIP_SCAN, 32> SkipScanIvars;
-  unsigned int WordSize = 
+  unsigned int WordSize =
     CGM.getTypes().getTargetData().getTypeAllocSize(PtrTy);
   if (IvarsInfo[0].ivar_bytepos == 0) {
     WordsToSkip = 0;
@@ -3228,7 +3234,7 @@
     WordsToScan = IvarsInfo[0].ivar_size;
   }
   for (unsigned int i=1, Last=IvarsInfo.size(); i != Last; i++) {
-    unsigned int TailPrevGCObjC = 
+    unsigned int TailPrevGCObjC =
       IvarsInfo[i-1].ivar_bytepos + IvarsInfo[i-1].ivar_size * WordSize;
     if (IvarsInfo[i].ivar_bytepos == TailPrevGCObjC) {
       // consecutive 'scanned' object pointers.
@@ -3243,7 +3249,7 @@
       SkScan.skip = WordsToSkip;
       SkScan.scan = WordsToScan;
       SkipScanIvars.push_back(SkScan);
-      
+
       // Skip the hole.
       SkScan.skip = (IvarsInfo[i].ivar_bytepos - TailPrevGCObjC) / WordSize;
       SkScan.scan = 0;
@@ -3258,16 +3264,16 @@
     SkScan.scan = WordsToScan;
     SkipScanIvars.push_back(SkScan);
   }
-  
+
   bool BytesSkipped = false;
   if (!SkipIvars.empty()) {
     unsigned int LastIndex = SkipIvars.size()-1;
-    int LastByteSkipped = 
-          SkipIvars[LastIndex].ivar_bytepos + SkipIvars[LastIndex].ivar_size;
+    int LastByteSkipped =
+      SkipIvars[LastIndex].ivar_bytepos + SkipIvars[LastIndex].ivar_size;
     LastIndex = IvarsInfo.size()-1;
-    int LastByteScanned = 
-          IvarsInfo[LastIndex].ivar_bytepos + 
-          IvarsInfo[LastIndex].ivar_size * WordSize;
+    int LastByteScanned =
+      IvarsInfo[LastIndex].ivar_bytepos +
+      IvarsInfo[LastIndex].ivar_size * WordSize;
     BytesSkipped = (LastByteSkipped > LastByteScanned);
     // Compute number of bytes to skip at the tail end of the last ivar scanned.
     if (BytesSkipped) {
@@ -3291,7 +3297,7 @@
       --SkipScan;
     }
   }
-  
+
   // Generate the string.
   std::string BitMap;
   for (int i = 0; i <= SkipScan; i++) {
@@ -3306,7 +3312,7 @@
     // first skip big.
     for (unsigned int ix = 0; ix < skip_big; ix++)
       BitMap += (unsigned char)(0xf0);
-    
+
     // next (skip small, scan)
     if (skip_small) {
       byte = skip_small << 4;
@@ -3331,9 +3337,9 @@
   // null terminate string.
   unsigned char zero = 0;
   BitMap += zero;
-  
+
   if (CGM.getLangOptions().ObjCGCBitmapPrint) {
-    printf("\n%s ivar layout for class '%s': ", 
+    printf("\n%s ivar layout for class '%s': ",
            ForStrongLayout ? "strong" : "weak",
            OMD->getClassInterface()->getNameAsCString());
     const unsigned char *s = (unsigned char*)BitMap.c_str();
@@ -3344,16 +3350,17 @@
         printf("0x%x%s",  s[i], s[i] != 0 ? ", " : "");
     printf("\n");
   }
-  
+
   // if ivar_layout bitmap is all 1 bits (nothing skipped) then use NULL as
   // final layout.
   if (ForStrongLayout && !BytesSkipped)
     return llvm::Constant::getNullValue(PtrTy);
-  llvm::GlobalVariable * Entry = CreateMetadataVar("\01L_OBJC_CLASS_NAME_",
-                                    llvm::ConstantArray::get(BitMap.c_str()),
-                                      "__TEXT,__cstring,cstring_literals",
-                                      1, true);
-    return getConstantGEP(VMContext, Entry, 0, 0);
+  llvm::GlobalVariable * Entry =
+    CreateMetadataVar("\01L_OBJC_CLASS_NAME_",
+                      llvm::ConstantArray::get(BitMap.c_str()),
+                      "__TEXT,__cstring,cstring_literals",
+                      1, true);
+  return getConstantGEP(VMContext, Entry, 0, 0);
 }
 
 llvm::Constant *CGObjCCommonMac::GetMethodVarName(Selector Sel) {
@@ -3361,7 +3368,7 @@
 
   // FIXME: Avoid std::string copying.
   if (!Entry)
-    Entry = CreateMetadataVar("\01L_OBJC_METH_VAR_NAME_", 
+    Entry = CreateMetadataVar("\01L_OBJC_METH_VAR_NAME_",
                               llvm::ConstantArray::get(Sel.getAsString()),
                               "__TEXT,__cstring,cstring_literals",
                               1, true);
@@ -3390,7 +3397,7 @@
                               llvm::ConstantArray::get(TypeStr),
                               "__TEXT,__cstring,cstring_literals",
                               1, true);
-    
+
   return getConstantGEP(VMContext, Entry, 0, 0);
 }
 
@@ -3413,9 +3420,9 @@
 // FIXME: Merge into a single cstring creation function.
 llvm::Constant *CGObjCCommonMac::GetPropertyName(IdentifierInfo *Ident) {
   llvm::GlobalVariable *&Entry = PropertyNames[Ident];
-  
+
   if (!Entry)
-    Entry = CreateMetadataVar("\01L_OBJC_PROP_NAME_ATTR_", 
+    Entry = CreateMetadataVar("\01L_OBJC_PROP_NAME_ATTR_",
                               llvm::ConstantArray::get(Ident->getName()),
                               "__TEXT,__cstring,cstring_literals",
                               1, true);
@@ -3426,14 +3433,14 @@
 // FIXME: Merge into a single cstring creation function.
 // FIXME: This Decl should be more precise.
 llvm::Constant *
-  CGObjCCommonMac::GetPropertyTypeString(const ObjCPropertyDecl *PD,
-                                         const Decl *Container) {
+CGObjCCommonMac::GetPropertyTypeString(const ObjCPropertyDecl *PD,
+                                       const Decl *Container) {
   std::string TypeStr;
   CGM.getContext().getObjCEncodingForPropertyDecl(PD, Container, TypeStr);
   return GetPropertyName(&CGM.getContext().Idents.get(TypeStr));
 }
 
-void CGObjCCommonMac::GetNameForMethod(const ObjCMethodDecl *D, 
+void CGObjCCommonMac::GetNameForMethod(const ObjCMethodDecl *D,
                                        const ObjCContainerDecl *CD,
                                        std::string &NameOut) {
   NameOut = '\01';
@@ -3441,7 +3448,7 @@
   NameOut += '[';
   assert (CD && "Missing container decl in GetNameForMethod");
   NameOut += CD->getNameAsString();
-  if (const ObjCCategoryImplDecl *CID = 
+  if (const ObjCCategoryImplDecl *CID =
       dyn_cast<ObjCCategoryImplDecl>(D->getDeclContext())) {
     NameOut += '(';
     NameOut += CID->getNameAsString();
@@ -3457,7 +3464,7 @@
 
   // Emit the dummy bodies for any protocols which were referenced but
   // never defined.
-  for (llvm::DenseMap<IdentifierInfo*, llvm::GlobalVariable*>::iterator 
+  for (llvm::DenseMap<IdentifierInfo*, llvm::GlobalVariable*>::iterator
          I = Protocols.begin(), e = Protocols.end(); I != e; ++I) {
     if (I->second->hasInitializer())
       continue;
@@ -3480,10 +3487,10 @@
 
   // FIXME: Uh, this isn't particularly portable.
   std::stringstream s;
-  
+
   if (!CGM.getModule().getModuleInlineAsm().empty())
     s << "\n";
-  
+
   // FIXME: This produces non-determinstic output.
   for (std::set<IdentifierInfo*>::iterator I = LazySymbols.begin(),
          e = LazySymbols.end(); I != e; ++I) {
@@ -3493,14 +3500,14 @@
          e = DefinedSymbols.end(); I != e; ++I) {
     s << "\t.objc_class_name_" << (*I)->getName() << "=0\n"
       << "\t.globl .objc_class_name_" << (*I)->getName() << "\n";
-  }  
-  
+  }
+
   CGM.getModule().appendModuleInlineAsm(s.str());
 }
 
-CGObjCNonFragileABIMac::CGObjCNonFragileABIMac(CodeGen::CodeGenModule &cgm) 
+CGObjCNonFragileABIMac::CGObjCNonFragileABIMac(CodeGen::CodeGenModule &cgm)
   : CGObjCCommonMac(cgm),
-  ObjCTypes(cgm)
+    ObjCTypes(cgm)
 {
   ObjCEmptyCacheVar = ObjCEmptyVtableVar = NULL;
   ObjCABI = 2;
@@ -3509,61 +3516,61 @@
 /* *** */
 
 ObjCCommonTypesHelper::ObjCCommonTypesHelper(CodeGen::CodeGenModule &cgm)
-: VMContext(cgm.getLLVMContext()), CGM(cgm)
+  : VMContext(cgm.getLLVMContext()), CGM(cgm)
 {
   CodeGen::CodeGenTypes &Types = CGM.getTypes();
   ASTContext &Ctx = CGM.getContext();
-  
+
   ShortTy = Types.ConvertType(Ctx.ShortTy);
   IntTy = Types.ConvertType(Ctx.IntTy);
   LongTy = Types.ConvertType(Ctx.LongTy);
   LongLongTy = Types.ConvertType(Ctx.LongLongTy);
   Int8PtrTy = llvm::PointerType::getUnqual(llvm::Type::Int8Ty);
-  
+
   ObjectPtrTy = Types.ConvertType(Ctx.getObjCIdType());
   PtrObjectPtrTy = llvm::PointerType::getUnqual(ObjectPtrTy);
   SelectorPtrTy = Types.ConvertType(Ctx.getObjCSelType());
-  
+
   // FIXME: It would be nice to unify this with the opaque type, so that the IR
   // comes out a bit cleaner.
   const llvm::Type *T = Types.ConvertType(Ctx.getObjCProtoType());
   ExternalProtocolPtrTy = llvm::PointerType::getUnqual(T);
-  
+
   // I'm not sure I like this. The implicit coordination is a bit
   // gross. We should solve this in a reasonable fashion because this
   // is a pretty common task (match some runtime data structure with
   // an LLVM data structure).
-  
+
   // FIXME: This is leaked.
   // FIXME: Merge with rewriter code?
-  
+
   // struct _objc_super {
   //   id self;
   //   Class cls;
   // }
   RecordDecl *RD = RecordDecl::Create(Ctx, TagDecl::TK_struct, 0,
                                       SourceLocation(),
-                                      &Ctx.Idents.get("_objc_super"));  
-  RD->addDecl(FieldDecl::Create(Ctx, RD, SourceLocation(), 0, 
-                                     Ctx.getObjCIdType(), 0, false));
+                                      &Ctx.Idents.get("_objc_super"));
+  RD->addDecl(FieldDecl::Create(Ctx, RD, SourceLocation(), 0,
+                                Ctx.getObjCIdType(), 0, false));
   RD->addDecl(FieldDecl::Create(Ctx, RD, SourceLocation(), 0,
-                                     Ctx.getObjCClassType(), 0, false));
+                                Ctx.getObjCClassType(), 0, false));
   RD->completeDefinition(Ctx);
-  
+
   SuperCTy = Ctx.getTagDeclType(RD);
   SuperPtrCTy = Ctx.getPointerType(SuperCTy);
-  
+
   SuperTy = cast<llvm::StructType>(Types.ConvertType(SuperCTy));
-  SuperPtrTy = llvm::PointerType::getUnqual(SuperTy); 
-  
+  SuperPtrTy = llvm::PointerType::getUnqual(SuperTy);
+
   // struct _prop_t {
   //   char *name;
-  //   char *attributes; 
+  //   char *attributes;
   // }
   PropertyTy = llvm::StructType::get(Int8PtrTy, Int8PtrTy, NULL);
-  CGM.getModule().addTypeName("struct._prop_t", 
+  CGM.getModule().addTypeName("struct._prop_t",
                               PropertyTy);
-  
+
   // struct _prop_list_t {
   //   uint32_t entsize;      // sizeof(struct _prop_t)
   //   uint32_t count_of_properties;
@@ -3573,11 +3580,11 @@
                                          IntTy,
                                          llvm::ArrayType::get(PropertyTy, 0),
                                          NULL);
-  CGM.getModule().addTypeName("struct._prop_list_t", 
+  CGM.getModule().addTypeName("struct._prop_list_t",
                               PropertyListTy);
   // struct _prop_list_t *
   PropertyListPtrTy = llvm::PointerType::getUnqual(PropertyListTy);
-  
+
   // struct _objc_method {
   //   SEL _cmd;
   //   char *method_type;
@@ -3588,40 +3595,40 @@
                                    Int8PtrTy,
                                    NULL);
   CGM.getModule().addTypeName("struct._objc_method", MethodTy);
-  
+
   // struct _objc_cache *
   CacheTy = llvm::OpaqueType::get();
   CGM.getModule().addTypeName("struct._objc_cache", CacheTy);
   CachePtrTy = llvm::PointerType::getUnqual(CacheTy);
 }
 
-ObjCTypesHelper::ObjCTypesHelper(CodeGen::CodeGenModule &cgm) 
+ObjCTypesHelper::ObjCTypesHelper(CodeGen::CodeGenModule &cgm)
   : ObjCCommonTypesHelper(cgm)
 {
   // struct _objc_method_description {
   //   SEL name;
   //   char *types;
   // }
-  MethodDescriptionTy = 
+  MethodDescriptionTy =
     llvm::StructType::get(SelectorPtrTy,
                           Int8PtrTy,
                           NULL);
-  CGM.getModule().addTypeName("struct._objc_method_description", 
+  CGM.getModule().addTypeName("struct._objc_method_description",
                               MethodDescriptionTy);
 
   // struct _objc_method_description_list {
   //   int count;
   //   struct _objc_method_description[1];
   // }
-  MethodDescriptionListTy = 
+  MethodDescriptionListTy =
     llvm::StructType::get(IntTy,
                           llvm::ArrayType::get(MethodDescriptionTy, 0),
                           NULL);
-  CGM.getModule().addTypeName("struct._objc_method_description_list", 
+  CGM.getModule().addTypeName("struct._objc_method_description_list",
                               MethodDescriptionListTy);
-  
+
   // struct _objc_method_description_list *
-  MethodDescriptionListPtrTy = 
+  MethodDescriptionListPtrTy =
     llvm::PointerType::getUnqual(MethodDescriptionListTy);
 
   // Protocol description structures
@@ -3632,15 +3639,15 @@
   //   struct _objc_method_description_list *optional_class_methods;
   //   struct _objc_property_list *instance_properties;
   // }
-  ProtocolExtensionTy = 
+  ProtocolExtensionTy =
     llvm::StructType::get(IntTy,
                           MethodDescriptionListPtrTy,
                           MethodDescriptionListPtrTy,
                           PropertyListPtrTy,
                           NULL);
-  CGM.getModule().addTypeName("struct._objc_protocol_extension", 
+  CGM.getModule().addTypeName("struct._objc_protocol_extension",
                               ProtocolExtensionTy);
-  
+
   // struct _objc_protocol_extension *
   ProtocolExtensionPtrTy = llvm::PointerType::getUnqual(ProtocolExtensionTy);
 
@@ -3649,7 +3656,7 @@
   llvm::PATypeHolder ProtocolTyHolder = llvm::OpaqueType::get();
   llvm::PATypeHolder ProtocolListTyHolder = llvm::OpaqueType::get();
 
-  const llvm::Type *T = 
+  const llvm::Type *T =
     llvm::StructType::get(llvm::PointerType::getUnqual(ProtocolListTyHolder),
                           LongTy,
                           llvm::ArrayType::get(ProtocolTyHolder, 0),
@@ -3665,14 +3672,14 @@
   // }
   T = llvm::StructType::get(ProtocolExtensionPtrTy,
                             Int8PtrTy,
-                           llvm::PointerType::getUnqual(ProtocolListTyHolder),
+                            llvm::PointerType::getUnqual(ProtocolListTyHolder),
                             MethodDescriptionListPtrTy,
                             MethodDescriptionListPtrTy,
                             NULL);
   cast<llvm::OpaqueType>(ProtocolTyHolder.get())->refineAbstractTypeTo(T);
 
   ProtocolListTy = cast<llvm::StructType>(ProtocolListTyHolder.get());
-  CGM.getModule().addTypeName("struct._objc_protocol_list", 
+  CGM.getModule().addTypeName("struct._objc_protocol_list",
                               ProtocolListTy);
   // struct _objc_protocol_list *
   ProtocolListPtrTy = llvm::PointerType::getUnqual(ProtocolListTy);
@@ -3688,9 +3695,9 @@
   //   char *ivar_type;
   //   int  ivar_offset;
   // }
-  IvarTy = llvm::StructType::get(Int8PtrTy, 
-                                 Int8PtrTy, 
-                                 IntTy, 
+  IvarTy = llvm::StructType::get(Int8PtrTy,
+                                 Int8PtrTy,
+                                 IntTy,
                                  NULL);
   CGM.getModule().addTypeName("struct._objc_ivar", IvarTy);
 
@@ -3705,7 +3712,7 @@
   MethodListPtrTy = llvm::PointerType::getUnqual(MethodListTy);
 
   // struct _objc_class_extension *
-  ClassExtensionTy = 
+  ClassExtensionTy =
     llvm::StructType::get(IntTy,
                           Int8PtrTy,
                           PropertyListPtrTy,
@@ -3743,7 +3750,7 @@
                             ClassExtensionPtrTy,
                             NULL);
   cast<llvm::OpaqueType>(ClassTyHolder.get())->refineAbstractTypeTo(T);
-  
+
   ClassTy = cast<llvm::StructType>(ClassTyHolder.get());
   CGM.getModule().addTypeName("struct._objc_class", ClassTy);
   ClassPtrTy = llvm::PointerType::getUnqual(ClassTy);
@@ -3790,7 +3797,7 @@
   //   char *name;
   //   struct _objc_symtab* symtab;
   //  }
-  ModuleTy = 
+  ModuleTy =
     llvm::StructType::get(LongTy,
                           LongTy,
                           Int8PtrTy,
@@ -3798,26 +3805,26 @@
                           NULL);
   CGM.getModule().addTypeName("struct._objc_module", ModuleTy);
 
-  
+
   // FIXME: This is the size of the setjmp buffer and should be target
   // specific. 18 is what's used on 32-bit X86.
   uint64_t SetJmpBufferSize = 18;
- 
+
   // Exceptions
   const llvm::Type *StackPtrTy = llvm::ArrayType::get(
-                         llvm::PointerType::getUnqual(llvm::Type::Int8Ty), 4);
-                           
-  ExceptionDataTy = 
-    llvm::StructType::get(llvm::ArrayType::get(llvm::Type::Int32Ty, 
+    llvm::PointerType::getUnqual(llvm::Type::Int8Ty), 4);
+
+  ExceptionDataTy =
+    llvm::StructType::get(llvm::ArrayType::get(llvm::Type::Int32Ty,
                                                SetJmpBufferSize),
                           StackPtrTy, NULL);
-  CGM.getModule().addTypeName("struct._objc_exception_data", 
+  CGM.getModule().addTypeName("struct._objc_exception_data",
                               ExceptionDataTy);
 
 }
 
-ObjCNonFragileABITypesHelper::ObjCNonFragileABITypesHelper(CodeGen::CodeGenModule &cgm) 
-: ObjCCommonTypesHelper(cgm)
+ObjCNonFragileABITypesHelper::ObjCNonFragileABITypesHelper(CodeGen::CodeGenModule &cgm)
+  : ObjCCommonTypesHelper(cgm)
 {
   // struct _method_list_t {
   //   uint32_t entsize;  // sizeof(struct _objc_method)
@@ -3832,7 +3839,7 @@
                               MethodListnfABITy);
   // struct method_list_t *
   MethodListnfABIPtrTy = llvm::PointerType::getUnqual(MethodListnfABITy);
-  
+
   // struct _protocol_t {
   //   id isa;  // NULL
   //   const char * const protocol_name;
@@ -3845,10 +3852,10 @@
   //   const uint32_t size;  // sizeof(struct _protocol_t)
   //   const uint32_t flags;  // = 0
   // }
-  
+
   // Holder for struct _protocol_list_t *
   llvm::PATypeHolder ProtocolListTyHolder = llvm::OpaqueType::get();
-  
+
   ProtocolnfABITy = llvm::StructType::get(ObjectPtrTy,
                                           Int8PtrTy,
                                           llvm::PointerType::getUnqual(
@@ -3866,7 +3873,7 @@
 
   // struct _protocol_t*
   ProtocolnfABIPtrTy = llvm::PointerType::getUnqual(ProtocolnfABITy);
-  
+
   // struct _protocol_list_t {
   //   long protocol_count;   // Note, this is 32/64 bit
   //   struct _protocol_t *[protocol_count];
@@ -3878,11 +3885,11 @@
   CGM.getModule().addTypeName("struct._objc_protocol_list",
                               ProtocolListnfABITy);
   cast<llvm::OpaqueType>(ProtocolListTyHolder.get())->refineAbstractTypeTo(
-                                                      ProtocolListnfABITy);
-  
+    ProtocolListnfABITy);
+
   // struct _objc_protocol_list*
   ProtocolListnfABIPtrTy = llvm::PointerType::getUnqual(ProtocolListnfABITy);
-  
+
   // struct _ivar_t {
   //   unsigned long int *offset;  // pointer to ivar offset location
   //   char *name;
@@ -3897,7 +3904,7 @@
                                       IntTy,
                                       NULL);
   CGM.getModule().addTypeName("struct._ivar_t", IvarnfABITy);
-                                      
+
   // struct _ivar_list_t {
   //   uint32 entsize;  // sizeof(struct _ivar_t)
   //   uint32 count;
@@ -3906,12 +3913,12 @@
   IvarListnfABITy = llvm::StructType::get(IntTy,
                                           IntTy,
                                           llvm::ArrayType::get(
-                                                               IvarnfABITy, 0),
+                                            IvarnfABITy, 0),
                                           NULL);
   CGM.getModule().addTypeName("struct._ivar_list_t", IvarListnfABITy);
-  
+
   IvarListnfABIPtrTy = llvm::PointerType::getUnqual(IvarListnfABITy);
-  
+
   // struct _class_ro_t {
   //   uint32_t const flags;
   //   uint32_t const instanceStart;
@@ -3925,7 +3932,7 @@
   //   const uint8_t * const weakIvarLayout;
   //   const struct _prop_list_t * const properties;
   // }
-  
+
   // FIXME. Add 'reserved' field in 64bit abi mode!
   ClassRonfABITy = llvm::StructType::get(IntTy,
                                          IntTy,
@@ -3940,14 +3947,14 @@
                                          NULL);
   CGM.getModule().addTypeName("struct._class_ro_t",
                               ClassRonfABITy);
-  
+
   // ImpnfABITy - LLVM for id (*)(id, SEL, ...)
   std::vector<const llvm::Type*> Params;
   Params.push_back(ObjectPtrTy);
   Params.push_back(SelectorPtrTy);
   ImpnfABITy = llvm::PointerType::getUnqual(
-                      llvm::FunctionType::get(ObjectPtrTy, Params, false));
-  
+    llvm::FunctionType::get(ObjectPtrTy, Params, false));
+
   // struct _class_t {
   //   struct _class_t *isa;
   //   struct _class_t * const superclass;
@@ -3955,23 +3962,23 @@
   //   IMP *vtable;
   //   struct class_ro_t *ro;
   // }
-  
+
   llvm::PATypeHolder ClassTyHolder = llvm::OpaqueType::get();
   ClassnfABITy =
     llvm::StructType::get(llvm::PointerType::getUnqual(ClassTyHolder),
-                            llvm::PointerType::getUnqual(ClassTyHolder),
-                            CachePtrTy,
-                            llvm::PointerType::getUnqual(ImpnfABITy),
-                            llvm::PointerType::getUnqual(ClassRonfABITy),
-                            NULL);
+                          llvm::PointerType::getUnqual(ClassTyHolder),
+                          CachePtrTy,
+                          llvm::PointerType::getUnqual(ImpnfABITy),
+                          llvm::PointerType::getUnqual(ClassRonfABITy),
+                          NULL);
   CGM.getModule().addTypeName("struct._class_t", ClassnfABITy);
 
   cast<llvm::OpaqueType>(ClassTyHolder.get())->refineAbstractTypeTo(
-                                                                ClassnfABITy);
-  
+    ClassnfABITy);
+
   // LLVM for struct _class_t *
   ClassnfABIPtrTy = llvm::PointerType::getUnqual(ClassnfABITy);
-  
+
   // struct _category_t {
   //   const char * const name;
   //   struct _class_t *const cls;
@@ -3988,34 +3995,34 @@
                                           PropertyListPtrTy,
                                           NULL);
   CGM.getModule().addTypeName("struct._category_t", CategorynfABITy);
-  
+
   // New types for nonfragile abi messaging.
   CodeGen::CodeGenTypes &Types = CGM.getTypes();
   ASTContext &Ctx = CGM.getContext();
-  
+
   // MessageRefTy - LLVM for:
   // struct _message_ref_t {
   //   IMP messenger;
   //   SEL name;
   // };
-  
+
   // First the clang type for struct _message_ref_t
   RecordDecl *RD = RecordDecl::Create(Ctx, TagDecl::TK_struct, 0,
                                       SourceLocation(),
                                       &Ctx.Idents.get("_message_ref_t"));
   RD->addDecl(FieldDecl::Create(Ctx, RD, SourceLocation(), 0,
-                                     Ctx.VoidPtrTy, 0, false));
+                                Ctx.VoidPtrTy, 0, false));
   RD->addDecl(FieldDecl::Create(Ctx, RD, SourceLocation(), 0,
-                                     Ctx.getObjCSelType(), 0, false));
+                                Ctx.getObjCSelType(), 0, false));
   RD->completeDefinition(Ctx);
-  
+
   MessageRefCTy = Ctx.getTagDeclType(RD);
   MessageRefCPtrTy = Ctx.getPointerType(MessageRefCTy);
   MessageRefTy = cast<llvm::StructType>(Types.ConvertType(MessageRefCTy));
-  
+
   // MessageRefPtrTy - LLVM for struct _message_ref_t*
   MessageRefPtrTy = llvm::PointerType::getUnqual(MessageRefTy);
-  
+
   // SuperMessageRefTy - LLVM for:
   // struct _super_message_ref_t {
   //   SUPER_IMP messenger;
@@ -4025,10 +4032,10 @@
                                             SelectorPtrTy,
                                             NULL);
   CGM.getModule().addTypeName("struct._super_message_ref_t", SuperMessageRefTy);
-  
+
   // SuperMessageRefPtrTy - LLVM for struct _super_message_ref_t*
-  SuperMessageRefPtrTy = llvm::PointerType::getUnqual(SuperMessageRefTy);  
-  
+  SuperMessageRefPtrTy = llvm::PointerType::getUnqual(SuperMessageRefTy);
+
 
   // struct objc_typeinfo {
   //   const void** vtable; // objc_ehtype_vtable + 2
@@ -4043,31 +4050,31 @@
   EHTypePtrTy = llvm::PointerType::getUnqual(EHTypeTy);
 }
 
-llvm::Function *CGObjCNonFragileABIMac::ModuleInitFunction() { 
+llvm::Function *CGObjCNonFragileABIMac::ModuleInitFunction() {
   FinishNonFragileABIModule();
-  
+
   return NULL;
 }
 
-void CGObjCNonFragileABIMac::AddModuleClassList(const 
-                                                std::vector<llvm::GlobalValue*> 
-                                                  &Container,
+void CGObjCNonFragileABIMac::AddModuleClassList(const
+                                                std::vector<llvm::GlobalValue*>
+                                                &Container,
                                                 const char *SymbolName,
                                                 const char *SectionName) {
   unsigned NumClasses = Container.size();
-  
+
   if (!NumClasses)
     return;
-  
+
   std::vector<llvm::Constant*> Symbols(NumClasses);
   for (unsigned i=0; i<NumClasses; i++)
     Symbols[i] = llvm::ConstantExpr::getBitCast(Container[i],
                                                 ObjCTypes.Int8PtrTy);
-  llvm::Constant* Init = 
+  llvm::Constant* Init =
     llvm::ConstantArray::get(llvm::ArrayType::get(ObjCTypes.Int8PtrTy,
                                                   NumClasses),
                              Symbols);
-  
+
   llvm::GlobalVariable *GV =
     new llvm::GlobalVariable(CGM.getModule(), Init->getType(), false,
                              llvm::GlobalValue::InternalLinkage,
@@ -4077,28 +4084,28 @@
   GV->setSection(SectionName);
   CGM.AddUsedGlobal(GV);
 }
-                                                
+
 void CGObjCNonFragileABIMac::FinishNonFragileABIModule() {
   // nonfragile abi has no module definition.
-  
+
   // Build list of all implemented class addresses in array
   // L_OBJC_LABEL_CLASS_$.
-  AddModuleClassList(DefinedClasses, 
+  AddModuleClassList(DefinedClasses,
                      "\01L_OBJC_LABEL_CLASS_$",
                      "__DATA, __objc_classlist, regular, no_dead_strip");
-  AddModuleClassList(DefinedNonLazyClasses, 
+  AddModuleClassList(DefinedNonLazyClasses,
                      "\01L_OBJC_LABEL_NONLAZY_CLASS_$",
                      "__DATA, __objc_nlclslist, regular, no_dead_strip");
-  
+
   // Build list of all implemented category addresses in array
   // L_OBJC_LABEL_CATEGORY_$.
-  AddModuleClassList(DefinedCategories, 
+  AddModuleClassList(DefinedCategories,
                      "\01L_OBJC_LABEL_CATEGORY_$",
                      "__DATA, __objc_catlist, regular, no_dead_strip");
-  AddModuleClassList(DefinedNonLazyCategories, 
+  AddModuleClassList(DefinedNonLazyCategories,
                      "\01L_OBJC_LABEL_NONLAZY_CATEGORY_$",
                      "__DATA, __objc_nlcatlist, regular, no_dead_strip");
-  
+
   //  static int L_OBJC_IMAGE_INFO[2] = { 0, flags };
   // FIXME. flags can be 0 | 1 | 2 | 6. For now just use 0
   std::vector<llvm::Constant*> Values(2);
@@ -4111,8 +4118,8 @@
     flags |= eImageInfo_GCOnly;
   Values[1] = llvm::ConstantInt::get(ObjCTypes.IntTy, flags);
   llvm::Constant* Init = llvm::ConstantArray::get(
-                                    llvm::ArrayType::get(ObjCTypes.IntTy, 2),
-                                      Values);   
+    llvm::ArrayType::get(ObjCTypes.IntTy, 2),
+    Values);
   llvm::GlobalVariable *IMGV =
     new llvm::GlobalVariable(CGM.getModule(), Init->getType(), false,
                              llvm::GlobalValue::InternalLinkage,
@@ -4125,7 +4132,7 @@
 
 /// LegacyDispatchedSelector - Returns true if SEL is not in the list of
 /// NonLegacyDispatchMethods; false otherwise. What this means is that
-/// except for the 19 selectors in the list, we generate 32bit-style 
+/// except for the 19 selectors in the list, we generate 32bit-style
 /// message dispatch call for all the rest.
 ///
 bool CGObjCNonFragileABIMac::LegacyDispatchedSelector(Selector Sel) {
@@ -4140,7 +4147,7 @@
     NonLegacyDispatchMethods.insert(GetNullarySelector("release"));
     NonLegacyDispatchMethods.insert(GetNullarySelector("autorelease"));
     NonLegacyDispatchMethods.insert(GetNullarySelector("hash"));
-    
+
     NonLegacyDispatchMethods.insert(GetUnarySelector("allocWithZone"));
     NonLegacyDispatchMethods.insert(GetUnarySelector("isKindOfClass"));
     NonLegacyDispatchMethods.insert(GetUnarySelector("respondsToSelector"));
@@ -4149,11 +4156,11 @@
     NonLegacyDispatchMethods.insert(GetUnarySelector("isEqualToString"));
     NonLegacyDispatchMethods.insert(GetUnarySelector("isEqual"));
     NonLegacyDispatchMethods.insert(GetUnarySelector("addObject"));
-    // "countByEnumeratingWithState:objects:count" 
+    // "countByEnumeratingWithState:objects:count"
     IdentifierInfo *KeyIdents[] = {
-     &CGM.getContext().Idents.get("countByEnumeratingWithState"),
-     &CGM.getContext().Idents.get("objects"),
-     &CGM.getContext().Idents.get("count")
+      &CGM.getContext().Idents.get("countByEnumeratingWithState"),
+      &CGM.getContext().Idents.get("objects"),
+      &CGM.getContext().Idents.get("count")
     };
     NonLegacyDispatchMethods.insert(
       CGM.getContext().Selectors.getSelector(3, KeyIdents));
@@ -4185,43 +4192,43 @@
 /// }
 ///
 llvm::GlobalVariable * CGObjCNonFragileABIMac::BuildClassRoTInitializer(
-                                                unsigned flags, 
-                                                unsigned InstanceStart,
-                                                unsigned InstanceSize,
-                                                const ObjCImplementationDecl *ID) {
+  unsigned flags,
+  unsigned InstanceStart,
+  unsigned InstanceSize,
+  const ObjCImplementationDecl *ID) {
   std::string ClassName = ID->getNameAsString();
   std::vector<llvm::Constant*> Values(10); // 11 for 64bit targets!
   Values[ 0] = llvm::ConstantInt::get(ObjCTypes.IntTy, flags);
   Values[ 1] = llvm::ConstantInt::get(ObjCTypes.IntTy, InstanceStart);
   Values[ 2] = llvm::ConstantInt::get(ObjCTypes.IntTy, InstanceSize);
   // FIXME. For 64bit targets add 0 here.
-  Values[ 3] = (flags & CLS_META) ? GetIvarLayoutName(0, ObjCTypes) 
-                                  : BuildIvarLayout(ID, true); 
+  Values[ 3] = (flags & CLS_META) ? GetIvarLayoutName(0, ObjCTypes)
+    : BuildIvarLayout(ID, true);
   Values[ 4] = GetClassName(ID->getIdentifier());
   // const struct _method_list_t * const baseMethods;
   std::vector<llvm::Constant*> Methods;
   std::string MethodListName("\01l_OBJC_$_");
   if (flags & CLS_META) {
     MethodListName += "CLASS_METHODS_" + ID->getNameAsString();
-    for (ObjCImplementationDecl::classmeth_iterator 
+    for (ObjCImplementationDecl::classmeth_iterator
            i = ID->classmeth_begin(), e = ID->classmeth_end(); i != e; ++i) {
       // Class methods should always be defined.
       Methods.push_back(GetMethodConstant(*i));
     }
   } else {
     MethodListName += "INSTANCE_METHODS_" + ID->getNameAsString();
-    for (ObjCImplementationDecl::instmeth_iterator 
+    for (ObjCImplementationDecl::instmeth_iterator
            i = ID->instmeth_begin(), e = ID->instmeth_end(); i != e; ++i) {
       // Instance methods should always be defined.
       Methods.push_back(GetMethodConstant(*i));
     }
-    for (ObjCImplementationDecl::propimpl_iterator 
+    for (ObjCImplementationDecl::propimpl_iterator
            i = ID->propimpl_begin(), e = ID->propimpl_end(); i != e; ++i) {
       ObjCPropertyImplDecl *PID = *i;
-      
+
       if (PID->getPropertyImplementation() == ObjCPropertyImplDecl::Synthesize){
         ObjCPropertyDecl *PD = PID->getPropertyDecl();
-        
+
         if (ObjCMethodDecl *MD = PD->getGetterMethodDecl())
           if (llvm::Constant *C = GetMethodConstant(MD))
             Methods.push_back(C);
@@ -4231,37 +4238,37 @@
       }
     }
   }
-  Values[ 5] = EmitMethodList(MethodListName, 
-               "__DATA, __objc_const", Methods);
-  
+  Values[ 5] = EmitMethodList(MethodListName,
+                              "__DATA, __objc_const", Methods);
+
   const ObjCInterfaceDecl *OID = ID->getClassInterface();
   assert(OID && "CGObjCNonFragileABIMac::BuildClassRoTInitializer");
-  Values[ 6] = EmitProtocolList("\01l_OBJC_CLASS_PROTOCOLS_$_" 
+  Values[ 6] = EmitProtocolList("\01l_OBJC_CLASS_PROTOCOLS_$_"
                                 + OID->getNameAsString(),
                                 OID->protocol_begin(),
                                 OID->protocol_end());
-  
+
   if (flags & CLS_META)
     Values[ 7] = llvm::Constant::getNullValue(ObjCTypes.IvarListnfABIPtrTy);
   else
     Values[ 7] = EmitIvarList(ID);
-  Values[ 8] = (flags & CLS_META) ? GetIvarLayoutName(0, ObjCTypes) 
-                                  : BuildIvarLayout(ID, false); 
+  Values[ 8] = (flags & CLS_META) ? GetIvarLayoutName(0, ObjCTypes)
+    : BuildIvarLayout(ID, false);
   if (flags & CLS_META)
     Values[ 9] = llvm::Constant::getNullValue(ObjCTypes.PropertyListPtrTy);
   else
-    Values[ 9] = 
+    Values[ 9] =
       EmitPropertyList("\01l_OBJC_$_PROP_LIST_" + ID->getNameAsString(),
                        ID, ID->getClassInterface(), ObjCTypes);
   llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.ClassRonfABITy,
                                                    Values);
   llvm::GlobalVariable *CLASS_RO_GV =
-  new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ClassRonfABITy, false,
-                           llvm::GlobalValue::InternalLinkage,
-                           Init,
-                           (flags & CLS_META) ?
-                           std::string("\01l_OBJC_METACLASS_RO_$_")+ClassName :
-                           std::string("\01l_OBJC_CLASS_RO_$_")+ClassName);
+    new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ClassRonfABITy, false,
+                             llvm::GlobalValue::InternalLinkage,
+                             Init,
+                             (flags & CLS_META) ?
+                             std::string("\01l_OBJC_METACLASS_RO_$_")+ClassName :
+                             std::string("\01l_OBJC_CLASS_RO_$_")+ClassName);
   CLASS_RO_GV->setAlignment(
     CGM.getTargetData().getPrefTypeAlignment(ObjCTypes.ClassRonfABITy));
   CLASS_RO_GV->setSection("__DATA, __objc_const");
@@ -4280,20 +4287,20 @@
 /// }
 ///
 llvm::GlobalVariable * CGObjCNonFragileABIMac::BuildClassMetaData(
-                                                std::string &ClassName,
-                                                llvm::Constant *IsAGV, 
-                                                llvm::Constant *SuperClassGV,
-                                                llvm::Constant *ClassRoGV,
-                                                bool HiddenVisibility) {
+  std::string &ClassName,
+  llvm::Constant *IsAGV,
+  llvm::Constant *SuperClassGV,
+  llvm::Constant *ClassRoGV,
+  bool HiddenVisibility) {
   std::vector<llvm::Constant*> Values(5);
   Values[0] = IsAGV;
-  Values[1] = SuperClassGV 
-                ? SuperClassGV
-                : llvm::Constant::getNullValue(ObjCTypes.ClassnfABIPtrTy);
+  Values[1] = SuperClassGV;
+  if (!Values[1])
+    Values[1] = llvm::Constant::getNullValue(ObjCTypes.ClassnfABIPtrTy);
   Values[2] = ObjCEmptyCacheVar;  // &ObjCEmptyCacheVar
   Values[3] = ObjCEmptyVtableVar; // &ObjCEmptyVtableVar
   Values[4] = ClassRoGV;                 // &CLASS_RO_GV
-  llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.ClassnfABITy, 
+  llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.ClassnfABITy,
                                                    Values);
   llvm::GlobalVariable *GV = GetClassGlobal(ClassName);
   GV->setInitializer(Init);
@@ -4305,7 +4312,7 @@
   return GV;
 }
 
-bool 
+bool
 CGObjCNonFragileABIMac::ImplementationIsNonLazy(const ObjCImplDecl *OD) const {
   return OD->getClassMethod(GetNullarySelector("load")) != 0;
 }
@@ -4313,9 +4320,9 @@
 void CGObjCNonFragileABIMac::GetClassSizeInfo(const ObjCImplementationDecl *OID,
                                               uint32_t &InstanceStart,
                                               uint32_t &InstanceSize) {
-  const ASTRecordLayout &RL = 
+  const ASTRecordLayout &RL =
     CGM.getContext().getASTObjCImplementationLayout(OID);
-  
+
   // InstanceSize is really instance end.
   InstanceSize = llvm::RoundUpToAlignment(RL.getDataSize(), 8) / 8;
 
@@ -4330,34 +4337,34 @@
   std::string ClassName = ID->getNameAsString();
   if (!ObjCEmptyCacheVar) {
     ObjCEmptyCacheVar = new llvm::GlobalVariable(
-                                            CGM.getModule(),
-                                            ObjCTypes.CacheTy,
-                                            false,
-                                            llvm::GlobalValue::ExternalLinkage,
-                                            0,
-                                            "_objc_empty_cache");
-    
+      CGM.getModule(),
+      ObjCTypes.CacheTy,
+      false,
+      llvm::GlobalValue::ExternalLinkage,
+      0,
+      "_objc_empty_cache");
+
     ObjCEmptyVtableVar = new llvm::GlobalVariable(
-                            CGM.getModule(),
-                            ObjCTypes.ImpnfABITy,
-                            false,
-                            llvm::GlobalValue::ExternalLinkage,
-                            0,
-                            "_objc_empty_vtable");
+      CGM.getModule(),
+      ObjCTypes.ImpnfABITy,
+      false,
+      llvm::GlobalValue::ExternalLinkage,
+      0,
+      "_objc_empty_vtable");
   }
-  assert(ID->getClassInterface() && 
+  assert(ID->getClassInterface() &&
          "CGObjCNonFragileABIMac::GenerateClass - class is 0");
   // FIXME: Is this correct (that meta class size is never computed)?
-  uint32_t InstanceStart = 
+  uint32_t InstanceStart =
     CGM.getTargetData().getTypeAllocSize(ObjCTypes.ClassnfABITy);
   uint32_t InstanceSize = InstanceStart;
   uint32_t flags = CLS_META;
   std::string ObjCMetaClassName(getMetaclassSymbolPrefix());
   std::string ObjCClassName(getClassSymbolPrefix());
-  
+
   llvm::GlobalVariable *SuperClassGV, *IsAGV;
-  
-  bool classIsHidden = 
+
+  bool classIsHidden =
     CGM.getDeclVisibilityMode(ID->getClassInterface()) == LangOptions::Hidden;
   if (classIsHidden)
     flags |= OBJC2_CLS_HIDDEN;
@@ -4373,7 +4380,7 @@
       Root = Super;
     IsAGV = GetClassGlobal(ObjCMetaClassName + Root->getNameAsString());
     // work on super class metadata symbol.
-    std::string SuperClassName =  
+    std::string SuperClassName =
       ObjCMetaClassName + ID->getClassInterface()->getSuperClass()->getNameAsString();
     SuperClassGV = GetClassGlobal(SuperClassName);
   }
@@ -4381,7 +4388,7 @@
                                                                InstanceStart,
                                                                InstanceSize,ID);
   std::string TClassName = ObjCMetaClassName + ClassName;
-  llvm::GlobalVariable *MetaTClass = 
+  llvm::GlobalVariable *MetaTClass =
     BuildClassMetaData(TClassName, IsAGV, SuperClassGV, CLASS_RO_GV,
                        classIsHidden);
 
@@ -4405,11 +4412,11 @@
   GetClassSizeInfo(ID, InstanceStart, InstanceSize);
   CLASS_RO_GV = BuildClassRoTInitializer(flags,
                                          InstanceStart,
-                                         InstanceSize, 
+                                         InstanceSize,
                                          ID);
-  
+
   TClassName = ObjCClassName + ClassName;
-  llvm::GlobalVariable *ClassMD = 
+  llvm::GlobalVariable *ClassMD =
     BuildClassMetaData(TClassName, MetaTClass, SuperClassGV, CLASS_RO_GV,
                        classIsHidden);
   DefinedClasses.push_back(ClassMD);
@@ -4432,27 +4439,27 @@
 /// which will hold address of the protocol meta-data.
 ///
 llvm::Value *CGObjCNonFragileABIMac::GenerateProtocolRef(CGBuilderTy &Builder,
-                                            const ObjCProtocolDecl *PD) {
-  
+                                                         const ObjCProtocolDecl *PD) {
+
   // This routine is called for @protocol only. So, we must build definition
   // of protocol's meta-data (not a reference to it!)
   //
-  llvm::Constant *Init = 
-       llvm::ConstantExpr::getBitCast(GetOrEmitProtocol(PD),
-                                        ObjCTypes.ExternalProtocolPtrTy);
-  
+  llvm::Constant *Init =
+    llvm::ConstantExpr::getBitCast(GetOrEmitProtocol(PD),
+                                   ObjCTypes.ExternalProtocolPtrTy);
+
   std::string ProtocolName("\01l_OBJC_PROTOCOL_REFERENCE_$_");
   ProtocolName += PD->getNameAsCString();
-                            
+
   llvm::GlobalVariable *PTGV = CGM.getModule().getGlobalVariable(ProtocolName);
   if (PTGV)
     return Builder.CreateLoad(PTGV, false, "tmp");
   PTGV = new llvm::GlobalVariable(
-                                CGM.getModule(),
-                                Init->getType(), false,
-                                llvm::GlobalValue::WeakAnyLinkage,
-                                Init,
-                                ProtocolName);
+    CGM.getModule(),
+    Init->getType(), false,
+    llvm::GlobalValue::WeakAnyLinkage,
+    Init,
+    ProtocolName);
   PTGV->setSection("__DATA, __objc_protorefs, coalesced, no_dead_strip");
   PTGV->setVisibility(llvm::GlobalValue::HiddenVisibility);
   CGM.AddUsedGlobal(PTGV);
@@ -4472,11 +4479,11 @@
 void CGObjCNonFragileABIMac::GenerateCategory(const ObjCCategoryImplDecl *OCD) {
   const ObjCInterfaceDecl *Interface = OCD->getClassInterface();
   const char *Prefix = "\01l_OBJC_$_CATEGORY_";
-  std::string ExtCatName(Prefix + Interface->getNameAsString()+ 
-                      "_$_" + OCD->getNameAsString());
-  std::string ExtClassName(getClassSymbolPrefix() + 
+  std::string ExtCatName(Prefix + Interface->getNameAsString()+
+                         "_$_" + OCD->getNameAsString());
+  std::string ExtClassName(getClassSymbolPrefix() +
                            Interface->getNameAsString());
-  
+
   std::vector<llvm::Constant*> Values(6);
   Values[0] = GetClassName(OCD->getIdentifier());
   // meta-class entry symbol
@@ -4484,33 +4491,33 @@
   Values[1] = ClassGV;
   std::vector<llvm::Constant*> Methods;
   std::string MethodListName(Prefix);
-  MethodListName += "INSTANCE_METHODS_" + Interface->getNameAsString() + 
+  MethodListName += "INSTANCE_METHODS_" + Interface->getNameAsString() +
     "_$_" + OCD->getNameAsString();
-   
-  for (ObjCCategoryImplDecl::instmeth_iterator 
+
+  for (ObjCCategoryImplDecl::instmeth_iterator
          i = OCD->instmeth_begin(), e = OCD->instmeth_end(); i != e; ++i) {
     // Instance methods should always be defined.
     Methods.push_back(GetMethodConstant(*i));
   }
-  
-  Values[2] = EmitMethodList(MethodListName, 
-                             "__DATA, __objc_const", 
+
+  Values[2] = EmitMethodList(MethodListName,
+                             "__DATA, __objc_const",
                              Methods);
 
   MethodListName = Prefix;
   MethodListName += "CLASS_METHODS_" + Interface->getNameAsString() + "_$_" +
     OCD->getNameAsString();
   Methods.clear();
-  for (ObjCCategoryImplDecl::classmeth_iterator 
+  for (ObjCCategoryImplDecl::classmeth_iterator
          i = OCD->classmeth_begin(), e = OCD->classmeth_end(); i != e; ++i) {
     // Class methods should always be defined.
     Methods.push_back(GetMethodConstant(*i));
   }
-  
-  Values[3] = EmitMethodList(MethodListName, 
-                             "__DATA, __objc_const", 
+
+  Values[3] = EmitMethodList(MethodListName,
+                             "__DATA, __objc_const",
                              Methods);
-  const ObjCCategoryDecl *Category = 
+  const ObjCCategoryDecl *Category =
     Interface->FindCategoryDeclaration(OCD->getIdentifier());
   if (Category) {
     std::string ExtName(Interface->getNameAsString() + "_$_" +
@@ -4527,12 +4534,12 @@
     Values[4] = llvm::Constant::getNullValue(ObjCTypes.ProtocolListnfABIPtrTy);
     Values[5] = llvm::Constant::getNullValue(ObjCTypes.PropertyListPtrTy);
   }
-    
-  llvm::Constant *Init = 
-    llvm::ConstantStruct::get(ObjCTypes.CategorynfABITy, 
+
+  llvm::Constant *Init =
+    llvm::ConstantStruct::get(ObjCTypes.CategorynfABITy,
                               Values);
   llvm::GlobalVariable *GCATV
-    = new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.CategorynfABITy, 
+    = new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.CategorynfABITy,
                                false,
                                llvm::GlobalValue::InternalLinkage,
                                Init,
@@ -4552,16 +4559,16 @@
 /// given method if it has been defined. The result is null if the
 /// method has not been defined. The return value has type MethodPtrTy.
 llvm::Constant *CGObjCNonFragileABIMac::GetMethodConstant(
-                                                    const ObjCMethodDecl *MD) {
+  const ObjCMethodDecl *MD) {
   // FIXME: Use DenseMap::lookup
   llvm::Function *Fn = MethodDefinitions[MD];
   if (!Fn)
     return 0;
-  
+
   std::vector<llvm::Constant*> Method(3);
-  Method[0] = 
+  Method[0] =
     llvm::ConstantExpr::getBitCast(GetMethodVarName(MD->getSelector()),
-                                     ObjCTypes.SelectorPtrTy);
+                                   ObjCTypes.SelectorPtrTy);
   Method[1] = GetMethodVarType(MD);
   Method[2] = llvm::ConstantExpr::getBitCast(Fn, ObjCTypes.Int8PtrTy);
   return llvm::ConstantStruct::get(ObjCTypes.MethodTy, Method);
@@ -4575,13 +4582,13 @@
 /// }
 ///
 llvm::Constant *CGObjCNonFragileABIMac::EmitMethodList(
-                                              const std::string &Name,
-                                              const char *Section,
-                                              const ConstantVector &Methods) {
+  const std::string &Name,
+  const char *Section,
+  const ConstantVector &Methods) {
   // Return null for empty list.
   if (Methods.empty())
     return llvm::Constant::getNullValue(ObjCTypes.MethodListnfABIPtrTy);
-  
+
   std::vector<llvm::Constant*> Values(3);
   // sizeof(struct _objc_method)
   unsigned Size = CGM.getTargetData().getTypeAllocSize(ObjCTypes.MethodTy);
@@ -4592,7 +4599,7 @@
                                              Methods.size());
   Values[2] = llvm::ConstantArray::get(AT, Methods);
   llvm::Constant *Init = llvm::ConstantStruct::get(Values);
-  
+
   llvm::GlobalVariable *GV =
     new llvm::GlobalVariable(CGM.getModule(), Init->getType(), false,
                              llvm::GlobalValue::InternalLinkage,
@@ -4609,19 +4616,19 @@
 /// ObjCIvarOffsetVariable - Returns the ivar offset variable for
 /// the given ivar.
 llvm::GlobalVariable * CGObjCNonFragileABIMac::ObjCIvarOffsetVariable(
-                              const ObjCInterfaceDecl *ID,
-                              const ObjCIvarDecl *Ivar) {
+  const ObjCInterfaceDecl *ID,
+  const ObjCIvarDecl *Ivar) {
   // FIXME: We shouldn't need to do this lookup.
   unsigned Index;
-  const ObjCInterfaceDecl *Container = 
+  const ObjCInterfaceDecl *Container =
     FindIvarInterface(CGM.getContext(), ID, Ivar, Index);
   assert(Container && "Unable to find ivar container!");
   std::string Name = "OBJC_IVAR_$_" + Container->getNameAsString() +
     '.' + Ivar->getNameAsString();
-  llvm::GlobalVariable *IvarOffsetGV = 
+  llvm::GlobalVariable *IvarOffsetGV =
     CGM.getModule().getGlobalVariable(Name);
   if (!IvarOffsetGV)
-    IvarOffsetGV = 
+    IvarOffsetGV =
       new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.LongTy,
                                false,
                                llvm::GlobalValue::ExternalLinkage,
@@ -4631,11 +4638,11 @@
 }
 
 llvm::Constant * CGObjCNonFragileABIMac::EmitIvarOffsetVar(
-                                              const ObjCInterfaceDecl *ID,
-                                              const ObjCIvarDecl *Ivar,
-                                              unsigned long int Offset) {
+  const ObjCInterfaceDecl *ID,
+  const ObjCIvarDecl *Ivar,
+  unsigned long int Offset) {
   llvm::GlobalVariable *IvarOffsetGV = ObjCIvarOffsetVariable(ID, Ivar);
-  IvarOffsetGV->setInitializer(llvm::ConstantInt::get(ObjCTypes.LongTy, 
+  IvarOffsetGV->setInitializer(llvm::ConstantInt::get(ObjCTypes.LongTy,
                                                       Offset));
   IvarOffsetGV->setAlignment(
     CGM.getTargetData().getPrefTypeAlignment(ObjCTypes.LongTy));
@@ -4670,25 +4677,25 @@
 ///
 
 llvm::Constant *CGObjCNonFragileABIMac::EmitIvarList(
-                                            const ObjCImplementationDecl *ID) {
-  
+  const ObjCImplementationDecl *ID) {
+
   std::vector<llvm::Constant*> Ivars, Ivar(5);
-  
+
   const ObjCInterfaceDecl *OID = ID->getClassInterface();
   assert(OID && "CGObjCNonFragileABIMac::EmitIvarList - null interface");
-  
+
   // FIXME. Consolidate this with similar code in GenerateClass.
-  
+
   // Collect declared and synthesized ivars in a small vector.
   llvm::SmallVector<ObjCIvarDecl*, 16> OIvars;
   CGM.getContext().ShallowCollectObjCIvars(OID, OIvars);
-    
+
   for (unsigned i = 0, e = OIvars.size(); i != e; ++i) {
     ObjCIvarDecl *IVD = OIvars[i];
     // Ignore unnamed bit-fields.
     if (!IVD->getDeclName())
       continue;
-    Ivar[0] = EmitIvarOffsetVar(ID->getClassInterface(), IVD, 
+    Ivar[0] = EmitIvarOffsetVar(ID->getClassInterface(), IVD,
                                 ComputeIvarBaseOffset(CGM, ID, IVD));
     Ivar[1] = GetMethodVarName(IVD->getIdentifier());
     Ivar[2] = GetMethodVarType(IVD);
@@ -4696,7 +4703,7 @@
       CGM.getTypes().ConvertTypeForMem(IVD->getType());
     unsigned Size = CGM.getTargetData().getTypeAllocSize(FieldTy);
     unsigned Align = CGM.getContext().getPreferredTypeAlign(
-                       IVD->getType().getTypePtr()) >> 3;
+      IVD->getType().getTypePtr()) >> 3;
     Align = llvm::Log2_32(Align);
     Ivar[3] = llvm::ConstantInt::get(ObjCTypes.IntTy, Align);
     // NOTE. Size of a bitfield does not match gcc's, because of the
@@ -4727,27 +4734,27 @@
   GV->setAlignment(
     CGM.getTargetData().getPrefTypeAlignment(Init->getType()));
   GV->setSection("__DATA, __objc_const");
-                 
+
   CGM.AddUsedGlobal(GV);
   return llvm::ConstantExpr::getBitCast(GV, ObjCTypes.IvarListnfABIPtrTy);
 }
 
 llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocolRef(
-                                                  const ObjCProtocolDecl *PD) {
+  const ObjCProtocolDecl *PD) {
   llvm::GlobalVariable *&Entry = Protocols[PD->getIdentifier()];
-  
+
   if (!Entry) {
     // We use the initializer as a marker of whether this is a forward
     // reference or not. At module finalization we add the empty
     // contents for protocols which were referenced but never defined.
-    Entry = 
-    new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ProtocolnfABITy, false,
-                             llvm::GlobalValue::ExternalLinkage,
-                             0,
-                             "\01l_OBJC_PROTOCOL_$_" + PD->getNameAsString());
+    Entry =
+      new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ProtocolnfABITy, false,
+                               llvm::GlobalValue::ExternalLinkage,
+                               0,
+                               "\01l_OBJC_PROTOCOL_$_" + PD->getNameAsString());
     Entry->setSection("__DATA,__datacoal_nt,coalesced");
   }
-  
+
   return Entry;
 }
 
@@ -4769,19 +4776,19 @@
 ///
 
 llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocol(
-                                                  const ObjCProtocolDecl *PD) {
+  const ObjCProtocolDecl *PD) {
   llvm::GlobalVariable *&Entry = Protocols[PD->getIdentifier()];
-  
+
   // Early exit if a defining object has already been generated.
   if (Entry && Entry->hasInitializer())
     return Entry;
 
   const char *ProtocolName = PD->getNameAsCString();
-  
+
   // Construct method lists.
   std::vector<llvm::Constant*> InstanceMethods, ClassMethods;
   std::vector<llvm::Constant*> OptInstanceMethods, OptClassMethods;
-  for (ObjCProtocolDecl::instmeth_iterator 
+  for (ObjCProtocolDecl::instmeth_iterator
          i = PD->instmeth_begin(), e = PD->instmeth_end(); i != e; ++i) {
     ObjCMethodDecl *MD = *i;
     llvm::Constant *C = GetMethodDescriptionConstant(MD);
@@ -4789,10 +4796,10 @@
       OptInstanceMethods.push_back(C);
     } else {
       InstanceMethods.push_back(C);
-    }      
+    }
   }
-  
-  for (ObjCProtocolDecl::classmeth_iterator 
+
+  for (ObjCProtocolDecl::classmeth_iterator
          i = PD->classmeth_begin(), e = PD->classmeth_end(); i != e; ++i) {
     ObjCMethodDecl *MD = *i;
     llvm::Constant *C = GetMethodDescriptionConstant(MD);
@@ -4800,23 +4807,23 @@
       OptClassMethods.push_back(C);
     } else {
       ClassMethods.push_back(C);
-    }      
+    }
   }
-  
+
   std::vector<llvm::Constant*> Values(10);
   // isa is NULL
   Values[0] = llvm::Constant::getNullValue(ObjCTypes.ObjectPtrTy);
   Values[1] = GetClassName(PD->getIdentifier());
   Values[2] = EmitProtocolList(
-                          "\01l_OBJC_$_PROTOCOL_REFS_" + PD->getNameAsString(),
-                          PD->protocol_begin(),
-                          PD->protocol_end());
-  
+    "\01l_OBJC_$_PROTOCOL_REFS_" + PD->getNameAsString(),
+    PD->protocol_begin(),
+    PD->protocol_end());
+
   Values[3] = EmitMethodList("\01l_OBJC_$_PROTOCOL_INSTANCE_METHODS_"
                              + PD->getNameAsString(),
                              "__DATA, __objc_const",
                              InstanceMethods);
-  Values[4] = EmitMethodList("\01l_OBJC_$_PROTOCOL_CLASS_METHODS_" 
+  Values[4] = EmitMethodList("\01l_OBJC_$_PROTOCOL_CLASS_METHODS_"
                              + PD->getNameAsString(),
                              "__DATA, __objc_const",
                              ClassMethods);
@@ -4824,29 +4831,29 @@
                              + PD->getNameAsString(),
                              "__DATA, __objc_const",
                              OptInstanceMethods);
-  Values[6] = EmitMethodList("\01l_OBJC_$_PROTOCOL_CLASS_METHODS_OPT_" 
+  Values[6] = EmitMethodList("\01l_OBJC_$_PROTOCOL_CLASS_METHODS_OPT_"
                              + PD->getNameAsString(),
                              "__DATA, __objc_const",
                              OptClassMethods);
   Values[7] = EmitPropertyList("\01l_OBJC_$_PROP_LIST_" + PD->getNameAsString(),
                                0, PD, ObjCTypes);
-  uint32_t Size = 
+  uint32_t Size =
     CGM.getTargetData().getTypeAllocSize(ObjCTypes.ProtocolnfABITy);
   Values[8] = llvm::ConstantInt::get(ObjCTypes.IntTy, Size);
   Values[9] = llvm::Constant::getNullValue(ObjCTypes.IntTy);
   llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.ProtocolnfABITy,
                                                    Values);
-  
+
   if (Entry) {
     // Already created, fix the linkage and update the initializer.
     Entry->setLinkage(llvm::GlobalValue::WeakAnyLinkage);
     Entry->setInitializer(Init);
   } else {
-    Entry = 
-    new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ProtocolnfABITy, false,
-                             llvm::GlobalValue::WeakAnyLinkage,
-                             Init, 
-                             std::string("\01l_OBJC_PROTOCOL_$_")+ProtocolName);
+    Entry =
+      new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ProtocolnfABITy, false,
+                               llvm::GlobalValue::WeakAnyLinkage,
+                               Init,
+                               std::string("\01l_OBJC_PROTOCOL_$_")+ProtocolName);
     Entry->setAlignment(
       CGM.getTargetData().getPrefTypeAlignment(ObjCTypes.ProtocolnfABITy));
     Entry->setSection("__DATA,__datacoal_nt,coalesced");
@@ -4857,12 +4864,12 @@
   // Use this protocol meta-data to build protocol list table in section
   // __DATA, __objc_protolist
   llvm::GlobalVariable *PTGV = new llvm::GlobalVariable(
-                                      CGM.getModule(),
-                                      ObjCTypes.ProtocolnfABIPtrTy, false,
-                                      llvm::GlobalValue::WeakAnyLinkage,
-                                      Entry, 
-                                      std::string("\01l_OBJC_LABEL_PROTOCOL_$_")
-                                                  +ProtocolName);
+    CGM.getModule(),
+    ObjCTypes.ProtocolnfABIPtrTy, false,
+    llvm::GlobalValue::WeakAnyLinkage,
+    Entry,
+    std::string("\01l_OBJC_LABEL_PROTOCOL_$_")
+    +ProtocolName);
   PTGV->setAlignment(
     CGM.getTargetData().getPrefTypeAlignment(ObjCTypes.ProtocolnfABIPtrTy));
   PTGV->setSection("__DATA, __objc_protolist, coalesced, no_dead_strip");
@@ -4881,36 +4888,36 @@
 ///
 llvm::Constant *
 CGObjCNonFragileABIMac::EmitProtocolList(const std::string &Name,
-                            ObjCProtocolDecl::protocol_iterator begin,
-                            ObjCProtocolDecl::protocol_iterator end) {
+                                         ObjCProtocolDecl::protocol_iterator begin,
+                                         ObjCProtocolDecl::protocol_iterator end) {
   std::vector<llvm::Constant*> ProtocolRefs;
-  
+
   // Just return null for empty protocol lists
-  if (begin == end) 
+  if (begin == end)
     return llvm::Constant::getNullValue(ObjCTypes.ProtocolListnfABIPtrTy);
-  
+
   // FIXME: We shouldn't need to do this lookup here, should we?
   llvm::GlobalVariable *GV = CGM.getModule().getGlobalVariable(Name, true);
   if (GV)
-    return llvm::ConstantExpr::getBitCast(GV, 
+    return llvm::ConstantExpr::getBitCast(GV,
                                           ObjCTypes.ProtocolListnfABIPtrTy);
-  
+
   for (; begin != end; ++begin)
     ProtocolRefs.push_back(GetProtocolRef(*begin));  // Implemented???
 
   // This list is null terminated.
   ProtocolRefs.push_back(llvm::Constant::getNullValue(
-                                            ObjCTypes.ProtocolnfABIPtrTy));
-  
+                           ObjCTypes.ProtocolnfABIPtrTy));
+
   std::vector<llvm::Constant*> Values(2);
   Values[0] =
     llvm::ConstantInt::get(ObjCTypes.LongTy, ProtocolRefs.size() - 1);
-  Values[1] = 
+  Values[1] =
     llvm::ConstantArray::get(
       llvm::ArrayType::get(ObjCTypes.ProtocolnfABIPtrTy,
-                             ProtocolRefs.size()), 
-                             ProtocolRefs);
-  
+                           ProtocolRefs.size()),
+      ProtocolRefs);
+
   llvm::Constant *Init = llvm::ConstantStruct::get(Values);
   GV = new llvm::GlobalVariable(CGM.getModule(), Init->getType(), false,
                                 llvm::GlobalValue::InternalLinkage,
@@ -4920,7 +4927,7 @@
   GV->setAlignment(
     CGM.getTargetData().getPrefTypeAlignment(Init->getType()));
   CGM.AddUsedGlobal(GV);
-  return llvm::ConstantExpr::getBitCast(GV, 
+  return llvm::ConstantExpr::getBitCast(GV,
                                         ObjCTypes.ProtocolListnfABIPtrTy);
 }
 
@@ -4935,8 +4942,8 @@
 CGObjCNonFragileABIMac::GetMethodDescriptionConstant(const ObjCMethodDecl *MD) {
   std::vector<llvm::Constant*> Desc(3);
   Desc[0] =
-          llvm::ConstantExpr::getBitCast(GetMethodVarName(MD->getSelector()),
-                                           ObjCTypes.SelectorPtrTy);
+    llvm::ConstantExpr::getBitCast(GetMethodVarName(MD->getSelector()),
+                                   ObjCTypes.SelectorPtrTy);
   Desc[1] = GetMethodVarType(MD);
   // Protocol methods have no implementation. So, this entry is always NULL.
   Desc[2] = llvm::Constant::getNullValue(ObjCTypes.Int8PtrTy);
@@ -4948,46 +4955,46 @@
 /// @code
 /// (type *)((char *)base + _OBJC_IVAR_$_.ivar;
 /// @encode
-/// 
+///
 LValue CGObjCNonFragileABIMac::EmitObjCValueForIvar(
-                                             CodeGen::CodeGenFunction &CGF,
-                                             QualType ObjectTy,
-                                             llvm::Value *BaseValue,
-                                             const ObjCIvarDecl *Ivar,
-                                             unsigned CVRQualifiers) {
+  CodeGen::CodeGenFunction &CGF,
+  QualType ObjectTy,
+  llvm::Value *BaseValue,
+  const ObjCIvarDecl *Ivar,
+  unsigned CVRQualifiers) {
   const ObjCInterfaceDecl *ID = ObjectTy->getAsObjCInterfaceType()->getDecl();
   return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers,
                                   EmitIvarOffset(CGF, ID, Ivar));
 }
 
 llvm::Value *CGObjCNonFragileABIMac::EmitIvarOffset(
-                                       CodeGen::CodeGenFunction &CGF,
-                                       const ObjCInterfaceDecl *Interface,
-                                       const ObjCIvarDecl *Ivar) {
-  return CGF.Builder.CreateLoad(ObjCIvarOffsetVariable(Interface, Ivar), 
+  CodeGen::CodeGenFunction &CGF,
+  const ObjCInterfaceDecl *Interface,
+  const ObjCIvarDecl *Ivar) {
+  return CGF.Builder.CreateLoad(ObjCIvarOffsetVariable(Interface, Ivar),
                                 false, "ivar");
 }
 
 CodeGen::RValue CGObjCNonFragileABIMac::EmitMessageSend(
-                                           CodeGen::CodeGenFunction &CGF,
-                                           QualType ResultType,
-                                           Selector Sel,
-                                           llvm::Value *Receiver,
-                                           QualType Arg0Ty,
-                                           bool IsSuper,
-                                           const CallArgList &CallArgs) {
+  CodeGen::CodeGenFunction &CGF,
+  QualType ResultType,
+  Selector Sel,
+  llvm::Value *Receiver,
+  QualType Arg0Ty,
+  bool IsSuper,
+  const CallArgList &CallArgs) {
   // FIXME. Even though IsSuper is passes. This function doese not handle calls
   // to 'super' receivers.
   CodeGenTypes &Types = CGM.getTypes();
   llvm::Value *Arg0 = Receiver;
   if (!IsSuper)
     Arg0 = CGF.Builder.CreateBitCast(Arg0, ObjCTypes.ObjectPtrTy, "tmp");
-  
+
   // Find the message function name.
   // FIXME. This is too much work to get the ABI-specific result type needed to
   // find the message name.
-  const CGFunctionInfo &FnInfo = Types.getFunctionInfo(ResultType, 
-                                        llvm::SmallVector<QualType, 16>());
+  const CGFunctionInfo &FnInfo = Types.getFunctionInfo(ResultType,
+                                                       llvm::SmallVector<QualType, 16>());
   llvm::Constant *Fn = 0;
   std::string Name("\01l_");
   if (CGM.ReturnTypeUsesSret(FnInfo)) {
@@ -5000,13 +5007,13 @@
       Name += "objc_msgSendId_stret_fixup";
     } else
 #endif
-    if (IsSuper) {
+      if (IsSuper) {
         Fn = ObjCTypes.getMessageSendSuper2StretFixupFn();
         Name += "objc_msgSendSuper2_stret_fixup";
-    } else {
-      Fn = ObjCTypes.getMessageSendStretFixupFn();
-      Name += "objc_msgSend_stret_fixup";
-    }
+      } else {
+        Fn = ObjCTypes.getMessageSendStretFixupFn();
+        Name += "objc_msgSend_stret_fixup";
+      }
   } else if (!IsSuper && ResultType->isFloatingType()) {
     if (ResultType->isSpecificBuiltinType(BuiltinType::LongDouble)) {
       Fn = ObjCTypes.getMessageSendFpretFixupFn();
@@ -5021,15 +5028,15 @@
     if (Receiver->getType() == ObjCTypes.ObjectPtrTy) {
       Fn = ObjCTypes.getMessageSendIdFixupFn();
       Name += "objc_msgSendId_fixup";
-    } else 
+    } else
 #endif
-    if (IsSuper) {
+      if (IsSuper) {
         Fn = ObjCTypes.getMessageSendSuper2FixupFn();
         Name += "objc_msgSendSuper2_fixup";
-    } else {
-      Fn = ObjCTypes.getMessageSendFixupFn();
-      Name += "objc_msgSend_fixup";
-    }
+      } else {
+        Fn = ObjCTypes.getMessageSendFixupFn();
+        Name += "objc_msgSend_fixup";
+      }
   }
   assert(Fn && "CGObjCNonFragileABIMac::EmitMessageSend");
   Name += '_';
@@ -5055,10 +5062,10 @@
     GV->setSection("__DATA, __objc_msgrefs, coalesced");
   }
   llvm::Value *Arg1 = CGF.Builder.CreateBitCast(GV, ObjCTypes.MessageRefPtrTy);
-  
+
   CallArgList ActualArgs;
   ActualArgs.push_back(std::make_pair(RValue::get(Arg0), Arg0Ty));
-  ActualArgs.push_back(std::make_pair(RValue::get(Arg1), 
+  ActualArgs.push_back(std::make_pair(RValue::get(Arg1),
                                       ObjCTypes.MessageRefCPtrTy));
   ActualArgs.insert(ActualArgs.end(), CallArgs.begin(), CallArgs.end());
   const CGFunctionInfo &FnInfo1 = Types.getFunctionInfo(ResultType, ActualArgs);
@@ -5072,20 +5079,20 @@
 
 /// Generate code for a message send expression in the nonfragile abi.
 CodeGen::RValue CGObjCNonFragileABIMac::GenerateMessageSend(
-                                               CodeGen::CodeGenFunction &CGF,
-                                               QualType ResultType,
-                                               Selector Sel,
-                                               llvm::Value *Receiver,
-                                               bool IsClassMessage,
-                                               const CallArgList &CallArgs,
-                                               const ObjCMethodDecl *Method) {
+  CodeGen::CodeGenFunction &CGF,
+  QualType ResultType,
+  Selector Sel,
+  llvm::Value *Receiver,
+  bool IsClassMessage,
+  const CallArgList &CallArgs,
+  const ObjCMethodDecl *Method) {
   return LegacyDispatchedSelector(Sel)
-  ? EmitLegacyMessageSend(CGF, ResultType, EmitSelector(CGF.Builder, Sel),
-                          Receiver, CGF.getContext().getObjCIdType(),
-                          false, CallArgs, ObjCTypes)
-  : EmitMessageSend(CGF, ResultType, Sel,
-                    Receiver, CGF.getContext().getObjCIdType(),
-                    false, CallArgs);
+    ? EmitLegacyMessageSend(CGF, ResultType, EmitSelector(CGF.Builder, Sel),
+                            Receiver, CGF.getContext().getObjCIdType(),
+                            false, CallArgs, ObjCTypes)
+    : EmitMessageSend(CGF, ResultType, Sel,
+                      Receiver, CGF.getContext().getObjCIdType(),
+                      false, CallArgs);
 }
 
 llvm::GlobalVariable *
@@ -5093,7 +5100,7 @@
   llvm::GlobalVariable *GV = CGM.getModule().getGlobalVariable(Name);
 
   if (!GV) {
-    GV = new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ClassnfABITy, 
+    GV = new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ClassnfABITy,
                                   false, llvm::GlobalValue::ExternalLinkage,
                                   0, Name);
   }
@@ -5101,74 +5108,74 @@
   return GV;
 }
 
-llvm::Value *CGObjCNonFragileABIMac::EmitClassRef(CGBuilderTy &Builder, 
-                                     const ObjCInterfaceDecl *ID) {
+llvm::Value *CGObjCNonFragileABIMac::EmitClassRef(CGBuilderTy &Builder,
+                                                  const ObjCInterfaceDecl *ID) {
   llvm::GlobalVariable *&Entry = ClassReferences[ID->getIdentifier()];
-  
+
   if (!Entry) {
     std::string ClassName(getClassSymbolPrefix() + ID->getNameAsString());
     llvm::GlobalVariable *ClassGV = GetClassGlobal(ClassName);
-    Entry = 
-      new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ClassnfABIPtrTy, 
+    Entry =
+      new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ClassnfABIPtrTy,
                                false, llvm::GlobalValue::InternalLinkage,
-                               ClassGV, 
+                               ClassGV,
                                "\01L_OBJC_CLASSLIST_REFERENCES_$_");
     Entry->setAlignment(
-                     CGM.getTargetData().getPrefTypeAlignment(
-                                                  ObjCTypes.ClassnfABIPtrTy));
+      CGM.getTargetData().getPrefTypeAlignment(
+        ObjCTypes.ClassnfABIPtrTy));
     Entry->setSection("__DATA, __objc_classrefs, regular, no_dead_strip");
     CGM.AddUsedGlobal(Entry);
   }
-  
+
   return Builder.CreateLoad(Entry, false, "tmp");
 }
 
 llvm::Value *
-CGObjCNonFragileABIMac::EmitSuperClassRef(CGBuilderTy &Builder, 
+CGObjCNonFragileABIMac::EmitSuperClassRef(CGBuilderTy &Builder,
                                           const ObjCInterfaceDecl *ID) {
   llvm::GlobalVariable *&Entry = SuperClassReferences[ID->getIdentifier()];
-  
+
   if (!Entry) {
     std::string ClassName(getClassSymbolPrefix() + ID->getNameAsString());
     llvm::GlobalVariable *ClassGV = GetClassGlobal(ClassName);
-    Entry = 
-      new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ClassnfABIPtrTy, 
+    Entry =
+      new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ClassnfABIPtrTy,
                                false, llvm::GlobalValue::InternalLinkage,
-                               ClassGV, 
+                               ClassGV,
                                "\01L_OBJC_CLASSLIST_SUP_REFS_$_");
     Entry->setAlignment(
-                     CGM.getTargetData().getPrefTypeAlignment(
-                                                  ObjCTypes.ClassnfABIPtrTy));
+      CGM.getTargetData().getPrefTypeAlignment(
+        ObjCTypes.ClassnfABIPtrTy));
     Entry->setSection("__DATA, __objc_superrefs, regular, no_dead_strip");
     CGM.AddUsedGlobal(Entry);
   }
-  
+
   return Builder.CreateLoad(Entry, false, "tmp");
 }
 
 /// EmitMetaClassRef - Return a Value * of the address of _class_t
 /// meta-data
 ///
-llvm::Value *CGObjCNonFragileABIMac::EmitMetaClassRef(CGBuilderTy &Builder, 
-                                                  const ObjCInterfaceDecl *ID) {
+llvm::Value *CGObjCNonFragileABIMac::EmitMetaClassRef(CGBuilderTy &Builder,
+                                                      const ObjCInterfaceDecl *ID) {
   llvm::GlobalVariable * &Entry = MetaClassReferences[ID->getIdentifier()];
   if (Entry)
     return Builder.CreateLoad(Entry, false, "tmp");
-  
+
   std::string MetaClassName(getMetaclassSymbolPrefix() + ID->getNameAsString());
   llvm::GlobalVariable *MetaClassGV = GetClassGlobal(MetaClassName);
-  Entry = 
+  Entry =
     new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ClassnfABIPtrTy, false,
                              llvm::GlobalValue::InternalLinkage,
-                             MetaClassGV, 
+                             MetaClassGV,
                              "\01L_OBJC_CLASSLIST_SUP_REFS_$_");
   Entry->setAlignment(
-                      CGM.getTargetData().getPrefTypeAlignment(
-                                                  ObjCTypes.ClassnfABIPtrTy));
-    
+    CGM.getTargetData().getPrefTypeAlignment(
+      ObjCTypes.ClassnfABIPtrTy));
+
   Entry->setSection("__DATA, __objc_superrefs, regular, no_dead_strip");
   CGM.AddUsedGlobal(Entry);
-  
+
   return Builder.CreateLoad(Entry, false, "tmp");
 }
 
@@ -5184,24 +5191,24 @@
 /// which class's method should be called.
 CodeGen::RValue
 CGObjCNonFragileABIMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
-                                    QualType ResultType,
-                                    Selector Sel,
-                                    const ObjCInterfaceDecl *Class,
-                                    bool isCategoryImpl,
-                                    llvm::Value *Receiver,
-                                    bool IsClassMessage,
-                                    const CodeGen::CallArgList &CallArgs) {
+                                                 QualType ResultType,
+                                                 Selector Sel,
+                                                 const ObjCInterfaceDecl *Class,
+                                                 bool isCategoryImpl,
+                                                 llvm::Value *Receiver,
+                                                 bool IsClassMessage,
+                                                 const CodeGen::CallArgList &CallArgs) {
   // ...
   // Create and init a super structure; this is a (receiver, class)
   // pair we will pass to objc_msgSendSuper.
   llvm::Value *ObjCSuper =
     CGF.Builder.CreateAlloca(ObjCTypes.SuperTy, 0, "objc_super");
-  
+
   llvm::Value *ReceiverAsObject =
     CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy);
   CGF.Builder.CreateStore(ReceiverAsObject,
                           CGF.Builder.CreateStructGEP(ObjCSuper, 0));
-  
+
   // If this is a class message the metaclass is passed as the target.
   llvm::Value *Target;
   if (IsClassMessage) {
@@ -5215,7 +5222,7 @@
       Target = EmitMetaClassRef(CGF.Builder, Class);
   } else
     Target = EmitSuperClassRef(CGF.Builder, Class);
-    
+
   // FIXME: We shouldn't need to do this cast, rectify the ASTContext and
   // ObjCTypes types.
   const llvm::Type *ClassTy =
@@ -5223,40 +5230,40 @@
   Target = CGF.Builder.CreateBitCast(Target, ClassTy);
   CGF.Builder.CreateStore(Target,
                           CGF.Builder.CreateStructGEP(ObjCSuper, 1));
-  
+
   return (LegacyDispatchedSelector(Sel))
-  ? EmitLegacyMessageSend(CGF, ResultType,EmitSelector(CGF.Builder, Sel),
-                          ObjCSuper, ObjCTypes.SuperPtrCTy,
-                          true, CallArgs,
-                          ObjCTypes)
-  : EmitMessageSend(CGF, ResultType, Sel,
-                    ObjCSuper, ObjCTypes.SuperPtrCTy,
-                    true, CallArgs);
+    ? EmitLegacyMessageSend(CGF, ResultType,EmitSelector(CGF.Builder, Sel),
+                            ObjCSuper, ObjCTypes.SuperPtrCTy,
+                            true, CallArgs,
+                            ObjCTypes)
+    : EmitMessageSend(CGF, ResultType, Sel,
+                      ObjCSuper, ObjCTypes.SuperPtrCTy,
+                      true, CallArgs);
 }
 
-llvm::Value *CGObjCNonFragileABIMac::EmitSelector(CGBuilderTy &Builder, 
+llvm::Value *CGObjCNonFragileABIMac::EmitSelector(CGBuilderTy &Builder,
                                                   Selector Sel) {
   llvm::GlobalVariable *&Entry = SelectorReferences[Sel];
-  
+
   if (!Entry) {
-    llvm::Constant *Casted = 
-    llvm::ConstantExpr::getBitCast(GetMethodVarName(Sel),
-                                   ObjCTypes.SelectorPtrTy);
-    Entry = 
-    new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.SelectorPtrTy, false,
-                             llvm::GlobalValue::InternalLinkage,
-                             Casted, "\01L_OBJC_SELECTOR_REFERENCES_");
+    llvm::Constant *Casted =
+      llvm::ConstantExpr::getBitCast(GetMethodVarName(Sel),
+                                     ObjCTypes.SelectorPtrTy);
+    Entry =
+      new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.SelectorPtrTy, false,
+                               llvm::GlobalValue::InternalLinkage,
+                               Casted, "\01L_OBJC_SELECTOR_REFERENCES_");
     Entry->setSection("__DATA, __objc_selrefs, literal_pointers, no_dead_strip");
     CGM.AddUsedGlobal(Entry);
   }
-  
+
   return Builder.CreateLoad(Entry, false, "tmp");
 }
 /// EmitObjCIvarAssign - Code gen for assigning to a __strong object.
 /// objc_assign_ivar (id src, id *dst)
 ///
 void CGObjCNonFragileABIMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
-                                   llvm::Value *src, llvm::Value *dst)
+                                                llvm::Value *src, llvm::Value *dst)
 {
   const llvm::Type * SrcTy = src->getType();
   if (!isa<llvm::PointerType>(SrcTy)) {
@@ -5277,15 +5284,15 @@
 /// objc_assign_strongCast (id src, id *dst)
 ///
 void CGObjCNonFragileABIMac::EmitObjCStrongCastAssign(
-                                         CodeGen::CodeGenFunction &CGF,
-                                         llvm::Value *src, llvm::Value *dst)
+  CodeGen::CodeGenFunction &CGF,
+  llvm::Value *src, llvm::Value *dst)
 {
   const llvm::Type * SrcTy = src->getType();
   if (!isa<llvm::PointerType>(SrcTy)) {
     unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
     assert(Size <= 8 && "does not support size > 8");
     src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
-                     : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy));
+           : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy));
     src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
   }
   src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
@@ -5296,10 +5303,10 @@
 }
 
 void CGObjCNonFragileABIMac::EmitGCMemmoveCollectable(
-                                         CodeGen::CodeGenFunction &CGF,
-                                         llvm::Value *DestPtr, 
-                                         llvm::Value *SrcPtr,
-                                         unsigned long size) {
+  CodeGen::CodeGenFunction &CGF,
+  llvm::Value *DestPtr,
+  llvm::Value *SrcPtr,
+  unsigned long size) {
   SrcPtr = CGF.Builder.CreateBitCast(SrcPtr, ObjCTypes.Int8PtrTy);
   DestPtr = CGF.Builder.CreateBitCast(DestPtr, ObjCTypes.Int8PtrTy);
   llvm::Value *N = llvm::ConstantInt::get(ObjCTypes.LongTy, size);
@@ -5312,12 +5319,12 @@
 /// object: objc_read_weak (id *src)
 ///
 llvm::Value * CGObjCNonFragileABIMac::EmitObjCWeakRead(
-                                          CodeGen::CodeGenFunction &CGF,
-                                          llvm::Value *AddrWeakObj)
+  CodeGen::CodeGenFunction &CGF,
+  llvm::Value *AddrWeakObj)
 {
   const llvm::Type* DestTy =
-      cast<llvm::PointerType>(AddrWeakObj->getType())->getElementType();
-  AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj, ObjCTypes.PtrObjectPtrTy); 
+    cast<llvm::PointerType>(AddrWeakObj->getType())->getElementType();
+  AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj, ObjCTypes.PtrObjectPtrTy);
   llvm::Value *read_weak = CGF.Builder.CreateCall(ObjCTypes.getGcReadWeakFn(),
                                                   AddrWeakObj, "weakread");
   read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy);
@@ -5328,7 +5335,7 @@
 /// objc_assign_weak (id src, id *dst)
 ///
 void CGObjCNonFragileABIMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
-                                   llvm::Value *src, llvm::Value *dst)
+                                                llvm::Value *src, llvm::Value *dst)
 {
   const llvm::Type * SrcTy = src->getType();
   if (!isa<llvm::PointerType>(SrcTy)) {
@@ -5349,7 +5356,7 @@
 /// objc_assign_global (id src, id *dst)
 ///
 void CGObjCNonFragileABIMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
-                                     llvm::Value *src, llvm::Value *dst)
+                                                  llvm::Value *src, llvm::Value *dst)
 {
   const llvm::Type * SrcTy = src->getType();
   if (!isa<llvm::PointerType>(SrcTy)) {
@@ -5366,7 +5373,7 @@
   return;
 }
 
-void 
+void
 CGObjCNonFragileABIMac::EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
                                                   const Stmt &S) {
   bool isTry = isa<ObjCAtTryStmt>(S);
@@ -5383,7 +5390,7 @@
   // @synchronized are illegal & this will dominate uses.
   llvm::Value *SyncArg = 0;
   if (!isTry) {
-    SyncArg = 
+    SyncArg =
       CGF.EmitScalarExpr(cast<ObjCAtSynchronizedStmt>(S).getSynchExpr());
     SyncArg = CGF.Builder.CreateBitCast(SyncArg, ObjCTypes.ObjectPtrTy);
     CGF.Builder.CreateCall(ObjCTypes.getSyncEnterFn(), SyncArg);
@@ -5396,19 +5403,19 @@
   CGF.setInvokeDest(TryHandler);
 
   CGF.EmitBlock(TryBlock);
-  CGF.EmitStmt(isTry ? cast<ObjCAtTryStmt>(S).getTryBody() 
-                     : cast<ObjCAtSynchronizedStmt>(S).getSynchBody());
+  CGF.EmitStmt(isTry ? cast<ObjCAtTryStmt>(S).getTryBody()
+               : cast<ObjCAtSynchronizedStmt>(S).getSynchBody());
   CGF.EmitBranchThroughCleanup(FinallyEnd);
-  
+
   // Emit the exception handler.
 
   CGF.EmitBlock(TryHandler);
 
-  llvm::Value *llvm_eh_exception = 
+  llvm::Value *llvm_eh_exception =
     CGF.CGM.getIntrinsic(llvm::Intrinsic::eh_exception);
-  llvm::Value *llvm_eh_selector_i64 = 
+  llvm::Value *llvm_eh_selector_i64 =
     CGF.CGM.getIntrinsic(llvm::Intrinsic::eh_selector_i64);
-  llvm::Value *llvm_eh_typeid_for_i64 = 
+  llvm::Value *llvm_eh_typeid_for_i64 =
     CGF.CGM.getIntrinsic(llvm::Intrinsic::eh_typeid_for_i64);
   llvm::Value *Exc = CGF.Builder.CreateCall(llvm_eh_exception, "exc");
   llvm::Value *RethrowPtr = CGF.CreateTempAlloca(Exc->getType(), "_rethrow");
@@ -5438,18 +5445,18 @@
 
         if (CatchDecl->getType()->isObjCIdType() ||
             CatchDecl->getType()->isObjCQualifiedIdType()) {
-          llvm::Value *IDEHType = 
+          llvm::Value *IDEHType =
             CGM.getModule().getGlobalVariable("OBJC_EHTYPE_id");
           if (!IDEHType)
-            IDEHType = 
-              new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.EHTypeTy, 
-                                       false,     
+            IDEHType =
+              new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.EHTypeTy,
+                                       false,
                                        llvm::GlobalValue::ExternalLinkage,
                                        0, "OBJC_EHTYPE_id");
           SelectorArgs.push_back(IDEHType);
         } else {
           // All other types should be Objective-C interface pointer types.
-          const ObjCObjectPointerType *PT = 
+          const ObjCObjectPointerType *PT =
             CatchDecl->getType()->getAsObjCObjectPointerType();
           assert(PT && "Invalid @catch type.");
           const ObjCInterfaceType *IT = PT->getInterfaceType();
@@ -5466,9 +5473,9 @@
     SelectorArgs.push_back(llvm::ConstantInt::get(llvm::Type::Int32Ty, 0));
     Handlers.push_back(std::make_pair((const ParmVarDecl*) 0, (const Stmt*) 0));
   }
-    
-  llvm::Value *Selector = 
-    CGF.Builder.CreateCall(llvm_eh_selector_i64, 
+
+  llvm::Value *Selector =
+    CGF.Builder.CreateCall(llvm_eh_selector_i64,
                            SelectorArgs.begin(), SelectorArgs.end(),
                            "selector");
   for (unsigned i = 0, e = Handlers.size(); i != e; ++i) {
@@ -5483,7 +5490,7 @@
 
       llvm::BasicBlock *Match = CGF.createBasicBlock("match");
       Next = CGF.createBasicBlock("catch.next");
-      llvm::Value *Id = 
+      llvm::Value *Id =
         CGF.Builder.CreateCall(llvm_eh_typeid_for_i64,
                                CGF.Builder.CreateBitCast(SelectorArgs[i+2],
                                                          ObjCTypes.Int8PtrTy));
@@ -5492,25 +5499,25 @@
 
       CGF.EmitBlock(Match);
     }
-    
+
     if (CatchBody) {
       llvm::BasicBlock *MatchEnd = CGF.createBasicBlock("match.end");
       llvm::BasicBlock *MatchHandler = CGF.createBasicBlock("match.handler");
 
       // Cleanups must call objc_end_catch.
-      // 
+      //
       // FIXME: It seems incorrect for objc_begin_catch to be inside this
       // context, but this matches gcc.
       CGF.PushCleanupBlock(MatchEnd);
       CGF.setInvokeDest(MatchHandler);
-      
-      llvm::Value *ExcObject = 
+
+      llvm::Value *ExcObject =
         CGF.Builder.CreateCall(ObjCTypes.getObjCBeginCatchFn(), Exc);
 
       // Bind the catch parameter if it exists.
       if (CatchParam) {
-        ExcObject = 
-          CGF.Builder.CreateBitCast(ExcObject, 
+        ExcObject =
+          CGF.Builder.CreateBitCast(ExcObject,
                                     CGF.ConvertType(CatchParam->getType()));
         // CatchParam is a ParmVarDecl because of the grammar
         // construction used to handle this, but for codegen purposes
@@ -5540,15 +5547,15 @@
       CGF.EmitBranchThroughCleanup(FinallyRethrow);
 
       CodeGenFunction::CleanupBlockInfo Info = CGF.PopCleanupBlock();
-      
+
       CGF.EmitBlock(MatchEnd);
 
       // Unfortunately, we also have to generate another EH frame here
       // in case this throws.
-      llvm::BasicBlock *MatchEndHandler = 
+      llvm::BasicBlock *MatchEndHandler =
         CGF.createBasicBlock("match.end.handler");
       llvm::BasicBlock *Cont = CGF.createBasicBlock("invoke.cont");
-      CGF.Builder.CreateInvoke(ObjCTypes.getObjCEndCatchFn(), 
+      CGF.Builder.CreateInvoke(ObjCTypes.getObjCEndCatchFn(),
                                Cont, MatchEndHandler,
                                Args.begin(), Args.begin());
 
@@ -5589,7 +5596,7 @@
   CGF.EmitBlock(FinallyBlock);
 
   if (isTry) {
-    if (const ObjCAtFinallyStmt* FinallyStmt = 
+    if (const ObjCAtFinallyStmt* FinallyStmt =
         cast<ObjCAtTryStmt>(S).getFinallyStmt())
       CGF.EmitStmt(FinallyStmt->getFinallyBody());
   } else {
@@ -5607,26 +5614,26 @@
   CGF.EmitBranch(FinallyEnd);
 
   CGF.EmitBlock(FinallyRethrow);
-  CGF.Builder.CreateCall(ObjCTypes.getUnwindResumeOrRethrowFn(), 
+  CGF.Builder.CreateCall(ObjCTypes.getUnwindResumeOrRethrowFn(),
                          CGF.Builder.CreateLoad(RethrowPtr));
   CGF.Builder.CreateUnreachable();
-  
+
   CGF.EmitBlock(FinallyEnd);
 }
 
 /// EmitThrowStmt - Generate code for a throw statement.
 void CGObjCNonFragileABIMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF,
                                            const ObjCAtThrowStmt &S) {
-  llvm::Value *Exception;    
+  llvm::Value *Exception;
   if (const Expr *ThrowExpr = S.getThrowExpr()) {
     Exception = CGF.EmitScalarExpr(ThrowExpr);
   } else {
-    assert((!CGF.ObjCEHValueStack.empty() && CGF.ObjCEHValueStack.back()) && 
+    assert((!CGF.ObjCEHValueStack.empty() && CGF.ObjCEHValueStack.back()) &&
            "Unexpected rethrow outside @catch block.");
     Exception = CGF.ObjCEHValueStack.back();
   }
 
-  llvm::Value *ExceptionAsObject = 
+  llvm::Value *ExceptionAsObject =
     CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy, "tmp");
   llvm::BasicBlock *InvokeDest = CGF.getInvokeDest();
   if (InvokeDest) {
@@ -5636,7 +5643,7 @@
                              &ExceptionAsObject, &ExceptionAsObject + 1);
     CGF.EmitBlock(Cont);
   } else
-    CGF.Builder.CreateCall(ObjCTypes.getExceptionThrowFn(), ExceptionAsObject);  
+    CGF.Builder.CreateCall(ObjCTypes.getExceptionThrowFn(), ExceptionAsObject);
   CGF.Builder.CreateUnreachable();
 
   // Clear the insertion point to indicate we are in unreachable code.
@@ -5644,7 +5651,7 @@
 }
 
 llvm::Value *
-CGObjCNonFragileABIMac::GetInterfaceEHType(const ObjCInterfaceDecl *ID, 
+CGObjCNonFragileABIMac::GetInterfaceEHType(const ObjCInterfaceDecl *ID,
                                            bool ForDefinition) {
   llvm::GlobalVariable * &Entry = EHTypeReferences[ID->getIdentifier()];
 
@@ -5657,24 +5664,24 @@
     // If this type (or a super class) has the __objc_exception__
     // attribute, emit an external reference.
     if (hasObjCExceptionAttribute(CGM.getContext(), ID))
-      return Entry = 
+      return Entry =
         new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.EHTypeTy, false,
                                  llvm::GlobalValue::ExternalLinkage,
-                                 0, 
-                                 (std::string("OBJC_EHTYPE_$_") + 
+                                 0,
+                                 (std::string("OBJC_EHTYPE_$_") +
                                   ID->getIdentifier()->getName()));
   }
-  
+
   // Otherwise we need to either make a new entry or fill in the
   // initializer.
   assert((!Entry || !Entry->hasInitializer()) && "Duplicate EHType definition");
   std::string ClassName(getClassSymbolPrefix() + ID->getNameAsString());
   std::string VTableName = "objc_ehtype_vtable";
-  llvm::GlobalVariable *VTableGV = 
+  llvm::GlobalVariable *VTableGV =
     CGM.getModule().getGlobalVariable(VTableName);
   if (!VTableGV)
-    VTableGV = new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.Int8PtrTy, 
-                                        false,                  
+    VTableGV = new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.Int8PtrTy,
+                                        false,
                                         llvm::GlobalValue::ExternalLinkage,
                                         0, VTableName);
 
@@ -5692,8 +5699,8 @@
   } else {
     Entry = new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.EHTypeTy, false,
                                      llvm::GlobalValue::WeakAnyLinkage,
-                                     Init, 
-                                     (std::string("OBJC_EHTYPE_$_") + 
+                                     Init,
+                                     (std::string("OBJC_EHTYPE_$_") +
                                       ID->getIdentifier()->getName()));
   }
 
@@ -5710,7 +5717,7 @@
 
   return Entry;
 }
-  
+
 /* *** */
 
 CodeGen::CGObjCRuntime *





More information about the cfe-commits mailing list