[llvm-commits] [llvm-gcc-4.2] r83569 - in /llvm-gcc-4.2/trunk/gcc: c-decl.c cp/decl.c testsuite/objc.dg/block-weak.m

Bill Wendling isanbard at gmail.com
Thu Oct 8 13:12:52 PDT 2009


Author: void
Date: Thu Oct  8 15:12:52 2009
New Revision: 83569

URL: http://llvm.org/viewvc/llvm-project?rev=83569&view=rev
Log:
        Radar 7284529
        * c-decl.c (init_byref_decl): Ensure copy/dispose helper is unique.
        * cp/decl.c (init_byref_decl): Likewise.

Patch by Mike Stump!

Added:
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/block-weak.m
Modified:
    llvm-gcc-4.2/trunk/gcc/c-decl.c
    llvm-gcc-4.2/trunk/gcc/cp/decl.c

Modified: llvm-gcc-4.2/trunk/gcc/c-decl.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/c-decl.c?rev=83569&r1=83568&r2=83569&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/c-decl.c (original)
+++ llvm-gcc-4.2/trunk/gcc/c-decl.c Thu Oct  8 15:12:52 2009
@@ -3873,7 +3873,7 @@
 				 tree_cons (NULL_TREE, ptr_type_node,
 					    tree_cons (NULL_TREE, ptr_type_node,
 						       void_list_node)));
-	  strcpy (name, "__Block_byref_id_object_copy");
+	  sprintf (name, "__Block_byref_id_object_copy%d", kind);
 	  block_byref_id_object_copy[kind] = build_helper_func_decl (get_identifier (name),
 								     func_type);
 	  /* Synthesize function definition. */
@@ -3891,7 +3891,7 @@
 	  tree func_type =
 	    build_function_type (void_type_node,
 				 tree_cons (NULL_TREE, ptr_type_node, void_list_node));
-	  strcpy (name, "__Block_byref_id_object_dispose");
+	  sprintf (name, "__Block_byref_id_object_dispose%d", kind);
 	  block_byref_id_object_dispose[kind] = build_helper_func_decl (get_identifier (name),
 									func_type);
 	  /* Synthesize function definition. */

Modified: llvm-gcc-4.2/trunk/gcc/cp/decl.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/cp/decl.c?rev=83569&r1=83568&r2=83569&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/cp/decl.c (original)
+++ llvm-gcc-4.2/trunk/gcc/cp/decl.c Thu Oct  8 15:12:52 2009
@@ -5623,7 +5623,7 @@
 				 tree_cons (NULL_TREE, ptr_type_node,
 					    tree_cons (NULL_TREE, ptr_type_node,
 						       void_list_node)));
-	  strcpy (name, "__Block_byref_id_object_copy");
+	  sprintf (name, "__Block_byref_id_object_copy%d", kind);
 	  block_byref_id_object_copy[kind] = build_helper_func_decl (get_identifier (name),
 								     func_type);
 	  DECL_CONTEXT (block_byref_id_object_copy[kind]) = current_function_decl;
@@ -5645,7 +5645,7 @@
 	  func_type =
 	    build_function_type (void_type_node,
 				 tree_cons (NULL_TREE, ptr_type_node, void_list_node));
-	  strcpy (name, "__Block_byref_id_object_dispose");
+	  sprintf (name, "__Block_byref_id_object_dispose%d", kind);
 	  block_byref_id_object_dispose[kind] = build_helper_func_decl (get_identifier (name),
 									func_type);
 	  DECL_CONTEXT (block_byref_id_object_dispose[kind]) = current_function_decl;

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/block-weak.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/block-weak.m?rev=83569&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/block-weak.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/block-weak.m Thu Oct  8 15:12:52 2009
@@ -0,0 +1,15 @@
+/* APPLE LOCAL file __block copy/dispose 7284529 */
+/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-options "-fblocks" } */
+
+ at interface ShortcutsController
+ at end
+
+ at class barbar;
+ at implementation ShortcutsController
+- (void) _markConflicts
+{
+ __attribute__((__blocks__(byref))) barbar * matchDict;
+ __attribute__((__blocks__(byref))) void (^markConflictsBlock)();
+}
+ at end





More information about the llvm-commits mailing list