From 6f2543f88f88a1269736e859bdc44338f4723405 Mon Sep 17 00:00:00 2001 From: kkojima Date: Tue, 21 Apr 2009 22:18:34 +0000 Subject: [PATCH 1/1] * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146539 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 19 ++++++++++++++++ gcc/config/sh/sh.c | 65 ++++++++++++++++++++++------------------------------- gcc/config/sh/sh.md | 31 ++++++++++++------------- 3 files changed, 62 insertions(+), 53 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 80c83b106ea..e93551b0f11 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,22 @@ +2009-04-21 Kaz Kojima + + * 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 * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998, diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 4d80354eae5..cf6e1a76b4d 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 f494493fd63..dc6a7ab6b82 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))); -- 2.11.0