diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-30 10:38:09 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-30 10:38:09 +0000 |
commit | 409a375f7e8602e12096eeeb10c65fc28cd9e7dc (patch) | |
tree | 19cb3c61a0f595e0df10c4b6c060c1b0fef68c5c /gcc/tree-into-ssa.c | |
parent | 0075369687db7804b3546221f0a4f3868b8f97d4 (diff) | |
download | gcc-409a375f7e8602e12096eeeb10c65fc28cd9e7dc.tar.gz |
2009-11-30 Richard Guenther <rguenther@suse.de>
* tree-into-ssa.c (insert_phi_nodes): Add PHI nodes in
variable UID order.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154776 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-into-ssa.c')
-rw-r--r-- | gcc/tree-into-ssa.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index d6f659c0624..243fe770e17 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -1151,27 +1151,43 @@ static void insert_phi_nodes (bitmap *dfs) { referenced_var_iterator rvi; + bitmap_iterator bi; tree var; + bitmap vars; + unsigned uid; timevar_push (TV_TREE_INSERT_PHI_NODES); + /* Do two stages to avoid code generation differences for UID + differences but no UID ordering differences. */ + + vars = BITMAP_ALLOC (NULL); FOR_EACH_REFERENCED_VAR (var, rvi) { struct def_blocks_d *def_map; - bitmap idf; def_map = find_def_blocks_for (var); if (def_map == NULL) continue; if (get_phi_state (var) != NEED_PHI_STATE_NO) - { - idf = compute_idf (def_map->def_blocks, dfs); - insert_phi_nodes_for (var, idf, false); - BITMAP_FREE (idf); - } + bitmap_set_bit (vars, DECL_UID (var)); } + EXECUTE_IF_SET_IN_BITMAP (vars, 0, uid, bi) + { + tree var = referenced_var (uid); + struct def_blocks_d *def_map; + bitmap idf; + + def_map = find_def_blocks_for (var); + idf = compute_idf (def_map->def_blocks, dfs); + insert_phi_nodes_for (var, idf, false); + BITMAP_FREE (idf); + } + + BITMAP_FREE (vars); + timevar_pop (TV_TREE_INSERT_PHI_NODES); } |