diff options
Diffstat (limited to 'gcc/tree-outof-ssa.c')
-rw-r--r-- | gcc/tree-outof-ssa.c | 16 |
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)) { |