[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