aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-outof-ssa.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2015-06-10 00:37:39 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2015-06-10 00:37:39 +0000
commit0f9f9784ad1bb59e89f03e5cb00ebc22f500c059 (patch)
tree44bd2d64a442165a5d4162e8caf3157b8f5557a6 /gcc/tree-outof-ssa.c
parenta79b6a3044aa97f8ba6b491ee1796f318c68285a (diff)
downloadgcc-0f9f9784ad1bb59e89f03e5cb00ebc22f500c059.zip
gcc-0f9f9784ad1bb59e89f03e5cb00ebc22f500c059.tar.gz
gcc-0f9f9784ad1bb59e89f03e5cb00ebc22f500c059.tar.bz2
Revert "[PR64164] Drop copyrename, use coalescible partition as base when optimizing."
This reverts commit c66acc7cedd89bfd22124caec44b8427c9082dac. Conflicts: gcc/ChangeLog gcc/testsuite/ChangeLog From-SVN: r224310
Diffstat (limited to 'gcc/tree-outof-ssa.c')
-rw-r--r--gcc/tree-outof-ssa.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c
index e6ab932..93ac258 100644
--- a/gcc/tree-outof-ssa.c
+++ b/gcc/tree-outof-ssa.c
@@ -295,6 +295,7 @@ insert_value_copy_on_edge (edge e, int dest, tree src, source_location locus)
rtx dest_rtx, seq, x;
machine_mode dest_mode, src_mode;
int unsignedp;
+ tree var;
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -316,12 +317,12 @@ insert_value_copy_on_edge (edge e, int dest, tree src, source_location locus)
start_sequence ();
- tree name = partition_to_var (SA.map, dest);
+ var = SSA_NAME_VAR (partition_to_var (SA.map, dest));
src_mode = TYPE_MODE (TREE_TYPE (src));
dest_mode = GET_MODE (dest_rtx);
- gcc_assert (src_mode == TYPE_MODE (TREE_TYPE (name)));
+ gcc_assert (src_mode == TYPE_MODE (TREE_TYPE (var)));
gcc_assert (!REG_P (dest_rtx)
- || dest_mode == promote_ssa_mode (name, &unsignedp));
+ || dest_mode == promote_decl_mode (var, &unsignedp));
if (src_mode != dest_mode)
{
@@ -697,12 +698,13 @@ elim_backward (elim_graph g, int T)
static rtx
get_temp_reg (tree name)
{
- tree type = TREE_TYPE (name);
+ tree var = TREE_CODE (name) == SSA_NAME ? SSA_NAME_VAR (name) : name;
+ tree type = TREE_TYPE (var);
int unsignedp;
- machine_mode reg_mode = promote_ssa_mode (name, &unsignedp);
+ machine_mode reg_mode = promote_decl_mode (var, &unsignedp);
rtx x = gen_reg_rtx (reg_mode);
if (POINTER_TYPE_P (type))
- mark_reg_pointer (x, TYPE_ALIGN (TREE_TYPE (type)));
+ mark_reg_pointer (x, TYPE_ALIGN (TREE_TYPE (TREE_TYPE (var))));
return x;
}
@@ -1002,7 +1004,7 @@ remove_ssa_form (bool perform_ter, struct ssaexpand *sa)
/* Return to viewing the variable list as just all reference variables after
coalescing has been performed. */
- partition_view_normal (map);
+ partition_view_normal (map, false);
if (dump_file && (dump_flags & TDF_DETAILS))
{