This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch] tree-outof-ssa.c: Remove SSANORM_USE_COALESCE_LIST.
- From: Kazu Hirata <kazu at cs dot umass dot edu>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 22 Feb 2005 09:06:04 -0500 (EST)
- Subject: [patch] tree-outof-ssa.c: Remove SSANORM_USE_COALESCE_LIST.
Hi,
Attached is a patch to remove SSANORM_USE_COALESCE_LIST.
rewrite_out_of_ssa always passes SSANORM_USE_COALESCE_LIST to
coalesce_ssa_name. So we can remove SSANORM_USE_COALESCE_LIST and all
the uses of it.
The patch appears to be big because of indentation changes, but the
core part of it is very small.
Tested on i686-pc-linux-gnu. OK to apply?
Kazu Hirata
2005-02-22 Kazu Hirata <kazu@cs.umass.edu>
* tree-outof-ssa.c (SSANORM_USE_COALESCE_LIST): Remove.
(coalesce_ssa_name): Don't check for
SSANORM_USE_COALESCE_LIST.
(rewrite_out_of_ssa): Don't use SSANORM_USE_COALESCE_LIST.
Index: tree-outof-ssa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-outof-ssa.c,v
retrieving revision 2.46
diff -c -d -p -r2.46 tree-outof-ssa.c
*** tree-outof-ssa.c 21 Feb 2005 14:33:36 -0000 2.46
--- tree-outof-ssa.c 21 Feb 2005 15:01:24 -0000
*************** Boston, MA 02111-1307, USA. */
*** 52,58 ****
#define SSANORM_PERFORM_TER 0x1
#define SSANORM_COMBINE_TEMPS 0x2
#define SSANORM_COALESCE_PARTITIONS 0x4
- #define SSANORM_USE_COALESCE_LIST 0x8
/* Used to hold all the components required to do SSA PHI elimination.
The node and pred/succ list is a simple linear list of nodes and
--- 52,57 ----
*************** coalesce_ssa_name (var_map map, int flag
*** 696,705 ****
if (num_var_partitions (map) <= 1)
return NULL;
- /* If no preference given, use cheap coalescing of all partitions. */
- if ((flags & (SSANORM_COALESCE_PARTITIONS | SSANORM_USE_COALESCE_LIST)) == 0)
- flags |= SSANORM_COALESCE_PARTITIONS;
-
liveinfo = calculate_live_on_entry (map);
calculate_live_on_exit (liveinfo);
rv = root_var_init (map);
--- 695,700 ----
*************** coalesce_ssa_name (var_map map, int flag
*** 707,757 ****
/* Remove single element variable from the list. */
root_var_compact (rv);
! if (flags & SSANORM_USE_COALESCE_LIST)
{
! cl = create_coalesce_list (map);
!
! /* Add all potential copies via PHI arguments to the list. */
! FOR_EACH_BB (bb)
{
! for (phi = phi_nodes (bb); phi; phi = PHI_CHAIN (phi))
{
! tree res = PHI_RESULT (phi);
! int p = var_to_partition (map, res);
! if (p == NO_PARTITION)
! continue;
! for (x = 0; x < (unsigned)PHI_NUM_ARGS (phi); x++)
! {
! tree arg = PHI_ARG_DEF (phi, x);
! int p2;
! if (TREE_CODE (arg) != SSA_NAME)
! continue;
! if (SSA_NAME_VAR (res) != SSA_NAME_VAR (arg))
! continue;
! p2 = var_to_partition (map, PHI_ARG_DEF (phi, x));
! if (p2 != NO_PARTITION)
! add_coalesce (cl, p, p2, 1);
! }
}
}
! /* Coalesce all the result decls together. */
! var = NULL_TREE;
! i = 0;
! for (x = 0; x < num_var_partitions (map); x++)
{
! tree p = partition_to_var (map, x);
! if (TREE_CODE (SSA_NAME_VAR(p)) == RESULT_DECL)
{
! if (var == NULL_TREE)
! {
! var = p;
! i = x;
! }
! else
! add_coalesce (cl, i, x, 1);
}
}
}
--- 702,749 ----
/* Remove single element variable from the list. */
root_var_compact (rv);
! cl = create_coalesce_list (map);
!
! /* Add all potential copies via PHI arguments to the list. */
! FOR_EACH_BB (bb)
{
! for (phi = phi_nodes (bb); phi; phi = PHI_CHAIN (phi))
{
! tree res = PHI_RESULT (phi);
! int p = var_to_partition (map, res);
! if (p == NO_PARTITION)
! continue;
! for (x = 0; x < (unsigned)PHI_NUM_ARGS (phi); x++)
{
! tree arg = PHI_ARG_DEF (phi, x);
! int p2;
! if (TREE_CODE (arg) != SSA_NAME)
! continue;
! if (SSA_NAME_VAR (res) != SSA_NAME_VAR (arg))
! continue;
! p2 = var_to_partition (map, PHI_ARG_DEF (phi, x));
! if (p2 != NO_PARTITION)
! add_coalesce (cl, p, p2, 1);
}
}
+ }
! /* Coalesce all the result decls together. */
! var = NULL_TREE;
! i = 0;
! for (x = 0; x < num_var_partitions (map); x++)
! {
! tree p = partition_to_var (map, x);
! if (TREE_CODE (SSA_NAME_VAR(p)) == RESULT_DECL)
{
! if (var == NULL_TREE)
{
! var = p;
! i = x;
}
+ else
+ add_coalesce (cl, i, x, 1);
}
}
*************** coalesce_ssa_name (var_map map, int flag
*** 832,847 ****
dump_var_map (dump_file, map);
/* Coalesce partitions. */
! if (flags & SSANORM_USE_COALESCE_LIST)
! coalesce_tpa_members (rv, graph, map, cl,
! ((dump_flags & TDF_DETAILS) ? dump_file
! : NULL));
-
if (flags & SSANORM_COALESCE_PARTITIONS)
! coalesce_tpa_members (rv, graph, map, NULL,
! ((dump_flags & TDF_DETAILS) ? dump_file
! : NULL));
if (cl)
delete_coalesce_list (cl);
root_var_delete (rv);
--- 824,837 ----
dump_var_map (dump_file, map);
/* Coalesce partitions. */
! coalesce_tpa_members (rv, graph, map, cl,
! ((dump_flags & TDF_DETAILS) ? dump_file
! : NULL));
if (flags & SSANORM_COALESCE_PARTITIONS)
! coalesce_tpa_members (rv, graph, map, NULL,
! ((dump_flags & TDF_DETAILS) ? dump_file
! : NULL));
if (cl)
delete_coalesce_list (cl);
root_var_delete (rv);
*************** rewrite_out_of_ssa (void)
*** 2489,2495 ****
{
var_map map;
int var_flags = 0;
! int ssa_flags = SSANORM_USE_COALESCE_LIST;
/* If elimination of a PHI requires inserting a copy on a backedge,
then we will have to split the backedge which has numerous
--- 2479,2485 ----
{
var_map map;
int var_flags = 0;
! int ssa_flags = 0;
/* If elimination of a PHI requires inserting a copy on a backedge,
then we will have to split the backedge which has numerous