[llvm-commits] [llvm-gcc-4.2] r93391 - /llvm-gcc-4.2/trunk/gcc/cp/parser.c

Stuart Hastings stuart at apple.com
Wed Jan 13 16:51:43 PST 2010


Author: stuart
Date: Wed Jan 13 18:51:42 2010
New Revision: 93391

URL: http://llvm.org/viewvc/llvm-project?rev=93391&view=rev
Log:
Declare block/closure byref variable at function scope.

Modified:
    llvm-gcc-4.2/trunk/gcc/cp/parser.c

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

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/cp/parser.c (original)
+++ llvm-gcc-4.2/trunk/gcc/cp/parser.c Wed Jan 13 18:51:42 2010
@@ -21724,7 +21724,17 @@
 
   /* Current scope must be that of the main function body. */
   /* FIXME gcc_assert (current_scope->function_body);*/
-  pushdecl (byref_decl);
+  /* LLVM LOCAL begin 7387470 */
+  /* Find the scope for function body (outer-most scope) and insert
+     this variable in that scope. This is to avoid duplicate
+     declaration of the save variable. */
+  {
+    struct cp_binding_level *b = current_binding_level;
+    while (b->level_chain->kind != sk_function_parms)
+      b = b->level_chain;
+    pushdecl_with_scope (byref_decl, b, /*is_friend=*/false);
+  }
+  /* LLVM LOCAL end 7387470 */
   mark_used (byref_decl);
   /* APPLE LOCAL begin radar 6083129 -  byref escapes (cp) */
   /* FIXME: finish this off, ensure the decl is scoped appropriately
@@ -22039,7 +22049,7 @@
  */
 static void
 declare_block_prologue_local_byref_vars (tree self_parm, tree component,
-				   tree stmt)
+					 tree stmt)
 {
   tree decl, block_component;
   tree_stmt_iterator i;





More information about the llvm-commits mailing list