[llvm-commits] [llvm-gcc-4.2] r42597 - /llvm-gcc-4.2/trunk/gcc/objc/objc-act.c

Bill Wendling isanbard at gmail.com
Wed Oct 3 15:20:58 PDT 2007


Author: void
Date: Wed Oct  3 17:20:58 2007
New Revision: 42597

URL: http://llvm.org/viewvc/llvm-project?rev=42597&view=rev
Log:
LLVM needs a pointer type instead of "i32" for a null pointer. Also,
Objective-C++ is picky when it comes to converting a "void*" to another pointer
type.

Modified:
    llvm-gcc-4.2/trunk/gcc/objc/objc-act.c

Modified: llvm-gcc-4.2/trunk/gcc/objc/objc-act.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/objc/objc-act.c?rev=42597&r1=42596&r2=42597&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/objc/objc-act.c (original)
+++ llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Wed Oct  3 17:20:58 2007
@@ -2576,7 +2576,12 @@
 
   /* struct objc_method_list   *optional_instance_methods; */
   if (!optional_instance_meth)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_method_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_method_list_ptr, build_unary_op (ADDR_EXPR, 
@@ -2586,7 +2591,12 @@
 
   /* struct objc_method_list   *optional_class_methods; */
   if (!optional_class_meth)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_method_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_method_list_ptr, build_unary_op (ADDR_EXPR, 
@@ -2596,7 +2606,12 @@
 
   /* struct objc_prop_list     *instance_properties; */
   if (!instance_prop)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_prop_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_prop_list_ptr, build_unary_op (ADDR_EXPR, 
@@ -2677,7 +2692,12 @@
 
   /* struct _prop_list_t *properties; */
   if (!property_list)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_prop_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_prop_list_ptr,
@@ -4869,9 +4889,13 @@
 			      build_int_cst (long_integer_type_node, 0));
 
   /* refs = { ..., _OBJC_SELECTOR_TABLE, ... } */
-
   if (flag_next_runtime || ! sel_ref_chain)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (build_pointer_type (objc_selector_type),
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     initlist
       = tree_cons (NULL_TREE,
@@ -9129,13 +9153,16 @@
       /* static struct objc_protocol _OBJC_PROTOCOL_<mumble>; */
       protocol_name_expr = add_objc_string (PROTOCOL_NAME (p), class_names);
 
+      /* APPLE LOCAL LLVM - begin NUL pointer */
       if (refs_decl)
-	refs_expr = convert (build_pointer_type (build_pointer_type
-						 (objc_protocol_template)),
-			     build_unary_op (ADDR_EXPR, refs_decl, 0));
+        refs_expr =
+          convert (build_pointer_type (build_pointer_type (objc_protocol_template)),
+                   build_unary_op (ADDR_EXPR, refs_decl, 0));
       else
-	refs_expr = build_int_cst (NULL_TREE, 0);
-
+        refs_expr =
+          convert (build_pointer_type (build_pointer_type (objc_protocol_template)),
+                   build_int_cst (NULL_TREE, 0));
+      /* APPLE LOCAL LLVM - end NUL pointer */
 
       /* APPLE LOCAL begin radar 4585769 - Objective-C 1.0 extensions */
       save_objc_implementation_context = objc_implementation_context;
@@ -9201,10 +9228,16 @@
   /* APPLE LOCAL begin ObjC new abi */
   /* APPLE LOCAL begin radar 4533974 - ObjC new protocol */
   /* APPLE LOCAL begin radar 4533974 - ObjC newprotocol - radar 4695109 */
+  /* APPLE LOCAL LLVM - begin NUL pointer */
   if (newabi)
     {
+      if (!objc_protocol_extension_template)
+        build_objc_protocol_extension_template ();    
+
       /* 'isa' is NULL in the new ObjC abi */
-      expr = build_int_cst (NULL_TREE, 0);
+      expr =
+        convert (build_pointer_type (objc_protocol_extension_template),
+                 build_int_cst (NULL_TREE, 0));
     }
   /* APPLE LOCAL end radar 4533974 - ObjC newprotocol - radar 4695109 */
   /* APPLE LOCAL begin radar 4585769 - Objective-C 1.0 extensions */
@@ -9212,11 +9245,20 @@
   else
     {
       if (!objc_protocol_or_opt_ins_meth)
-	expr = build_int_cst (NULL_TREE, 0);
+        {
+          if (!objc_protocol_extension_template)
+            build_objc_protocol_extension_template ();    
+          
+          expr =
+            convert (build_pointer_type (objc_protocol_extension_template),
+                     build_int_cst (NULL_TREE, 0));
+        }
       else
-	expr = convert (build_pointer_type (objc_protocol_extension_template),
-			build_unary_op (ADDR_EXPR, objc_protocol_or_opt_ins_meth, 0));	
+        expr = convert (build_pointer_type (objc_protocol_extension_template),
+                        build_unary_op (ADDR_EXPR,
+                                        objc_protocol_or_opt_ins_meth, 0));
     }
+  /* APPLE LOCAL LLVM - end NUL pointer */
   /* APPLE LOCAL end radar 4585769 - Objective-C 1.0 extensions */
 
   initlist = tree_cons (NULL_TREE, expr, initlist);
@@ -9226,7 +9268,12 @@
   initlist = tree_cons (NULL_TREE, protocol_list, initlist);
 
   if (!instance_methods)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_method_proto_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_method_proto_list_ptr,
@@ -9235,7 +9282,12 @@
     }
 
   if (!class_methods)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_method_proto_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+  /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_method_proto_list_ptr,
@@ -9248,30 +9300,45 @@
     {
       /* APPLE LOCAL begin radar 4695109 */
       if (!objc_protocol_or_opt_ins_meth)
-	initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+        /* APPLE LOCAL LLVM - begin NUL pointer */
+        initlist = tree_cons (NULL_TREE,
+                              convert (objc_method_proto_list_ptr,
+                                       build_int_cst (NULL_TREE, 0)),
+                              initlist);
+        /* APPLE LOCAL LLVM - end NUL pointer */
       else
-	{
-	  expr = convert (objc_method_proto_list_ptr,
-			  build_unary_op (ADDR_EXPR, objc_protocol_or_opt_ins_meth, 0));
-	  initlist = tree_cons (NULL_TREE, expr, initlist);
-	}
+        {
+          expr = convert (objc_method_proto_list_ptr,
+                          build_unary_op (ADDR_EXPR, objc_protocol_or_opt_ins_meth, 0));
+          initlist = tree_cons (NULL_TREE, expr, initlist);
+        }
       if (!opt_cls_meth)
-	initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+        /* APPLE LOCAL LLVM - begin NUL pointer */
+        initlist = tree_cons (NULL_TREE,
+                              convert (objc_method_proto_list_ptr,
+                                       build_int_cst (NULL_TREE, 0)),
+                              initlist);
+         /* APPLE LOCAL LLVM - end NUL pointer */
       else
-	{
-	  expr = convert (objc_method_proto_list_ptr,
-			  build_unary_op (ADDR_EXPR, opt_cls_meth, 0));
-	  initlist = tree_cons (NULL_TREE, expr, initlist);
-	}
+        {
+          expr = convert (objc_method_proto_list_ptr,
+                          build_unary_op (ADDR_EXPR, opt_cls_meth, 0));
+          initlist = tree_cons (NULL_TREE, expr, initlist);
+        }
       /* APPLE LOCAL end radar 4695109 */
       if (!property_list)
-	initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+        /* APPLE LOCAL LLVM - begin NUL pointer */
+        initlist = tree_cons (NULL_TREE,
+                              convert (objc_prop_list_ptr,
+                                       build_int_cst (NULL_TREE, 0)),
+                              initlist);
+        /* APPLE LOCAL LLVM - end NUL pointer */
       else
-	{
-	  expr = convert (objc_prop_list_ptr,
-			  build_unary_op (ADDR_EXPR, property_list, 0));
-	  initlist = tree_cons (NULL_TREE, expr, initlist);
-	}
+        {
+          expr = convert (objc_prop_list_ptr,
+                          build_unary_op (ADDR_EXPR, property_list, 0));
+          initlist = tree_cons (NULL_TREE, expr, initlist);
+        }
       /* APPLE LOCAL begin radar 5192466 */
       /* const uint32_t size;  = sizeof(struct protocol_t) */
       expr = build_int_cst (
@@ -10291,7 +10358,12 @@
 			ivar);
     else
       /* Unnamed bit-field ivar (yuck).  */
-      ivar = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), ivar);
+      /* APPLE LOCAL LLVM - begin NUL pointer */
+      ivar = tree_cons (NULL_TREE,
+                        convert (string_type_node,
+                                 build_int_cst (NULL_TREE, 0)),
+                        ivar);
+      /* APPLE LOCAL LLVM - end NUL pointer */
 
     /* Set type */
     encode_field_decl (field_decl,
@@ -10348,7 +10420,12 @@
 			  ivar);
       else
 	/* Unnamed bit-field ivar (yuck).  */
-	ivar = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), ivar);
+        /* APPLE LOCAL LLVM - begin NUL pointer */
+        ivar = tree_cons (NULL_TREE,
+                          convert (string_type_node,
+                                   build_int_cst (NULL_TREE, 0)),
+                          ivar);
+        /* APPLE LOCAL LLVM - end NUL pointer */
 
       /* Set type.  */
       encode_field_decl (field_decl,
@@ -11042,7 +11119,12 @@
   initlist = tree_cons (NULL_TREE, class_name, initlist);
 
   if (!instance_methods)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_method_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_method_list_ptr,
@@ -11050,7 +11132,12 @@
       initlist = tree_cons (NULL_TREE, expr, initlist);
     }
   if (!class_methods)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_method_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_method_list_ptr,
@@ -11059,18 +11146,26 @@
     }
 
   /* protocol_list = */
-  if (!protocol_list)
-     initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
-  else
-    {
-      /* APPLE LOCAL begin radar 4533974 - ObjC new protocol */
-      tree protocol_list_ptr =
-	     (abi_v2) ? build_pointer_type (objc_v2_protocol_template)
-		      : build_pointer_type (build_pointer_type (objc_protocol_template));
-      expr = convert (protocol_list_ptr, build_unary_op (ADDR_EXPR, protocol_list, 0));
-      /* APPLE LOCAL end radar 4533974 - ObjC new protocol */
-      initlist = tree_cons (NULL_TREE, expr, initlist);
-    }
+  /* APPLE LOCAL LLVM - begin NUL pointer */
+  {
+    tree protocol_list_ptr =
+      (abi_v2) ? build_pointer_type (objc_v2_protocol_template)
+               : build_pointer_type (build_pointer_type (objc_protocol_template));
+    
+    if (!protocol_list)
+      initlist = tree_cons (NULL_TREE, 
+                            convert (protocol_list_ptr,
+                                     build_int_cst (NULL_TREE, 0)),
+                            initlist);
+    else
+      {
+        /* APPLE LOCAL begin radar 4533974 - ObjC new protocol */
+        expr = convert (protocol_list_ptr, build_unary_op (ADDR_EXPR, protocol_list, 0));
+        /* APPLE LOCAL end radar 4533974 - ObjC new protocol */
+        initlist = tree_cons (NULL_TREE, expr, initlist);
+      }
+  }
+  /* APPLE LOCAL LLVM - end NUL pointer */
   /* APPLE LOCAL begin radar 4585769 - Objective-C 1.0 extensions */
   if (!abi_v2)
     {
@@ -11082,7 +11177,12 @@
   /* APPLE LOCAL begin C* property metadata (Radar 4498373) */
   /* struct _objc_property_list *instance_properties; */
   if (!property_list)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE, 
+                          convert (objc_prop_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_prop_list_ptr,
@@ -11149,7 +11249,12 @@
 
   /* objc_ivar_list = */
   if (!ivar_list)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE, 
+                          convert (objc_ivar_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_ivar_list_ptr,
@@ -11159,7 +11264,12 @@
 
   /* objc_method_list = */
   if (!dispatch_table)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_method_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_method_list_ptr,
@@ -11167,60 +11277,109 @@
       initlist = tree_cons (NULL_TREE, expr, initlist);
     }
 
+  /* APPLE LOCAL LLVM - begin NUL pointer */
   if (flag_next_runtime)
     /* method_cache = */
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    initlist = tree_cons (NULL_TREE,
+                          convert (build_pointer_type
+                                   (xref_tag (RECORD_TYPE,
+                                              get_identifier
+                                              ("objc_cache"))),
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
   else
     {
+      tree null_objc_class_ptr = 
+        convert (build_pointer_type (objc_class_template),
+                 build_int_cst (NULL_TREE, 0));
+ 
       /* dtable = */
-      initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
-
+      initlist = tree_cons (NULL_TREE,
+                            convert (build_pointer_type (xref_tag (RECORD_TYPE,
+                                                                   get_identifier
+                                                                   ("sarray"))),
+                                     build_int_cst (NULL_TREE, 0)),
+                            initlist);
+ 
       /* subclass_list = */
-      initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
-
+      initlist = tree_cons (NULL_TREE, null_objc_class_ptr, initlist);
+ 
       /* sibling_class = */
-      initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+      initlist = tree_cons (NULL_TREE, null_objc_class_ptr, initlist);
     }
-
+  /* APPLE LOCAL LLVM - end NUL pointer */
+ 
   /* protocol_list = */
-  if (! protocol_list)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
-  else
-    {
-      expr = convert (build_pointer_type
-		      (build_pointer_type
-		       (objc_protocol_template)),
-		      build_unary_op (ADDR_EXPR, protocol_list, 0));
-      initlist = tree_cons (NULL_TREE, expr, initlist);
-    }
+  /* APPLE LOCAL LLVM - begin NUL pointer */
+  {
+    tree objc_protocol_ptr_ptr =
+      build_pointer_type (build_pointer_type (objc_protocol_template));
+ 
+    if (!protocol_list)
+      initlist = tree_cons (NULL_TREE,
+                            convert (objc_protocol_ptr_ptr,
+                                     build_int_cst (NULL_TREE, 0)),
+                            initlist);
+    else
+      {
+        expr = convert (objc_protocol_ptr_ptr,
+                        build_unary_op (ADDR_EXPR, protocol_list, 0));
+        initlist = tree_cons (NULL_TREE, expr, initlist);
+      }
+  }
+  /* APPLE LOCAL LLVM - end NUL pointer */
 
   /* APPLE LOCAL begin radar 4585769 - Objective-C 1.0 extensions */
   if (flag_next_runtime)
     {
       /* const char *ivar_layout; */
       if (IS_CLS_META (status)) /* Meta Class ? */
-	initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+ 	/* APPLE LOCAL LLVM - begin NUL pointer */
+        initlist = tree_cons (NULL_TREE,
+                              convert (string_type_node,
+                                       build_int_cst (NULL_TREE, 0)),
+                              initlist);
+ 	/* APPLE LOCAL LLVM - end NUL pointer */
       else
 	{
 	  tree ivar_layout = objc_build_ivar_layout (true);
 	  if (!ivar_layout)
-	    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+            /* APPLE LOCAL LLVM - begin NUL pointer */
+            initlist = tree_cons (NULL_TREE,
+                                  convert (string_type_node,
+                                           build_int_cst (NULL_TREE, 0)),
+                                  initlist);
+ 	    /* APPLE LOCAL LLVM - end NUL pointer */
 	  else
 	    initlist = tree_cons (NULL_TREE, ivar_layout, initlist);
 	}
       /* struct _objc_class_ext *ext; */
-      if (!objc_class_ext)
-        initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
-      else
-	{
-	  expr = convert (build_pointer_type (objc_class_ext_template), 
-			  build_unary_op (ADDR_EXPR, objc_class_ext, 0));
-	  initlist = tree_cons (NULL_TREE, expr, initlist);
-	}
+      /* APPLE LOCAL LLVM - begin NUL pointer */
+      if (!objc_class_ext_template)
+        build_objc_class_ext_template ();
+
+      {
+        tree objc_class_ext_ptr =
+          build_pointer_type (objc_class_ext_template);
+ 
+        if (!objc_class_ext)
+          initlist = tree_cons (NULL_TREE,
+                                convert (objc_class_ext_ptr,
+                                         build_int_cst (NULL_TREE, 0)),
+                                initlist);
+        else
+          {
+            expr = convert (objc_class_ext_ptr,
+                            build_unary_op (ADDR_EXPR, objc_class_ext, 0));
+            initlist = tree_cons (NULL_TREE, expr, initlist);
+          }
+      }
+      /* APPLE LOCAL LLVM - end NUL pointer */
     }
   else
     /* gc_object_type = NULL */
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - NUL pointer */
+    initlist = tree_cons (NULL_TREE, null_pointer_node, initlist);
   /* APPLE LOCAL end radar 4585769 - Objective-C 1.0 extensions */
 
   return objc_build_constructor (type, nreverse (initlist));
@@ -11382,13 +11541,19 @@
   if (cache)
     initlist = tree_cons (NULL_TREE, cache, initlist);
   else
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - NUL pointer */
+    initlist = tree_cons (NULL_TREE, null_pointer_node, initlist);
 
   /* vtable */
   if (vtable)
     initlist = tree_cons (NULL_TREE, vtable, initlist);
   else
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (build_pointer_type (objc_imp_type),
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
 
   /* ro */
   initlist = tree_cons (NULL_TREE, ro, initlist);
@@ -11432,7 +11597,12 @@
   /* APPLE LOCAL begin radar 4695101 */
   /* ivarLayout */
   if (!ivarLayout)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (string_type_node,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     initlist = tree_cons (NULL_TREE, ivarLayout, initlist);
   /* APPLE LOCAL end radar 4695101 */
@@ -11442,7 +11612,12 @@
 
   /* baseMethods */
   if (!baseMethods)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_method_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_method_list_ptr,
@@ -11451,32 +11626,50 @@
     }
 
   /* baseProtocols */
-  if (!baseProtocols)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
-  else
-    {
-      tree protocol_list_t_p = build_pointer_type (
-		               xref_tag (RECORD_TYPE, 
-			                 get_identifier (UTAG_V2_PROTOCOL_LIST)));
-      expr = convert (protocol_list_t_p,
-                      build_unary_op (ADDR_EXPR, baseProtocols, 0));
-      initlist = tree_cons (NULL_TREE, expr, initlist);
-    }
+  /* APPLE LOCAL LLVM - begin NUL pointer */
+  {
+    tree protocol_list_t_p =
+      build_pointer_type (xref_tag (RECORD_TYPE, 
+                                    get_identifier (UTAG_V2_PROTOCOL_LIST)));
+
+    if (!baseProtocols)
+      initlist = tree_cons (NULL_TREE,
+                            convert (protocol_list_t_p,
+                                     build_int_cst (NULL_TREE, 0)),
+                            initlist);
+    else
+      {
+        expr = convert (protocol_list_t_p,
+                        build_unary_op (ADDR_EXPR, baseProtocols, 0));
+        initlist = tree_cons (NULL_TREE, expr, initlist);
+      }
+  }
+  /* APPLE LOCAL LLVM - end NUL pointer */
 
   /* ivars */
   if (!ivars)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_v2_ivar_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_v2_ivar_list_ptr,
-                      build_unary_op (ADDR_EXPR, ivars, 0));
+		      build_unary_op (ADDR_EXPR, ivars, 0));
       initlist = tree_cons (NULL_TREE, expr, initlist);
     }
 
   /* APPLE LOCAL begin radar 4695101 */
   /* weakIvarLayout */
   if (!weakIvarLayout)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (string_type_node,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     initlist = tree_cons (NULL_TREE, weakIvarLayout, initlist);
   /* APPLE LOCAL end radar 4695101 */
@@ -11484,11 +11677,16 @@
   /* APPLE LOCAL begin C* property metadata (Radar 4498373) */
   /* property list */
   if (!property_list)
-    initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    initlist = tree_cons (NULL_TREE,
+                          convert (objc_prop_list_ptr,
+                                   build_int_cst (NULL_TREE, 0)),
+                          initlist);
+    /* APPLE LOCAL LLVM - end NUL pointer */
   else
     {
       expr = convert (objc_prop_list_ptr,
-                      build_unary_op (ADDR_EXPR, property_list, 0));
+		      build_unary_op (ADDR_EXPR, property_list, 0));
       initlist = tree_cons (NULL_TREE, expr, initlist);
     }
   /* APPLE LOCAL end C* property metadata (Radar 4498373) */
@@ -11735,7 +11933,10 @@
       /* root class.  */
       root_expr = build_unary_op (ADDR_EXPR, metaclass_decl, 0);
       metaclass_superclass_expr = build_unary_op (ADDR_EXPR, class_decl, 0);
-      class_superclass_expr = build_int_cst (NULL_TREE, 0);
+      /* APPLE LOCAL LLVM - begin NUL pointer */
+      class_superclass_expr = convert (build_pointer_type (objc_v2_class_template),
+                                       build_int_cst (NULL_TREE, 0));
+      /* APPLE LOCAL LLVM - end NUL pointer */
       flags |= 0x2; /* CLS_ROOT: it is also a root meta class */
     }
 
@@ -11927,7 +12128,10 @@
       super_expr = build_c_cast (cast_type, super_expr); /* cast! */
     }
   else
-    super_expr = build_int_cst (NULL_TREE, 0);
+    /* APPLE LOCAL LLVM - begin NUL pointer */
+    super_expr = convert (string_type_node,
+                          build_int_cst (NULL_TREE, 0));
+    /* APPLE LOCAL LLVM - end NUL pointer */
 
   root_expr = add_objc_string (my_root_id, class_names);
   root_expr = build_c_cast (cast_type, root_expr); /* cast! */
@@ -13190,7 +13394,11 @@
 	refs_expr = convert (build_pointer_type (objc_v2_protocol_template),
 			     build_unary_op (ADDR_EXPR, refs_decl, 0));
       else
-	refs_expr = build_int_cst (NULL_TREE, 0);
+	/* APPLE LOCAL LLVM - begin NUL pointer */
+        refs_expr =
+          convert (build_pointer_type (objc_v2_protocol_template),
+                   build_int_cst (NULL_TREE, 0));
+	/* APPLE LOCAL LLVM - end NUL pointer */
 
       /* APPLE LOCAL begin radar 4695101 */
       /* Build table of list of properties for this protocol. */





More information about the llvm-commits mailing list