[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