diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cc9ed6b09fa47479dcc173ac5b5444ab079a2967..3eea0bcd9d6a67f597a015f1b00229a867c6325c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2011-02-15 Alexandre Oliva <aoliva@redhat.com> + + PR debug/47106 + PR debug/47402 + * tree-flow.h (FOR_EACH_REFERENCED_VAR): Add FN argument. + Adjust all users. Pass FN to... + * tree-flow-inline.h (first_referenced_var): ... this. Add + fn argument. + * ipa-struct-reorg.c: Adjust. + * tree-dfa.c: Adjust. + * tree-into-ssa.c: Adjust. + * tree-sra.c: Adjust. + * tree-ssa-alias.c: Adjust. + * tree-ssa-live.c: Adjust. + * tree-ssa.c: Adjust. + * tree-ssanames.c: Adjust. + * tree-tailcall.c: Adjust. + 2011-02-15 Alexandre Oliva <aoliva@redhat.com> PR debug/47106 diff --git a/gcc/ipa-struct-reorg.c b/gcc/ipa-struct-reorg.c index ae18da2cda299eea9244f30e2aa40bb46066d864..7ab321eee47e26e81087fd385f6b7effdc7d257a 100644 --- a/gcc/ipa-struct-reorg.c +++ b/gcc/ipa-struct-reorg.c @@ -2712,7 +2712,7 @@ create_new_local_vars (void) new_local_vars = htab_create (num_referenced_vars, new_var_hash, new_var_eq, NULL); - FOR_EACH_REFERENCED_VAR (var, rvi) + FOR_EACH_REFERENCED_VAR (cfun, var, rvi) { if (!is_global_var (var)) create_new_var (var, new_local_vars); diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index f37c30fc2c1d2fe6da855b4f8f14b9321c5edc3c..6490c5e87125c3c22b676490ab5428b27d4d433a 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -218,7 +218,7 @@ dump_referenced_vars (FILE *file) fprintf (file, "\nReferenced variables in %s: %u\n\n", get_name (current_function_decl), (unsigned) num_referenced_vars); - FOR_EACH_REFERENCED_VAR (var, rvi) + FOR_EACH_REFERENCED_VAR (cfun, var, rvi) { fprintf (file, "Variable: "); dump_variable (file, var); @@ -400,7 +400,7 @@ collect_dfa_stats (struct dfa_stats_d *dfa_stats_p ATTRIBUTE_UNUSED) memset ((void *)dfa_stats_p, 0, sizeof (struct dfa_stats_d)); /* Count all the variable annotations. */ - FOR_EACH_REFERENCED_VAR (var, vi) + FOR_EACH_REFERENCED_VAR (cfun, var, vi) if (var_ann (var)) dfa_stats_p->num_var_anns++; diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h index 538d6fe678fb69610551cc854fb12ee2989fb8d5..86566101e394467eaf005408eb99b05bc3a00142 100644 --- a/gcc/tree-flow-inline.h +++ b/gcc/tree-flow-inline.h @@ -112,10 +112,10 @@ referenced_var (unsigned int uid) referenced_vars hashtable, and return that variable. */ static inline tree -first_referenced_var (referenced_var_iterator *iter) +first_referenced_var (struct function *fn, referenced_var_iterator *iter) { return (tree) first_htab_element (&iter->hti, - gimple_referenced_vars (cfun)); + gimple_referenced_vars (fn)); } /* Return true if we have hit the end of the referenced variables ITER is diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index e1700375cce124c42d7a9c83e7de40bf0c89f859..14c8827d1c5d0b8cbdd13a589003b90415dc354f 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -314,9 +314,9 @@ typedef struct to the hashtable while using this macro. Doing so may cause it to behave erratically. */ -#define FOR_EACH_REFERENCED_VAR(VAR, ITER) \ - for ((VAR) = first_referenced_var (&(ITER)); \ - !end_referenced_vars_p (&(ITER)); \ +#define FOR_EACH_REFERENCED_VAR(FN, VAR, ITER) \ + for ((VAR) = first_referenced_var ((FN), &(ITER)); \ + !end_referenced_vars_p (&(ITER)); \ (VAR) = next_referenced_var (&(ITER))) extern tree referenced_var_lookup (struct function *, unsigned int); diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index 5f6ea19fc7c9500b47f3a52b8859937dc04dde8c..74386e44411c5a74f13e037b41db50bc4503d1d1 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -1156,7 +1156,7 @@ insert_phi_nodes (bitmap_head *dfs) differences but no UID ordering differences. */ vars = BITMAP_ALLOC (NULL); - FOR_EACH_REFERENCED_VAR (var, rvi) + FOR_EACH_REFERENCED_VAR (cfun, var, rvi) { struct def_blocks_d *def_map; @@ -1573,7 +1573,7 @@ dump_currdefs (FILE *file) tree var; fprintf (file, "\n\nCurrent reaching definitions\n\n"); - FOR_EACH_REFERENCED_VAR (var, i) + FOR_EACH_REFERENCED_VAR (cfun, var, i) if (SYMS_TO_RENAME (cfun) == NULL || bitmap_bit_p (SYMS_TO_RENAME (cfun), DECL_UID (var))) { @@ -2313,7 +2313,7 @@ init_ssa_renamer (void) def_blocks = htab_create (num_referenced_vars, def_blocks_hash, def_blocks_eq, def_blocks_free); - FOR_EACH_REFERENCED_VAR(var, rvi) + FOR_EACH_REFERENCED_VAR (cfun, var, rvi) set_current_def (var, NULL_TREE); } diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 27cb303339cc80f388512ba697595cc0619b2d2e..8ed8771c8069684d2fa78b23269cbc3655013ea3 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -1540,7 +1540,7 @@ find_var_candidates (void) referenced_var_iterator rvi; bool ret = false; - FOR_EACH_REFERENCED_VAR (var, rvi) + FOR_EACH_REFERENCED_VAR (cfun, var, rvi) { if (TREE_CODE (var) != VAR_DECL && TREE_CODE (var) != PARM_DECL) continue; diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 78275dec857428c8abc53a49ff7b0f7672ebdfdf..68321d29e2492c7777e16fe60623a8db86106808 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -364,7 +364,7 @@ dump_alias_info (FILE *file) fprintf (file, "Aliased symbols\n\n"); - FOR_EACH_REFERENCED_VAR (var, rvi) + FOR_EACH_REFERENCED_VAR (cfun, var, rvi) { if (may_be_aliased (var)) dump_variable (file, var); diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c index d917bb99a832dacf6ab590aaec5ca619f2503497..0441df67b64e4ae2f42e98854700d9eb6de92057 100644 --- a/gcc/tree-ssa-live.c +++ b/gcc/tree-ssa-live.c @@ -705,7 +705,7 @@ remove_unused_locals (void) mark_scope_block_unused (DECL_INITIAL (current_function_decl)); /* Assume all locals are unused. */ - FOR_EACH_REFERENCED_VAR (t, rvi) + FOR_EACH_REFERENCED_VAR (cfun, t, rvi) clear_is_used (t); /* Walk the CFG marking all referenced symbols. */ @@ -821,7 +821,7 @@ remove_unused_locals (void) } /* Remove unused variables from REFERENCED_VARs. */ - FOR_EACH_REFERENCED_VAR (t, rvi) + FOR_EACH_REFERENCED_VAR (cfun, t, rvi) if (!is_global_var (t) && TREE_CODE (t) != PARM_DECL && TREE_CODE (t) != RESULT_DECL diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index a787f710360c721677ebfada993ebedcee50af7f..5c9e0d88bf2ed0ef33f25c2d072572313ff3d9b1 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1157,7 +1157,7 @@ delete_tree_ssa (void) tree var; /* Remove annotations from every referenced local variable. */ - FOR_EACH_REFERENCED_VAR (var, rvi) + FOR_EACH_REFERENCED_VAR (cfun, var, rvi) { if (is_global_var (var)) continue; diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c index cf67f6ce7c8ad149ec5798447dfd839e7d1e166a..c76dba5ea449d14b70e563b63f1b938ba06dc633 100644 --- a/gcc/tree-ssanames.c +++ b/gcc/tree-ssanames.c @@ -340,7 +340,7 @@ release_dead_ssa_names (void) /* Current defs point to various dead SSA names that in turn point to eventually dead variables so a bunch of memory is held live. */ - FOR_EACH_REFERENCED_VAR (t, rvi) + FOR_EACH_REFERENCED_VAR (cfun, t, rvi) set_current_def (t, NULL); /* Now release the freelist. */ for (t = FREE_SSANAMES (cfun); t; t = next) diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c index a9bf62835c7c0761fde89a3b138214ace89b8905..85aa82bc8555d80bb839c8adcabf7383a6852a52 100644 --- a/gcc/tree-tailcall.c +++ b/gcc/tree-tailcall.c @@ -481,7 +481,7 @@ find_tail_calls (basic_block bb, struct tailcall **ret) /* Make sure the tail invocation of this function does not refer to local variables. */ - FOR_EACH_REFERENCED_VAR (var, rvi) + FOR_EACH_REFERENCED_VAR (cfun, var, rvi) { if (TREE_CODE (var) != PARM_DECL && auto_var_in_fn_p (var, cfun->decl) @@ -889,7 +889,7 @@ add_virtual_phis (void) this, we cannot do much better than to rebuild the ssa form for possibly affected virtual ssa names from scratch. */ - FOR_EACH_REFERENCED_VAR (var, rvi) + FOR_EACH_REFERENCED_VAR (cfun, var, rvi) { if (!is_gimple_reg (var) && gimple_default_def (cfun, var) != NULL_TREE) mark_sym_for_renaming (var);