/* Routines for liveness in SSA trees.
- Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
Contributed by Andrew MacLeod <amacleod@redhat.com>
This file is part of GCC.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
+the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
#ifndef _TREE_SSA_LIVE_H
#define _TREE_SSA_LIVE_H 1
#include "partition.h"
+#include "vecprim.h"
/* Used to create the variable mapping when we go out of SSA form. */
typedef struct _var_map
extern int var_union (var_map, tree, tree);
extern void change_partition_var (var_map, tree, int);
extern void compact_var_map (var_map, int);
-extern tree make_ssa_temp (tree);
#ifdef ENABLE_CHECKING
extern void register_ssa_partition_check (tree ssa_var);
#endif
typedef struct tree_partition_associator_d
{
- varray_type trees;
- varray_type first_partition;
+ VEC(tree,heap) *trees;
+ VEC(int,heap) *first_partition;
int *next_partition;
int *partition_to_tree_map;
int num_trees;
static inline tree
tpa_tree (tpa_p tpa, int i)
{
- return VARRAY_TREE (tpa->trees, i);
+ return VEC_index (tree, tpa->trees, i);
}
static inline int
tpa_first_partition (tpa_p tpa, int i)
{
- return VARRAY_INT (tpa->first_partition, i);
+ return VEC_index (int, tpa->first_partition, i);
}
}
-/* Once a var_map has been created and compressed, a complimentary root_var
+/* Once a var_map has been created and compressed, a complementary root_var
object can be built. This creates a list of all the root variables from
which ssa version names are derived. Each root variable has a list of
which partitions are versions of that root.
extern coalesce_list_p create_coalesce_list (var_map);
extern void add_coalesce (coalesce_list_p, int, int, int);
+extern int coalesce_cost (int, bool, bool);
extern void sort_coalesce_list (coalesce_list_p);
extern void dump_coalesce_list (FILE *, coalesce_list_p);
extern void delete_coalesce_list (coalesce_list_p);