[llvm-commits] [llvm-gcc-4.2] r55670 - in /llvm-gcc-4.2/trunk/gcc/config: darwin-protos.h darwin.c darwin.h

Bill Wendling isanbard at gmail.com
Tue Sep 2 15:08:00 PDT 2008


Author: void
Date: Tue Sep  2 17:08:00 2008
New Revision: 55670

URL: http://llvm.org/viewvc/llvm-project?rev=55670&view=rev
Log:
Handle NSObject attribute.

Modified:
    llvm-gcc-4.2/trunk/gcc/config/darwin-protos.h
    llvm-gcc-4.2/trunk/gcc/config/darwin.c
    llvm-gcc-4.2/trunk/gcc/config/darwin.h

Modified: llvm-gcc-4.2/trunk/gcc/config/darwin-protos.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin-protos.h?rev=55670&r1=55669&r2=55670&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/darwin-protos.h (original)
+++ llvm-gcc-4.2/trunk/gcc/config/darwin-protos.h Tue Sep  2 17:08:00 2008
@@ -95,6 +95,8 @@
 
 /* APPLE LOCAL ObjC GC */
 extern tree darwin_handle_objc_gc_attribute (tree *, tree, tree, int, bool *);
+/* APPLE LOCAL file radar 5595352 */
+extern tree darwin_handle_nsobject_attribute (tree *, tree, tree, int, bool *);
 
 extern void darwin_file_start (void);
 extern void darwin_file_end (void);

Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin.c?rev=55670&r1=55669&r2=55670&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/darwin.c (original)
+++ llvm-gcc-4.2/trunk/gcc/config/darwin.c Tue Sep  2 17:08:00 2008
@@ -1772,6 +1772,40 @@
 }
 /* APPLE LOCAL end ObjC GC */
 
+/* APPLE LOCAL begin radar 5595352 */
+tree
+darwin_handle_nsobject_attribute (tree *node,
+                                  tree name,
+                                  tree args ATTRIBUTE_UNUSED,
+                                  int flags ATTRIBUTE_UNUSED,
+                                  bool *no_add_attrs)
+{
+  tree orig = *node, type;
+  if (!POINTER_TYPE_P (orig) || TREE_CODE (TREE_TYPE (orig)) != RECORD_TYPE)
+    {
+      error ("__attribute ((NSObject)) is for pointer types only");
+      return NULL_TREE;
+    }
+  type = build_type_attribute_variant (orig,
+				       tree_cons (name, NULL_TREE,
+				       TYPE_ATTRIBUTES (orig)));
+  /* The main variant must be preserved no matter what. What ever
+     main variant comes out of the call to build_type_attribute_variant
+     is bogus here. */
+  if (TYPE_MAIN_VARIANT (orig) != TYPE_MAIN_VARIANT (type))
+    {
+      TYPE_MAIN_VARIANT (type) = TYPE_MAIN_VARIANT (orig);
+      TYPE_NEXT_VARIANT (type) = TYPE_NEXT_VARIANT (orig);
+      TYPE_NEXT_VARIANT (orig) = type;
+    }
+
+  *node = type;
+  /* No need to hang on to the attribute any longer.  */
+  *no_add_attrs = true;
+  return NULL_TREE;
+}
+/* APPLE LOCAL end radar 5595352 */
+
 /* APPLE LOCAL begin darwin_set_section_for_var_p  20020226 --turly  */
 
 /* This is specifically for any initialised static class constants

Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin.h?rev=55670&r1=55669&r2=55670&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/darwin.h (original)
+++ llvm-gcc-4.2/trunk/gcc/config/darwin.h Tue Sep  2 17:08:00 2008
@@ -453,9 +453,8 @@
    %{nomultidefs} \
    %{Zmulti_module:-multi_module} %{Zsingle_module:-single_module} \
    %{Zmultiply_defined*:-multiply_defined %*} \
-   %{!Zmultiply_defined*:%{shared-libgcc: \
-     %:version-compare(< 10.5 mmacosx-version-min= -multiply_defined) \
-     %:version-compare(< 10.5 mmacosx-version-min= suppress)}} \
+   "/* APPLE LOCAL begin deletion 5023884 */" \
+   "/* APPLE LOCAL end deletion 5023884 */" \
    %{Zmultiplydefinedunused*:-multiply_defined_unused %*} \
    "/* APPLE LOCAL mainline 2007-06-01 5238485 */" \
    %{fpie:-pie} \
@@ -1073,15 +1072,15 @@
   } while (0)
 #else
 /* LLVM LOCAL end */
-#define ASM_DECLARE_CLASS_REFERENCE(FILE,NAME)                          \
-  do {                                                                  \
-    if (FILE) {                                                         \
-      fprintf (FILE, "\t");                                             \
-      assemble_name (FILE, NAME);					\
-      fprintf (FILE, "=0\n");                                           \
-      (*targetm.asm_out.globalize_label) (FILE, NAME);                  \
-    }                                                                   \
-  } while (0)
+#define ASM_DECLARE_CLASS_REFERENCE(FILE,NAME)				\
+    do {								\
+	 if (FILE) {							\
+	   fprintf (FILE, "\t");					\
+	   assemble_name (FILE, NAME);					\
+	   fprintf (FILE, "=0\n");					\
+	   (*targetm.asm_out.globalize_label) (FILE, NAME);		\
+	 }								\
+       } while (0)
 /* LLVM LOCAL */
 #endif /*ENABLE_LLVM*/
 
@@ -1109,6 +1108,8 @@
     darwin_handle_kext_attribute },					     \
   /* APPLE LOCAL ObjC GC */						     \
   { "objc_gc", 1, 1, false, true, false, darwin_handle_objc_gc_attribute },  \
+  /* APPLE LOCAL radar 5595352 */					     \
+  { "NSObject", 0, 0, false, true, false, darwin_handle_nsobject_attribute },\
   { "weak_import", 0, 0, true, false, false,				     \
     darwin_handle_weak_import_attribute }
 





More information about the llvm-commits mailing list