X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fregmove.c;h=454c97741e392160cb436e71ab32421fc66cfe87;hb=d4107d7c17c6f69e7ff93546e24d1490757cf49a;hp=48a583fa2158f3ed826789e3946a75d464f0306a;hpb=a5af08d26ce1678e462f91bb3fb9336e30d02ca8;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/regmove.c b/gcc/regmove.c index 48a583fa215..454c97741e3 100644 --- a/gcc/regmove.c +++ b/gcc/regmove.c @@ -548,8 +548,7 @@ optimize_reg_copy_3 (rtx insn, rtx dest, rtx src) /* Do not use a SUBREG to truncate from one mode to another if truncation is not a nop. */ if (GET_MODE_BITSIZE (GET_MODE (src_reg)) <= GET_MODE_BITSIZE (GET_MODE (src)) - && !TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (GET_MODE (src)), - GET_MODE_BITSIZE (GET_MODE (src_reg)))) + && !TRULY_NOOP_TRUNCATION_MODES_P (GET_MODE (src), GET_MODE (src_reg))) return; set_insn = p; @@ -860,7 +859,7 @@ fixup_match_2 (rtx insn, rtx dst, rtx src, rtx offset) if (REG_N_CALLS_CROSSED (REGNO (src)) == 0) break; - if (call_used_regs [REGNO (dst)] + if ((HARD_REGISTER_P (dst) && call_used_regs [REGNO (dst)]) || find_reg_fusage (p, CLOBBER, dst)) break; } @@ -1236,12 +1235,12 @@ regmove_optimize (void) df_note_add_problem (); df_analyze (); - if (flag_ira_loop_pressure) - ira_set_pseudo_classes (dump_file); - regstat_init_n_sets_and_refs (); regstat_compute_ri (); + if (flag_ira_loop_pressure) + ira_set_pseudo_classes (dump_file); + regno_src_regno = XNEWVEC (int, nregs); for (i = nregs; --i >= 0; ) regno_src_regno[i] = -1; @@ -1382,7 +1381,6 @@ struct rtl_opt_pass pass_regmove = 0, /* properties_destroyed */ 0, /* todo_flags_start */ TODO_df_finish | TODO_verify_rtl_sharing | - TODO_dump_func | TODO_ggc_collect /* todo_flags_finish */ } };