diff options
author | Kaz Kojima <kkojima@gcc.gnu.org> | 2009-04-21 22:18:34 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@gcc.gnu.org> | 2009-04-21 22:18:34 +0000 |
commit | b757d36fac6dc69b32d6de321eab51f6b3d254d8 (patch) | |
tree | 8e502cfbce30fa6715f4742f417b8abe52cea619 /gcc | |
parent | 36ef72625cd8bc38933adf8c06a7de4f093e98c6 (diff) | |
download | gcc-b757d36fac6dc69b32d6de321eab51f6b3d254d8.zip gcc-b757d36fac6dc69b32d6de321eab51f6b3d254d8.tar.gz gcc-b757d36fac6dc69b32d6de321eab51f6b3d254d8.tar.bz2 |
sh.c (prepare_cbranch_operands): Use LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
* config/sh/sh.c (prepare_cbranch_operands): Use
LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
(expand_cbranchdi4): Likewise.
(from_compare): Add cast to enum type.
(expand_cbranchsi4): Use add_reg_note.
(output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
(sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
(sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
(sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
* config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
instead of CODE_FOR_nothing.
(cbranchdi4): Likewise. Fix the order of arguments for
gen_rtx_fmt_ee.
(push_fpscr): Use add_reg_note.
(pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
From-SVN: r146539
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 19 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 65 | ||||
-rw-r--r-- | gcc/config/sh/sh.md | 31 |
3 files changed, 62 insertions, 53 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 80c83b1..e93551b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,22 @@ +2009-04-21 Kaz Kojima <kkojima@gcc.gnu.org> + + * config/sh/sh.c (prepare_cbranch_operands): Use + LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing. + (expand_cbranchdi4): Likewise. + (from_compare): Add cast to enum type. + (expand_cbranchsi4): Use add_reg_note. + (output_stack_adjust, push, pop, sh_expand_prologue): Likewise. + (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu. + (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call. + (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call. + * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE + instead of CODE_FOR_nothing. + (cbranchdi4): Likewise. Fix the order of arguments for + gen_rtx_fmt_ee. + (push_fpscr): Use add_reg_note. + (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4, + reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise. + 2009-04-21 Joseph Myers <joseph@codesourcery.com> * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998, diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 4d80354..cf6e1a7 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -1378,7 +1378,7 @@ prepare_cbranch_operands (rtx *operands, enum machine_mode mode, rtx op1; rtx scratch = NULL_RTX; - if (comparison == CODE_FOR_nothing) + if (comparison == LAST_AND_UNUSED_RTX_CODE) comparison = GET_CODE (operands[0]); else scratch = operands[4]; @@ -1478,9 +1478,7 @@ expand_cbranchsi4 (rtx *operands, enum rtx_code comparison, int probability) operands[1], operands[2]))); jump = emit_jump_insn (branch_expander (operands[3])); if (probability >= 0) - REG_NOTES (jump) - = gen_rtx_EXPR_LIST (REG_BR_PROB, GEN_INT (probability), - REG_NOTES (jump)); + add_reg_note (jump, REG_BR_PROB, GEN_INT (probability)); } @@ -1518,7 +1516,7 @@ expand_cbranchdi4 (rtx *operands, enum rtx_code comparison) op2h = gen_highpart_mode (SImode, DImode, operands[2]); op1l = gen_lowpart (SImode, operands[1]); op2l = gen_lowpart (SImode, operands[2]); - msw_taken = msw_skip = lsw_taken = CODE_FOR_nothing; + msw_taken = msw_skip = lsw_taken = LAST_AND_UNUSED_RTX_CODE; prob = split_branch_probability; rev_prob = REG_BR_PROB_BASE - prob; switch (comparison) @@ -1609,9 +1607,9 @@ expand_cbranchdi4 (rtx *operands, enum rtx_code comparison) break; default: return false; } - num_branches = ((msw_taken != CODE_FOR_nothing) - + (msw_skip != CODE_FOR_nothing) - + (lsw_taken != CODE_FOR_nothing)); + num_branches = ((msw_taken != LAST_AND_UNUSED_RTX_CODE) + + (msw_skip != LAST_AND_UNUSED_RTX_CODE) + + (lsw_taken != LAST_AND_UNUSED_RTX_CODE)); if (comparison != EQ && comparison != NE && num_branches > 1) { if (!CONSTANT_P (operands[2]) @@ -1637,20 +1635,21 @@ expand_cbranchdi4 (rtx *operands, enum rtx_code comparison) operands[4] = NULL_RTX; if (reload_completed && ! arith_reg_or_0_operand (op2h, SImode) && true_regnum (op1h) - && (msw_taken != CODE_FOR_nothing || msw_skip != CODE_FOR_nothing)) + && (msw_taken != LAST_AND_UNUSED_RTX_CODE + || msw_skip != LAST_AND_UNUSED_RTX_CODE)) { emit_move_insn (scratch, operands[2]); operands[2] = scratch; } - if (msw_taken != CODE_FOR_nothing) + if (msw_taken != LAST_AND_UNUSED_RTX_CODE) expand_cbranchsi4 (operands, msw_taken, msw_taken_prob); - if (msw_skip != CODE_FOR_nothing) + if (msw_skip != LAST_AND_UNUSED_RTX_CODE) { rtx taken_label = operands[3]; /* Operands were possibly modified, but msw_skip doesn't expect this. Always use the original ones. */ - if (msw_taken != CODE_FOR_nothing) + if (msw_taken != LAST_AND_UNUSED_RTX_CODE) { operands[1] = op1h; operands[2] = op2h; @@ -1662,14 +1661,14 @@ expand_cbranchdi4 (rtx *operands, enum rtx_code comparison) } operands[1] = op1l; operands[2] = op2l; - if (lsw_taken != CODE_FOR_nothing) + if (lsw_taken != LAST_AND_UNUSED_RTX_CODE) { if (reload_completed && ! arith_reg_or_0_operand (op2l, SImode) && true_regnum (op1l)) operands[4] = scratch; expand_cbranchsi4 (operands, lsw_taken, lsw_taken_prob); } - if (msw_skip != CODE_FOR_nothing) + if (msw_skip != LAST_AND_UNUSED_RTX_CODE) emit_label (skip_label); return true; } @@ -1766,7 +1765,7 @@ from_compare (rtx *operands, int code) else insn = gen_rtx_SET (VOIDmode, gen_rtx_REG (SImode, T_REG), - gen_rtx_fmt_ee (code, SImode, + gen_rtx_fmt_ee ((enum rtx_code) code, SImode, sh_compare_op0, sh_compare_op1)); if ((TARGET_SH4 || TARGET_SH2A) && GET_MODE_CLASS (mode) == MODE_FLOAT) { @@ -5704,12 +5703,10 @@ output_stack_adjust (int size, rtx reg, int epilogue_p, insn = emit_fn (GEN_ADD3 (reg, reg, const_reg)); } if (! epilogue_p) - REG_NOTES (insn) - = (gen_rtx_EXPR_LIST - (REG_FRAME_RELATED_EXPR, - gen_rtx_SET (VOIDmode, reg, - gen_rtx_PLUS (SImode, reg, GEN_INT (size))), - REG_NOTES (insn))); + add_reg_note (insn, REG_FRAME_RELATED_EXPR, + gen_rtx_SET (VOIDmode, reg, + gen_rtx_PLUS (SImode, reg, + GEN_INT (size)))); } } } @@ -5745,9 +5742,7 @@ push (int rn) x = gen_push (gen_rtx_REG (SImode, rn)); x = frame_insn (x); - REG_NOTES (x) - = gen_rtx_EXPR_LIST (REG_INC, - gen_rtx_REG (SImode, STACK_POINTER_REGNUM), 0); + add_reg_note (x, REG_INC, gen_rtx_REG (SImode, STACK_POINTER_REGNUM)); return x; } @@ -5774,9 +5769,7 @@ pop (int rn) x = gen_pop (gen_rtx_REG (SImode, rn)); x = emit_insn (x); - REG_NOTES (x) - = gen_rtx_EXPR_LIST (REG_INC, - gen_rtx_REG (SImode, STACK_POINTER_REGNUM), 0); + add_reg_note (x, REG_INC, gen_rtx_REG (SImode, STACK_POINTER_REGNUM)); } /* Generate code to push the regs specified in the mask. */ @@ -6481,27 +6474,23 @@ sh_expand_prologue (void) a direct save from the to-be-saved register. */ if (REGNO (reg_rtx) != reg) { - rtx set, note_rtx; + rtx set; set = gen_rtx_SET (VOIDmode, mem_rtx, orig_reg_rtx); - note_rtx = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, set, - REG_NOTES (insn)); - REG_NOTES (insn) = note_rtx; + add_reg_note (insn, REG_FRAME_RELATED_EXPR, set); } if (TARGET_SHCOMPACT && (offset_in_r0 != -1)) { rtx reg_rtx = gen_rtx_REG (mode, reg); - rtx set, note_rtx; + rtx set; rtx mem_rtx = gen_frame_mem (mode, gen_rtx_PLUS (Pmode, stack_pointer_rtx, GEN_INT (offset))); set = gen_rtx_SET (VOIDmode, mem_rtx, reg_rtx); - note_rtx = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, set, - REG_NOTES (insn)); - REG_NOTES (insn) = note_rtx; + add_reg_note (insn, REG_FRAME_RELATED_EXPR, set); } } } @@ -8751,7 +8740,7 @@ sh_insn_length_adjustment (rtx insn) /* SH2e has a bug that prevents the use of annulled branches, so if the delay slot is not filled, we'll have to put a NOP in it. */ - if (sh_cpu == CPU_SH2E + if (sh_cpu_attr == CPU_SH2E && GET_CODE (insn) == JUMP_INSN && GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC && GET_CODE (PATTERN (insn)) != ADDR_VEC @@ -9836,7 +9825,7 @@ sh_initialize_trampoline (rtx tramp, rtx fnaddr, rtx cxt) || (!(TARGET_SH4A_ARCH || TARGET_SH4_300) && TARGET_USERMODE)) emit_library_call (function_symbol (NULL, "__ic_invalidate", FUNCTION_ORDINARY), - 0, VOIDmode, 1, tramp, SImode); + LCT_NORMAL, VOIDmode, 1, tramp, SImode); else emit_insn (gen_ic_invalidate_line (tramp)); } @@ -10173,7 +10162,7 @@ sh_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, argmode = TYPE_MODE (TREE_TYPE (arg)); if (argmode != opmode) arg = build1 (NOP_EXPR, optype, arg); - op[nop] = expand_expr (arg, NULL_RTX, opmode, 0); + op[nop] = expand_expr (arg, NULL_RTX, opmode, EXPAND_NORMAL); if (! (*insn_data[icode].operand[nop].predicate) (op[nop], opmode)) op[nop] = copy_to_mode_reg (opmode, op[nop]); } diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index f494493..dc6a7ab 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -647,7 +647,7 @@ (pc))) (clobber (reg:SI T_REG))] "TARGET_CBRANCHDI4" - "expand_cbranchsi4 (operands, CODE_FOR_nothing, -1); DONE;") + "expand_cbranchsi4 (operands, LAST_AND_UNUSED_RTX_CODE, -1); DONE;") ;; ------------------------------------------------------------------------- ;; SImode unsigned integer comparisons @@ -720,13 +720,14 @@ if (TARGET_EXPAND_CBRANCHDI4) { - if (expand_cbranchdi4 (operands, CODE_FOR_nothing)) + if (expand_cbranchdi4 (operands, LAST_AND_UNUSED_RTX_CODE)) DONE; } - comparison = prepare_cbranch_operands (operands, DImode, CODE_FOR_nothing); + comparison = prepare_cbranch_operands (operands, DImode, + LAST_AND_UNUSED_RTX_CODE); if (comparison != GET_CODE (operands[0])) operands[0] - = gen_rtx_fmt_ee (VOIDmode, comparison, operands[1], operands[2]); + = gen_rtx_fmt_ee (comparison, VOIDmode, operands[1], operands[2]); operands[4] = gen_rtx_SCRATCH (SImode); }") @@ -4915,7 +4916,7 @@ label: gen_rtx_PRE_DEC (Pmode, stack_pointer_rtx)), get_fpscr_rtx ())); - REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, stack_pointer_rtx, NULL_RTX); + add_reg_note (insn, REG_INC, stack_pointer_rtx); DONE; }") @@ -4928,7 +4929,7 @@ label: gen_frame_mem (PSImode, gen_rtx_POST_INC (Pmode, stack_pointer_rtx)))); - REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, stack_pointer_rtx, NULL_RTX); + add_reg_note (insn, REG_INC, stack_pointer_rtx); DONE; }") @@ -5959,7 +5960,7 @@ label: gen_rtx_PRE_DEC (Pmode, stack_pointer_rtx)); insn = emit_insn (gen_movdf_i4 (tos, operands[1], operands[2])); if (! (TARGET_SH5 && true_regnum (operands[1]) < 16)) - REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, stack_pointer_rtx, NULL_RTX); + add_reg_note (insn, REG_INC, stack_pointer_rtx); if (TARGET_SH5 && true_regnum (operands[0]) < 16) tos = gen_tmp_stack_mem (DFmode, stack_pointer_rtx); else @@ -5969,7 +5970,7 @@ label: if (TARGET_SH5 && true_regnum (operands[0]) < 16) emit_move_insn (stack_pointer_rtx, plus_constant (stack_pointer_rtx, 8)); else - REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, stack_pointer_rtx, NULL_RTX); + add_reg_note (insn, REG_INC, stack_pointer_rtx); DONE; }") @@ -6126,7 +6127,7 @@ label: insn = emit_insn (gen_movsf_ie (gen_rtx_REG (SFmode, regno + !! TARGET_LITTLE_ENDIAN), mem2, operands[2])); - REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, operands[1], NULL_RTX); + add_reg_note (insn, REG_INC, operands[1]); insn = emit_insn (gen_movsf_ie (gen_rtx_REG (SFmode, regno + ! TARGET_LITTLE_ENDIAN), change_address (mem, SFmode, NULL_RTX), @@ -6165,12 +6166,12 @@ label: } addr = XEXP (addr, 0); insn = emit_insn (gen_movsf_ie (reg0, mem2, operands[2])); - REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, addr, NULL_RTX); + add_reg_note (insn, REG_INC, addr); insn = emit_insn (gen_movsf_ie (reg1, operands[1], operands[2])); if (adjust) emit_insn (adjust); else - REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, addr, NULL_RTX); + add_reg_note (insn, REG_INC, addr); DONE; }") @@ -6203,12 +6204,12 @@ label: } addr = XEXP (addr, 0); if (! adjust) - REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, addr, NULL_RTX); + add_reg_note (insn, REG_INC, addr); insn = emit_insn (gen_movsf_ie (operands[0], gen_rtx_REG (SFmode, regno + !! TARGET_LITTLE_ENDIAN), operands[2])); - REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, addr, NULL_RTX); + add_reg_note (insn, REG_INC, addr); DONE; }") @@ -10486,7 +10487,7 @@ mov.l\\t1f,r0\\n\\ mem = replace_equiv_address (mem, gen_rtx_POST_INC (Pmode, operands[0])); new_insn = emit_insn (gen_fpu_switch (fpscr, mem)); - REG_NOTES (new_insn) = gen_rtx_EXPR_LIST (REG_INC, operands[0], NULL_RTX); + add_reg_note (new_insn, REG_INC, operands[0]); DONE; }) @@ -10504,7 +10505,7 @@ mov.l\\t1f,r0\\n\\ mem = replace_equiv_address (mem, gen_rtx_POST_INC (Pmode, operands[0])); new_insn = emit_insn (gen_fpu_switch (fpscr, mem)); - REG_NOTES (new_insn) = gen_rtx_EXPR_LIST (REG_INC, operands[0], NULL_RTX); + add_reg_note (new_insn, REG_INC, operands[0]); if (!find_regno_note (curr_insn, REG_DEAD, true_regnum (operands[0]))) emit_insn (gen_addsi3 (operands[0], operands[0], GEN_INT (-4))); |