[llvm-branch-commits] [llvm-gcc-branch] r102152 - in /llvm-gcc-4.2/branches/Apple/Morbo: ./ gcc/objc/objc-act.c gcc/testsuite/objc.dg/weak_import_class.m

Bill Wendling isanbard at gmail.com
Thu Apr 22 17:19:31 PDT 2010


Author: void
Date: Thu Apr 22 19:19:31 2010
New Revision: 102152

URL: http://llvm.org/viewvc/llvm-project?rev=102152&view=rev
Log:
$ svn merge -c 101804 https://llvm.org/svn/llvm-project/llvm-gcc-4.2/trunk
--- Merging r101804 into '.':
U    gcc/objc/objc-act.c
A    gcc/testsuite/objc.dg/weak_import_class.m


Added:
    llvm-gcc-4.2/branches/Apple/Morbo/gcc/testsuite/objc.dg/weak_import_class.m
      - copied unchanged from r101804, llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/weak_import_class.m
Modified:
    llvm-gcc-4.2/branches/Apple/Morbo/   (props changed)
    llvm-gcc-4.2/branches/Apple/Morbo/gcc/objc/objc-act.c

Propchange: llvm-gcc-4.2/branches/Apple/Morbo/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 22 19:19:31 2010
@@ -1,2 +1,2 @@
 /llvm/trunk:100565
-/llvm-gcc-4.2/trunk:98728,98841,98893,99196,99305,99592-99593,99629,99670,99982,99984-99986,99988,99992-99993,99995,99997-99999,100035,100149,100303,100565,100624-100626,100712,100721,101090-101091,101199,101216,101304,101333,101959,102139
+/llvm-gcc-4.2/trunk:98728,98841,98893,99196,99305,99592-99593,99629,99670,99982,99984-99986,99988,99992-99993,99995,99997-99999,100035,100149,100303,100565,100624-100626,100712,100721,101090-101091,101199,101216,101304,101333,101804,101959,102139,102148

Modified: llvm-gcc-4.2/branches/Apple/Morbo/gcc/objc/objc-act.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/branches/Apple/Morbo/gcc/objc/objc-act.c?rev=102152&r1=102151&r2=102152&view=diff
==============================================================================
--- llvm-gcc-4.2/branches/Apple/Morbo/gcc/objc/objc-act.c (original)
+++ llvm-gcc-4.2/branches/Apple/Morbo/gcc/objc/objc-act.c Thu Apr 22 19:19:31 2010
@@ -924,6 +924,28 @@
   return 0;
 }
 
+/* APPLE LOCAL begin radar 7865106 */
+static bool objc_class_weak_import(tree class)
+{
+  tree chain;
+  gcc_assert (class && TREE_CODE (class) == CLASS_INTERFACE_TYPE);
+  for (chain = CLASS_ATTRIBUTES (class); chain; chain = TREE_CHAIN (chain))
+    if (is_attribute_p ("weak_import", TREE_PURPOSE (chain)))
+      return true;
+  return false;
+}
+
+static char*
+objc_build_weak_reference_internal_classname (tree ident, bool metaclass)
+{
+  static char string[BUFSIZE];
+  sprintf (string, ".weak_reference %s_%s", !metaclass ? "_OBJC_CLASS_$" 
+				       : "_OBJC_METACLASS_$", 
+			    IDENTIFIER_POINTER (ident));
+  return string;
+}
+/* APPLE LOCAL end radar 7865106 */
+
 void
 /* APPLE LOCAL radar 4548636 */
 objc_start_class_interface (tree class, tree super_class, tree protos, tree attributes)
@@ -935,6 +957,17 @@
   CLASS_ATTRIBUTES (objc_interface_context) = attributes;
   objc_warn_on_class_attributes (objc_interface_context, false);
 /* APPLE LOCAL end radar 4548636 */
+  /* APPLE LOCAL begin radar 7865106 */
+  if (flag_objc_abi == 2 && objc_class_weak_import(objc_interface_context)) {
+    const char * name = 
+      objc_build_weak_reference_internal_classname(CLASS_NAME(objc_interface_context) , 0);
+    tree asm_str = build_string(strlen(name), name);
+    cgraph_add_asm_node(asm_str);
+    name = objc_build_weak_reference_internal_classname(CLASS_NAME(objc_interface_context) , 1);
+    asm_str = build_string(strlen(name), name);
+    cgraph_add_asm_node(asm_str);
+  }
+  /* APPLE LOCAL end radar 7865106 */
   objc_public_flag = 0;
 }
 
@@ -15175,6 +15208,10 @@
       else if (is_attribute_p ("objc_exception", TREE_PURPOSE (chain)))
         ;
       /* APPLE LOCAL end radar 5008110 */
+      /* APPLE LOCAL begin radar 7865106 */
+      else if (is_attribute_p ("weak_import", TREE_PURPOSE (chain)))
+        ;
+      /* APPLE LOCAL end radar 7865106 */
       else if (!use)
 	warning (0, "attribute %s is unknown - ignored",
 		  IDENTIFIER_POINTER (TREE_PURPOSE (chain)));





More information about the llvm-branch-commits mailing list