[llvm-commits] [llvm-gcc-4.2] r56729 - in /llvm-gcc-4.2/trunk/gcc/objc: ChangeLog.apple objc-act.c

Bill Wendling isanbard at gmail.com
Fri Sep 26 17:24:12 PDT 2008


Author: void
Date: Fri Sep 26 19:24:12 2008
New Revision: 56729

URL: http://llvm.org/viewvc/llvm-project?rev=56729&view=rev
Log:
Don't generate trampolines for blocks.

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

Modified: llvm-gcc-4.2/trunk/gcc/objc/ChangeLog.apple
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/objc/ChangeLog.apple?rev=56729&r1=56728&r2=56729&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/objc/ChangeLog.apple (original)
+++ llvm-gcc-4.2/trunk/gcc/objc/ChangeLog.apple Fri Sep 26 19:24:12 2008
@@ -1,3 +1,22 @@
+2008-09-23  Fariborz Jahanian <fjahanian at apple.com>
+
+        Radar 6230701
+	* objc-act.c (access_block_ref_self_decl): New
+	(build_ivar_reference): Call it, instead of inline code.
+	(get_super_receiver): Call access_block_ref_self_decl to get
+	copied-in version of 'self' when building 'super'
+	messaging.
+
+2008-09-19  Fariborz Jahanian <fjahanian at apple.com>
+
+	Radar 6230800
+	* objc-act.c (objc_v2_build_ivar_ref): Better text for diagnostic.
+
+2008-09-19  Fariborz Jahanian <fjahanian at apple.com>
+
+        Radar 4900615
+	* objc-act.c (encode_type): Encode long double as 'D'.
+
 2008-09-11  Fariborz Jahanian <fjahanian at apple.com>
 
         Radar 5839123

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=56729&r1=56728&r2=56729&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/objc/objc-act.c (original)
+++ llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Fri Sep 26 19:24:12 2008
@@ -7492,7 +7492,8 @@
 #endif
      ))
     {
-      error ("Illegal reference to 'none-fragile' ivar");
+      /* APPLE LOCAL radar 6230800 */
+      error ("Illegal reference to non-fragile ivar");
       return error_mark_node;
     }
   /* APPLE LOCAL end radar 4954480 */
@@ -14259,6 +14260,20 @@
   return result;
 }
 
+/* APPLE LOCAL begin radar 6230701 */
+/* Find a 'self' declaration in this block.  If not found,
+   add a 'const' copy in current block. */
+static void
+access_block_ref_self_decl (tree *decl)
+{
+  if (lookup_name_in_block (DECL_NAME (*decl), decl))
+    *decl = lookup_name (DECL_NAME (*decl));
+  else
+    *decl = build_block_ref_decl (DECL_NAME (*decl), *decl);
+  gcc_assert (*decl);
+}
+/* APPLE LOCAL end radar 6230701 */
+
 static tree
 build_ivar_reference (tree id)
 {
@@ -14289,18 +14304,7 @@
   {
     /* Find a 'self' declaration in this block.  If not found,
        add a 'const' copy in current block. */
-    if (lookup_name_in_block (DECL_NAME (decl), &decl))
-      decl = lookup_name (DECL_NAME (decl));
-    else {
-#ifndef OBJCPLUS
-      if (building_block_byref_decl) {
-        warning (0, "ivar %qs may not be declared inside the 'byref' block - ignored",
-                 IDENTIFIER_POINTER (id));
-        return error_mark_node;
-      }
-#endif
-      decl = build_block_ref_decl (DECL_NAME (decl), decl);
-    }
+    access_block_ref_self_decl (&decl);
     gcc_assert (decl);
   }
   base = build_indirect_ref (decl, "->");
@@ -17506,9 +17510,11 @@
       switch (GET_MODE_BITSIZE (TYPE_MODE (type)))
 	{
 	case 32:  c = 'f'; break;
-	case 64:
+        /* APPLE LOCAL begin radar 4900615 */
+	case 64:  c = 'd'; break;
 	case 96:
-	case 128: c = 'd'; break;
+	case 128: c = 'D'; break;
+        /* APPLE LOCAL end radar 4900615 */
 	default: abort ();
 	}
       obstack_1grow (&util_obstack, c);
@@ -18211,7 +18217,16 @@
 
       /* Set receiver to self.  */
       super_expr = objc_build_component_ref (UOBJC_SUPER_decl, self_id);
-      super_expr = build_modify_expr (super_expr, NOP_EXPR, self_decl);
+      /* APPLE LOCAL begin radar 6230701 */
+      if (cur_block)
+      {
+        tree local_self_decl = self_decl;
+        access_block_ref_self_decl (&local_self_decl);
+        super_expr = build_modify_expr (super_expr, NOP_EXPR, local_self_decl);
+      }
+      else
+        super_expr = build_modify_expr (super_expr, NOP_EXPR, self_decl);
+       /* APPLE LOCAL end radar 6230701 */
       super_expr_list = super_expr;
 
       /* Set class to begin searching.  */





More information about the llvm-commits mailing list