diff options
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/gcc/function.c b/gcc/function.c index 3a7bb25..9075e08 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -1815,7 +1815,8 @@ instantiate_decls_1 (tree let) static void instantiate_decls (tree fndecl) { - tree decl, t, next; + tree decl; + unsigned ix; /* Process all parameters of the function. */ for (decl = DECL_ARGUMENTS (fndecl); decl; decl = TREE_CHAIN (decl)) @@ -1832,16 +1833,10 @@ instantiate_decls (tree fndecl) /* Now process all variables defined in the function or its subblocks. */ instantiate_decls_1 (DECL_INITIAL (fndecl)); - t = cfun->local_decls; - cfun->local_decls = NULL_TREE; - for (; t; t = next) - { - next = TREE_CHAIN (t); - decl = TREE_VALUE (t); - if (DECL_RTL_SET_P (decl)) - instantiate_decl_rtl (DECL_RTL (decl)); - ggc_free (t); - } + FOR_EACH_LOCAL_DECL (cfun, ix, decl) + if (DECL_RTL_SET_P (decl)) + instantiate_decl_rtl (DECL_RTL (decl)); + VEC_free (tree, gc, cfun->local_decls); } /* Pass through the INSNS of function FNDECL and convert virtual register |